股票交易系统代码

上传人:lis****211 文档编号:59994311 上传时间:2022-03-05 格式:DOC 页数:21 大小:80KB
收藏 版权申诉 举报 下载
股票交易系统代码_第1页
第1页 / 共21页
股票交易系统代码_第2页
第2页 / 共21页
股票交易系统代码_第3页
第3页 / 共21页
资源描述:

《股票交易系统代码》由会员分享,可在线阅读,更多相关《股票交易系统代码(21页珍藏版)》请在装配图网上搜索。

1、#include#include#include#include#include#includeclass Stocklist;/股票链表类的声明struct Custtable; /用户资料结构体声明class Custlist;/股票数据类声明Stocklist *head;临时指向股票链表类的全局指针,作用是当程序运行时, 把二进制中的数据写到这个临时的链表中,然后在这个临时的链表中进行各种 操作,直到退出程序后再把临时的链表中的数据写入到二进制文件中,相当于 保存并更新了文件中的数据。Custtable*table;/ 临时指向用户资料结构体的指针,作用类似于上面的 “临 时指向股票链

2、表类的全局指针 ”。inline istrea m& Flush(istream & stream)/在书本中看到的用于清空输入缓冲区 的函数。可以解决过多输入(如用ci n. getli ne()接收数据时,过多的输入可以用该函数来清除掉,以免影响后面的输入),输入数据不符等问题。stream.clear();int chars_to_skip=stream.rdbuf()-in_avail();return stream.ignore(chars_to_skip);struct Custtable/定义股票资料结构体char Name20;/ 用户姓名 int Money;class CS

3、tock/股票数据类private:char stock_name20;/ 股票名称char stock_code6;/ 股票代码int stock_volume;/ 股票总股数in t volume_available ,nHan gup;/ 可交易的股数double Price;/股票的价格CStock *pNext;public:CStock(); 构造函数CStock(char *code);用股票代码初始化数据CStock(char *name,char *code,int volume,double price);/初始化数据 void SetStock(char *name,ch

4、ar *code,int volume,double price);/数据赋值 void Show(); 显示股票信息char *GetName()return stock_name; 返回股票名称char *GetCode()return stock_code; 返回股票代码double & GetPrice()return Price;/返回股票价格,买卖之前判断现金是否足 够int &GetHangup()return nHangup;/为1挂起,买卖之前判断是否能进行交 易 int &GetVolume_available()return volume_available;/ 返回可交

5、易总数,购买 前判断输入的数据是否合理void SubStockModify(int nNum);/ 购买股票,市场该股可交易总数减少 void AddStockModify(int nNum);/ 卖出股票,市场该股可交易总数增多 CStock *GetNext()return pNext;/ 返回下一个结点的指针CStock()cout析构 CStock类endl; 析构函数;CStock:CStock()/构造函数 strcpy(stock_name,);strcpy(stock_code,);stock_volume=0;volume_available=0;nHangup=0;Pri

6、ce=0;pNext=0;CStock:CStock(char *code)/用股票代码初始化数据 strcpy(stock_name,);strcpy(stock_code,);stock_volume=0;volume_available=0;nHangup=0;Price=0;pNext=0;CStock:CStock(char *n ame,char *code,i nt volume,double price)/初 始化数据strcpy(stock_name,name);strcpy(stock_code,code);stock_volume=volume;volume_availa

7、ble=volume;nHangup=0;Price=price;pNext=0;void CStock:SetStock(char *n ame,char *code,i nt volume,double price)/数 据赋 值strcpy(stock_name,name);strcpy(stock_code,code);stock_volume=volume;volume_available=volume;nHangup=0;Price=price;pNext=0;void CStock:Show()显示股票信息coutsetiosflags(ios:left);coutsetw(15

8、)股票名称setw(13)代码setw(14)总股数 setw(16)可交易股数setw(13)是否挂起setw(10)价格;coutsetw(15)stock_namesetw(12)stock_codesetw(16)stock_volu mesetw(16)volume_availablesetw(11);if(nHan gup=1)cout是;elsecoutvv否;coutsetw(10)PriceGetphead()=O)当股票链表的头指针为空,则把现在插入的结点 的指针赋给头指针coutvv该链表为空链表,现在插入第一个结点!Getpnext()=phead;phead=pnod

