stock.h

#ifndef STOCK_H
#define STOCK_H #include <string> class Stock //类声明
{
private:
std::string company;
long shares; //
double share_val;
double total_val;
void set_tot(){total_val=share_val*shares;}
public:
void acquire(const std::string &co,long n,double pr); //获得股票
void buy(long num,double price); //买入股票
void sell(long num,double price); //卖出股票
void update(double price); //更新股票价格
void show(); //显示关于所持股票的信息
}; #endif // STOCK_H

main.cpp

#include <iostream>
#include "stock.h" using namespace std;
//对某个公司股票的首次购买
void Stock::acquire(const string &co, long n, double pr)
{
company=co;
if(n<0)
{
cout<<"Number of shares can't be negative;"
<<company<<"shares set to 0.\n";
}
else
{
shares=n;
}
share_val=pr;
set_tot();
}
//购买股票
void Stock::buy(long num, double price)
{
if(num<0)
{
cout<<"Number of shares purchased can't be negative."
<<"Transaction is aborted.\n";
}
else
{
shares+=num;
share_val=price;
set_tot();
}
}
//减少持有的股票
void Stock::sell(long num, double price)
{
if(num<0)
{
cout<<"Number of shares sold cna't be negative."
<<"Transaction is aborted.\n";
}
else if(num>shares)
{
cout<<"You can't sell more than you have!"
<<"Transaction is aborted.\n";
}
else
{
shares-=num;
share_val=price;
set_tot();
}
}
//
void Stock::update(double price)
{
share_val=price;
set_tot();
}
void Stock::show()
{
ios_base::fmtflags orig=
cout.setf(ios_base::fixed,ios_base::floatfield);
std::streamsize prec=cout.precision(3);
cout<<"Company:"<<company
<<" Shares:"<<shares<<'\n';
cout<<" Shares Price:$"<<share_val;
cout.precision(3);
cout<<" Total Worth:$"<<total_val<<'\n'; //show()应重置格式信息,使其恢复到自己被调用前的状态
cout.setf(orig,ios_base::floatfield);
cout.precision(prec);
}
int main(int argc, char *argv[])
{
cout << "Hello World!" << endl;
Stock fluffy_the_cat;
fluffy_the_cat.acquire("NanoSmart",20,12.50);
fluffy_the_cat.show();
fluffy_the_cat.buy(15,18.125);
fluffy_the_cat.show();
fluffy_the_cat.sell(400,20.00);
fluffy_the_cat.show();
fluffy_the_cat.buy(300000,40.125);
fluffy_the_cat.show();
fluffy_the_cat.sell(300000,0.125);
fluffy_the_cat.show();
return 0;
}

运行结果如下

最新文章

  1. 回归分析法&amp;一元线性回归操作和解释
  2. C# Delegate 异步调用
  3. A Statistical View of Deep Learning (I): Recursive GLMs
  4. HDU1247 Hat’s Words(Trie的动态内存版本)
  5. 浅谈Qt事件的路由机制:鼠标事件
  6. BZOJ 1004: [HNOI2008]Cards( 置换群 + burnside引理 + 背包dp + 乘法逆元 )
  7. python 三级菜单 while循环三次,湖北省市-县-街道的选择,3个while的循环 -day2
  8. 单点登录(SSO)的设计
  9. mac中的myeclipse的控制台中文乱码问题解决办法
  10. 20155214&amp;20155216 实验一 开发化境的熟悉
  11. Elasticsearch学习笔记(六)核心概念和分片shard机制
  12. 绘图QPainter-画刷
  13. mysql 编译安装 window篇
  14. jQuery 实例
  15. c#系统消息类封装
  16. 【转】C#发送Email邮件
  17. 阿里云ECS,WampServer无法访问外网
  18. mysql查看数据库性能常用命令
  19. 【UVA】10391 Compound Words(STL map)
  20. java操作mongoDB数据库的简单实例

热门文章

  1. js 实现几分钟前、几小时前、几天前,以及几分钟后、几小时后、几天前后
  2. epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
  3. plsql developer 10注册码----亲测截止2017年5月6可用
  4. entry points
  5. js之 data-*自定义属性
  6. kali linux web程序集简述
  7. markdownpad2-注册码-2017-02-23
  8. Python3 tkinter基础 Canvas create_line 画实线与虚线
  9. 没有使用Material组件和使用了的对比
  10. HDU 6318 Swaps and Inversions(归并排序 || 树状数组)题解