用类实现股票的操作 买卖以及统计买卖操作后的现有余额 C++

#include "iostream"
#include "cstring"
//定义股票交易的类
class stock
{
private:
//公司名称
char company[30];
//股份数目
int shares;
//单个股票价值
double share_val;
//股票总价值
double total_val;
//个人拥有的炒股资金
double person_val;
//计算股票总价值的函数
void set_tot()
{
total_val=shares *share_val;
}
public:
//获得用户信息  公司名称 股票名称 数量 价格 以及当时客户的余额
void acquire (const char *co,int n,double pr,double present_val);
//用户的买操作
void buy(int num,double price);
//用户的卖操作
void sell(int num,double price);
//市场波动 股票价值的更新
void update(double price);
//显示用户个人拥有股票的信息
void show();
//计算用户的盈亏状态
//void profit(double share_val1,double share_val2);

};
void stock::acquire(const char *co,int n,double pr,double present_val)
{
std::strncpy(company,co,29);


company[29]='\0';
if(n<0)
{


std::cerr<<"股东数不能为负数\n"<<company<<"shares set to0.\n";
shares=0;
}
else
{
shares=n;
share_val=pr;
person_val=present_val;
set_tot();
//此时自己拥有的总资金就是股票价值加上自己的余额
total_val+=person_val;
}
}
//买股票函数
void stock::buy(int num,double price)
{
if(num<0)
{
std::cerr<<"买的股票数不能为负数\n";
}
else
{
//买入num后 拥有股票数目要增加num
shares+=num;
//股票价值为买入时的价位
share_val=price;
//计算总共花了多少钱
set_tot();
total_val=(num*share_val);
//买完股票以后  拥有的资金将会减少
person_val-=total_val;
//此时的总价值是自己拥有股票的价值加上自己实际的余额
//total_val+=person_val;
}
}
//卖股票函数
void stock::sell(int num,double price)
{
using std::cerr;
if(num<0)
{
std::cerr<<"买的股票数不能为负数\n";
}
else if(num>shares)
{
cerr<<"不能卖出超出自己拥有的股票数目\n";
}
else
{


//进行卖操作以后,股票的数目减少
shares-=num;
//此时的股票价值是卖操作时的价格
share_val=price;
//计算此时的股票市值
set_tot();
total_val=share_val*num;
//卖出股票以后 资金变多了
//person_val+=total_val;
person_val+=(share_val*num);


}
}








//更新股票的价格
void stock::update(double price)
{
share_val=price;
set_tot();
}
//显示个人拥有的股票信息
void stock::show()
{
using std::cout;
using std::endl;
cout<<"Company:"<<company
<<"shares:"<<shares<<endl
<<"share price:"<<share_val<<endl
<<"Total Worth:"<<total_val<<endl
<<"person_val\n"<<person_val<<endl;
}
//主函数
int main()
{
using std::cout;
using std::ios_base;
stock stock1;
stock1.acquire("NanoSmart",20,12.50,200000);


//此三行是格式化命令
cout.setf(ios_base::fixed);//输出格式:#.##
cout.precision(2);//输出格式:#.##
cout.setf(ios_base::showpoint);//输出格式:#.##


stock1.show();
stock1.buy(15,18.25);
stock1.show();
stock1.sell(4,20.0);
std::cout<<"个人持有股票信息如下:股票名称,股票数量,股票价格,股票总值,现有资金"<<std::endl;
stock1.show();
return 0;


}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小白学开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值