股票交易系统代码大全(共12页).doc_第1页
股票交易系统代码大全(共12页).doc_第2页
股票交易系统代码大全(共12页).doc_第3页
股票交易系统代码大全(共12页).doc_第4页
股票交易系统代码大全(共12页).doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include<iostream.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<fstream.h>#include<iomanip.h>class Stocklist; /股票链表类的声明struct Custtable; /用户资料结构体声明class Custlist; /股票数据类声明Stocklist *head; /临时指向股票链表类的全局指针,作用是当程序运行时,把二进制中的数据写到这个临时的链表中,然后在这个临时的链表中进行

2、各种操作,直到退出程序后再把临时的链表中的数据写入到二进制文件中,相当于保存并更新了文件中的数据。Custtable *table; /临时指向用户资料结构体的指针,作用类似于上面的“临时指向股票链表类的全局指针”。inline istream& Flush(istream& stream) /在书本中看到的用于清空输入缓冲区的函数。可以解决过多输入(如用cin.getline()接收数据时,过多的输入可以用该函数来清除掉,以免影响后面的输入),输入数据不符等问题。stream.clear();int chars_to_skip=stream.rdbuf()->in_av

3、ail();return stream.ignore(chars_to_skip);struct Custtable /定义股票资料结构体 char Name20; /用户姓名int Money; ;class CStock /股票数据类 private: char stock_name20; /股票名称 char stock_code6; /股票代码 int stock_volume; /股票总股数 int volume_available,nHangup; /可交易的股数 double Price;/股票的价格CStock *pNext;public: CStock(); /构造函数 CS

4、tock(char *code); /用股票代码初始化数据 CStock(char *name,char *code,int volume,double price); /初始化数据 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;

5、/返回股票价格,买卖之前判断现金是否足够 int &GetHangup()return nHangup; /为1挂起,买卖之前判断是否能进行交易 int &GetVolume_available()return volume_available; /返回可交易总数,购买前判断输入的数据是否合理 void SubStockModify(int nNum); /购买股票,市场该股可交易总数减少 void AddStockModify(int nNum); /卖出股票,市场该股可交易总数增多 CStock *GetNext()return pNext; /返回下一个结点的指针 CSt

