




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、#include#include#include#include#include#includeclass Stocklist; /股票鏈表類的聲明struct Custtable; /用戶資料結構體聲明class Custlist; /股票數(shù)據(jù)類聲明Stocklist *head; /臨時指向股票鏈表類的全局指針,作用是當程序運行時,把二進制中的數(shù)據(jù)寫到那個臨時的鏈表中,然后在那個臨時的鏈表中進行各種操作,直到退出程序后再把臨時的鏈表中的數(shù)據(jù)寫入到二進制文件中,相當于保存并更新了文件中的數(shù)據(jù)。Custtable *table; /臨時指向用戶資料結構體的指針,作用類似于上面的“臨時指向股票鏈
2、表類的全局指針”。inline istream& Flush(istream& stream) /在書本中看到的用于清空輸入緩沖區(qū)的函數(shù)。能夠解決過多輸入(如用cin.getline()接收數(shù)據(jù)時,過多的輸入能夠用該函數(shù)來清除掉,以免阻礙后面的輸入),輸入數(shù)據(jù)不符等問題。stream.clear();int chars_to_skip=stream.rdbuf()-in_avail();return stream.ignore(chars_to_skip);struct Custtable /定義股票資料結構體 char Name20; /用戶姓名int Money; ;class CStoc
3、k /股票數(shù)據(jù)類 private: char stock_name20; /股票名稱 char stock_code6; /股票代碼 int stock_volume; /股票總股數(shù) int volume_available,nHangup; /可交易的股數(shù) double Price;/股票的價格CStock *pNext;public: CStock(); /構造函數(shù) CStock(char *code); /用股票代碼初始化數(shù)據(jù) CStock(char *name,char *code,int volume,double price); /初始化數(shù)據(jù) void SetStock(char
4、*name,char *code,int volume,double price); /數(shù)據(jù)賦值 void Show(); /顯示股票信息 char *GetName()return stock_name;/返回股票名稱 char *GetCode()return stock_code; /返回股票代碼 double &GetPrice()return Price; /返回股票價格,買賣之前推斷現(xiàn)金是否足夠 int &GetHangup()return nHangup; /為1掛起,買賣之前推斷是否能進行交易 int &GetVolume_available()return volume_av
5、ailable; /返回可交易總數(shù),購買前推斷輸入的數(shù)據(jù)是否合理 void SubStockModify(int nNum); /購買股票,市場該股可交易總數(shù)減少 void AddStockModify(int nNum); /賣出股票,市場該股可交易總數(shù)增多 CStock *GetNext()return pNext; /返回下一個結點的指針 CStock()cout析構CStock類endl; /析構函數(shù);CStock:CStock() /構造函數(shù) strcpy(stock_name,);strcpy(stock_code,); stock_volume=0;volume_availabl
6、e=0; nHangup=0;Price=0;pNext=0; CStock:CStock(char *code) /用股票代碼初始化數(shù)據(jù) 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) /初始化數(shù)據(jù) strcpy(stock_name,name);strcpy(stock_code,code);stock_volum
7、e=volume;volume_available=volume;nHangup=0;Price=price;pNext=0;void CStock:SetStock(char *name,char *code,int volume,double price) /數(shù)據(jù)賦值 strcpy(stock_name,name);strcpy(stock_code,code);stock_volume=volume;volume_available=volume;nHangup=0;Price=price;pNext=0;void CStock:Show() /顯示股票信息coutsetiosflags
8、(ios:left);coutsetw(15)股票名稱setw(13)代碼setw(14)總股數(shù)setw(16)可交易股數(shù)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) /當股票鏈表的頭指針為空,則把現(xiàn)在插入的結點的指針賦給頭指針 cout該鏈表為空鏈表,現(xiàn)在插入第一個結點!Getpnext()
9、=phead;phead=pnode; else if(strcmp(phead-Getpdata()-GetCode(),pnode-Getpdata()-GetCode()0) /鏈表中已有結點,把現(xiàn)在要插入的結點插入到鏈表開頭pnode-Getpnext()=phead;phead=pnode; else Stocknode *p1,*p2; p1=p2=phead; while(strcmp(p2-Getpdata()-GetCode(),pnode-Getpdata()-GetCode()Getpnext()!=0) /和鏈表中的其他幾點進行比較,直到找到合適的插入位置 p1=p2;
10、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-Get
11、pnext()=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; /動態(tài)開發(fā)新的股票結點空間cout現(xiàn)在添加新股票,請輸入該股票的數(shù)據(jù):endl;cout請輸入股票名稱:endl;cin.getline(stock_name,20); /輸入股票名Flush(cin);
12、/清空過多輸入cout請輸入股票代碼:endl; cin.getline(stock_code,6); Flush(cin); cout請輸入股票總數(shù):stock_volume; while(!cin) /用于解決當輸入數(shù)據(jù)類型不符出現(xiàn)的錯誤cerr輸入數(shù)據(jù)類型不符,請輸入數(shù)字!stock_volume; cout請輸入該股票價格:price; /輸入股票價格while(!cin) /用于解決當輸入數(shù)據(jù)類型不符出現(xiàn)的錯誤cerr輸入數(shù)據(jù)類型不符,請輸入數(shù)字!stock_volume; cin.ignore(); /清丟棄輸入緩沖區(qū)中的字符,以免阻礙后面的輸入cout創(chuàng)建該股票中.SetStoc
13、k(stock_name,stock_code,stock_volume,price); /數(shù)據(jù)賦值pnode-Getpdata()=p; /把股票數(shù)據(jù)賦到結點中Insert(pnode); /把剛創(chuàng)建的結點插入到鏈表中void Stocklist:Showlist() /展示股票鏈表中的所有股票Stocknode *pnode;if(phead=0) cout該鏈表為空鏈表!Getpdata()-Show();pnode=pnode-Getpnext(); Stocknode *Stocklist:Lookupdata(char *str) /查找股票Stocknode *pnode;pno
14、de=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);
15、if(phead=0) /若鏈表為空,則結束該函數(shù)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
16、(); /不為頭結點的情況 delete pnode; numofstock-; /刪除該節(jié)點,刪除動態(tài)開發(fā)的空間 cout刪除股票成功!endl; return; elsereturn; elsecout數(shù)據(jù)中沒有該股票!endl; /鏈表中沒有該股票的情況void Stocklist:Modifystock(int nChoice) /修改股票char *str=請輸入你想修改的該股票的代碼:;Stocknode *pnode;system(cls);if(phead=0) /若鏈表為空鏈表 cout該鏈表為空鏈表!Lookupdata(str); /首先查找出該股票 if(pnode)
17、/假如要查找的股票存在 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(
18、pause);void Stocklist:Deletelist() /刪除鏈表if(phead=0) cout該列表為空列表!Getpnext();delete pnode;pnode=phead; void Interface(); /聲明函數(shù):初始界面void Managementface(); /聲明函數(shù):股票治理界面void Register(); /聲明函數(shù):注冊int Login(); /聲明函數(shù):登錄void readdata() /從二進制文件中讀入數(shù)據(jù)ifstream infile(Stock_File.dat,ios:binary|ios:nocreate); if(!i
19、nfile) /若要讀取的二進制文件不存在cout要讀取的Stock_File.dat文件不存在!endl;cout請確認該文件!endl; cout現(xiàn)在退出程序.GetPrice()=0)break;p1-Getpdata()=p2;head-Insert(p1);infile.close(); void writedata() /把臨時股票鏈表中數(shù)據(jù)寫入到二進制文件Stocknode *pnode;pnode=head-Getphead();ofstream outfile(Stock_File.dat,ios:binary|ios:out);while(pnode) /若未到股票鏈表結尾
20、,則接著把鏈表中的數(shù)據(jù)寫入到二進制文件中outfile.write(char*)pnode-Getpdata(),sizeof(CStock);pnode=pnode-Getpnext();outfile.close(); void managementchoice(int nChoice) /股票治理界面選項推斷函數(shù)switch(nChoice)case 1: /添加新股票head-Addnewstock(); /添加股票system(pause);char str30;while(1) do system(cls); cout是否接著添加?(y/n)Addnewstock(); /添加股票
21、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請問您想修改股票的哪個數(shù)據(jù)?endl; cout1.股票名稱-1endl; cout2.股票代碼-2endl; cout3.返回股票治理菜單-3endl; if(flag=1) cout請輸入您的選項(中的
22、數(shù)字):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() Management
23、face();break; case 4: /退出程序,同時把臨時鏈表中的數(shù)據(jù)寫入到二進制文件中char str30;do system(cls); cout是否退出股票交易系統(tǒng)?(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; /刪除臨時指向股票鏈表類的全局指針和動態(tài)
24、開發(fā)的空間delete table; /刪除臨時指向用戶資料結構體的指針和動態(tài)開發(fā)的空間 exit(0); elsereturn; void Interface() /初始界面 char str30;int nChoice;int flag=1;while(1) system(cls); cout歡迎使用股票交易系統(tǒng)!endl; cout-endl; cout1.顯示股票記錄.1endl; cout2.用戶注冊.2endl; cout3.進入治理系統(tǒng).3endl; cout4.退出系統(tǒng).4endl; cout-endl; if(flag=1) cout請輸入您的選項(中的數(shù)字):endl; e
25、lse 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歡迎進入股票治理菜單!e
26、ndl; cout-endl; cout1.添加股票記錄.1endl; cout2.依照代碼刪除股票數(shù)據(jù).2endl; cout3.修改股票數(shù)據(jù).3endl; cout4.返回主菜單.4endl; cout-endl; if(flag=1) cout請輸入您的選項(中的數(shù)字):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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中泰大米合同樣本
- 借款轉投資合同樣本
- 專利-收益質押合同樣本
- 全店轉讓合同標準文本
- 個人包租合同樣本
- 個人獨資企業(yè)購買合同樣本
- 修建農村菜場合同樣本
- 借款合同標準文本 律師
- 二手特種車輛買賣合同樣本
- 三權分置合同樣本
- 廣東省廣州市番禺區(qū)2023-2024學年八年級上學期期末英語試題(答案)
- 《編制說明-變電站監(jiān)控系統(tǒng)防止電氣誤操作技術規(guī)范》
- 中職語文高二上學期拓展模塊上冊期末模擬卷1解析版
- 高中化學基礎知識超級判斷300題
- 郵政儲蓄銀行的2024年度借款合同范本
- 汽車吊起重吊裝方案
- 從0到1開播指導抖音本地生活商家直播培訓
- 產(chǎn)房助產(chǎn)士進修匯報
- 大型綜合樓新建工程技術方案、施工方案投標文件(投標方案)
- GB/T 16439-2024交流伺服系統(tǒng)通用技術規(guī)范
- 2024義務教育《英語課程標準》(2022版)
評論
0/150
提交評論