版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.信息技術(shù)系課程設(shè)計(jì)報(bào)告 課 程: 物品庫(kù)存管理 年 級(jí): 專(zhuān) 業(yè): 計(jì)算機(jī)應(yīng)用 姓 名: 實(shí)驗(yàn)內(nèi)容1程序功能介紹用文件系統(tǒng)實(shí)現(xiàn)的物品庫(kù)存管理程序。一種商品的品種里面包括三個(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)商品品
2、種以品種代碼的順序存放。3程序設(shè)計(jì)思想 該設(shè)計(jì)比較復(fù)雜,要對(duì)原程序做較大的修改,首先是數(shù)據(jù)的存放形式,因?yàn)橐髷?shù)據(jù)按代碼的順序存放,并且進(jìn)出貨時(shí)對(duì)數(shù)據(jù)的各個(gè)組成成員都要做較大的修改。如果要用文件的形式存放,那么文件的讀寫(xiě)就非常頻繁,而且要使用大量的臨時(shí)文件,因此建議使用鏈表的形式存放數(shù)據(jù),在程序開(kāi)始運(yùn)行時(shí)讀取固定文件中的數(shù)據(jù),程序運(yùn)行時(shí)全部數(shù)據(jù)都在內(nèi)存進(jìn)行操作。在程序運(yùn)行結(jié)束前再將鏈表中的數(shù)據(jù)存放在原來(lái)的文件中,供下次運(yùn)行程序時(shí)讀取。建議首先將文件讀取這部分程序調(diào)試好,這樣在調(diào)試程序時(shí)就不用每次都從鍵盤(pán)輸入數(shù)據(jù)了,可以節(jié)省大量的時(shí)間。同時(shí),對(duì)鏈表中結(jié)點(diǎn)的操作有很多典型的程序可以參考,不同的結(jié)點(diǎn)
3、只是數(shù)據(jù)部分類(lèi)型不同,所以只要在上面稍加修改就可以使用。 (1)類(lèi)的封裝 由于數(shù)據(jù)的存放形式使用鏈表的形式,所以對(duì)于程序的很多操作實(shí)際上都是要求對(duì)鏈表進(jìn)行一系列處理。其中吧Citem類(lèi)作為一個(gè)結(jié)點(diǎn),因此包含了大量對(duì)鏈表進(jìn)行操作的函數(shù),為了滿(mǎn)足程序的完整性與可讀性,應(yīng)將對(duì)鏈表操作的所有程序封裝在一起。 class Brand /品牌類(lèi) . friend class CItem; /定義品種類(lèi)為友元類(lèi); class CNode /結(jié)點(diǎn)類(lèi) . friend class CList; /定義鏈表類(lèi)為友元類(lèi); 注:省略部分詳見(jiàn)源程序代碼及課程設(shè)計(jì)教材提示部分 (2)程序功能菜單的設(shè)置 程序主題采用菜單選
4、項(xiàng)的形式,輸入相應(yīng)的菜單選項(xiàng)后程序可以反復(fù)運(yùn)行,而其中還要求3.4.5.6.項(xiàng)各有一個(gè)菜單,分別是:按照商品品種名稱(chēng)和按照商品代碼進(jìn)行操作。 &物品庫(kù)存管理系統(tǒng)& * 1.添加商品品種 2.顯示商品品種 3.查詢(xún)商品 4.刪除商品 5.商品出庫(kù) 6.商品進(jìn)庫(kù) 0.退出系統(tǒng) *4設(shè)計(jì)中所負(fù)責(zé)的部分商品的出庫(kù)與入庫(kù)部分int CItem:SetItem(int n) /置品種數(shù)據(jù),正確返回1,當(dāng)n為1時(shí),是新進(jìn)貨物,輸出至出清單文件cout<<"n輸入商品名稱(chēng):"Flush(cin);cin.getline(Item_name,20);cout<
5、;<"n輸入商品代碼:"cin>>Item_code;cout<<"n輸入商品顏色:"Flush(cin);cin.getline(colour,20);cout<<"n輸入品牌數(shù):"<<"(不超過(guò)"<<MAX<<"個(gè))"cin>>nBrnd;/循環(huán)實(shí)現(xiàn)品牌數(shù)據(jù)的輸入,count為商品總數(shù)for(int i=0,count=0;i<nBrnd;i+)cout<<"n輸入品牌&qu
6、ot;<<i+1<<"的數(shù)據(jù)n"cout<<"n輸入品牌名稱(chēng):"Flush(cin);cin.getline(brndi.brnd_name,20);cout<<"n輸入品牌代碼:"cin>>brndi.Brand_code;cout<<"n輸入數(shù)量:"cin>>brndi.quantity;cout<<"n輸入價(jià)格:"cin>>brndi.brnd_price;count+=brndi.
7、quantity;quantity=count;if(n=1)ofstream file("進(jìn)貨清單.txt",ios:out|ios:ate);if(!file)cout<<"錯(cuò)誤,不能打開(kāi)文件."getch();exit(1);timer=time(NULL);file<<ctime(&timer);file<<"品種"<<"t"<<"代碼"<<"t"<<"顏色"
8、;<<"n"file<<Item_name<<"t"<<Item_code<<"t"<<colour<<"n"file<<"品牌"<<"t"<<"代碼"<<"t"<<"數(shù)量"<<"t"<<"價(jià)格"<<
9、"n"for(int i=0;i<nBrnd;i+)file<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.quantity<<"t"<<brndi.brnd_price<<"n"file<<"n"file.close();return 1; 此函數(shù)的兩個(gè)功能:第一個(gè)是在添加商品時(shí)從鍵盤(pán)輸入商品的各種數(shù)據(jù),
10、調(diào)用這個(gè)功能時(shí)利用n的缺省值,在調(diào)用時(shí)不給n賦值;第二個(gè)是在進(jìn)貨時(shí)如果進(jìn)的是新的品種,那么也要從鍵盤(pán)輸入這個(gè)品種的各種數(shù)據(jù),這部分與第一個(gè)功能相同,但是進(jìn)貨要輸出進(jìn)貨清單,所以進(jìn)貨功能調(diào)用該函數(shù)時(shí)n設(shè)置為1,函數(shù)在運(yùn)行時(shí)增加一個(gè)判斷語(yǔ)句,若n為1時(shí),將所鍵入的數(shù)據(jù)輸出至進(jìn)貨清單。void CItem:Show()/顯示品種數(shù)據(jù)cout<<"品種"<<"t"<<"代碼"<<"t"<<"顏色"<<"n"cou
11、t<<Item_name<<"t"<<Item_code<<"t"<<colour<<"n"cout<<"品牌"<<"t"<<"代碼"<<"t"<<"數(shù)量"<<"t"<<"價(jià)格"<<"n"for(int i=0;
12、i<nBrnd;i+)cout<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.quantity<<"t"<<brndi.brnd_price<<"n"cout<<"nn"<<flush;system("pause");cout<<"n"這個(gè)函數(shù)也是與出貨功能有關(guān),
13、與InModify()的函數(shù)類(lèi)似。因?yàn)槭菐?kù)中的商品出貨,所以商品品種必須存在,若不存在,則輸出提示信息,出貨失敗。還有一種可能是商品品種曾經(jīng)存在,但已經(jīng)全部出完了,這時(shí),該品種的各種數(shù)據(jù)還存在,只是數(shù)量為零。所以,在函數(shù)開(kāi)始執(zhí)行時(shí)要判斷庫(kù)存量是否為零,若為零,則輸出提示信息,出貨失敗。在出貨成功結(jié)束時(shí)同樣要將本品種的各種品牌的出貨數(shù)據(jù)輸出到出貨清單中。同樣,該函數(shù)也是對(duì)鏈表中所存在的結(jié)點(diǎn)的數(shù)據(jù)部分的修改。void CItem:OutModify()/出貨,修改結(jié)點(diǎn)中的數(shù)據(jù)部分int choice,count,chuhuo,price=0;/chuhuo為出貨量,price為總價(jià)格int *nu
14、m;num=new intnBrnd;if(quantity=0)cout<<"數(shù)量為0."exit(1);for(int i=0;i<nBrnd;i+)/儲(chǔ)存原來(lái)的數(shù)量numi=brndi.quantity;cout<<"品牌"<<"t"<<"代碼"<<"t"<<"數(shù)量"<<"t"<<"價(jià)格"<<"n"
15、for(i=0;i<nBrnd;i+)cout<<i+1<<"."<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.quantity<<"t"<<brndi.brnd_price<<"n"cout<<"nn"cout<<"輸入數(shù)字選擇出貨商品或按0退出.n&quo
16、t;cin>>choice;while(choice>=1&&choice<=nBrnd)cout<<"輸入商品數(shù)量:"cin>>count;while(count>brndchoice-1.quantity)cout<<"庫(kù)存不足,重新輸入:"cin>>count;brndchoice-1.quantity-=count;cout<<"出貨成功,按0退出或按數(shù)字繼續(xù)出貨.n"cin>>choice;ofstream
17、file("出貨清單.txt",ios:out|ios:ate);if(!file)cout<<"錯(cuò)誤,不能打開(kāi)文件."getch();exit(1);timer=time(NULL);file<<ctime(&timer);file<<"品種"<<"t"<<"代碼"<<"t"<<"顏色"<<"n"file<<Item_n
18、ame<<"t"<<Item_code<<"t"<<colour<<"nn"file<<"品牌"<<"t"<<"代碼"<<"t"<<"價(jià)格"<<"t"<<"出貨量"<<"n"for(i=0;i<nBrnd;i+)if(
19、chuhuo=numi-brndi.quantity)price=chuhuo*brndi.brnd_price;file<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.brnd_price<<"t"<<chuhuo<<"n"file<<"總價(jià)格為:"<<price<<"nn"delete
20、 num;file.close();InModify()同樣也與進(jìn)貨功能有關(guān)。因?yàn)樗M(jìn)的品種可能是也有的品種,只是增加其中的數(shù)量而已。所以,在輸入進(jìn)貨品種或品種代碼時(shí)要判斷是否是庫(kù)中已有的品種,若是就調(diào)用這個(gè)函數(shù),只從鍵盤(pán)輸入具體的品牌數(shù)量或新增品牌數(shù)據(jù)即可,而不用在鍵入品種的各種數(shù)據(jù),同時(shí),新鍵入的各種數(shù)據(jù)也輸出到進(jìn)貨清單。實(shí)際上該函數(shù)是對(duì)鏈表中所存在的結(jié)點(diǎn)的數(shù)據(jù)部分的修改。此函數(shù)先判斷出貨量是不是大于庫(kù)存量,如果大于將顯示“庫(kù)存不足,重新輸入”。如果小于的話將會(huì)繼續(xù)程序,通過(guò)brndchoice-1.quantity-=count;把原有量減去省下剩余量。void CItem:InModi
21、fy()/已有商品,再次進(jìn)貨,修改結(jié)點(diǎn)中的數(shù)據(jù)部分char name20;char choice;int count,jinhuo=0;int prenBrnd=nBrnd; /原先品牌數(shù)int n=1;/用于判斷是否繼續(xù)進(jìn)貨int flag=0;/用于判斷是否新品牌int * num;num=new intprenBrnd;for(int i=0;i<nBrnd;i+)/儲(chǔ)存原來(lái)的數(shù)量numi=brndi.quantity;while(n)cout<<"nn輸入品牌名稱(chēng):"Flush(cin);cin.getline(name,20);for(int i
22、=0;i<nBrnd;i+)if(strcmp(brndi.brnd_name,name)=0)cout<<"nn輸入進(jìn)貨數(shù)量:"cin>>count;brndi.quantity+=count;quantity+=count;flag=1;break;if(flag=0)strcpy(brndnBrnd.brnd_name,name);cout<<"n輸入品牌代碼:"cin>>brndnBrnd.Brand_code;cout<<"n輸入數(shù)量:"cin>>
23、brndnBrnd.quantity;cout<<"n輸入價(jià)格:"cin>>brndnBrnd.brnd_price;quantity+=brndnBrnd.quantity;nBrnd+;cout<<"n繼續(xù)進(jìn)貨:y/n "cin>>choice;if(choice='y'|choice='Y')n=1;else n=0;ofstream file("進(jìn)貨清單.txt",ios:out|ios:ate);if(!file)cout<<&quo
24、t;錯(cuò)誤,不能打開(kāi)文件."getch();exit(1);timer=time(NULL);file<<ctime(&timer);file<<"品種"<<"t"<<"代碼"<<"t"<<"顏色"<<"n"file<<Item_name<<"t"<<Item_code<<"t"<&l
25、t;colour<<"nn"file<<"品牌"<<"t"<<"代碼"<<"t"<<"價(jià)格"<<"t"<<"進(jìn)貨量"<<"n"for(i=0;i<prenBrnd;i+)if(jinhuo=brndi.quantity-numi)file<<brndi.brnd_name<<&qu
26、ot;t"<<brndi.Brand_code<<"t"<<brndi.brnd_price<<"t"<<jinhuo<<"n"if(nBrnd>prenBrnd)for(i=prenBrnd;i<nBrnd;i+)file<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.brnd_pri
27、ce<<"t"<<brndi.quantity<<"n"file<<"nn"delete num;file.close();5.課程設(shè)計(jì)遇到的技術(shù)問(wèn)題與解決思路1.在實(shí)際操作中,可能會(huì)因錯(cuò)誤而輸入錯(cuò)誤的字符,這時(shí)可能會(huì)對(duì)程序的正常運(yùn)行造成影響,所以必須刷新輸入流清除儲(chǔ)存器中的數(shù)據(jù),經(jīng)過(guò)翻閱C語(yǔ)言方面的資料發(fā)現(xiàn)使用以下函數(shù)就可實(shí)現(xiàn)。inline istream & Flush(istream & stream) stream.clear(); int chars_to_sk
28、ip=stream.rdbuf()->in_avail(); return stream.ignore(chars_to_skip);2. 怎樣實(shí)現(xiàn)按任意鍵回到主菜單。為了使程序的可讀性和使用的方便性更好,設(shè)計(jì)程序時(shí),打算增加此功能。在設(shè)計(jì)過(guò)程中,試圖通過(guò)一段程序?qū)崿F(xiàn),但始終都要輸入一個(gè)字符后按回車(chē)鍵才行,表面上已經(jīng)實(shí)現(xiàn)了此功能,但其實(shí)并沒(méi)有達(dá)到預(yù)期的效果。過(guò)了幾天,在網(wǎng)上查找相關(guān)資料,終于在別人設(shè)計(jì)的一個(gè)小程序里面找到代碼,原來(lái)只需要在利用庫(kù)函數(shù)里面的一函數(shù)system(),當(dāng)然這里要包含頭文件dos.h,程序中加入system(“pause”)即可達(dá)到要求。3.為保證程序界面的美觀,
29、如何清屏?在圖書(shū)館查閱了有關(guān)方面的書(shū)籍和文獻(xiàn),利用網(wǎng)絡(luò)資源,使用函數(shù)system("cls")即可。 程序完整代碼 #include<iostream.h>#include<conio.h>#include<iomanip.h>#include<fstream.h>#include<string.h>#include<stdlib.h>#include<time.h>#include<dos.h>#include<process.h> /exit(1)time_t t
30、imer;inline istream & Flush(istream & stream) /清除儲(chǔ)存器中數(shù)據(jù)stream.clear();int chars_to_skip=stream.rdbuf()->in_avail();return stream.ignore(chars_to_skip);#define MAX 10 /運(yùn)用宏定義,規(guī)定品牌數(shù)最大為10class Brand /品牌類(lèi)private:charbrnd_name20;/品牌名稱(chēng)intBrand_code;/品牌代號(hào)intquantity;/數(shù)量floatbrnd_price;/價(jià)格public:B
31、rand()quantity=0;strcpy(brnd_name,"0");friend class CItem; /定義友元類(lèi);class CItem /品種類(lèi)private:char Item_name10;/品種名稱(chēng)int Item_code;/品種代號(hào)char colour10;/顏色int quantity;/數(shù)量Brand brndMAX;/最多MAX個(gè)品牌int nBrnd;/品牌的數(shù)量(<MAX)public:CItem() strcpy(Item_name,"0");quantity=0;nBrnd=0; /缺省構(gòu)造函數(shù)CIte
32、m(char *name)strcpy(Item_name,name);Item_code=0; /用品種名稱(chēng)構(gòu)造CItem(int code)Item_code=code;strcpy(Item_name,"0"); /用品種代碼構(gòu)造int SetItem(int n=0); /置品種數(shù)據(jù),正確返回1,當(dāng)n為1時(shí),是新進(jìn)貨物,輸出至出清單文件char * GetItemName()return Item_name; /返回品種名int GetItemCode()return Item_code; /返回品種代碼int Compare(CItem &); /比較品種
33、名稱(chēng),供查找用,比較結(jié)果為1,0int CompareCode(CItem &); /比較品種代碼,比較結(jié)果為1,0void Show(); /顯示品種數(shù)據(jù)void OutModify(); /出貨,修改結(jié)點(diǎn)中的數(shù)據(jù)部分void InModify(); /已有商品,再次進(jìn)貨,修改結(jié)點(diǎn)中的數(shù)據(jù)部分;int CItem:Compare(CItem & pitem) /比較品種名稱(chēng),供查找用,比較結(jié)果為1,0int n;n=strcmp(Item_name,pitem.Item_name);/兩個(gè)字符串相等,n=0if(n!=0) return 0;else return 1;int
34、 CItem:CompareCode(CItem & pitem) /比較品種代碼,比較結(jié)果為1,0return (Item_code=pitem.Item_code);int CItem:SetItem(int n) /置品種數(shù)據(jù),正確返回1,當(dāng)n為1時(shí),是新進(jìn)貨物,輸出至出清單文件cout<<"n輸入商品名稱(chēng):"Flush(cin);cin.getline(Item_name,20);cout<<"n輸入商品代碼:"cin>>Item_code;cout<<"n輸入商品顏色:"
35、;Flush(cin);cin.getline(colour,20);cout<<"n輸入品牌數(shù):"<<"(不超過(guò)"<<MAX<<"個(gè))"cin>>nBrnd;/循環(huán)實(shí)現(xiàn)品牌數(shù)據(jù)的輸入,count為商品總數(shù)for(int i=0,count=0;i<nBrnd;i+)cout<<"n輸入品牌"<<i+1<<"的數(shù)據(jù)n"cout<<"n輸入品牌名稱(chēng):"Flush(c
36、in);cin.getline(brndi.brnd_name,20);cout<<"n輸入品牌代碼:"cin>>brndi.Brand_code;cout<<"n輸入數(shù)量:"cin>>brndi.quantity;cout<<"n輸入價(jià)格:"cin>>brndi.brnd_price;count+=brndi.quantity;quantity=count;if(n=1)ofstream file("進(jìn)貨清單.txt",ios:out|ios
37、:ate);if(!file)cout<<"錯(cuò)誤,不能打開(kāi)文件."getch();exit(1);timer=time(NULL);file<<ctime(&timer);file<<"品種"<<"t"<<"代碼"<<"t"<<"顏色"<<"n"file<<Item_name<<"t"<<Item_
38、code<<"t"<<colour<<"n"file<<"品牌"<<"t"<<"代碼"<<"t"<<"數(shù)量"<<"t"<<"價(jià)格"<<"n"for(int i=0;i<nBrnd;i+)file<<brndi.brnd_name<<&qu
39、ot;t"<<brndi.Brand_code<<"t"<<brndi.quantity<<"t"<<brndi.brnd_price<<"n"file<<"n"file.close();return 1;void CItem:Show()/顯示品種數(shù)據(jù)cout<<"品種"<<"t"<<"代碼"<<"t&q
40、uot;<<"顏色"<<"n"cout<<Item_name<<"t"<<Item_code<<"t"<<colour<<"n"cout<<"品牌"<<"t"<<"代碼"<<"t"<<"數(shù)量"<<"t"<&
41、lt;"價(jià)格"<<"n"for(int i=0;i<nBrnd;i+)cout<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.quantity<<"t"<<brndi.brnd_price<<"n"cout<<"nn"<<flush;system("pa
42、use");cout<<"n"void CItem:OutModify()/出貨,修改結(jié)點(diǎn)中的數(shù)據(jù)部分int choice,count,chuhuo,price=0;/chuhuo為出貨量,price為總價(jià)格int *num;num=new intnBrnd;if(quantity=0)cout<<"數(shù)量為0."exit(1);for(int i=0;i<nBrnd;i+)/儲(chǔ)存原來(lái)的數(shù)量numi=brndi.quantity;cout<<"品牌"<<"t&qu
43、ot;<<"代碼"<<"t"<<"數(shù)量"<<"t"<<"價(jià)格"<<"n"for(i=0;i<nBrnd;i+)cout<<i+1<<"."<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.quantit
44、y<<"t"<<brndi.brnd_price<<"n"cout<<"nn"cout<<"輸入數(shù)字選擇出貨商品或按0退出.n"cin>>choice;while(choice>=1&&choice<=nBrnd)cout<<"輸入商品數(shù)量:"cin>>count;while(count>brndchoice-1.quantity)cout<<"
45、庫(kù)存不足,重新輸入:"cin>>count;brndchoice-1.quantity-=count;cout<<"出貨成功,按0退出或按數(shù)字繼續(xù)出貨.n"cin>>choice;ofstream file("出貨清單.txt",ios:out|ios:ate);if(!file)cout<<"錯(cuò)誤,不能打開(kāi)文件."getch();exit(1);timer=time(NULL);file<<ctime(&timer);file<<"品
46、種"<<"t"<<"代碼"<<"t"<<"顏色"<<"n"file<<Item_name<<"t"<<Item_code<<"t"<<colour<<"nn"file<<"品牌"<<"t"<<"代碼"&
47、lt;<"t"<<"價(jià)格"<<"t"<<"出貨量"<<"n"for(i=0;i<nBrnd;i+)if(chuhuo=numi-brndi.quantity)price=chuhuo*brndi.brnd_price;file<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.brnd
48、_price<<"t"<<chuhuo<<"n"file<<"總價(jià)格為:"<<price<<"nn"delete num;file.close();void CItem:InModify()/已有商品,再次進(jìn)貨,修改結(jié)點(diǎn)中的數(shù)據(jù)部分char name20;char choice;int count,jinhuo=0;int prenBrnd=nBrnd; /原先品牌數(shù)int n=1;/用于判斷是否繼續(xù)進(jìn)貨int flag=0;/用于判斷是否新品
49、牌int * num;num=new intprenBrnd;for(int i=0;i<nBrnd;i+)/儲(chǔ)存原來(lái)的數(shù)量numi=brndi.quantity;while(n)cout<<"nn輸入品牌名稱(chēng):"Flush(cin);cin.getline(name,20);for(int i=0;i<nBrnd;i+)if(strcmp(brndi.brnd_name,name)=0)cout<<"nn輸入進(jìn)貨數(shù)量:"cin>>count;brndi.quantity+=count;quantity+=
50、count;flag=1;break;if(flag=0)strcpy(brndnBrnd.brnd_name,name);cout<<"n輸入品牌代碼:"cin>>brndnBrnd.Brand_code;cout<<"n輸入數(shù)量:"cin>>brndnBrnd.quantity;cout<<"n輸入價(jià)格:"cin>>brndnBrnd.brnd_price;quantity+=brndnBrnd.quantity;nBrnd+;cout<<&quo
51、t;n繼續(xù)進(jìn)貨:y/n "cin>>choice;if(choice='y'|choice='Y')n=1;else n=0;ofstream file("進(jìn)貨清單.txt",ios:out|ios:ate);if(!file)cout<<"錯(cuò)誤,不能打開(kāi)文件."getch();exit(1);timer=time(NULL);file<<ctime(&timer);file<<"品種"<<"t"<&
52、lt;"代碼"<<"t"<<"顏色"<<"n"file<<Item_name<<"t"<<Item_code<<"t"<<colour<<"nn"file<<"品牌"<<"t"<<"代碼"<<"t"<<"
53、;價(jià)格"<<"t"<<"進(jìn)貨量"<<"n"for(i=0;i<prenBrnd;i+)if(jinhuo=brndi.quantity-numi)file<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.brnd_price<<"t"<<jinhuo<<"n&quo
54、t;if(nBrnd>prenBrnd)for(i=prenBrnd;i<nBrnd;i+)file<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.brnd_price<<"t"<<brndi.quantity<<"n"file<<"nn"delete num;file.close();class CNode /結(jié)點(diǎn)類(lèi)p
55、rivate:CNode * pNext; /指向鏈表下一結(jié)點(diǎn)的指針CItem * pData;/用于指向數(shù)據(jù)類(lèi)的指針public:CNode() pData=0;pNext=0;/結(jié)點(diǎn)構(gòu)造函數(shù)CNode(CNode &node)/用于拷貝的構(gòu)造函數(shù)pData=node.pData;pNext=node.pNext;void InputData(CItem *pSal) pData=pSal; /輸入數(shù)據(jù)void ShowNode() pData->Show(); /輸出結(jié)點(diǎn)中的數(shù)據(jù)CItem * GetData() return pData;/返回下一結(jié)點(diǎn)的指針friend c
56、lass CList;/定義鏈表類(lèi)為友元類(lèi);class CList/定義鏈表類(lèi)protected:CNode * pHead;/鏈表頭結(jié)點(diǎn)指針public:CList() pHead=0; CList() DeleteList(); void AddNode(CNode * pnode);/首部添加結(jié)點(diǎn)CNode * DeleteNode(CNode *);/刪除一個(gè)指定的結(jié)點(diǎn),返回該結(jié)點(diǎn)的指針CNode * LookUp(CItem &);/*查找一個(gè)指定的數(shù)據(jù),返回該數(shù)據(jù)所在結(jié)點(diǎn)在鏈表中的指針,若未找到返回0 */void ShowList();/打印整個(gè)鏈表void Delete
57、List();/刪除整個(gè)鏈表CNode * GetListHead()return pHead;/返回鏈表首結(jié)點(diǎn)CNode * GetListNextNode(CNode *);/返回鏈表指定結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)void Insert(CNode *);/按代碼的順序插入一個(gè)結(jié)點(diǎn);void CList:AddNode(CNode *pnode)/首部添加結(jié)點(diǎn)if(pHead=0)pHead=pnode;pnode->pNext=0;else pnode->pNext=pHead;pHead=pnode;CNode * CList:DeleteNode(CNode *pnode)/刪除一
58、個(gè)指定的結(jié)點(diǎn),返回該結(jié)點(diǎn)的指針if(pnode=pHead)/刪除的結(jié)點(diǎn)是鏈表的首結(jié)點(diǎn)pHead=pnode->pNext;pnode->pNext=0;elseCNode *p=pHead;while(p->pNext!=pnode)p=p->pNext;p->pNext=pnode->pNext;/刪除結(jié)點(diǎn)后將前后兩個(gè)結(jié)點(diǎn)再連結(jié)起來(lái)pnode->pNext=0;return(pnode);CNode * CList:LookUp(CItem &pitem)/*查找一個(gè)指定的數(shù)據(jù),返回該數(shù)據(jù)所在結(jié)點(diǎn)在鏈表中的指針,若未找到返回0 */CNod
59、e * pn=pHead;if(pitem.GetItemCode()=0)while(pn)if(pn->pData->Compare(pitem) return pn;/按品種名稱(chēng)查找pn=pn->pNext;elsewhile(pn)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;
60、void CList:DeleteList()/刪除整個(gè)鏈表CNode * p,* q;p=pHead;while(p)delete p->pData;q=p;p=p->pNext;delete q;CNode * CList:GetListNextNode(CNode *pnode)/返回鏈表指定結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)return pnode->pNext;void CList:Insert(CNode * pnode)/按代碼的順序插入一個(gè)結(jié)點(diǎn)CNode * p1,* p2;if(pHead=0)pHead=pnode;pnode->pNext=0;else if(pHe
61、ad->pData->GetItemCode()>=pnode->pData->GetItemCode()pnode->pNext=pHead;pHead=pnode; else p2=p1=pHead;while(p2->pNext&&p2->pData->GetItemCode()<pnode->pData->GetItemCode()p1=p2;p2=p2->pNext;if(p2->pData->GetItemCode()<pnode->pData->GetIte
62、mCode()p2->pNext=pnode;pnode->pNext=0;elsepnode->pNext=p2;p1->pNext=pnode; void main()int choice;CList list;CItem *p;CNode *pn;char name20;/按商品名稱(chēng)操作時(shí)用于輸入名稱(chēng)char str20;int code;/按商品代碼操作時(shí)用于輸入代碼ifstream infile("TIS.txt",ios:in|ios:nocreate|ios:binary);if(!infile)cout<<"數(shù)據(jù)文件不存在.n"<<flush;system("pause");system("cls");else CItem pitem;infile.read(reinterpret_cast<char *>(&pite
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026上半年貴州事業(yè)單位聯(lián)考松桃苗族自治縣招聘44人筆試參考題庫(kù)及答案解析
- 2025年新課堂國(guó)際教育筆試真題及答案
- 2025年銀河證券研究所筆試及答案
- 2025年湖南招教筆試真題及答案
- 2026西藏日喀則仲巴縣民政和退役軍人事務(wù)局招聘特困人員集中供養(yǎng)服務(wù)中心護(hù)理人員1人筆試備考試題及答案解析
- 2025年今年教資筆試考試真題及答案
- 2025年光伏新能源事業(yè)單位考試及答案
- 2026年流程再優(yōu)化年度工作總結(jié)與提升計(jì)劃
- 2025年陜西農(nóng)信社筆試題庫(kù)及答案
- 2026年綠色金融產(chǎn)品創(chuàng)新培訓(xùn)
- 2026年中央網(wǎng)信辦直屬事業(yè)單位-國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心校園招聘?jìng)淇碱}庫(kù)參考答案詳解
- DB32/T+5311-2025+港口與道路工程+固化土施工技術(shù)規(guī)范
- 2025年河南農(nóng)業(yè)大學(xué)輔導(dǎo)員考試真題
- 2025鄭州餐飲行業(yè)市場(chǎng)深度調(diào)研及發(fā)展前景與投資前景研究報(bào)告
- 早產(chǎn)的臨床診斷與治療指南(2025年)
- 2025年黑龍江省大慶市檢察官逐級(jí)遴選筆試題目及答案
- JBP計(jì)劃培訓(xùn)課件
- 寵物民宿創(chuàng)業(yè)規(guī)劃
- 小學(xué)生家長(zhǎng)教育心得分享
- 2025年銀行柜員年終工作總結(jié)(6篇)
- 養(yǎng)生館運(yùn)營(yíng)成本控制與盈利模型
評(píng)論
0/150
提交評(píng)論