1、股票交易系统代码股票交易系统代码#include#include#include#include#include#includeclass Stocklist; /股票链表类的声明struct Custtable; /用户资料结构体声明class Custlist; /股票数据类声明Stocklist *head; /临时指向股票链表类的全局指针,作用是当程序运行时,把二进制中的数据写到这个临时的链表中,然后在这个临时的链表中进行各种操作,直到退出程序后再把临时的链表中的数据写入到二进制文件中,相当于保存并更新了文件中的数据。Custtable *table; /临时指向用户资料结构体的指针,
2、作用类似于上面的“临时指向股票链表类的全局指针”。inline istream& Flush(istream& stream) /在书本中看到的用于清空输入缓冲区的函数。可以解决过多输入(如用cin.getline()接收数据时,过多的输入可以用该函数来清除掉,以免影响后面的输入),输入数据不符等问题。 stream.clear(); int chars_to_skip=stream.rdbuf()-in_avail(); return stream.ignore(chars_to_skip);struct Custtable /定义股票资料结构体 char Name20; /用户姓名 int
3、 Money; ;class CStock /股票数据类 private: char stock_name20; /股票名称 char stock_code6; /股票代码 int stock_volume; /股票总股数 int volume_available,nHangup; /可交易的股数 double Price;/股票的价格 CStock *pNext;public: CStock(); /构造函数 CStock(char *code); /用股票代码初始化数据 CStock(char *name,char *code,int volume,double price); /初始化数
4、据 void SetStock(char *name,char *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_availa
5、ble()return volume_available; /返回可交易总数,购买前判断输入的数据是否合理 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_vo
6、lume=0;volume_available=0; nHangup=0;Price=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 *name,char *code,int volume,double price) /初始化数据 strcpy(stock_name,name);strcpy(stock_
7、code,code); stock_volume=volume;volume_available=volume; nHangup=0;Price=price;pNext=0;void CStock:SetStock(char *name,char *code,int 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:Sho
8、w() /显示股票信息 coutsetiosflags(ios:left); coutsetw(15)股票名称setw(13)代码setw(14)总股数setw(16)可交易股数setw(13)是否挂起setw(10)价格; coutsetw(15)stock_namesetw(12)stock_codesetw(16)stock_volumesetw(16)volume_availablesetw(11); if(nHangup=1) cout是; else cout否; coutsetw(10)PriceGetphead()=0) /当股票链表的头指针为空,则把现在插入的结点的指针赋给头指
9、针 cout该链表为空链表,现在插入第一个结点!Getpnext()=phead;phead=pnode; else if(strcmp(phead-Getpdata()-GetCode(),pnode-Getpdata()-GetCode()0) /链表中已有结点,把现在要插入的结点插入到链表开头 pnode-Getpnext()=phead; phead=pnode; else Stocknode *p1,*p2; p1=p2=phead; while(strcmp(p2-Getpdata()-GetCode(),pnode-Getpdata()-GetCode()Getpnext()!=
10、0) /和链表中的其他几点进行比较,直到找到合适的插入位置 p1=p2;p2=p2-Getpnext(); if(strcmp(p2-Getpdata()-GetCode(),pnode-Getpdata()-GetCode()0) /找到适合的插入点后,插入到链表中 p1-Getpnext()=pnode;pnode-Getpnext()=p2; else if(strcmp(p2-Getpdata()-GetCode(),pnode-Getpdata()-GetCode()=0) /若股票代码与之前已存在股票代码重复,则插入不成功 cout该股票与之前的股票代码有重复!请重新操作!Getp
11、next()=pnode; /把结点插入到链表的尾部 pnode-Getpnext()=NULL; numofstock+; void Stocklist:Addnewstock() /添加新股票 CStock *p;Stocknode *pnode; p=new CStock;long int stock_volume; char stock_name20; char stock_code6; double price; pnode=new Stocknode; /动态开辟新的股票结点空间 cout现在添加新股票,请输入该股票的数据:endl; cout请输入股票名称:endl; cin.g
12、etline(stock_name,20); /输入股票名 Flush(cin); /清空过多输入 cout请输入股票代码:endl; cin.getline(stock_code,6); Flush(cin); cout请输入股票总数:stock_volume; while(!cin) /用于解决当输入数据类型不符出现的错误 cerr输入数据类型不符,请输入数字!stock_volume; cout请输入该股票价格:price; /输入股票价格 while(!cin) /用于解决当输入数据类型不符出现的错误 cerr输入数据类型不符,请输入数字!stock_volume; cin.ignor
13、e(); /清丢弃输入缓冲区中的字符,以免影响后面的输入 cout创建该股票中.SetStock(stock_name,stock_code,stock_volume,price); /数据赋值 pnode-Getpdata()=p; /把股票数据赋到结点中 Insert(pnode); /把刚创建的结点插入到链表中 void Stocklist:Showlist() /展示股票链表中的所有股票 Stocknode *pnode; if(phead=0) cout该链表为空链表!Getpdata()-Show(); pnode=pnode-Getpnext(); Stocknode *Stoc
14、klist:Lookupdata(char *str) /查找股票 Stocknode *pnode; pnode=phead; coutstrGetpnext()&strcmp(pnode-Getpdata()-GetCode(),code) pnode=pnode-Getpnext(); if(strcmp(pnode-Getpdata()-GetCode(),code)=0) return pnode; else return 0; void Stocklist:Deleteoldstock() /删除已存在的股票 Stocknode *pnode,*p; pnode=phead; co
15、ut请输入你想删除的股票代码:endl; char code6; cin.getline(code,6); Flush(cin); if(phead=0) /若链表为空,则结束该函数 cout该链表为空链表!Getpnext()&strcmp(pnode-Getpdata()-GetCode(),code) /若链表不为空,则在链表中查找该股票 p=pnode; pnode=pnode-Getpnext(); if(strcmp(pnode-Getpdata()-GetCode(),code)=0) cout查找出的股票为:Getpdata()-Show(); char str30; whil
16、e(1) do cout是否确定删除该股票(y/n)?Getpnext(); else p-Getpnext()=pnode-Getpnext(); /不为头结点的情况 delete pnode; numofstock-; /删除该节点,删除动态开辟的空间 cout删除股票成功!endl; return; else return; else cout数据中没有该股票!endl; /链表中没有该股票的情况 void Stocklist:Modifystock(int nChoice) /修改股票 char *str=请输入你想修改的该股票的代码:; Stocknode *pnode; syste
17、m(cls); if(phead=0) /若链表为空链表 cout该链表为空链表!Lookupdata(str); /首先查找出该股票 if(pnode) /如果要查找的股票存在 cout该股票为:endlGetpdata()-Show(); /把查找出来要修改的股票展示出来 switch(nChoice) case 1: /更改股票名 char name20; coutGetpdata()-GetName(),name); break; case 2: /更改股票代码 char code6; coutGetpdata()-GetCode(),code); break; coutendl修改后
18、的股票变成:endlGetpdata()-Show();system(pause); else /要修改的股票在链表中不存在 cout链表中没有该股票!endl; system(pause); void Stocklist:Deletelist() /删除链表 if(phead=0) cout该列表为空列表!Getpnext(); delete pnode; pnode=phead; void Interface(); /声明函数:初始界面void Managementface(); /声明函数:股票管理界面void Register(); /声明函数:注册int Login(); /声明函数
19、:登录void readdata() /从二进制文件中读入数据 ifstream infile(Stock_File.dat,ios:binary|ios:nocreate); if(!infile) /若要读取的二进制文件不存在 cout要读取的Stock_File.dat文件不存在!endl; cout请确认该文件!endl; cout现在退出程序.GetPrice()=0) break; p1-Getpdata()=p2; head-Insert(p1); infile.close(); void writedata() /把临时股票链表中数据写入到二进制文件 Stocknode *pn
20、ode;pnode=head-Getphead(); ofstream outfile(Stock_File.dat,ios:binary|ios:out); while(pnode) /若未到股票链表结尾,则继续把链表中的数据写入到二进制文件中 outfile.write(char*)pnode-Getpdata(),sizeof(CStock); pnode=pnode-Getpnext(); outfile.close(); void managementchoice(int nChoice) /股票管理界面选项判断函数 switch(nChoice) case 1: /添加新股票 head-Addnewstock(); /添加股票 system(pause);char str30; while(1) do system(cls); cout是否继续添加?(y/n)Addnewstock(); /添加股票 system(pause); else return; cas
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2