第三方物流管理信息系統(tǒng)C++_第1頁
第三方物流管理信息系統(tǒng)C++_第2頁
第三方物流管理信息系統(tǒng)C++_第3頁
第三方物流管理信息系統(tǒng)C++_第4頁
第三方物流管理信息系統(tǒng)C++_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上#include<string>#include<iostream>#include<fstream>#include<cstdlib>#include<sstream>/#include<conio.h>#include<stdio.h>using namespace std;struct ProductNodestring NO;/型號string Name;/名稱string Brand;/品牌int Price;/賣出價int Quantity;/數(shù)量ProductNode*

2、next;/產(chǎn)品庫存鏈表class ProductListProductNode* first;/頭結(jié)點void InitInsert(ProductNode* s); /私有成員函數(shù),初始化時從文件讀入數(shù)據(jù)插入至鏈表public:ProductList()first=new ProductNode;first->next=NULL;/建立只有頭結(jié)點的空鏈表void ReadFile(); /營業(yè)開始,讀入文件void WriteFile(); /營業(yè)結(jié)束,寫入文件void Insert(); /進貨,插入結(jié)點void FindByNO(); /根據(jù)型號查找(結(jié)果不止一個,所以用void

3、)void FindByName(); /根據(jù)名稱查找(同上)void FindByBrand(); /根據(jù)品牌查找(同上)bool Delete(); /提貨,刪除結(jié)點bool Modify(); /修改信息void PrintList()const;/遍歷單鏈表,按序號依次輸出各元素void DataResume(); /*數(shù)據(jù)恢復(fù)*ProductList(); /析構(gòu)函數(shù);void menu()cout<<" -交運0902-n"<<" *第三方物流管理系統(tǒng)*n"<<" -n"<<

4、" 從下面的功能中選擇一個!n"<<" - - -n"<<" *顯示與查詢* *增刪改* *其他*n"<<" - - -n"<<" 1.顯示全部產(chǎn)品信息 5.進貨(插入結(jié)點) 8.存盤n" <<" 2.按型號查詢 6.提貨(刪除結(jié)點) 9.營業(yè)結(jié)束(存盤退出)n"<<" 3.按名稱查詢 7.修改產(chǎn)品信息 a.數(shù)據(jù)恢復(fù)n"<<" 4.按品牌查詢 0.退出(不存盤)n

5、"<<" -nn"/主程序int main()ProductList pl;cout<<"tt歡迎使用第三方物流管理系統(tǒng)n"cout<<"t1.開始營業(yè)nt2.退出n請選擇:"string choice;while(1)cin>>choice;if(choice0='2')exit(0);else if(choice0!='1')cout<<"此序號不存在,請重新輸入!n"else pl.ReadFile();/讀

6、入文件while(1)cout<<"請按回車繼續(xù)."getchar();getchar();system("cls");/清屏menu();/顯示菜單cout<<"請輸入序號:"cin>>choice;/選擇switch(choice0)case '1':pl.PrintList();break;/顯示全部產(chǎn)品信息case '2':pl.FindByNO();break;/按型號查詢case '3':pl.FindByName();break;/按名稱

7、查詢 case '4':pl.FindByBrand();break;/按品牌查詢case '5':pl.Insert();break;/進貨(插入結(jié)點)case '6':pl.Delete();break;/提貨(刪除結(jié)點) case '7':pl.Modify();break;/修改產(chǎn)品信息 case '8':pl.WriteFile();break;/存盤case '9':pl.WriteFile();cout<<"謝謝使用!n"exit(0);/營業(yè)結(jié)束(存盤

8、退出)case 'a':pl.DataResume();break;/數(shù)據(jù)恢復(fù)case '0':cout<<"謝謝使用!n"exit(0); /退出(不存盤) default:cout<<"此序號不存在,請重新輸入!n"cout<<"請選擇:"/*在單鏈表中有序插入結(jié)點*/void ProductList:InitInsert(ProductNode* s) ProductNode* f=first;ProductNode* p=first->next;whil