9、e; elseif(strcmp(phead-Getpdata()-GetCode(),pnode-Getpdata()-GetCode()0)/链表中已有结点,把现在要插入的结点插入到链表开头pnode-Getpnext()=phead;phead=pnode;elseStocknode *p1,*p2; p1=p2=phead;while(strcmp(p2-Getpdata()-GetCode(),pnode-Getpdata()-GetCode()Getp next()!=0)和链表中的其他几点进行比较,直到找到合适的插入位置p1=p2;p2=p2-Getpnext(); if(str

10、cmp(p2-Getpdata()-GetCode(),p node-Getpdata()-GetCode()0)找 到 适合的插入点后,插入到链表中p1-Getpnext()=pnode;pnode-Getpnext()=p2;elseif(strcmp(p2-Getpdata()-GetCode(),pnode-Getpdata()-GetCode()=0)/ 若股票代码与之前已存在股票代码重复,则插入不成功coutvv该股票与之前的股票代码有重复!请重新操作! Getpnext()=pnode;/ 把结点插入到链表的尾部pnode-Getpnext()=NULL;numofstock+;

11、void Stocklist:Addnewstock()/ 添加新股票CStock *p;Stocknode *pnode;p=new CStock;long int stock_volume;char stock_name20; char stock_code6;double price; pn ode二new Stock node;/动态开辟新的股票结点空间coutvv现在添加新股票,请输入该股票的数据:e ndl;coutvv请输入股票名称:e ndl;cin. getli ne(stock_name,20); 输入股票名Flush(c in);/清空过多输入coutvv请输入股票代码:

12、stock_volume;while(!cin)用于解决当输入数据类型不符出现的错误cerrvv输入数据类型 不符,请输入数字! vvendl;Flush(cin);cinstock_volume;cout 请输入该股票价格: price;/ 输入股票价格while(!cin)用于解决当输入数据类型不符出现的错误cerr输入数据类型 不符,请输入数字! stock_volume;ci n.ig nore();清丢弃输入缓冲区中的字符,以免影响后面的输入coutvv”创建该股票中 .SetStock(stock_ name,stock_code,stock_volume,price);/数 据赋

13、值pn ode-Getpdata()=p;/把股票数据赋到结点中Insert(pnode);/ 把刚创建的结点插入到链表中void Stocklist:Showlist()展示股票链表中的所有股票Stocknode *pnode;if(phead=0) cout该链表为空链表!Getpdata()-Show();pnode=pnode-Getpnext(); Stock node *Stocklist: Lookupdata(char *str)/ 查找股票Stocknode *pnode; pnode=phead; coutstrGetpnext()&strcmp(pnode-Getpdat

14、a()-GetCode(),code) pnode=pnode-Getpnext();if(strcmp(pnode-Getpdata()-GetCode(),code)=0)return pnode;elsereturn 0;void Stocklist:Deleteoldstock()/ 删除已存在的股票Stocknode *pnode,*p;pnode=phead;cout 请输入你想删除的股票代码: endl;char code6; cin.getline(code,6);Flush(cin);if(phead=0)/ 若链表为空,则结束该函数coutvv该链表为空链表! Getpne

15、xt()&strcmp(pnode-Getpdata()-GetCode(),code)空,则在链表中查找该股票p=pnode;pnode=pnode-Getpnext();if(strcmp(pnode-Getpdata()-GetCode(),code)=0)coutvv查找出的股票为:Getpdata()-Show();char str30;/ 若链表不为while(1)docoutvv是否确定删除该股票(y/n)?vvendl;cin.getline(str,30);while(strcmp(str,y)!=0)&(strcmp(str,Y)!=0)&(strcmp(str,n)!=0

16、)&(strc mp(str,N)!=0);if(strcmp(str,y)=0)|(strcmp(str,Y)=0)if(p node=phead)查找出的要删除的股票结点为链表的头结点phead=phead-Getpnext();elsep-Getp next()二p node-Getp next(); 不为头结点的情况delete pnode; numofstock-;/删除该节点,删除动态开辟的空间coutvv删除股票成功! vvendl;return;elsereturn;elsecoutvv数据中没有该股票! e ndl;链表中没有该股票的情况void Stocklist:Modi

17、fystock( int n Choice)/ 修改股票char *str= 请输入你想修改的该股票的代码: ;Stocknode *pnode; system(cls);if(phead=0) /若链表为空链表coutvv该链表为空链表!Lookupdata(str); 首先查找出该股票if(pnode)/ 如果要查找的股票存在coutvv该股票为:Getpdata()-Show();把查找出来要修改的股票展示出来switch(nChoice)case 1:/更改股票名char name20;coutvv你想把股票名称更改成:;cin.getline(name,20);Flush(cin);

18、strcpy(pnode-Getpdata()-GetName(),name);break;case 2:/ 更改股票代码char code6;coutGetpdata()-GetCode(),code);break;coute ndlvv修改后的股票变成:Getpdata()-Show();system(pause); else/ 要修改的股票在链表中不存在coutvv链表中没有该股票!e ndl;system(pause);void Stocklist:Deletelist()/ 删除链表if(phead=0)cout,该列表为空列表!Getpnext();delete pnode;pno

19、de=phead; void Interface();/ 声明函数:初始界面void Managementface();/ 声明函数:股票管理界面void Register();/ 声明函数:注册int Login();/ 声明函数:登录void readdata()/ 从二进制文件中读入数据ifstream infile(Stock_File.dat,ios:binary|ios:nocreate);if(!infile)/ 若要读取的二进制文件不存在cout要读取的 Stock_File.dat文件不存在! endl;coutvv请确认该文件! e ndl;cout现在退出程序GetPri

20、ce()=0)break;p1-Getpdata()=p2;head-Insert(p1);infile.close();void writedata()/ 把临时股票链表中数据写入到二进制文件Stocknode *pnode;pnode=head-Getphead();ofstream outfile(Stock_File.dat,ios:binary|ios:out);while(pnode)/ 若未到股票链表结尾,则继续把链表中的数据写入到二进制 文件中 outfile.write(char*)pnode-Getpdata(),sizeof(CStock);pnode=pnode-Get

21、pnext();outfile.close();void managementchoice(int nChoice)/ 股票管理界面选项判断函数switch(nChoice)case 1:/ 添加新股票head-Addnewstock();/ 添加股票system(pause);char str30;while(1) dosystem(cls);coutvv是否继续添加? (y/n)e ndl;cin.getline(str,30); while(strcmp(str,y)!=0)&(strcmp(str,Y)!=0)&(strcmp(str,n)!=0)&(strc mp(str,N)!=0

22、);if(strcmp(str,y)=0)|(strcmp(str,Y)=0)head-Addnewstock();/ 添加股票system(pause);elsereturn; case 2:/ 删除市场中已存在的股票head-Deleteoldstock();system(pause); break;case 3:/进入股票修改菜单int flag=1;int nChoice;char str130;while(1)system(cls);cout 欢迎进入修改菜单! endl;coutendl;cout 请问您想修改股票的哪个数据? endl;coutvv1.股票名称1vve ndl;c

23、out2.股票代码2vve ndl;endl;elsecout3.返回股票管理菜单 3endl;if(flag=1)cout请输入您的选项(中的数字): if(flag=0)coutvv,输入错误,请重新输入一次: Modifystock(nChoice);elsereturn;void mainchoice(int nchoice)/ 初始界面选项判断switch(nchoice)case 1:/ 展示链表中的所有股票head-Showlist(); system(pause);break;case 2:/ 用户注册system(cls);Register();system(pause);b

24、reak;case 3:/登录后,可进入股票管理界面system(cls);if(Login()Managementface();break;case 4:/ 退出程序,并且把临时链表中的数据写入到二进制文件中char str30;dosystem(cls);cout 是否退出股票交易系统? (y/n)endl;cin.getline(str,30);while(strcmp(str,y)!=0)&(strcmp(str,Y)!=0)&(strcmp(str,n)!=0)&(strc mp(str,N)!=0);if(strcmp(str,y)=0)|(strcmp(str,Y)=0)writ

25、edata();cout 谢谢使用! endl;delete head;/ 删除临时指向股票链表类的全局指针和动态开辟的空间 delete table;/ 删除临时指向用户资料结构体的指针和动态开辟的空间 exit(0); elsereturn;void Interface()/ 初始界面char str30;int nChoice;int flag=1;while(1)system(cls);cout 欢迎使用股票交易系统! endl;coutendl;cout1.显示股票记录1endl;cout2.用户注册2e ndl;cout3.进入管理系统3endl;cout4.退出系统4e ndl;

26、coutendl;if(flag=1)cout请输入您的选项(中的数字):endl; else if(flag=0)cout输入错误,请重新输入一次:e ndl; cin.getline(str,30);nChoice=atoi(str); if(nChoice!=1)&(nChoice!=2)&(nChoice!=3)&(nChoice!=4) flag=0; system(cls); else flag=1;mai nchoice( nChoice);/初始界面选项判断void Ma nageme ntface() 股票管理界面char str30;int nChoice;int flag

27、=1;while(1)system(cls);coutvv欢迎进入股票管理菜单!e ndl;coutendl;coutvv1.添加股票记录 1vvendl;cout2.根据代码删除股票数据 2vvendl;cout3.修改股票数据3endl;cout4.返回主菜单4endl;coutendl;if(f lag= 1 )co u t 请输入您的选项( 中的数字): endl;else if(flag=O)coutv 输入错误,请重新输入一次:e ndl; cin.getline(str,30);nChoice=atoi(str);if(nChoice!=1)&(nChoice!=2)&(nCho

28、ice!=3)&(nChoice!=4)&(nChoice!=5) &(nChoice!=6) flag=0; system(cls); elseflag=1; ma nageme ntchoice( nChoice);/股票管理选项判断if(nChoice=4)return; int Login()/ 登录char str110;cout请输入用户名:Name,str1)!=0)/ 与注册了已存在的用户名进行比较 用户名输入错误 !endl;infile1.close(); system(pause);return 0;elsecoutvv请先注册! e ndl;infile1.close(

29、);system(pause);return 0;void Register()/ 用户注册Custtable temp;coutvv欢迎注册! e ndl;coutvv请填下下面的资料endl;start:coutvv请输入用户名:Name,20);ifstream infile1(Customer.dat,ios:binary|ios:nocreate);if(infile1)while(!infile1.eof()infile1.read(char*)&temp,sizeof(Custtable); coute ndlvv请输入资金:table-Money;cin.get();ofstr

30、eam outfile(Customer.dat,ios:binary|ios:app);outfile.write(char*)table,sizeof(Custtable);outfile.close();outfile.open(strcat(table-Name,.dat),ios:binary);outfile.close();void main()ofstreamoutfile(Stock_File.dat,ios:noreplace);/ 若文件不存在则作为新文件 打开它,若文件已存在则操作失败outfile.close();head二new Stocklist;/给临时指向股票链表类的全局指针开辟新空间table二new Custtable;/给临时指向用户资料结构体的指针开辟新空间readdata();从二进制文件中读取数据到临时链表while(1)Interface(); /初始界面

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!