版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、信息技術(shù)系課程設(shè)計(jì)報(bào)告課年專(zhuān)姓程:物品庫(kù)存管理得分:指導(dǎo)老師簽名:二。一。年H一月三十日實(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ù),為了滿足程序的完整性與可讀性,應(yīng)將對(duì)鏈表操作的所有程序封裝在一起。classBrand/品牌類(lèi)定義品種類(lèi)為友元類(lèi)friendclassCItem;/;classCNode/結(jié)點(diǎn)類(lèi)friendclassCList;/定義鏈表類(lèi)為友元類(lèi);注:省略部分詳見(jiàn)源程序代碼及課程設(shè)計(jì)教材提示部分(2)程序功能菜單的設(shè)置程序主題采用菜單選項(xiàng)的形式,輸入相應(yīng)的菜單選項(xiàng)后程序可以反復(fù)運(yùn)行,
4、而其中還要求3.4.5.6.項(xiàng)各有一個(gè)菜單,分別是:按照商品品種名稱和按照商品代碼進(jìn)行操作。&物品庫(kù)存管理系統(tǒng)&*1. 添加商品品種2. 顯示商品品種3. 查詢商品4. 刪除商品5. 商品出庫(kù)6. 商品進(jìn)庫(kù)0.退出系統(tǒng)*4設(shè)計(jì)中所負(fù)責(zé)的部分商品的出庫(kù)與入庫(kù)部分intCItem:SetItem(intn)/置品種數(shù)據(jù),正確返回1,當(dāng)n為1時(shí),是新進(jìn)貨物,輸出至出清單文件cout<<"n輸入商品名稱:"Flush(cin);cin.getline(Item_name,20);cout<<"n輸入商品代碼:"cin>
5、;>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(inti=0,count=0;i<nBrnd;i+)cout<<"n輸入品牌"<<i+1<<"的數(shù)據(jù)n"cout&l
6、t;<"n輸入品牌名稱:"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.quantity;quantity=count;if(n=1)(ofstreamfile
7、("進(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"<<"顏色"<<"n"file<<Item_name
8、<<"t"<<Item_code<<"t"<<colour<<"n"file<<"品牌"<<"t"<<"代碼"<<"t"<<"數(shù)量"<<"t"<<"價(jià)格"<<"n"for(inti=0;i<nBrnd;i+)(file
9、<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.quantity<<"t"<<brndi.brnd_price<<"n"file<<"n"file.close();return1;此函數(shù)的兩個(gè)功能:第一個(gè)是在添加商品時(shí)從鍵盤(pán)輸入商品的各種數(shù)據(jù),調(diào)用這個(gè)功能時(shí)利用n的缺省值,在調(diào)用時(shí)不給n賦值;第二個(gè)是在進(jìn)貨時(shí)如果進(jìn)的是新的品種,那么
10、也要從鍵盤(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)貨清單。voidCItem:Show()/顯示品種數(shù)據(jù)(cout<<"品種"<<"t"<<"代碼"<<"t"<<"顏色"<<"n"cout<<Item_name<<"t"<&l
11、t;Item_code<<"t"<<colour<<"n"cout<<"品而"<<"t"<<"代碼"<<"t"<<"數(shù)量"<<"t"<<"價(jià)格"<<"n"for(inti=0;i<nBrnd;i+)(cout<<brndi.brnd_name<
12、<"t"<<brndi.Brand_code<<"t"<<brndi.quantity<<"t"<<brndi.brnd_price<<"n"cout<<"nn"<<flush;system("pause");cout<<"n"這個(gè)函數(shù)也是與出貨功能有關(guān),與InModify()的函數(shù)類(lèi)似。因?yàn)槭菐?kù)中的商品出貨,所以商品品種必須存在,若不存在,則
13、輸出提示信息,出貨失敗。還有一種可能是商品品種曾經(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ù)部分的修改。voidCItem:OutModify()/出貨,修改結(jié)點(diǎn)中的數(shù)據(jù)部分intchoice,count,chuhuo,price=0;/chuhuo為出貨量,price為總價(jià)格int*num;num=newintnBrnd;if(quantity=0)cout<<&quo
14、t;數(shù)量為0."exit(1);for(inti=0;i<nBrnd;i+)/儲(chǔ)存原來(lái)的數(shù)量numi=brndi.quantity;cout<<"品牌"<<"t"<<"代碼"<<"t"<<"數(shù)量"<<"t"<<"價(jià)格"<<"n"for(i=0;i<nBrnd;i+)cout<<i+1<<"
15、;."<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.quantity<<"t"<<brndi.brnd_price<<"n"cout<<"nn"cout<<"輸入數(shù)字選擇出貨商品或按0退出.n"cin>>choice;while(choice>=1&&ch
16、oice<=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;ofstreamfile("出貨清單.txt",ios:out|ios:ate);if(!file
17、)cout<<"錯(cuò)誤,不能打開(kāi)文件."getch();exit(1);timer=time(NULL);file<<ctime(&timer);file<<"品種"<<"t"<<"代碼"<<"t"<<"顏色"<<"n"file<<Item_name<<"t"<<Item_code<<&q
18、uot;t"<<colour<<"nn"file<<"品牌"<<"t"<<"代碼"<<"t"<<"價(jià)格"<<"t"<<"出貨量"<<"n"for(i=0;i<nBrnd;i+)if(chuhuo=numi-brndi.quantity)price=chuhuo*brndi.brnd_
19、price;file<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.brnd_price<<"t"<<chuhuo<<"n"file<<"總價(jià)格為:"<<price<<"nn"deletenum;file.close();InModify()同樣也與進(jìn)貨功能有關(guān)。因?yàn)樗M(jìn)的品種可能是也有的
20、品種,只是增加其中的數(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;把原有量減去省下剩余量。voidCItem:InModify()/已有商品,再次進(jìn)貨,修改結(jié)點(diǎn)中的數(shù)據(jù)部分charname20;charchoice;intcoun
21、t,jinhuo=0;intprenBrnd=nBrnd;/原先品牌數(shù)intn=1;/用于判斷是否繼續(xù)進(jìn)貨intflag=0;/用于判斷是否新品牌int*num;num=newintprenBrnd;for(inti=0;i<nBrnd;i+)/儲(chǔ)存原來(lái)的數(shù)量numi=brndi.quantity;while(n)cout<<"nn輸入品牌名稱:"Flush(cin);cin.getline(name,20);for(inti=0;i<nBrnd;i+)(if(strcmp(brndi.brnd_name,name)=0)(.cout<<
22、"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>>brndnBrnd.quantity;cout<<"n輸入價(jià)格:";cin>&g
23、t;brndnBrnd.brnd_price;quantity+=brndnBrnd.quantity;nBrnd+;cout<<"n繼續(xù)進(jìn)貨:y/n"cin>>choice;if(choice='y'|choice='Y')n=1;elsen=0;ofstreamfile("進(jìn)貨?青單.txt”,ios二out|ios二ate);if(!file)(cout<<"錯(cuò)誤,不能打開(kāi)文件."getch();exit(1);timer=time(NULL);file<<c
24、time(&timer);file<<"品種"<<"t"<<"代碼"<<"t"<<"顏色"<<"n"file<<Item_name<<"t"<<Item_code<<"t"<<colour<<"nn"file<<"品牌"<<
25、"t"<<"代碼"<<"t"<<"價(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"<<
26、;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_price<<"t"<<brndi.quantity<<"n&q
27、uot;file<<"nn"deletenum;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)。inlineistream&Flush(istream&stream)stream.clear();intchars_to_skip=stream.rdbuf()->in_avail();returnstream.ignore(chars_to_skip);2.
28、 怎樣實(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. 為保證程序界面的美觀,如何清屏?在圖書(shū)館查閱了有關(guān)方面的書(shū)籍和文獻(xiàn),利用網(wǎng)絡(luò)資源,使用函數(shù)system("cls")即可。程序
29、完整代碼#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_ttimer;inlineistream&Flush(istream&stream)/清除儲(chǔ)存器中數(shù)據(jù)stream.cl
30、ear();intchars_to_skip=stream.rdbuf()->in_avail();returnstream.ignore(chars_to_skip);#defineMAX10/classBrand/品牌類(lèi)運(yùn)用宏定義,規(guī)定品牌數(shù)最大為10構(gòu)造構(gòu)造private:charintintfloatpublic:brnd_name20;Brand_code;quantity;brnd_price;/品牌名稱/品牌代號(hào)數(shù)量/價(jià)格Brand()quantity=0;strcpy(brnd_name,"0");friendclassCItem;classCItem
31、private:charItem_name10;intItem_code;charcolour10;intquantity;BrandbrndMAX;intnBrnd;public:/定義友元類(lèi)/品種類(lèi)1,/品種名稱/品種代號(hào)顏色數(shù)量最多MAXb品牌品牌的數(shù)量(<MAX)CItem()strcpy(Item_name,"0");quantity=0;nBrnd=0;/CItem(char*name)strcpy(Item_name,name);Item_code=0;CItem(intcode)Item_code=code;strcpy(Item_name,"
32、;0");intSetItem(intn=0);當(dāng)n為1時(shí),是新進(jìn)貨物,輸出至出清單文件char*GetItemName()returnItem_name;intGetItemCode()returnItem_code;/缺省構(gòu)造函/用品種名稱用品種代碼置品種數(shù)據(jù),正確返返回品種名返回品種代intCompare(CItem&);1,0intCompareCode(CItem&);1,0voidShow();voidOutModify();voidInModify();/出貨,修改結(jié)點(diǎn)中的數(shù)據(jù)部分比較品種名稱,供查找用,比較結(jié)果為顯示品種數(shù)據(jù)修改結(jié)點(diǎn)中的數(shù)據(jù)部分已有商品
33、,再次進(jìn)貨,修改結(jié)點(diǎn)中的數(shù)據(jù)部分;intCItem:Compare(CItem&pitem)0/比較品種名稱,供查找用,比較結(jié)果為1,intn;n=strcmp(Item_name,pitem.Item_name);/if(n!=0)return0;elsereturn1;兩個(gè)字符串相等,n=0intCItem:CompareCode(CItem&pitem)/return(Item_code=pitem.Item_code);1,0intCItem:SetItem(intn)貨物,輸出至出清單文件/置品種數(shù)據(jù),正確返回1,當(dāng)n為1時(shí),是新進(jìn)cout<<"
34、n輸入商品名稱:"Flush(cin);cin.getline(Item_name,20);cout<<"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(inti=0,cou
35、nt=0;i<nBrnd;i+)cout<<"n輸入品牌"<<i+1<<"的數(shù)據(jù)n"cout<<"n輸入品牌名稱:"Flush(cin);cin.getline(brndi.brnd_name,20);cout<<"n輸入品牌代碼:"cin>>brndi.Brand_code;cout<<"n輸入數(shù)量:"cin>>brndi.quantity;cout<<"n輸入價(jià)格:&q
36、uot;cin>>brndi.brnd_price;count+=brndi.quantity;quantity=count;if(n=1)ofstreamfile("進(jìn)貨清單.txt",ios:out|ios:ate);cout«"錯(cuò)誤,不能打開(kāi)文件getch();ex讓?zhuān)?timer=time(NULL);file«ctime(&timer);file«"品種''«"t"«"代碼顏色"«"n"fi
37、le«ltem_name«"t"«ltem_code«"t"«colour«"n"file«"品牌”vv”t”vv”代碼數(shù)量',«"t"«"價(jià)格"vv”n”;for(inti=O;i<nBrnd;i+)(file«brndi.brnd_name«"t"«brndi.Brand_code«"t"«
38、brndi.quantity«"t"«brndi.brnd_price«"n"一file«"n"file.close();)return1;)voidCltem:Show()/顯示品種數(shù)據(jù)(cout«"品種"vv”t”vv”代碼“vv”t”vv“顏色”vv”n”;cout«ltem_name«"t"«ltem_code«"t"«colour«"n"
39、cout«"品商"vv”t”vv”代碼“vv”vv“數(shù)量“vv”t”vv“價(jià)格“vv”n”;for(inti=O;i<nBrnd;i+)(cout«brndi.brnd_name«"t"«brndi.Brand_code«"t"«brndi.quantity«"t"«brndi.brnd_price«"n"一cout«"nn"«flush;system(&quo
40、t;pause");cout«"n")voidCltem:OutModify()/出貨,修改結(jié)點(diǎn)中的數(shù)據(jù)部分(intchoice,count,chuhuo,price=0;/chuhuo為出貨量,price為總價(jià)格int*num;num=newintnBrnd;if(quantity=O)(cout«"數(shù)量為0."ex計(jì);)for(inti=O;i<nBrnd;i+)/儲(chǔ)存原來(lái)的數(shù)量numi=brndi.quantity;)cout<<"品牌"<<"t"&
41、lt;<"代碼"<<"t"<<"數(shù)量"<<"t"<<"價(jià)格"<<"n"for(i=0;i<nBrnd;i+)(cout<<i+1<<"."<<brndi.brnd_name<<"t"<<brndi.Brand_code<<"t"<<brndi.quantity&l
42、t;<"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<<"
43、庫(kù)存不足,重新輸入:"cin>>count;brndchoice-1.quantity-=count;cout<<"出貨成功,按0退出或按數(shù)字繼續(xù)出貨.n"cin>>choice;ofstreamfile("出貨清單.txt",ios:out|ios:ate);if(!file)(cout<<"錯(cuò)誤,不能打開(kāi)文件."getch();exit(1);timer=time(NULL);file<<ctime(&timer);file<<"品
44、種"<<"t"<<"代碼"<<"t"<<"顏色"<<"n"file<<Item_name<<"t"<<Item_code<<"t"<<colour<<"nn"file<<"品牌"<<"t"<<"代碼"&
45、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.br
46、nd_price<<"t"<<chuhuo<<"n"file<<"總價(jià)格為:"<<price<<"nn"deletenum;file.close();voidCItem:InModify()/已有商品,再次進(jìn)貨,修改結(jié)點(diǎn)中的數(shù)據(jù)部分charname20;charchoice;intcount,jinhuo=0;intprenBrnd=nBrnd;/原先品牌數(shù)int n=1;int flag=0;int * num;/ 用于判斷是否繼續(xù)進(jìn)貨/ 用
47、于判斷是否新品牌/ 儲(chǔ)存原來(lái)的數(shù)量num=newintprenBrnd;for(inti=0;i<nBrnd;i+)numi=brndi.quantity;while(n)cout<<"nn輸入品牌名稱:"Flush(cin);cin.getline(name,20);for(inti=0;i<nBrnd;i+)if(strcmp(brndi.brnd_name,name)=0)cout<<"nn輸入進(jìn)貨數(shù)量:"cin>>count;brndi.quantity+=count;quantity+=count
48、;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<<"n繼
49、續(xù)進(jìn)貨:y/n"cin>>choice;if(choice='y'|choice='Y')n=1;elsen=0;)ofstreamfile("進(jìn)貨?青單.txt",ios二out|ios二ate);if(!file)cout<<"錯(cuò)誤,不能打開(kāi)文件."getch();exit(1);)timer=time(NULL);file<<ctime(&timer);file<<"品種"<<"t"<<&
50、quot;代碼"<<"t"<<"顏色"<<"n"file<<Item_name<<"t"<<Item_code<<"t"<<colour<<"nn"file<<"品牌"<<"t"<<"代扃'"<<%"<<"價(jià)格&q
51、uot;<<"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").)
52、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"deletenum;file.close();)classCNode/結(jié)點(diǎn)類(lèi)pr
53、ivate:CNode*pNext;/指向鏈表下一結(jié)點(diǎn)的指針CItem*pData;/用于指向數(shù)據(jù)類(lèi)的指針public:CNode()pData=0;pNext=0;/結(jié)點(diǎn)構(gòu)造函數(shù)/ 用于拷貝的構(gòu)造函數(shù)CNode(CNode&node)pData=node.pData;pNext=node.pNext;void InputData(CItem *pSal) pData=pSal; void ShowNode() pData->Show(); /CItem * GetData() return pData;/ 輸入數(shù)據(jù) 輸出結(jié)點(diǎn)中的數(shù)據(jù)friend class CList;clas
54、s CListprotected:CNode * pHead;public:CList() pHead=0; CList() DeleteList(); 返回下一結(jié)點(diǎn)的指針/ 定義鏈表類(lèi)為友元類(lèi)/ 定義鏈表類(lèi)/ 鏈表頭結(jié)點(diǎn)指針void AddNode(CNode * pnode);CNode * DeleteNode(CNode *);/ 首部添加結(jié)點(diǎn)/ 刪除一個(gè)指定的結(jié)點(diǎn),返回該結(jié)點(diǎn)的指針CNode * LookUp(CItem &);表中的指針,若未找到返回 0 */void ShowList();void DeleteList();/* 查找一個(gè)指定的數(shù)據(jù), 返回該數(shù)據(jù)所在結(jié)點(diǎn)在
55、鏈/ 打印整個(gè)鏈表/ 刪除整個(gè)鏈表CNode*GetListHead()returnpHead;/返回鏈表首結(jié)點(diǎn)CNode*GetListNextNode(CNode*);/返回鏈表指定結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)voidInsert(CNode*);/按代碼的順序插入一個(gè)結(jié)點(diǎn);voidCList:AddNode(CNode*pnode)/首部添加結(jié)點(diǎn)if(pHead=0)pHead=pnode;pnode->pNext=0;elsepnode->pNext=pHead;pHead=pnode;CNode*CList:DeleteNode(CNode*pnode)/刪除一個(gè)指定的結(jié)點(diǎn),返回該結(jié)
56、點(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*/CNode*pn=pHead;if(pi
57、tem.GetItemCode()=0)while(pn)if(pn->pData->Compare(pitem)returnpn;/按品種名稱查找pn=pn->pNext;elsewhile(pn)if(pn->pData->CompareCode(pitem)returnpn;/按品種代碼查找pn=pn->pNext;return0;voidCList:ShowList()/打印整個(gè)鏈表CNode*p=pHead;while(p)p->pData->Show();p=p->pNext;voidCList:DeleteList()/刪除整
58、個(gè)鏈表CNode*p,*q;p=pHead;while(p)deletep->pData;q=p;p=p->pNext;deleteq;CNode*CList:GetListNextNode(CNode*pnode)/返回鏈表指定結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)returnpnode->pNext;voidCList:Insert(CNode*pnode)/按代碼的順序插入一個(gè)結(jié)點(diǎn)CNode*p1,*p2;if(pHead=0)pHead=pnode;pnode->pNext=0;elseif(pHead->pData->GetItemCode()>=pnode-&g
59、t;pData->GetItemCode()pnode->pNext=pHead;pHead=pnode;elsep2=p1=pHead;while(p2->pNext&&p2->pData->GetItemCode()<pnode->pData->GetItemCode()p1=p2;p2=p2->pNext;if(p2->pData->GetItemCode()<pnode->pData->GetItemCode()p2->pNext=pnode;pnode->pNext=0;e
60、lsepnode->pNext=p2;p1->pNext=pnode;voidmain()intchoice;CListlist;CItem*p;CNode*pn;charname20;charstr20;intcode;/按商品名稱操作時(shí)用于輸入名稱/按商品代碼操作時(shí)用于輸入代碼ifstreaminfile("TIS.txt",ios:in|ios:nocreate|ios:binary);if(!infile)cout<<"數(shù)據(jù)文件不存在.n"<<flush;system("pause");sy
61、stem("cls");elseCItempitem;infile.read(reinterpret_cast<char*>(&pitem),sizeof(CItem);while(!infile.eof()p=newCItem;*p=pitem;pn=newCNode;pn->InputData(p);list.Insert(pn);infile.read(reinterpret_cast<char*>(&pitem),sizeof(CItem);infile.close();docout<<"nt&am
62、p;cout<<"n物品庫(kù)存管理系統(tǒng)&"*”*”cout<<"nn1.cout<<"nn2.cout<<"nn3.cout<<"nn4.cout<<"nn5.cout<<"nn6.cout<<"nn0.cout<<"n添加商品品種"顯示商品品種"查詢商品"刪除商品"商品出庫(kù)"商品進(jìn)庫(kù)"退出系統(tǒng)"cout<&
63、lt;"nn輸入選擇:"Flush(cin);cin.getline(str,20);choice=atoi(str);switch(choice)case 1: /添加商品品種system("cls");p=newCItem;p->SetItem();pn=newCNode;pn->InputData(p);list.Insert(pn);system("cls");break;case 2: /顯示商品品種system("cls");pn=list.GetListHead();if(pn=0)cou
64、t<<"無(wú)庫(kù)存."<<endl;system("cls");elselist.ShowList();system("cls");break;case 3: /查詢商品system("cls");cout<<"nn1.按商品品種名稱查詢商品"cout<<"nn2.按商品品種代碼查詢商品"cout<<"nn0.退出"cout<<"nn輸入選擇:"cin>>c
65、hoice;if(choice=1)cout<<"nn輸入品種名稱:n"Flush(cin);cin.getline(name,20);p=newCItem(name);pn=list.LookUp(*p);if(pn)pn->GetData()->Show();elsecout<<"n沒(méi)找到商品nn"<<flush;system("pause");deletep;if(choice=2)cout<<"nn輸入品種代碼:n"cin>>code;
66、intn;n=code;p=newCItem(n);pn=list.LookUp(*p);if(pn)pn->GetData()->Show();elsecout<<"n沒(méi)找到商品nn"<<flush;system("pause");deletep;system("cls");break;case 4: /刪除商品system("cls");cout<<"nn1.按商品品種名稱刪除商品"cout<<"nn2.按商品品種代碼刪除
67、商品"cout<<"nn0.退出"cout<<"nn輸入選擇:"cin>>choice;if(choice=1)cout<<"nn輸入品種名稱:n"Flush(cin);cin.getline(name,20);p=newCItem(name);pn=list.LookUp(*p);if(pn)list.DeleteNode(pn);elsecout<<"n沒(méi)找到商品nn"<<flush;system("pause");dele
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 陵園水磨地板施工合同
- 臨時(shí)演員參與博物館展覽協(xié)議
- 水處理工程設(shè)備招投標(biāo)合同范例
- 2024年度煤炭礦山工程設(shè)計(jì)與施工合同
- 辦公家具行業(yè)質(zhì)量管理
- 汽車(chē)站施工圖設(shè)計(jì)合同
- 生態(tài)保護(hù)工程師聘用合同
- 電子產(chǎn)品倉(cāng)庫(kù)租賃合同模板
- 新建住宅居住權(quán)協(xié)議書(shū)
- 2024年建筑工程款項(xiàng)分階段支付合同
- 送電線路工程施工質(zhì)量檢驗(yàn)計(jì)劃
- 無(wú)違反計(jì)劃生育證明(3篇)
- 水稻的形態(tài)結(jié)構(gòu)分析課件
- 煙草制品零售點(diǎn)合理布局管理規(guī)定
- 印象江蘇課件
- 企業(yè)團(tuán)委書(shū)記競(jìng)聘演講稿課件
- 口腔材料學(xué)知識(shí)點(diǎn)
- 化學(xué)品安全技術(shù)說(shuō)明書(shū) MSDS(甲胺)
- 錨噴支護(hù)施工質(zhì)量驗(yàn)收評(píng)定表(2022版)
- 2022年泰安技師學(xué)院教師招聘筆試題庫(kù)及答案解析
- 小學(xué)生心理健康教育課《身體紅綠燈》教案(公開(kāi)課)
評(píng)論
0/150
提交評(píng)論