1、股票交易系统代码大全doc 12页股票交易系统代码大全(doc 12页)#include#include#include#include#include#includeclass Stocklist; /股票链表类的声明struct Custtable; /用户资料结构体声明class Custlist; /股票数据类声明Stocklist *head; /临时指向股票链表类的全局指针,作用是当程序运行时,把二进制中的数据写到这个临时的链表中,然后在这个临时的链表中进行各种操作,直到退出程序后再把临时的链表中的数据写入到二进制文件中,相当于保存并更新了文件中的数据。Custtable *tab
2、le; /临时指向用户资料结构体的指针,作用类似于上面的“临时指向股票链表类的全局指针”。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 /定义股票资料结构体 ch
3、ar Name20; /用户姓名 int Money; ;class CStock /股票数据类 private: char stock_name20; /股票名称 char stock_code6; /股票代码 int stock_volume; /股票总股数 int volume_available,nHangup; /可交易的股数 double Price;/股票的价格 CStock *pNext; if(nHangup=1) cout是; else cout否; coutsetw(10)PriceGetphead()=0) /当股票链表的头指针为空,则把现在插入的结点的指针赋给头指针
4、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()!=0)
5、 /和链表中的其他几点进行比较,直到找到合适的插入位置 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该股票与之前的股票代码有重复!请重新操作!Getpne
6、xt()=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.get
7、line(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.ignore(
8、); /清丢弃输入缓冲区中的字符,以免影响后面的输入 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 *Stockl
9、ist: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; cout
10、请输入你想删除的股票代码: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; while(
11、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; system(
12、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修改后的股
13、票变成: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(); /声明函数:登
14、录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 *pnod
15、e;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
16、-Addnewstock(); /添加股票 system(pause);char str30; while(1) do system(cls); cout是否继续添加?(y/n)Addnewstock(); /添加股票 system(pause); else return; case 2: /删除市场中已存在的股票 head-Deleteoldstock(); system(pause); break; case 3: /进入股票修改菜单 int flag=1;int nChoice; char str130; while(1) system(cls); cout欢迎进入修改菜单!endl;
17、cout-endl; cout请问您想修改股票的哪个数据?endl; cout1.股票名称-1endl; cout2.股票代码-2endl; cout3.返回股票管理菜单-3endl; if(flag=1) cout请输入您的选项(中的数字):endl; else if(flag=0) cout输入错误,请重新输入一次:Modifystock(nChoice); else return; void mainchoice(int nchoice) /初始界面选项判断 switch(nchoice) case 1: /展示链表中的所有股票 head-Showlist(); system(pause
18、); break; case 2: /用户注册 system(cls);Register(); system(pause); break; case 3: /登录后,可进入股票管理界面 system(cls); if(Login() Managementface(); break; case 4: /退出程序,并且把临时链表中的数据写入到二进制文件中 char str30; do system(cls); cout是否退出股票交易系统?(y/n)endl; cin.getline(str,30); while(strcmp(str,y)!=0)&(strcmp(str,Y)!=0)&(strcmp(str,n)!=0)&(strcmp(str,N)!=0); if(strcmp(str,y)=0)|(strcmp(str,Y)=0) writedata(); cout谢谢使用!endl; delete head; /删除临时指向股票链表类的全局指针和动态开辟的空间 delete table; /删除临时指向用户资料结构体的指针和动态开辟的空间 exit(0); else return; void Interface() /初始界面 char str30;int nChoice;int flag=
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1