6、ock()cout<<"析构CStock类"<<endl; /析构函数;CStock:CStock() /构造函数 strcpy(stock_name,"");strcpy(stock_code,""); stock_volume=0;volume_available=0; nHangup=0;Price=0;pNext=0; CStock:CStock(char *code) /用股票代码初始化数据 strcpy(stock_name,"");strcpy(stock_code,"

7、;"); 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_code,code);stock_volume=volume;volume_available=volume;nHangup=0;Price=price;pNext=0;void CStock:SetStock(char *name,char *

8、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:Show() /显示股票信息cout<<setiosflags(ios:left);cout<<setw(15)<<"股票名称"<<setw(13)<<"代码"

9、<<setw(14)<<"总股数"<<setw(16)<<"可交易股数"<<setw(13)<<"是否挂起"<<setw(10)<<"价格"cout<<setw(15)<<stock_name<<setw(12)<<stock_code<<setw(16)<<stock_volume<<setw(16)<<volume_ava

10、ilable<<setw(11);if(nHangup=1)cout<<"是"elsecout<<"否"cout<<setw(10)<<Price<<endl;void CStock:SubStockModify(int nNum) /购买股票,市场该股可交易总数减少volume_available-=nNum; void CStock:AddStockModify(int nNum) /卖出股票,市场该股可交易总数增多volume_available+=nNum; class St

11、ocknode /股票结点类 private:CStock *pdata; /指向股票数据类的指针Stocknode *pnext; /指向股票结点类的指针 public:Stocknode()pdata=0;pnext=0; /构造函数CStock *&Getpdata(); /返回指向股票数据类的指针Stocknode *&Getpnext(); /返回指向股票结点类的指针;CStock *&Stocknode:Getpdata() /返回指向股票数据类的指针return pdata; Stocknode *&Stocknode:Getpnext() /返回

12、指向股票结点类的指针return pnext; class Stocklist /股票链表类 private:Stocknode *phead; /指向股票结点类的指针,是股票链表的头指针。 int numofstock; /记录市场中已存在的股票数量,最多5只。 public: Stocklist()phead=0;numofstock=0; /构造函数Stocklist()Deletelist(); /析构函数Stocknode *&Getphead()return phead; /返回股票链表的头指针void Showlist(); /展示股票链表中的所有股票void Inser

13、t(Stocknode *pnode); /插入股票结点到股票链表中void Addnewstock(); /添加新股票Stocknode *Lookupdata(char *str); /查找股票,返回指向股票结点类的指针void Deleteoldstock(); /删除已存在的股票void Modifystock(int nChoice); /修改股票数据void Deletelist(); /删除整个股票链表int Getnumofstock()return numofstock; ;void Stocklist:Insert(Stocknode *pnode) /插入股票结点到股票链

14、表中if(head->Getphead()=0) /当股票链表的头指针为空,则把现在插入的结点的指针赋给头指针 cout<<"该链表为空链表,现在插入第一个结点!"<<endl;pnode->Getpnext()=phead;phead=pnode; else if(strcmp(phead->Getpdata()->GetCode(),pnode->Getpdata()->GetCode()>0) /链表中已有结点,把现在要插入的结点插入到链表开头pnode->Getpnext()=phead;phe

15、ad=pnode; else Stocknode *p1,*p2; p1=p2=phead; while(strcmp(p2->Getpdata()->GetCode(),pnode->Getpdata()->GetCode()<0&&p2->Getpnext()!=0) /和链表中的其他几点进行比较,直到找到合适的插入位置 p1=p2;p2=p2->Getpnext(); if(strcmp(p2->Getpdata()->GetCode(),pnode->Getpdata()->GetCode()>0)

16、 /找到适合的插入点后,插入到链表中 p1->Getpnext()=pnode;pnode->Getpnext()=p2; else if(strcmp(p2->Getpdata()->GetCode(),pnode->Getpdata()->GetCode()=0) /若股票代码与之前已存在股票代码重复,则插入不成功 cout<<"该股票与之前的股票代码有重复!"<<"请重新操作!"<<endl; return; else p2->Getpnext()=pnode; /把结点

17、插入到链表的尾部 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<<&

18、quot;请输入股票名称:"<<endl;cin.getline(stock_name,20); /输入股票名Flush(cin); /清空过多输入cout<<"请输入股票代码:"<<endl; cin.getline(stock_code,6); Flush(cin); cout<<"请输入股票总数:"<<endl;cin>>stock_volume; while(!cin) /用于解决当输入数据类型不符出现的错误cerr<<"输入数据类型不符,请输

19、入数字!"<<endl;Flush(cin);cin>>stock_volume; cout<<"请输入该股票价格:"<<endl;cin>>price; /输入股票价格while(!cin) /用于解决当输入数据类型不符出现的错误cerr<<"输入数据类型不符,请输入数字!"<<endl;Flush(cin);cin>>stock_volume; cin.ignore(); /清丢弃输入缓冲区中的字符,以免影响后面的输入cout<<&q

20、uot;创建该股票中."<<endl;p->SetStock(stock_name,stock_code,stock_volume,price); /数据赋值pnode->Getpdata()=p; /把股票数据赋到结点中Insert(pnode); /把刚创建的结点插入到链表中void Stocklist:Showlist() /展示股票链表中的所有股票Stocknode *pnode;if(phead=0) cout<<"该链表为空链表!"<<endl; elsepnode=phead;while(pnode)p

21、node->Getpdata()->Show();pnode=pnode->Getpnext(); Stocknode *Stocklist:Lookupdata(char *str) /查找股票Stocknode *pnode;pnode=phead;cout<<str<<endl;char code6;cin.getline(code,6);Flush(cin);while(pnode->Getpnext()&&strcmp(pnode->Getpdata()->GetCode(),code)pnode=pnode

22、->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) /若链表为空,则结束该函数cout<<

23、"该链表为空链表!"<<endl;return; while(pnode->Getpnext()&&strcmp(pnode->Getpdata()->GetCode(),code) /若链表不为空,则在链表中查找该股票p=pnode;pnode=pnode->Getpnext(); if(strcmp(pnode->Getpdata()->GetCode(),code)=0)cout<<"查找出的股票为:"<<endl;pnode->Getpdata()-&g

24、t;Show(); char str30; while(1)do 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)|(str

25、cmp(str,"Y")=0)if(pnode=phead) /查找出的要删除的股票结点为链表的头结点 phead=phead->Getpnext(); else p->Getpnext()=pnode->Getpnext(); /不为头结点的情况 delete pnode; numofstock-; /删除该节点,删除动态开辟的空间 cout<<"删除股票成功!"<<endl; return; elsereturn; elsecout<<"数据中没有该股票!"<<en

26、dl; /链表中没有该股票的情况void Stocklist:Modifystock(int nChoice) /修改股票char *str="请输入你想修改的该股票的代码:"Stocknode *pnode;system("cls");if(phead=0) /若链表为空链表 cout<<"该链表为空链表!"<<endl; system("pause");else /若链表不为空pnode=head->Lookupdata(str); /首先查找出该股票 if(pnode) /如果要

27、查找的股票存在 cout<<"该股票为:"<<endl<<endl; pnode->Getpdata()->Show(); /把查找出来要修改的股票展示出来switch(nChoice)case 1: /更改股票名char name20;cout<<"你想把股票名称更改成:"cin.getline(name,20);Flush(cin);strcpy(pnode->Getpdata()->GetName(),name);break;case 2: /更改股票代码char code6;

28、cout<<"你想把股票代码更改成:"cin.getline(code,6);Flush(cin);strcpy(pnode->Getpdata()->GetCode(),code);break;cout<<endl<<"修改后的股票变成:"<<endl<<endl;pnode->Getpdata()->Show();system("pause"); else /要修改的股票在链表中不存在 cout<<"链表中没有该股票!&quo

29、t;<<endl;system("pause");void Stocklist:Deletelist() /删除链表if(phead=0) cout<<"该列表为空列表!"<<endl; /若链表为空else /若不为空则把节点从链表头结点开始逐个删除Stocknode *pnode;pnode=phead;while(pnode) phead=phead->Getpnext();delete pnode;pnode=phead; void Interface(); /声明函数:初始界面void Manageme

30、ntface(); /声明函数:股票管理界面void Register(); /声明函数:注册int Login(); /声明函数:登录void readdata() /从二进制文件中读入数据ifstream infile("Stock_File.dat",ios:binary|ios:nocreate); if(!infile) /若要读取的二进制文件不存在cout<<"要读取的"Stock_File.dat"文件不存在!"<<endl;cout<<"请确认该文件!"<&

31、lt;endl; cout<<"现在退出程序."<<endl;exit(0); Stocknode *p1;CStock *p2;while(!infile.eof() /若未到二进制文件结尾则继续把数据读进临时股票链表中p1=new Stocknode;p2=new CStock;infile.read(char*)p2,sizeof(CStock);if(p2->GetPrice()=0)break;p1->Getpdata()=p2;head->Insert(p1);infile.close(); void writedata

32、() /把临时股票链表中数据写入到二进制文件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->Getpnext();outfile.close(); void managementchoice(int nC

33、hoice) /股票管理界面选项判断函数switch(nChoice)case 1: /添加新股票head->Addnewstock(); /添加股票system("pause");char str30;while(1) do system("cls"); cout<<"是否继续添加?(y/n)"<<endl; cin.getline(str,30); while(strcmp(str,"y")!=0)&&(strcmp(str,"Y")!=0)&a

34、mp;&(strcmp(str,"n")!=0)&&(strcmp(str,"N")!=0); if(strcmp(str,"y")=0)|(strcmp(str,"Y")=0) head->Addnewstock(); /添加股票system("pause"); elsereturn; case 2: /删除市场中已存在的股票head->Deleteoldstock();system("pause"); break;case 3: /进入

35、股票修改菜单int flag=1;int nChoice;char str130;while(1)system("cls"); cout<<"欢迎进入修改菜单!"<<endl; cout<<"-"<<endl; cout<<"请问您想修改股票的哪个数据?"<<endl; cout<<"1.股票名称-1"<<endl; cout<<"2.股票代码-2"<<en

36、dl; cout<<"3.返回股票管理菜单-3"<<endl; if(flag=1) cout<<"请输入您的选项(中的数字):"<<endl; else if(flag=0) cout<<"输入错误,请重新输入一次:"<<endl; cin.getline(str1,30); nChoice=atoi(str1); if(nChoice!=1)&&(nChoice!=2)&&(nChoice!=3)&&(nChoi

37、ce!=4)&&(nChoice!=5)&&(nChoice!=6)&&(nChoice!=7) flag=0; else flag=1; if(nChoice!=3) head->Modifystock(nChoice); else return; void mainchoice(int nchoice) /初始界面选项判断switch(nchoice)case 1: /展示链表中的所有股票 head->Showlist(); system("pause");break;case 2: /用户注册system(&

38、quot;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(strcm

39、p(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; /删除临时指向股票链表类的全局指针和动态开辟的空间d

40、elete table; /删除临时指向用户资料结构体的指针和动态开辟的空间 exit(0); elsereturn; void Interface() /初始界面 char str30;int nChoice;int flag=1;while(1) system("cls"); cout<<"欢迎使用股票交易系统!"<<endl; cout<<"-"<<endl; cout<<"1.显示股票记录.1"<<endl; cout<<&

41、quot;2.用户注册.2"<<endl; cout<<"3.进入管理系统.3"<<endl; cout<<"4.退出系统.4"<<endl; cout<<"-"<<endl; if(flag=1) cout<<"请输入您的选项(中的数字):"<<endl; else if(flag=0) cout<<"输入错误,请重新输入一次:"<<endl; cin.

42、getline(str,30);nChoice=atoi(str); if(nChoice!=1)&&(nChoice!=2)&&(nChoice!=3)&&(nChoice!=4) flag=0; system("cls"); else flag=1;mainchoice(nChoice); /初始界面选项判断 void Managementface() /股票管理界面 char str30; int nChoice; int flag=1; while(1) system("cls"); cout<

43、;<"欢迎进入股票管理菜单!"<<endl; cout<<"-"<<endl; cout<<"1.添加股票记录.1"<<endl; cout<<"2.根据代码删除股票数据.2"<<endl; cout<<"3.修改股票数据.3"<<endl; cout<<"4.返回主菜单.4"<<endl; cout<<"-"

44、;<<endl; if(flag=1) cout<<"请输入您的选项(中的数字):"<<endl; else if(flag=0) cout<<"输入错误,请重新输入一次:"<<endl; cin.getline(str,30);nChoice=atoi(str); if(nChoice!=1)&&(nChoice!=2)&&(nChoice!=3)&&(nChoice!=4)&&(nChoice!=5)&&(nChoice!=6) flag=0; system("

温馨提示

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

评论

0/150

提交评论