C++物品庫存管理_第1頁
C++物品庫存管理_第2頁
C++物品庫存管理_第3頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)容 1程序功能介紹用文件系統(tǒng)實(shí)現(xiàn)的物品庫存管理程序。一種商品的品種里面包括三個(gè)品牌,以品種為單位,可以實(shí)現(xiàn)商品品種的添加、 刪除、查找、顯示等功能。2 課程設(shè)計(jì)要求(1 )組成商品品種的品牌不限數(shù)量,設(shè)置一個(gè)最大值(比方10),增加一個(gè)成員變量指示品牌的具體數(shù)量。商品品種的數(shù)量是每個(gè)品牌的數(shù)量之和。(2) 設(shè)計(jì)輸出每日進(jìn)貨與出貨的統(tǒng)計(jì)表,要求進(jìn)貨與出貨分別為兩個(gè)文本文件,清單上列有進(jìn)出貨物的時(shí)間、品種描 述,具體品牌的進(jìn)出貨數(shù)量,如果是出貨清單,在每筆出貨的清單后還要有該次提取貨物的總價(jià)格。(3) 商品品種以品種代碼的順序存放。 3程序設(shè)計(jì)思想該設(shè)計(jì)比擬復(fù)雜,要對原程序做較大的修改,首先是

2、數(shù)據(jù)的存放形式,因?yàn)橐髷?shù)據(jù)按代碼的順序存放,并且進(jìn)出貨時(shí) 對數(shù)據(jù)的各個(gè)組成成員都要做較大的修改。如果要用文件的形式存放,那么文件的讀寫就非常頻繁,而且要使用大量的臨時(shí) 文件,因此建議使用鏈表的形式存放數(shù)據(jù),在程序開始運(yùn)行時(shí)讀取固定文件中的數(shù)據(jù),程序運(yùn)行時(shí)全部數(shù)據(jù)都在存進(jìn)行操作。在程序運(yùn)行完畢前再將鏈表中的數(shù)據(jù)存放在原來的文件中,供下次運(yùn)行程序時(shí)讀取。建議首先將文件讀取這局部程序調(diào)試好,這樣在調(diào)試程序時(shí)就不用每次都從鍵盤輸入數(shù)據(jù)了,可以節(jié)省大量的時(shí)間。同時(shí),對鏈表中結(jié)點(diǎn)的操作有很多典型的程序可 以參考,不同的結(jié)點(diǎn)只是數(shù)據(jù)局部類型不同,所以只要在上面稍加修改就可以使用。(1)類的封裝由于數(shù)據(jù)的存

3、放形式使用鏈表的形式,所以對于程序的很多操作實(shí)際上都是要求對鏈表進(jìn)行一系列處理。其中吧Citem類作為一個(gè)結(jié)點(diǎn),因此包含了大量對鏈表進(jìn)行操作的函數(shù),為了滿足程序的完整性與可讀性,應(yīng)將對鏈表操作的所有程序封 裝在一起。class Brand / 品牌類frie nd class CItem; /定義品種類為友元類;class CNode / 結(jié)點(diǎn)類friend class CList; /定義鏈表類為友元類;注:省略局部詳見源程序代碼與課程設(shè)計(jì)教材提示局部(2)程序功能菜單的設(shè)置程序主題采用菜單項(xiàng)選擇項(xiàng)的形式,輸入相應(yīng)的菜單項(xiàng)選擇項(xiàng)后程序可以反復(fù)運(yùn)行,而其中還要求3456 項(xiàng)各有一個(gè)菜單,分別是

4、:按照商品品種名稱和按照商品代碼進(jìn)行操作。& 物品庫存管理系統(tǒng)&*1. 添加商品品種2. 顯示商品品種3. 查詢商品4. 刪除商品5. 商品出庫6. 商品進(jìn)庫0.退出系統(tǒng)*4. 設(shè)計(jì)中所負(fù)責(zé)的局部商品的出庫與入庫局部int Cltem:Setltem(int n) /置品種數(shù)據(jù),正確返回1,當(dāng)n為1時(shí),是新進(jìn)貨物,輸出至出清單文件1 / 13cout<<"n輸入商品名稱:";Flush(ci n);cin. getl in e(ltem_ name,20);cout<<"n輸入商品代碼:";cin> >

