欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

股票交易系统代码

  • 资源ID:59994311       资源大小:80KB        全文页数:21页
  • 资源格式: DOC        下载积分:20积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要20积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

股票交易系统代码

#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;临时指向股票链表类的全局指针,作用是当程序运行时, 把二进制中的数据写到这个临时的链表中,然后在这个临时的链表中进行各种 操作,直到退出程序后再把临时的链表中的数据写入到二进制文件中,相当于 保存并更新了文件中的数据。Custtable*table;/ 临时指向用户资料结构体的指针,作用类似于上面的 “临 时指向股票链表类的全局指针 ”。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 CStock/股票数据类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,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 *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: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()显示股票信息cout<<setiosflags(ios:left);cout<<setw(15)<<"股票名称"<<setw(13)<<"代码"<<setw(14)<<"总股数 "<<setw(16)<<"可交易股数"<<setw(13)<<"是否挂起"<<setw(10)<<"价格"cout<<setw(15)<<stock_name<<setw(12)<<stock_code<<setw(16)<<stock_volu me<<setw(16)<<volume_available<<setw(11);if(nHan gup=1)cout<<"是"elsecoutvv"否"cout<<setw(10)<<Price<<endl;void CStock:SubStockModify(i nt nNum)/购买股票,市场该股可交易总数减 少volume_available-=nNum;void CStock:AddStockModify(i nt n Num)/卖出股票,市场该股可交易总数增多volume_available+=nNum; class Stock node/股 票结点类 private:CStock *pdata;/指向股票数据类的指针Stocknode *pnext;/ 指向股票结点类的指针public:Stock node()pdata=O;p next=0; 构造函数CStock *&Getpdata();/ 返回指向股票数据类的指针Stocknode *&Getpnext();/ 返回指向股票结点类的指针;CStock *&Stock node:Getpdata()返回指向股票数据类的指针return pdata;Stock node *&Stock node:Getp next()返回指向股票结点类的指针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 In sert(Stocknode *pn ode);/插入股票结点到股票链表中void Add newstock(); 添加新股票Stock node *Lookupdata(char *str);/查找股票,返回指向股票结点类的指针 void Deleteoldstock();/删除已存在的股票void Modifystock(int nChoice);/ 修改股票数据void Deletelist();/ 删除整个股票链表int Getnumofstock()return numofstock;void Stocklist:Insert(Stocknode *pnode)/ 插入股票结点到股票链表中if(head->Getphead()=O)当股票链表的头指针为空,则把现在插入的结点 的指针赋给头指针coutvv"该链表为空链表,现在插入第一个结点!"<<e ndl;pnode->Getpnext()=phead;phead=pnode; 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()<0&& p2->Getp next()!=0)和链表中的其他几点进行比较,直到找到合适的插入位置p1=p2;p2=p2->Getpnext(); if(strcmp(p2->Getpdata()->GetCode(),p node->Getpdata()->GetCode()>0)找 到 适合的插入点后,插入到链表中p1->Getpnext()=pnode;pnode->Getpnext()=p2;elseif(strcmp(p2->Getpdata()->GetCode(),pnode->Getpdata()->GetCode()=0)/ 若股票代码与之前已存在股票代码重复,则插入不成功coutvv"该股票与之前的股票代码有重复!"<<"请重新操作! "<<endl;return;elsep2->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; pn ode二new Stock node;/动态开辟新的股票结点空间coutvv"现在添加新股票,请输入该股票的数据:"<<e ndl;coutvv"请输入股票名称:"<<e ndl;cin. getli ne(stock_name,20); 输入股票名Flush(c in);/清空过多输入coutvv"请输入股票代码:"<<e ndl;cin.getline(stock_code,6);Flush(cin);coutvv"请输入股票总数:"vve ndl;ci n>>stock_volume;while(!cin)用于解决当输入数据类型不符出现的错误cerrvv'输入数据类型 不符,请输入数字! "vvendl;Flush(cin);cin>>stock_volume;cout<<" 请输入该股票价格: "<<endl;cin>>price;/ 输入股票价格while(!cin)用于解决当输入数据类型不符出现的错误cerr<<"输入数据类型 不符,请输入数字! "<<endl;Flush(cin);cin>>stock_volume;ci n.ig nore();清丢弃输入缓冲区中的字符,以免影响后面的输入coutvv”创建该股票中 ."<<endl;p->SetStock(stock_ name,stock_code,stock_volume,price);/数 据赋值pn ode->Getpdata()=p;/把股票数据赋到结点中Insert(pnode);/ 把刚创建的结点插入到链表中void Stocklist:Showlist()展示股票链表中的所有股票Stocknode *pnode;if(phead=0) cout<<"该链表为空链表!"<<endl; elsepnode=phead;while(pnode)pnode->Getpdata()->Show();pnode=pnode->Getpnext(); Stock node *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->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"该链表为空链表! "<<e ndl;return;while(pnode->Getpnext()&&strcmp(pnode->Getpdata()->GetCode(),code)空,则在链表中查找该股票p=pnode;pnode=pnode->Getpnext();if(strcmp(pnode->Getpdata()->GetCode(),code)=0)coutvv"查找出的股票为:"<<e ndl;pnode->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)&&(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:Modifystock( int n Choice)/ 修改股票char *str=" 请输入你想修改的该股票的代码: "Stocknode *pnode; system("cls");if(phead=0) /若链表为空链表coutvv"该链表为空链表!"<<e ndl;system("pause");else/若链表不为空pn ode二head->Lookupdata(str); 首先查找出该股票if(pnode)/ 如果要查找的股票存在coutvv"该股票为:"<<e ndlvve ndl;pn ode->Getpdata()->Show();把查找出来要修改的股票展示出来switch(nChoice)case 1:/更改股票名char name20;coutvv"你想把股票名称更改成:"cin.getline(name,20);Flush(cin);strcpy(pnode->Getpdata()->GetName(),name);break;case 2:/ 更改股票代码char code6;cout<<" 你想把股票代码更改成: " cin.getline(code,6);Flush(cin); strcpy(pnode->Getpdata()->GetCode(),code);break;cout«e ndlvv"修改后的股票变成:"<<e ndl«e ndl;pnode->Getpdata()->Show();system("pause"); else/ 要修改的股票在链表中不存在coutvv"链表中没有该股票!"<<e ndl;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 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«"现在退出程序"<<endl;exit(0);Stocknode *p1;CStock *p2;while(!infile.eof()/ 若未到二进制文件结尾则继续把数据读进临时股票链表 中p1= new Stock no de;p2 二new CStock;infile.read(char*)p2,sizeof(CStock);if(p2->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) 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);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;cout<<""<<endl;cout<<" 请问您想修改股票的哪个数据? "<<endl;coutvv"1.股票名称1"vve ndl;cout<<"2.股票代码2"vve ndl;"<<endl;elsecout<<"3.返回股票管理菜单 3"<<endl;if(flag=1)cout<<"请输入您的选项(中的数字): if(flag=0)coutvv,输入错误,请重新输入一次: "<<endl;cin.getline(str1,30);nChoice=atoi(str1);if(nChoice!=1)&&(nChoice!=2)&&(nChoice!=3)&&(nChoice!=4)&&(nChoice!=5) &&(nChoice!=6)&&(nChoice!=7)flag=0;elseflag=1;if(nChoice!=3)head->Modifystock(nChoice);elsereturn;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;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)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;cout<<"1.显示股票记录1"<<endl;cout<<"2.用户注册2"<<e ndl;cout<<"3.进入管理系统3"<<endl;cout<<"4.退出系统4"<<e ndl;cout<<""<<endl;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=1;while(1)system("cls");coutvv"欢迎进入股票管理菜单!"<<e ndl;cout<<""<<endl;coutvv"1.添加股票记录 1"vvendl;cout<<"2.根据代码删除股票数据 2"vvendl;cout<<"3.修改股票数据3"<<endl;cout<<"4.返回主菜单4"<<endl;cout<<""<<endl;if(f lag= 1 )co u t< < "请输入您的选项( 中的数字): "<<endl;else if(flag=O)cout<v 输入错误,请重新输入一次:"<<e ndl; cin.getline(str,30);nChoice=atoi(str);if(nChoice!=1)&&(nChoice!=2)&&(nChoice!=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«"请输入用户名:"<<e ndl;cin.getline(str1,20);ifstream infile1("Customer.dat",ios:binary|ios:nocreate);if(infile1)while(!infile1.eof()infile1.read(char*)table,sizeof(Custtable);coutvv"if(strcmp(table->Name,str1)!=0)/ 与注册了已存在的用户名进行比较 用户名输入错误 !"<<endl;infile1.close(); system("pause");return 0;elsecoutvv"请先注册! "<<e ndl;infile1.close();system("pause");return 0;void Register()/ 用户注册Custtable temp;coutvv"欢迎注册! "<<e ndl;coutvv"请填下下面的资料"<<endl;start:coutvv"请输入用户名:"<<e ndl;cin.getline(table->Name,20);ifstream infile1("Customer.dat",ios:binary|ios:nocreate);if(infile1)while(!infile1.eof()infile1.read(char*)&temp,sizeof(Custtable); cout«e ndlvv"请输入资金:"<<e ndl;cin>>table->Money;cin.get();ofstream 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(); /初始界面

注意事项

本文(股票交易系统代码)为本站会员(lis****211)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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