您好,欢迎访问三七文档
#includeiostream.h#includestdlib.h#includestring.h#includeconio.h#includefstream.h#includeiomanip.hclassStocklist;//股票链表类的声明structCusttable;//用户资料结构体声明classCustlist;//股票数据类声明Stocklist*head;//临时指向股票链表类的全局指针,作用是当程序运行时,把二进制中的数据写到这个临时的链表中,然后在这个临时的链表中进行各种操作,直到退出程序后再把临时的链表中的数据写入到二进制文件中,相当于保存并更新了文件中的数据。Custtable*table;//临时指向用户资料结构体的指针,作用类似于上面的“临时指向股票链表类的全局指针”。inlineistream&Flush(istream&stream)//在书本中看到的用于清空输入缓冲区的函数。可以解决过多输入(如用cin.getline()接收数据时,过多的输入可以用该函数来清除掉,以免影响后面的输入),输入数据不符等问题。{stream.clear();intchars_to_skip=stream.rdbuf()-in_avail();returnstream.ignore(chars_to_skip);}structCusttable//定义股票资料结构体{charName[20];//用户姓名intMoney;};classCStock//股票数据类{private:charstock_name[20];//股票名称charstock_code[6];//股票代码intstock_volume;//股票总股数intvolume_available,nHangup;//可交易的股数doublePrice;//股票的价格CStock*pNext;public:CStock();//构造函数CStock(char*code);//用股票代码初始化数据CStock(char*name,char*code,intvolume,doubleprice);//初始化数据voidSetStock(char*name,char*code,intvolume,doubleprice);//数据赋值voidShow();//显示股票信息char*GetName(){returnstock_name;}//返回股票名称char*GetCode(){returnstock_code;}//返回股票代码double&GetPrice(){returnPrice;}//返回股票价格,买卖之前判断现金是否足够int&GetHangup(){returnnHangup;}//为1挂起,买卖之前判断是否能进行交易int&GetVolume_available(){returnvolume_available;}//返回可交易总数,购买前判断输入的数据是否合理voidSubStockModify(intnNum);//购买股票,市场该股可交易总数减少voidAddStockModify(intnNum);//卖出股票,市场该股可交易总数增多CStock*GetNext(){returnpNext;}//返回下一个结点的指针~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,intvolume,doubleprice)//初始化数据{strcpy(stock_name,name);strcpy(stock_code,code);stock_volume=volume;volume_available=volume;nHangup=0;Price=price;pNext=0;}voidCStock::SetStock(char*name,char*code,intvolume,doubleprice)//数据赋值{strcpy(stock_name,name);strcpy(stock_code,code);stock_volume=volume;volume_available=volume;nHangup=0;Price=price;pNext=0;}voidCStock::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)Priceendl;}voidCStock::SubStockModify(intnNum)//购买股票,市场该股可交易总数减少{volume_available-=nNum;}voidCStock::AddStockModify(intnNum)//卖出股票,市场该股可交易总数增多{volume_available+=nNum;}classStocknode//股票结点类{private:CStock*pdata;//指向股票数据类的指针Stocknode*pnext;//指向股票结点类的指针public:Stocknode(){pdata=0;pnext=0;};//构造函数CStock*&Getpdata();//返回指向股票数据类的指针Stocknode*&Getpnext();//返回指向股票结点类的指针};CStock*&Stocknode::Getpdata()//返回指向股票数据类的指针{returnpdata;}Stocknode*&Stocknode::Getpnext()//返回指向股票结点类的指针{returnpnext;}classStocklist//股票链表类{private:Stocknode*phead;//指向股票结点类的指针,是股票链表的头指针。intnumofstock;//记录市场中已存在的股票数量,最多5只。public:Stocklist(){phead=0;numofstock=0;}//构造函数~Stocklist(){Deletelist();}//析构函数Stocknode*&Getphead(){returnphead;}//返回股票链表的头指针voidShowlist();//展示股票链表中的所有股票voidInsert(Stocknode*pnode);//插入股票结点到股票链表中voidAddnewstock();//添加新股票Stocknode*Lookupdata(char*str);//查找股票,返回指向股票结点类的指针voidDeleteoldstock();//删除已存在的股票voidModifystock(intnChoice);//修改股票数据voidDeletelist();//删除整个股票链表intGetnumofstock(){returnnumofstock;}};voidStocklist::Insert(Stocknode*pnode)//插入股票结点到股票链表中{if(head-Getphead()==0)//当股票链表的头指针为空,则把现在插入的结点的指针赋给头指针{cout该链表为空链表,现在插入第一个结点!endl;pnode-Getpnext()=phead;phead=pnode;}elseif(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())0&&p2-Getpnext()!=0)//和链表中的其他几点进行比较,直到找到合适的插入位置{p1=p2;p2=p2-Getpnext();}if(strcmp(p2-Getpdata()-GetCode(),pnode-Getpdata()-GetCode())0)//找到适合的插入点后,插入到链表中{p1-Getpnext()=pnode;pnode-Getpnext()=p2;}elseif(strcmp(p2-Getpdata()-GetCode(),pnode-Getpdata()-GetCode())==0)//若股票代码与之前已存在股票代码重复,则插入不成功{cout该股票与之前的股票代码有重复!请重新操作!endl;return;}else{p2-Getpnext()=pnode;//把结点插入到链表的尾部pnode-Getpnext()=NULL;}}numofstock++;}voidStocklist::Addnewstock()//添加新股票{CStock*p;Stocknode*pnode;p=newCStock;longintstock_volume;charstock_name[20];charstock_code[6];doubleprice;pnode=newStocknode;//动态开辟新的股票结点空间cout现在添加新股票,请输入该股票的数据:endl;cout请输入股票名称:endl;cin.getline(stock_name,20);//输入股票名Flush(cin);//清空过多输入cout请输入股票代码:endl;cin.getline(stock_code,6);Flush(cin);cout请输入股票总数:endl;cinstock_volume;while(!cin)//用于解决当输入数据类型不符出现的错误{cerr输入数据类型不符,请输入数字!endl;Flush(cin);cinstock_volume;}cout请输入该股票价格:endl;cinprice;//输入股票价格while(!cin)//用于解决当输入数据类型不符出现的错误{cerr输入数据类型不符,请输入数字!endl;Flush(cin);cinstock_volume;}cin.ignore();//清丢弃输入缓冲区中的字符,以免影响后面的输入cout创建该股票中...endl;p-SetStock(stock_name,stock_code,stock_volume,price);//数据赋值pnode-Getpdata()=p;//把股票数据赋到结点中Insert(pnode);//把刚创建的
本文标题:股票交易系统代码
链接地址:https://www.777doc.com/doc-1152337 .html