5、ltem_code;cout<<"n輸入商品顏色:";Flush(ci n);cin. getl in e(colour,20); cout<<"n輸入品牌數(shù):"<<"(不超過"<<MAX<<"個(gè))"cin»nBrnd;/循環(huán)實(shí)現(xiàn)品牌數(shù)據(jù)的輸入,count為商品總數(shù)for(i nt i=0,co un t=0;i< nBrn d;i+)cout<<"n 輸入品牌"<<i+1<<&quo

6、t;的數(shù)據(jù) n"cout<<"n輸入品牌名稱:"Flush(ci n);cin. getl in e(br ndi.br nd_n ame,20);cout<<"n輸入品牌代碼:"cin»brn di.Bra nd_code;cout<<"n輸入數(shù)量:"cin»brn di.qua ntity;cout<<"n輸入價(jià)格:"cin»brn di.br nd_price;coun t+=br ndi.qua ntity;qua nt

7、ity=co unt;if(n=1)ofstream file("進(jìn)貨清單.txt",ios:out|ios:ate);if(!file)cout<<"錯(cuò)誤,不能翻開文件.";getch();exit(1);timer=time(NULL);file<<ctime(&timer);file<<" 品種"<<"t"<<" 代碼"<<"t"<<" 顏色"<<

8、"n"file<<Item_ name<<"t"<<ltem_code<<"t"<<colour<<"n" file<<"品牌"<<"t"<<"代碼"<<"t"<<"數(shù)量"<<"t"<<"價(jià)格"<<"n

9、"for(i nt i=0;i <nBrn d;i+)file<<br ndi.br nd_n ame<<"t"<<br ndi.Bra nd_code<<"t"<<brindi.qua ntity<<"t"<<brindi.br nd_price<<" n"file<<"n"file.close();此函數(shù)的兩個(gè)功能:第一個(gè)是在添加商品時(shí)從鍵盤輸入商品的各種數(shù)據(jù),調(diào)用這個(gè)

10、功能時(shí)利用n的缺省值,在調(diào)用時(shí)不給 n賦值;第二個(gè)是在進(jìn)貨時(shí)如果進(jìn)的是新的品種,那么也要從鍵盤輸入這個(gè)品種的各種數(shù)據(jù),這局部與第一個(gè)功能相同,但是進(jìn) 貨要輸出進(jìn)貨清單,所以進(jìn)貨功能調(diào)用該函數(shù)時(shí)n設(shè)置為1函數(shù)在運(yùn)行時(shí)增加一個(gè)判斷語句,假設(shè)n為1時(shí),將所鍵入的數(shù)據(jù)輸出至進(jìn)貨清單。void Cltem:Show()顯示品種數(shù)據(jù)cout<<"品種"<<%"<<" 代碼"<<"t"<<" 顏色"<<"n"cout<&l

11、t;ltem_ name<<"t"<<ltem_code<<"t"<<colour<<"n"cout<<"品牌"<<"t"<<"代碼"<<"t"<<"數(shù)量"<<"t"<<"價(jià)格"<<"n"for(i nt i=0;i <

12、;nBrn d;i+)cout<<br ndi.br nd_n ame<<"t"<<br ndi.Bra nd_code<<"t"<<br ndi.qua ntity<<"t"<<br ndi.br nd_price<<"n"- - -cout<<"nn "<<flush;system("pause");cout<<"n"這個(gè)

13、函數(shù)也是與出貨功能有關(guān),與InM odify()的函數(shù)類似。因?yàn)槭菐熘械纳唐烦鲐洠陨唐菲贩N必須存在,假設(shè)不存在,那么輸出提示信息,出貨失敗。還有一種可能是商品品種曾經(jīng)存在,但已經(jīng)全部出完了,這時(shí),該品種的各種數(shù)據(jù)還存在,只 是數(shù)量為零。所以,在函數(shù)開始執(zhí)行時(shí)要判斷庫存量是否為零,假設(shè)為零,那么輸出提示信息,出貨失敗。在出貨成功完畢時(shí)同 樣要將本品種的各種品牌的出貨數(shù)據(jù)輸出到出貨清單中。同樣,該函數(shù)也是對鏈表中所存在的結(jié)點(diǎn)的數(shù)據(jù)局部的修改。void Cltem:OutModify()出貨,修改結(jié)點(diǎn)中的數(shù)據(jù)局部int choice,co un t,chuhuo,price=0;/chuhuo為

