




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include#include#include#include#includeclass Stocklist; /股票链表类的声明struct Custtable; /用户资料结构体声明class Custlist; /股票数据类声明Stocklist *head; /临时指向股票链表类的全局指针,作用是当程序运行时,把二进制中的数据写到这个临时的链表中,然后在这个临时的链表中进行各种操作,直到退出程序后再把临时的链表中的数据写入到二进制文件中,相当于保存并更新了文件中的数据。Custtable *table; /临时指向用户资料结构体的指针,作用类似于上面的“临时指向股票链表类的全局指针”。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 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); /初始化数据 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_available()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_volume=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_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:Show() /显示股票信息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是;elsecout否;coutsetw(10)PriceGetphead()=0) /当股票链表的头指针为空,则把现在插入的结点的指针赋给头指针 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) /和链表中的其他几点进行比较,直到找到合适的插入位置 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该股票与之前的股票代码有重复!请重新操作!Getpnext()=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.getline(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(); /清丢弃输入缓冲区中的字符,以免影响后面的输入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 *Stocklist: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;elsereturn 0; void Stocklist:Deleteoldstock() /删除已存在的股票Stocknode *pnode,*p;pnode=phead;cout请输入你想删除的股票代码: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(1)do cout是否确定删除该股票(y/n)?Getpnext(); else p-Getpnext()=pnode-Getpnext(); /不为头结点的情况 delete pnode; numofstock-; /删除该节点,删除动态开辟的空间 cout删除股票成功!endl; return; elsereturn; elsecout数据中没有该股票!endl; /链表中没有该股票的情况void Stocklist:Modifystock(int nChoice) /修改股票char *str=请输入你想修改的该股票的代码:;Stocknode *pnode;system(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修改后的股票变成: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(); /声明函数:登录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 *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 nChoice) /股票管理界面选项判断函数switch(nChoice)case 1: /添加新股票head-Addnewstock(); /添加股票system(pause);char str30;while(1) do system(cls); cout是否继续添加?(y/n)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; 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);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); elsereturn; void Interface() /初始界面 char str30;int nChoice;int flag=1;while(1) system(cls); cout欢迎使用股票交易系统!endl; cout-endl; cout1.显示股票记录.1endl; cout2.用户注册.2endl; cout3.进入管理系统.3endl; cout4.退出系统.4endl; cout-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) flag=0; system(cls); else flag=1;mainchoice(nChoice); /初始界面选项判断 void Managementface() /股票管理界面 char str30; int nChoice; int flag=1; while(1) system(cls); cout欢迎进入股票管理菜单!endl; cout-endl; cout1.添加股票记录.1endl; cout2.根据代码删除股票数据.2endl; cout3.修改股票数据.3endl; cout4.返回主菜单.4endl; cout-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(cls); else flag=1; managementchoice(nChoice); /股票管理选项判断 if(nChoice=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车电脑维修培训课件
- 家乡的茶叶250字7篇
- 泸州经理秘书培训课件
- 唐县舒卿培训课件
- 高二统考卷语文作文7篇
- 3年级作文教师节(13篇)
- 打火过日子协议书8篇
- 活动策划流程及风险评估清单
- 淋病护理常规
- 科学小脚的秘密课件
- 单位向个人借款标准合同文本
- DBJ41T 137-2014 防渗墙质量无损检测技术规程
- 中职高教版(2023)语文职业模块-第一单元1.2宁夏闽宁镇:昔日干沙滩今日金沙滩【课件】
- 《著作权法案例》课件
- 百岁居区域+乐活内外勤宣导材料
- 人教版五年级上册数学期末考试试卷含答案
- 内蒙古职工考勤管理制度
- 肩周炎课件教学课件
- 吉林大学介绍
- 信息技术(基础模块)(WPSOffice)中职上下两册全套教学课件
- 2024年越南组串式逆变器行业现状及前景分析2024-2030
评论
0/150
提交评论