9、e(p&&p->Price<s->Price)/f結(jié)點始終為p結(jié)點的前趨結(jié)點,退出循環(huán)時,s應(yīng)插入f結(jié)點后f=p;p=p->next;s->next=f->next;f->next=s;/*營業(yè)開始,讀入文件*/void ProductList:ReadFile()ifstream fin("product.txt");/輸入文件流對象if(fin.fail()cout<<"product.txt文件讀入錯誤!n"cout<<"請按回車鍵退出."getc

10、har();exit(0);string oneline;/文件的一行ProductNode* r=first;while(getline(fin,oneline)/當(dāng)文件沒有結(jié)束,讀一行 istringstream sin(oneline);/字符串流 ProductNode* s=new ProductNode; sin>>s->NO>>s->Name>>s->Brand>>s->Price>>s->Quantity; InitInsert(s); void ProductList:PrintList

11、()const cout<<"產(chǎn)品信息如下:n" cout<<"型號"<<"tt"<<"名稱"<<"tt"<<"品牌"<<"tt"<<"單價"<<"tt"<<"數(shù)量"<<endl; ProductNode* p=first->next; while(p) cou

12、t<<p->NO<<"tt"<<p->Name<<"tt"<<p->Brand<<"tt"<<p->Price<<"tt"<<p->Quantity<<endl; p=p->next; void ProductList:WriteFile() ofstream fout("product.txt");/輸出文件流對象 ProductNode*

13、 p=first->next; while(p) fout<<p->NO<<"t"<<p->Name<<"tt"<<p->Brand<<"t"<<p->Price<<"t"<<p->Quantity<<endl; p=p->next; ofstream fout2("diary.txt");/清空日志文件 cout<<&qu

14、ot;存盤成功!n" /析構(gòu)函數(shù) ProductList:ProductList() ProductNode* p=first; ProductNode* q; while(p) /釋放單鏈表的每一個結(jié)點的存儲空間 q=p; /暫存被釋放結(jié)點 p=p->next; /工作指針p指向被釋放結(jié)點的下一個結(jié)點,使單鏈表不斷開 delete q; void ProductList:FindByNO() string NO; bool flag=false;/假定沒有此產(chǎn)品 cout<<"輸入產(chǎn)品型號:" cin>>NO; ProductNod

15、e* p; for(p=first->next;p;p=p->next) if(p->NO=NO) if(flag=false)/只輸出一次標(biāo)題 cout<<"查詢結(jié)果如下:n"<<"型號"<<"tt"<<"名稱"<<"tt"<<"品牌"<<"tt"<<"單價"<<"tt"<<&q

16、uot;數(shù)量"<<endl; cout<<p->NO<<"tt"<<p->Name<<"tt"<<p->Brand<<"tt"<<p->Price<<"tt"<<p->Quantity<<endl; flag=true;/存在產(chǎn)品 if(flag=false)cout<<"無此產(chǎn)品!" void ProductLi

17、st:FindByName() string Name; bool flag=false;/假定沒有 cout<<"輸入產(chǎn)品名稱:" cin>>Name; ProductNode* p=first->next; for(p=first->next;p;p=p->next) if(p->Name=Name) if(flag=false) cout<<"查詢結(jié)果如下:n"<<"型號"<<"tt"<<"名稱"

18、;<<"tt"<<"品牌"<<"tt"<<"單價"<<"tt"<<"數(shù)量"<<endl; cout<<p->NO<<"tt"<<p->Name<<"tt"<<p->Brand<<"tt"<<p->Price<<&qu

19、ot;tt"<<p->Quantity<<endl; flag=true; if(flag=false)cout<<"無此產(chǎn)品!" void ProductList:FindByBrand() string Brand; bool flag=false;/假定沒有 cout<<"輸入產(chǎn)品品牌:" cin>>Brand; ProductNode* p=first->next; for(p=first->next;p;p=p->next) if(p->Bran

20、d=Brand) if(flag=false) cout<<"查詢結(jié)果如下:n"<<"型號"<<"tt"<<"名稱"<<"tt"<<"品牌"<<"tt"<<"單價"<<"tt"<<"數(shù)量"<<endl; cout<<p->NO<<&quo

21、t;tt"<<p->Name<<"tt"<<p->Brand<<"tt"<<p->Price<<"tt"<<p->Quantity<<endl; flag=true; if(flag=false)cout<<"無此產(chǎn)品!" void ProductList:Insert() PrintList(); string NO; cout<<"請輸入產(chǎn)品信息插入

22、(輸入產(chǎn)品型號時輸入z并按回車返回)n" cout<<"產(chǎn)品型號:" cin>>NO; if(NO0='z')return; ProductNode* s=new ProductNode; s->NO=NO; cout<<"產(chǎn)品名稱:" cin>>s->Name; cout<<"產(chǎn)品品牌:" cin>>s->Brand; ProductNode* p=first->next; /工作指針p初始化 while (p&

23、amp;&!(p->NO=s->NO&&p->Name=s->Name&&p->Brand=s->Brand) /查找結(jié)點 p=p->next; if(p)/此類產(chǎn)品存在 cout<<"此類產(chǎn)品存在!輸入進貨數(shù)量n" cout<<"產(chǎn)品數(shù)量:" cin>>s->Quantity; if(s->Quantity<=0)cout<<"數(shù)據(jù)錯誤!n"return; p->Quantity+

24、=s->Quantity; s->Price=p->Price;/便于修改日志文件 else/此類產(chǎn)品不存在 cout<<"產(chǎn)品單價:" cin>>s->Price; if(s->Price<=0)cout<<"數(shù)據(jù)錯誤!n"return; cout<<"產(chǎn)品數(shù)量:" cin>>s->Quantity; if(s->Quantity<=0)cout<<"數(shù)據(jù)錯誤!n"return; Init

25、Insert(s); ofstream fout("diary.txt",ios:app);/向日志文件中添加記錄 fout<<"進貨"<<"t"<<s->NO<<"t"<<s->Name<<"tt"<<s->Brand<<"t"<<s->Price<<"t"<<s->Quantity<&l

26、t;endl; cout<<"修改成功n" PrintList(); / /*提貨,數(shù)量減少or刪除結(jié)點*/ bool ProductList:Delete() PrintList(); cout<<"輸入賣出產(chǎn)品的信息!n" string NO,Name,Brand; cout<<"輸入型號:(輸入z返回)" cin>>NO; if(NO0='z')return false; cout<<"產(chǎn)品名稱:" cin>>Name;

27、cout<<"產(chǎn)品品牌:" cin>>Brand; ProductNode* p=first->next; ProductNode* f=first; while (p&&!(p->NO=NO&&p->Name=Name&&p->Brand=Brand) /查找結(jié)點 f=p; p=p->next; if (!p)/產(chǎn)品不存在 cout<<"此產(chǎn)品不存在!n" return false; else/產(chǎn)品存在 int Quantity; int

28、Price=p->Price;/修改日志用,因為p結(jié)點要被刪除 cout<<"輸入提貨數(shù)量:" cin>>Quantity; while(Quantity>p->Quantity)cout<<"輸入的數(shù)量超出庫存量,請重新輸入!n"cin>>Quantity; if(Quantity<p->Quantity)p->Quantity-=Quantity; else/數(shù)量相等,刪除結(jié)點 f->next=p->next; delete p; cout<<

29、"此產(chǎn)品被刪除!n" cout<<"修改成功n" PrintList(); ofstream fout("diary.txt",ios:app);/向日志文件中添加記錄 fout<<"提貨"<<"t"<<NO<<"t"<<Name<<"tt"<<Brand<<"t"<<Price<<"t"

30、;<<Quantity<<endl; return true; / /*數(shù)據(jù)恢復(fù)(讀取日志文件進行相應(yīng)操作)*/ void ProductList:DataResume() ifstream fin("diary.txt"); string Type;/進貨or提貨 string oneline; while(getline(fin,oneline)/當(dāng)文件沒有結(jié)束,讀一行 istringstream sin(oneline);/字符串流 ProductNode* s=new ProductNode; sin>>Type>>s

31、->NO>>s->Name>>s->Brand>>s->Price>>s->Quantity; if(Type="進貨") ProductNode* p=first->next; /工作指針p初始化 while (p&&!(p->NO=s->NO&&p->Name=s->Name&&p->Brand=s->Brand) /查找第i個結(jié)點 p=p->next; if(p)p->Quantity+=s

32、->Quantity;/此類產(chǎn)品存在 else InitInsert(s);/此類產(chǎn)品不存在 if(Type="提貨") ProductNode* p=first->next; /工作指針p初始化 ProductNode* f=first; /工作指針p初始化 while (p&&!(p->NO=s->NO&&p->Name=s->Name&&p->Brand=s->Brand) /查找第i-1個結(jié)點 f=p; p=p->next; if (p)/產(chǎn)品存在 if(s->

33、;Quantity<p->Quantity)p->Quantity-=s->Quantity; else if(s->Quantity=p->Quantity)/數(shù)量相等,刪除結(jié)點 f->next=p->next; delete p; cout<<"數(shù)據(jù)恢復(fù)成功n" PrintList(); /*修改產(chǎn)品信息*/ bool ProductList:Modify() PrintList(); cout<<"輸入要修改的產(chǎn)品信息!n" string NO,Name,Brand; cout

34、<<"產(chǎn)品型號:(輸入'z'返回)" cin>>NO; if(NO0='z')return false; cout<<"產(chǎn)品名稱:" cin>>Name; cout<<"產(chǎn)品品牌:" cin>>Brand; ProductNode* p=first->next; ProductNode* f=first; while (p&&!(p->NO=NO&&p->Name=Name&

35、&p->Brand=Brand) /查找結(jié)點 f=p; p=p->next; if (!p) /結(jié)點p不存在 cout<<"此產(chǎn)品不存在!n" return false; else /結(jié)點p存在 ofstream fout("diary.txt",ios:app);/向日志文件中添加記錄fout<<"提貨"<<"t"<<p->NO<<"t"<<p->Name<<"tt"<<p->Brand<<"t"<<p->Price<<"t"<<p->Quantity<<endl; int Price,Quantity; cout<<"此產(chǎn)品信息如下:n" cout<<"型號:"<<p->NO<<&qu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論