14、出貨量,price為總價(jià)格int *num;num=new in t nBrn d;if(qua ntity=O)cout<<"數(shù)量為 0."exit(1);for(int i=0;i<nBrnd;i+)/ 儲(chǔ)存原來的數(shù)量nu mi=br ndi.qua ntity;cout<<"品牌"<<"t"<<" 代碼"<<"t"<<" 數(shù)量 "<<"t"<<&qu

15、ot;價(jià)格"<<"n"for(i=0;i< nBrn d;i+)cout<<i+1<<"."<<br ndi.br nd_n ame<<"t"<<br ndi.Bra nd_code<<"t"<<br ndi.qua ntity<<"t"<<br ndi.br nd_price<<"n"cout<<"nn&q

16、uot;cout<<"輸入數(shù)字選擇出貨商品或按0退出.n"cin> >choice;while(choice>=1 &&choice <=nBrnd)cout<<"輸入商品數(shù)量:";cin> >co unt;while(co un t>br ndchoice-1.qua ntity)cout<<"庫存缺乏,重新輸入:"cin> >co unt;brn dchoice-1.qua ntity-=co unt;cout<<

17、"出貨成功,按 0退出或按數(shù)字繼續(xù)出貨.n"cin> >choice;ofstreamfile("出 貨 清單.txt",ios:out|ios:ate);if(!file)cout<<"錯(cuò)誤,不能翻開文件.";getch(); exit(1);timer=time(NULL);file<<ctime(&timer);file<<" 品種"<<"t"<<" 代碼"<<"t&q

18、uot;<<" "<<"n"file<<Item_ name<<"t"<<ltem_code<<"t"<<col our<<"nn"file<<" 品牌"<<"t"<<" 代碼"<<"t"<<" "<<"t"&l

19、t;<"出貨量"<<"n"for(i=0;i <nBrn d;i+)if(chuhuo=nu mi-br ndi.qua ntity)price=chuhuo*br ndi.br nd_price;file<<br ndi.br nd_n ame<<"t"<<brn di.Bra nd_co de<<"t"cout<<"nn輸入品牌名稱:";顏色Flush(cin);cin. getl ine(n ame,20)

20、;for(i nt i=0;i <nBrn d;i+)價(jià)格if(strcmp(brndi.brnd _n ame, name)=0) -cout<<"nn輸入進(jìn)貨數(shù)量 cin> >co unt;brn di.qua ntity+=co unt; qua ntity+=co unt;flag=1;break;<<brn di.brind_price<<"t"<<chuhuo<<"n" -file<<"總價(jià)格為:"<<price

21、<<"nn"delete num; file.close();In Modify ()同樣也與進(jìn)貨功能有關(guān)。因?yàn)樗M(jìn)的品種 可能是也有的品種,只是增加其中的數(shù)量而已。所以,在輸 入進(jìn)貨品種或品種代碼時(shí)要判斷是否是庫中已有的品種,假設(shè) 是就調(diào)用這個(gè)函數(shù),只從鍵盤輸入具體的品牌數(shù)量或新增品 牌數(shù)據(jù)即可,而不用在鍵入品種的各種數(shù)據(jù),同時(shí),新鍵入 的各種數(shù)據(jù)也輸出到進(jìn)貨清單。實(shí)際上該函數(shù)是對鏈表中所 存在的結(jié)點(diǎn)的數(shù)據(jù)局部的修改。此函數(shù)先判斷出貨量是不是 大于庫存量,如果大于將顯示“庫存缺乏,重新輸入。如 果小于的話將會(huì)繼續(xù)程序,通過 brndchoice-1.qua n

22、tity-=cou nt;把原有量減去省下剩余量。void Cltem:l nM odify() 結(jié)點(diǎn)中的數(shù)據(jù)局部char n ame20; char choice; int coun t,ji nhuo=0; int prenBrnd=nBrnd; int n=1;int flag=0; int * num;num=new in tpre nBrn d; for(i nt i=0;i< nBrn d;i+) 原來的數(shù)量已有商品,再次進(jìn)貨,修改/儲(chǔ)存/ 原先品牌數(shù)/用于判斷是否繼續(xù)進(jìn)貨/用于判斷是否新品牌nu mi=br ndi.qua ntity; while( n)if(flag=0

23、)strcpy(br ndnBrn d.br nd_n ame ,n ame); cout<<"n輸入品牌代碼:" cin»brndnBrn d.Bra nd_code; cout<<"n輸入數(shù)量:"cin»brndnBrn d.qua ntity; cout<<"n輸入價(jià)格:"cin»brndnBrn d.br nd_price;qua ntity+=br ndnBrn d.qua ntity; nBrn d+; cout<<"n 繼續(xù)進(jìn)貨:y/

24、n "cin> >choice;if(choice='y'|choice='Y')n=1;else n=0;Ofstreamfile(進(jìn)貨清單.txt",ios:out|ios:ate);if(!file)cout<<"錯(cuò)誤,不能翻開文件.";getch();exit(1);timer=time(NULL);file<<ctime(&timer);file<<"品種"<<"t"<<"代碼&quo

25、t;<<"t"<<"顏色"<<"n"file<<ltem_ n ame<<"t"<<ltem_code<<"t"<<colour<<"nn"file<<" 品 牌"<<"t"<<" 代碼"<<"t"<<" 價(jià)格 "

26、;<<"t"<<"進(jìn)貨量"<<"n"for(i=0;i<pre nBrn d;i+)if(jin huo=br ndi.qua ntity-nu mi)file<<brn di.brind_n ame<<"t"<<brn di.Bra nd_co de<<"t"<<br ndi.brn d_price<<"t"<<ji nhuo<<&quo

27、t;n"if(nBrn d>pre nBrnd)5. 課程設(shè)計(jì)遇到的技術(shù)問題與解決思路 for(i=pre nBrn d;i <nBrn d;i+) file<<br ndi.br nd_n ame<<"t"<<brn di.Bra nd_co de<<"t"<<br ndi.br nd_price<<"t"<<br ndi.qua ntity<<" n"file<<"nn&q

28、uot; delete num;file.close();1. 在實(shí)際操作中,可能會(huì)因錯(cuò)誤而輸入錯(cuò)誤的字符,這時(shí)可能會(huì)對程序的正常運(yùn)行造成影響,所以必須刷新輸入流去除儲(chǔ)存器中的數(shù)據(jù),經(jīng)過翻閱C語言方面的資料發(fā)現(xiàn)使用以下函數(shù)就可實(shí)現(xiàn)。in li ne istream & Flush(istream & stream)stream.clear();int chars_to_skip=stream.rdbuf()->in_avail();retur n stream.ig no re(chars_to_skip);2. 怎樣實(shí)現(xiàn)按任意鍵回到主菜單。為了使程序的可讀性和使用的方便

29、性更好,設(shè)計(jì)程序時(shí),打算增加此功能。在設(shè)計(jì)過程中,試圖通過一段程序?qū)崿F(xiàn),但 始終都要輸入一個(gè)字符后按回車鍵才行,外表上已經(jīng)實(shí)現(xiàn)了此功能,但其實(shí)并沒有到達(dá)預(yù)期的效果。過了幾天,在網(wǎng)上查找 相關(guān)資料,終于在別人設(shè)計(jì)的一個(gè)小程序里面找到代碼,原來只需要在利用庫函數(shù)里面的一函數(shù)system(),當(dāng)然這里要包含頭文件dos.h,程序中參加system( “pause)即可到達(dá)要求。3. 為保證程序界面的美觀,如何清屏?在圖書館查閱了有關(guān)方面的書籍和文獻(xiàn),利用網(wǎng)絡(luò)資源,使用函數(shù)system("cls") 即可。stream.clear(); int程序完整代碼#in clude<

30、iostream.h>#in clude<c oni o.h>#in clude<ioma nip.h>#in clude<fstream.h>chars_to_skip=stream.rdbuf( )->in _avail();retur n stream.ig no re(chars_to_skip); #in clude<stri ng.h>#in clude<stdlib.h>#in clude<time.h>#in clude<dos.h>#in clude<process.h>

31、;exit(1)time_t timer;in li neistream & Flush(istream/去除儲(chǔ)存器中數(shù)據(jù)& stream)#defi ne MAX 10品牌數(shù)最大為10/class Brand / 品牌類 private:運(yùn)用宏定義,規(guī)定charbrnd_ name20;/品牌名稱intBran d_code;/品牌代號intqua ntity;/數(shù)量float brnd_price;/ 價(jià)格public:Bran d()qua ntity=O;strcpy(br nd_n ame,"0");frie ndclassCltem;/疋義友兀類

32、;ClassCltem /品種類iprivate:char ltem_ name10;/品種名稱int ltem_code;/品種代號char colour10;/顏色int qua ntity;/數(shù)量Brand brndMAX;/最多皿必品牌int nBrnd;/品牌的數(shù)量(<MAX)public:Cltem() strcpy(ltem_name,"O");qua ntity=0;n Brnd=0; /缺省構(gòu)造函數(shù)Cltem(char*n ame)strcpy(ltem_ name ,n ame);ltem_code=0;/用品種名稱構(gòu)造Cltem(i ntcode

33、)ltem_code=code;strcpy(ltem_ name,"0");/用品種代碼構(gòu)造int Setltem(int n=0);/置品種數(shù)據(jù),正確返回1,當(dāng)n為1時(shí),是新進(jìn)貨物,輸出至出清單文件char *GetltemName()retur nltem_ name;/返回品種名intGetltemCode()retur nltem_code;/返回品種代碼int Compare(Cltem &);/比擬品種名稱,供查找用,比擬結(jié)果為1, 0int CompareCode(Cltem &);/比擬品種代碼,比擬結(jié)果為1,0void Show();/顯

34、示品種數(shù)據(jù)void OutModify();/出貨,修改結(jié)點(diǎn)中的數(shù)據(jù)局部void ln Modify();/已有商品,再次進(jìn)貨,修改結(jié)點(diǎn)中的數(shù)據(jù)局部;int Cltem:Compare(Cltem & pitem) /比 較品種名稱,供查找用,比擬結(jié)果為1,0int n;n=strcmp(ltem_name,pitem.ltem_name);兩個(gè)字符串相等,n=0if(n!=0) return 0;else return 1;int Cltem:CompareCode(Cltem & pitem) / 比擬品種代碼,比擬結(jié)果為1, 0retur n (ltem_code=pit

35、em.ltem_code); - -int Cltem:Setltem(i nt n) /置品種數(shù)據(jù),正確返回1,當(dāng)n為1時(shí),是新進(jìn)貨物,輸出至出清單文 件 cout<<"n 輸入商品名稱:"Flush(ci n);cin. getl in e(ltem_ name,20); cout<<"n輸入商品代碼:"cin> >ltem_code; cout<<"n輸入商品顏色:"Flush(ci n);cin. getl in e(colour,20); cout<<"n

36、 輸入 品牌數(shù):"<<"( 不超過"<<MAX<<" 個(gè))"cin»nBrnd;/循環(huán)實(shí)現(xiàn)品牌數(shù)據(jù)的輸入,count為商品總數(shù)for(i nt i=0,co un t=0;i <nBrn d;i+)cout<<"n 輸入品牌"<<i+1<<"的數(shù)據(jù) n" cout<<"n輸入品牌名稱:"Flush(c in);cin. getl in e(br ndi.br nd_n ame,20);

37、cout<<"n輸入品牌代碼:" cin»brn di.Bra nd_code; cout<<"n輸入數(shù)量:"cin»brn di.qua ntity; cout<<"n輸入價(jià)格:"cin»brn di.br nd_price; coun t+=br ndi.qua ntity;qua ntity=co unt;if(n=1)ofstream file("進(jìn)貨清單.txt",ios:out|ios:ate);if(!file)cout<<

38、"錯(cuò)誤,不能翻開文件.";getch();exit(1);timer=time(NULL); file<<ctime(&timer);file<<"品種"<<"t"<<"代碼"<<"t"<<"顏色"<<"n"file<<ltem_ name<<"t"<<ltem_code<<"t"

39、;<<colour<<"n"file<<"品牌"<<"t"<<"代碼"<<"t"<<"數(shù)量 "<<"t"<<"價(jià)格"<<"n"for(i nt i=0;i <nBrn d;i+)file<<brndi.brnd_ name<<"t"<<b

40、rndi.Bran d_code<<"t"<<brndi.qua ntity<<"t"<<brndi.brnd _price<<"n"- file<<"n" file.close();return 1;void Cltem:Show() 顯示品種數(shù)據(jù)cout<<"品種"<<"t"<<" 代碼"<<"t"<<

41、" 顏色"<<"n"cout<<Item_ n ame<<"t"<<Item_code<<"t"<<colour<<"n"cout<<" 品牌"<<"t"<<" 代碼"<<"t"<<" 數(shù)量 "<<"t"<<&q

42、uot;價(jià)格"<<"n"for(i nt i=0;i <nBrn d;i+)cout<<br ndi.br nd_n ame<<"t"<<br ndi.Bra nd_code<<"t"<<br ndi.qua ntity<<"t"<<brindi.brnd_price<<"n"cout<<"nn "<<flush;system(&

43、quot;pause");cout<<"n"void Cltem:OutModify()出貨,修改結(jié)點(diǎn)中的數(shù)據(jù)局部int choice,co un t,chuhuo,price=0;/chuhuo為出貨量,price為總價(jià)格int *num;num=new in t nBrn d;if(qua ntity=O)cout<<"數(shù)量為 0."exit(1);for(i nt i=0;i< nBrnd;i+)儲(chǔ)存原來的數(shù)量nu mi=br ndi.qua ntity;cout<<"品牌"&

44、lt;<"t"<<" 代碼"<<"t"<<" 數(shù)量 "<<"t"<<"價(jià)格"<<"n"for(i=0;i <nBrn d;i+)cout<<i+1<<"."<<br ndi.br nd_n ame<<"t"<<br ndi.Bra nd_code<<"t

45、"<<br ndi.qua ntity<<"t"<<br ndi.br nd_price<<"n"cout<<"nn"cout<<"輸入數(shù)字選擇出貨商品或按0退出.n"cin> >choice;while(choice>=1 &&choice <=nBrnd)cout<<"輸入商品數(shù)量:";cin> >co unt;while(co un t>b

46、r ndchoice-1.qua ntity)cout<<"庫存缺乏,重新輸入:"cin> >co unt;brn dchoice-1.qua ntity-=co unt;cout<<"出貨成功,按0退出或按數(shù)字繼續(xù)出貨.n"cin> >choice;ofstreamfile("出 貨 清單.txt",ios:out|ios:ate);if(!file)cout<<"錯(cuò)誤,不能翻開文件.";getch(); exit(1);timer=time(NULL)

47、;file<<ctime(&timer);file<<"品種"<<"t"<<"代碼"<<"t"<<"顏色file<<ltem name<<"t"<<ltem code<<"t"<<col"<<"n"our<<"nn"file<<" 品

48、牌"<<"t"<<" 代碼"<<"t"<<" 價(jià)格 "<<"t"<<"出貨量"<<"n"for(i=0;i <nBrn d;i+)if(chuhuo=nu mi-br ndi.qua ntity)price=chuhuo*br ndi.br nd_price;file<<br ndi.br nd_n ame<<"t"

49、;<<brn di.Bra nd_co de<<"t"<<brn di.brind_price<<"t"<<chuhuo<<"n"-file<<"總價(jià)格為:"<<price<<"nn"delete num;file.close();void Cltem:l nM odify()已有商品,再次進(jìn)貨,修改結(jié)點(diǎn)中的數(shù)據(jù)局部char n ame20;char choice;int coun t,j

50、i nhuo=0;in t pre nBrnd=nBrnd; / 原先品牌數(shù)int n=1;/用于判斷是否繼續(xù)進(jìn)貨int flag=0;/用于判斷是否新品牌int * num;num=new in tpre nBrn d;for(i nt i=0;i< nBrnd;i+)/ 儲(chǔ)存原來的數(shù)量nu mi=br ndi.qua ntity;while( n)cout<<"nn 輸入品牌名稱:"Flush(ci n);cin. getl ine(n ame,20);for(i nt i=0;i <nBrn d;i+)if(strcmp(brndi.brnd

51、_n ame, name)=0)cout<<"nn 輸入進(jìn)貨數(shù)量:"cin> >co unt;flag=1;break;if(flag=0)strcpy(br ndnBrn d.br nd_n ame ,n ame); cout<<"n輸入品牌代碼:" cin»brndnBrn d.Bra nd_code;cout<<"n輸入數(shù)量:" cin»brndnBrn d.qua ntity;cout<<"n輸入價(jià)格:" cin»br

52、ndnBrn d.br nd_price; qua ntity+=br ndnBrn d.qua ntity; nBrn d+; cout<<"n 繼續(xù)進(jìn)貨:y/n "cin> >choice;if(choice='y'|choice='Y')n=1;else n=0;ofstreamfile("進(jìn) 貨 清單.txt",ios:out|ios:ate);if(!file)cout<<"錯(cuò)誤,不能翻開文件.";getch();exit(1);timer=time(NUL

53、L);file<<ctime(&timer);file<<"品種"<<"t"<<"代碼"<<"t"<<"顏色"<<"n"file<<ltem_ n ame<<"t"<<ltem_code<<"t"<<colour<<"nn"file<<&quo

54、t;品牌"<<"t"<<"代碼"<<"t"<<"價(jià)格 "<<"t"<<"進(jìn)貨量"<<"n"for(i=0;i<pre nBrn d;i+)if(jin huo=br ndi.qua ntity-nu mi)brn di.qua ntity+=co unt; qua ntity+=co unt;file<<br ndi.brnd_n ame<

55、<"t"<<brn di.Bra nd_co de<<"t"<<brn di.brin d_price<<"t"<<ji nhuo<<"n"if(nBrn d>pre nBrnd)for(i=pre nBrn d;i <nBrn d;i+)file<<br ndi.brnd_n ame<<"t"<<brn di.Bra nd_co de<<"t&qu

56、ot;<<br ndi.br nd_price<<"t"<<br ndi.qua ntity<<" n"file<<"nn"delete num;file.close();class CNode / 結(jié)點(diǎn)類private:CNode * pNext; /指向鏈表下一結(jié)點(diǎn)的指針CItem * pData;/用于指向數(shù)據(jù)類的指針public:CNode() pData=0;pNext=0;/ 結(jié)點(diǎn)構(gòu)造函數(shù)CNode(CNode &node)/ 用 于拷貝的構(gòu)造函數(shù)pDat

57、a=no de.pData;pNext =no de.pNext;void InputData(Cltem *pSal) pData=pSal; /輸入數(shù)據(jù)void ShowNode() pData->Show(); /輸出結(jié)點(diǎn)中的數(shù)據(jù)CItem * GetData() return pData;/返回下一結(jié)點(diǎn)的指針friend class CList;/ 定 義鏈表類為友元類;class CList/定義鏈表類protected:CNode * pHead;/鏈表頭結(jié)點(diǎn)指針public:CList() pHead=0; CList() DeleteList(); void AddNod

58、e(CNode * pnode);/ 首 部添加結(jié)點(diǎn)CNode * DeleteNode(CNode *);/刪除一個(gè)指定的結(jié)點(diǎn),返回該結(jié)點(diǎn)的指針CNode * LookUp(Cltem &);/* 查找一個(gè)指定的數(shù)據(jù),返回該數(shù)據(jù)所在結(jié)點(diǎn)在鏈表中的指針,假設(shè) 未找到返回0 */void ShowList();/打印整個(gè)鏈表void DeleteList();/ 刪除整個(gè)鏈表CNode * GetListHead()return pHead;/返回鏈表首結(jié)點(diǎn)CNode * GetListNextNode(CNode *);/返回鏈表指定結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)void In sert(CNode

59、 *);/ 按代碼的順序插入一個(gè)結(jié)點(diǎn);void CList:AddNode(CNode *pn ode)/首部添加結(jié)點(diǎn)if(pHead=0)pHead=p no de;pno de->pNext=0;elsepno de->pNext=pHead; pHead=p no de;CNode * CList:DeleteNode(CNode *pn ode)/ 刪除一 個(gè)指定的結(jié)點(diǎn),返回該結(jié)點(diǎn)的指針if(p node=pHead)刪除的結(jié)點(diǎn)是鏈表的首結(jié)點(diǎn)pHead=p no de->pNext;pno de->pNext=0;elseCNode *p=pHead;while

60、(p->pNext!=p no de) p=p_>pNext;p->pNext=pnode->pNext; 刪 除結(jié)點(diǎn) 后將前后兩個(gè)結(jié)點(diǎn)再連結(jié)起來pno de->pNext=0;retur n(pno de);CNode * CList:LookUp(Cltem &pitem)/* 查找一個(gè)指 定的數(shù)據(jù),返回該數(shù)據(jù)所在結(jié)點(diǎn)在鏈表中的指針,假設(shè)未找 到返回0 */CNode * pn=pHead;if(pitem.GetltemCode()=0)while(p n)if(pn->pData->Compare(pitem)return pn;/按品

61、種名稱查找pn=pn_ >pNext;elsewhile(p n)if(pn->pData->CompareCode(pitem)return pn;/按品種代碼查找pn=pn_ >pNext;return 0;void CList:ShowList()/打印整個(gè)鏈表CNode * p=pHead;while(p)p->pData->Show(); p=p->pNext;void CList:DeleteList()/刪除整個(gè)鏈表CNode * p,* q;p=pHead;while(p)delete p->pData;q=p;p=p->p

62、Next;delete q;CNode * CList:GetListNextNode(CNode *pn ode)/返回鏈表指定結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)retur n pno de->pNext;void CList:I nsert(CNode * pn ode)/按代碼的順序插入一個(gè)結(jié)點(diǎn)CNode * p1,* p2;if(pHead=0)pHead=p no de;pno de->pNext=0;elseif(pHead->pData->GetltemCode()>=p node->pData->GetIt emCode()pno de->pNex

63、t=pHead; pHead=p no de;elsep2=p仁pHead;while(p2->pNext&&p2->pData->GetltemCode()<p node->pData->GetltemCode()p仁 p2; p2=p2->pNext;if(p2->pData->GetltemCode()<p node->pData->Getlt emCode()p2->pNext=p no de;pno de->pNext=0;elsepno de->pNext=p2;p1->

64、pNext=p node;void mai n()int choice;CList list;CItem *p;CNode *pn;char name20;/按商品名稱操作時(shí)用于輸入名稱char str20;int code;/按商品代碼 操作時(shí)用于輸入代碼ifstreamin file("TIS.txt",ios:i n|ios: no create|ios:bi nary)5if(!i nfile)cout<<"數(shù)據(jù)文件不存在.n"<<flush;system("pause"); system("

65、cls");elseCItem pitem;in file.read(re in terpret_cast<char*>(&pitem),sizeof(Cltem);while(! in file.eof()p=new CItem;*p=pitem;pn=new CNode;pn->1 nputData(p);list.I nsert(p n);in file.read(re in terpret_cast<char*>(&pitem),sizeof(Cltem);in file.close();docout<<"n

66、t &物品庫存管理系統(tǒng) & "cout<v"n*“ cout<v"nn1.添加商品品種"cout<v"nn2.顯小商品品種cout<v"nn3.查詢商品"cout<v"nn4.刪除商品"cout<v"nn5.商品出庫"coutvv"nn6.商品進(jìn)庫"coutvv"nn0.退出系統(tǒng)"coutvv"n*“ cout<<"nn 輸入選擇:";Flush(c i

67、n);cin. getli ne(str,20);choice=atoi(str);switch(choice)case 1:/添加商品品種system("cls");p=new CItem;p->SetItem();pn=new CNode;pn->1 nputData(p);list.I nsert(p n);system("cls");break;case 2:/ 顯示商品品種system("cls");pn=list.GetListHead();if(pn=O)cout<<"無庫存."

68、;<<endl; system("cls");elselist.ShowList();system("cls");system("cls");cout<<"nn1.按商品品種名稱查詢商品cout<<"nn2.按商品品種代碼查詢商品cout<<"nnO.退出"cout<<"nn輸入選擇:"cin> >choice;if(choice=1)break;case 3:/查詢商品cout<<"

69、;nn2.按商品品種代碼刪除商品cout<<"nn輸入品種名稱:n"Flush(ci n);cin. getl ine(n ame,20);p=new Cltem( name);pn=list.LookUp(*p);if(pn) p n->GetData()->Show();elsecout<<"n 沒找到商品nn"<<flush;nn"<<flush;system("pause");delete p;if(choice=2)cout<<"nn 輸入品種代碼:n"cin> >code;int n;n=code;p=new CItem( n);pn=list.LookUp(*p);if(p n) pn->GetData()->Show(); elsecout<<"n 沒找到商品system("pause");delete p;system("cls");break;case 4:/刪除商品system("cls");cout<<"nn1.按商品品種名稱刪除商品II.

溫馨提示

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

最新文檔

評論

0/150

提交評論