數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告-鏈表維護(hù)_第1頁
數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告-鏈表維護(hù)_第2頁
數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告-鏈表維護(hù)_第3頁
數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告-鏈表維護(hù)_第4頁
數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告-鏈表維護(hù)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.-據(jù)結(jié)構(gòu)實(shí)習(xí)報(bào)告一機(jī)房名稱信息樓420 時間 2012年12月25日學(xué)院計(jì)算機(jī)與通信工程學(xué)院專業(yè)班級姓名學(xué)號指導(dǎo)教師商品庫存管理系統(tǒng)實(shí)習(xí)報(bào)告一,問題的提出在各種商場的庫存管理中,各種商品的庫存量在每天的銷售與進(jìn)貨過程中會發(fā)生不斷的變化,而由于商場是零售經(jīng)營,所以每天涉及庫存的維護(hù)是一個比較麻煩的問題,另一方面,由于受市場和物價(jià),商品的價(jià)格在不同的時間會發(fā)生一定的變化,部分商品也會由于科技的發(fā)展,或者消費(fèi)者的價(jià)值取向,審美觀等方面的影響,會淘汰掉,這既涉及到庫存價(jià)格的變化,以及商品的變化,作為一個大型商場,沒有好的庫存管理方案,將會是一場災(zāi)難,所以,庫存管理系統(tǒng)是必需的。為此,我用所學(xué)數(shù)據(jù)結(jié)構(gòu)

2、算法設(shè)計(jì)了這樣一個實(shí)現(xiàn)庫存模型維護(hù)的程序,從而實(shí)現(xiàn)商場家電部門的庫存維護(hù),其中包括商品的初始化,商品的錄入,淘汰商品的刪除,以及商品信息的更新,商品信息的打印,以及庫存商品文件與程序中表的轉(zhuǎn)換。因此可以以鏈?zhǔn)浇Y(jié)構(gòu)的有序表表示某商廈家電部的庫存模型。當(dāng)有提貨或進(jìn)貨的業(yè)務(wù)要,需要對該有序表及時進(jìn)行維護(hù)。每個工作日結(jié)束之后,將鏈?zhǔn)浇Y(jié)構(gòu)的有序表中的數(shù)據(jù)以文件的形式保存;每天營業(yè)之初需要將文件形式的數(shù)據(jù)恢復(fù)成鏈?zhǔn)浇Y(jié)構(gòu)的有序表。二,功能需求分析:基本要求如下:鏈?zhǔn)浇Y(jié)構(gòu)的有序表的結(jié)點(diǎn)結(jié)構(gòu)的數(shù)據(jù)域應(yīng)包括家電名稱、品牌型號、單價(jià)及數(shù)量、以結(jié)點(diǎn)中單價(jià)值的非減序列表達(dá)著有序性。日常的維護(hù)操作應(yīng)包括初始化、創(chuàng)建表、插

3、入、刪除、更新數(shù)據(jù)、打印、查詢以及鏈?zhǔn)浇Y(jié)構(gòu)的有序表與文件之間的數(shù)據(jù)轉(zhuǎn)換。具體如下描述:商品信息的輸入形式:以手動輸入或者從文件中讀取。商品結(jié)構(gòu)體中商品號,商品名,商品品牌,商品單價(jià),商品數(shù)量是要求輸入的,其中商品號和商品數(shù)量的數(shù)據(jù)類型是整型,商品名和商品品牌的數(shù)據(jù)類型是字符串型,商品單價(jià)是浮點(diǎn)型。輸出的形式包括以單行為一商品信息的屏幕輸出和輸出到文件。包括按商品號的順序輸出和按商品價(jià)格高低輸出兩種。商品的初始化,商品的錄入,按商品號的排序,按商品號排序輸出,按商品價(jià)格排序,按商品價(jià)格排序輸出,指定商品的查詢,淘汰商品的刪除,以及商品信息的更新,商品信息的打印,以及庫存商品文件與程序中表的轉(zhuǎn)換。

4、測試數(shù)據(jù),當(dāng)庫存文件記錄為空時,輸出庫存文件。三,詳細(xì)設(shè)計(jì)以鏈?zhǔn)浇Y(jié)構(gòu)的有序表表示某商廈家電部的庫存模型,日常的維護(hù)包括初始化、插入、刪除、更新、打印、查詢,其中主函數(shù)設(shè)計(jì)如下:當(dāng)輸入不同的數(shù)字時,主函數(shù)將調(diào)用不同的功能函數(shù)。主函數(shù)設(shè)計(jì)如下:void main()int operate=1;LNode *L;printf(ttt !家電部庫存管理系統(tǒng)!nn);Init(&L);while(operate)printf(t *);printf(ntt1.系統(tǒng)初始化 t2.插入數(shù)據(jù)t3.刪除數(shù)據(jù)tntt4.更新數(shù)據(jù)t5.打印數(shù)據(jù)t6.查詢數(shù)據(jù)ntt0.退出系統(tǒng)n);printf(t *n);prin

5、tf(選擇您所要執(zhí)行的操作編號:);scanf(%d,&operate);switch(operate)case 0: printf(nnt-*-*-操作結(jié)束,按任意鍵退出系統(tǒng)!-*-*-nn);break;case 1: operate1(&L);break;case 2: operate2(&L);break;case 3: operate3(&L);break;case 4: operate4(&L);break;case 5: operate5(L);break;case 6: operate6(L);break;default:printf(對不起,沒有這項(xiàng)操作。n)詳細(xì)程序設(shè)計(jì)如下

6、: #include #include #include #include#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define SEPARATE printf(nnnt*nnn)#define CHOOSE printf(您是否繼續(xù)操作(1/0): )#define UPDATE printf(將其更新為:)typedef int Status;typedef struct sheetint number;/產(chǎn)品編號char name20;/產(chǎn)品名稱char pattern20;/產(chǎn)品型號int price;/產(chǎn)品價(jià)格i

7、nt inventory;/目前產(chǎn)品庫存sheet;/存儲產(chǎn)品數(shù)據(jù)的結(jié)構(gòu)體typedef struct LNodesheet date;/產(chǎn)品數(shù)據(jù)域struct LNode *next;/鏈表指針域LNode,*List;/鏈?zhǔn)浇Y(jié)構(gòu)存儲Status Init(LNode *L)/初始化鏈表*L=(LNode *)malloc(sizeof(LNode);/開辟頭結(jié)點(diǎn)空間(*L)-next=NULL;/頭指針指向空(*L)-date.price=0;/預(yù)設(shè)頭結(jié)點(diǎn)中價(jià)格為0,方便價(jià)格排序return OK;Status Insert(LNode *L,LNode *N)/在鏈表中插入數(shù)據(jù)為e的新產(chǎn)

8、品數(shù)據(jù)LNode *New;LNode *pre,*p;p=*L;pre=*L;New=(LNode *)malloc(sizeof(LNode);/開辟新結(jié)點(diǎn)空間New-date=N-date;New-next=NULL;/新結(jié)點(diǎn)初始化while(p)/尋找新產(chǎn)品該插入的位置并插入L中if(p-date.pricedate.price)pre=p;p=p-next;if(!p)pre-next=New; elseNew-next=pre-next;pre-next=New;p=NULL;return OK;Status Delete(LNode *L,int i)/尋找該產(chǎn)品的位置并刪除產(chǎn)品

9、數(shù)據(jù)LNode *p,*q;p=*L;q=p-next;while(q-next&q-date.number!=i)p=p-next;q=p-next;/尋找該產(chǎn)品的位置if(!q)return ERROR;p-next=q-next;/刪除產(chǎn)品數(shù)據(jù)free(q);return OK;Status Printdate(sheet e)/打印某產(chǎn)品數(shù)據(jù)printf(編號: %dn名稱: %sn型號: %sn價(jià)格: %dn庫存: %dn,e.number,,e.pattern,e.price,e.inventory);printf(-*-*-*-n);return OK;Status

10、Updatenumber(LNode *L,int i)/更新編號為i的產(chǎn)品編號LNode *p=(*L)-next;int j;sheet e;UPDATE;scanf(%d,&j);while(p&p-date.number!=i)p=p-next;/尋找該產(chǎn)品的位置if(!p)return ERROR;p-date.number=j;/更新產(chǎn)品編號e=p-date;printf(nn*產(chǎn)品數(shù)據(jù)更新*n);Printdate(e);/打印新產(chǎn)品數(shù)據(jù)return OK;Status Updatename(LNode *L,int i)/更新編號為i的產(chǎn)品名稱LNode *p=(*L)-nex

11、t;char j20;sheet e;UPDATE;scanf(%s,j);while(p&p-date.number!=i)p=p-next;/尋找該產(chǎn)品的位置if(!p)return ERROR;strcpy(,j);/更新產(chǎn)品名稱e=p-date;printf(nn*產(chǎn)品數(shù)據(jù)更新*n);Printdate(e);/打印新產(chǎn)品數(shù)據(jù)return OK;Status Updatepattern(LNode *L,int i)/更新編號為i的產(chǎn)品型號LNode *p=(*L)-next;char j20;sheet e;UPDATE;scanf(%s,j);while(p&

12、p-date.number!=i)p=p-next;/尋找該產(chǎn)品的位置if(!p)return ERROR;strcpy(p-date.pattern,j);/更新產(chǎn)品型號e=p-date;printf(nn*產(chǎn)品數(shù)據(jù)更新*n);Printdate(e);/打印新產(chǎn)品數(shù)據(jù)return OK;Status Updateprice(LNode *L,int i)/更新編號為i的產(chǎn)品價(jià)格LNode *p=(*L)-next;int j;sheet e;UPDATE;scanf(%d,&j);while(p&p-date.number!=i)p=p-next;/尋找該產(chǎn)品的位置if(!p)return

13、 ERROR;p-date.price=j;/更新產(chǎn)品價(jià)格e=p-date;printf(nn*產(chǎn)品數(shù)據(jù)更新*n);Printdate(e);/打印新產(chǎn)品數(shù)據(jù)return OK;Status Updateinventory(LNode *L,int i)/更新編號為i的產(chǎn)品庫存LNode *p=(*L)-next;int j;sheet e;printf(庫存改變量為: );scanf(%d,&j);while(p&p-date.number!=i)p=p-next;/尋找該產(chǎn)品的位置if(!p)return ERROR;p-date.inventory=p-date.inventory+j;

14、/更新產(chǎn)品庫存e=p-date;printf(nn*產(chǎn)品數(shù)據(jù)更新*n);Printdate(e);/打印新產(chǎn)品數(shù)據(jù)return OK;Status Cheekdate(LNode *L,int i)/查詢編號為i的產(chǎn)品是否存在LNode *p=L-next;while(p&p-date.number!=i)p=p-next;if(!p)return ERROR;return OK;Status PrintList(LNode *L)/打印整個數(shù)據(jù)表LNode *p=L-next;sheet e;while(p)e=p-date;Printdate(e);p=p-next;/邊遍歷邊打印數(shù)據(jù)re

15、turn OK;void operate1(LNode *L)/輔助初始化Init(&(*L);printf(nt-初始化完成-n);void operate2(LNode *L)/輔助插入,實(shí)現(xiàn)確認(rèn)新信息再插入。LNode *N;int choose;N=(LNode *)malloc(sizeof(LNode);SEPARATE;printf(t*新產(chǎn)品信息*n);printf(n編號:);scanf(%d,&N-date.number);printf(n名稱:);scanf(%s,N-);printf(n型號:);scanf(%s,N-date.pattern);pri

16、ntf(n價(jià)格:);scanf(%d,&N-date.price);printf(n庫存:);scanf(%d,&N-date.inventory);printf(t*您要插入的新數(shù)據(jù)*n);printf(編號: %dn名稱: %sn型號: %sn價(jià)格: %dn庫存: %dn,N-date.number,N-,N-date.pattern,N-date.price,N-date.inventory);CHOOSE;scanf(%d,&choose);/確認(rèn)信息if(choose)Insert(&(*L),N);/插入printf(nt-數(shù)據(jù)已插入-nn);else print

17、f(nt-數(shù)據(jù)插入失敗-nn);SEPARATE;void operate3(LNode *L)/輔助刪除,以編號為索引。int i,j,choose;sheet e;SEPARATE;printf(您要刪除的產(chǎn)品編號:);scanf(%d,&i);j=Cheekdate(*L),i);/檢查數(shù)據(jù)是否存在if(j)printf(nnt*您要刪除的數(shù)據(jù)*n);LNode *p=(*L)-next;while(p-date.number!=i)p=p-next;e=p-date;Printdate(e);CHOOSE;scanf(%d,&choose);/確認(rèn)信息if(choose)Delete(

18、&(*L),i);/刪除printf(t-已刪除-n);else printf(t-退出-n);else printf(t-數(shù)據(jù)不存在,刪除失敗-n);SEPARATE;void operate4(LNode *L)/輔助更新,以編號為索引,實(shí)現(xiàn)選擇性更新。int i,content,choose;SEPARATE;printf(您要更新的產(chǎn)品編號為:);scanf(%d,&i);printf(-*-*-*-n);if(Cheekdate(*L),i)printf(ntt1.產(chǎn)品編號 t2.產(chǎn)品名稱t3.產(chǎn)品型號tntt4.產(chǎn)品價(jià)格t5.產(chǎn)品庫存t6.取消更新ttn);loop:printf(

19、您要更新的產(chǎn)品容為:);scanf(%d,&content);switch(content)case 1: Updatenumber(&(*L),i);break;case 2: Updatename(&(*L),i);break;case 3: Updatepattern(&(*L),i);break;case 4: Updateprice(&(*L),i);break;case 5: Updateinventory(&(*L),i);break;case 6: break;default:printf(對不起,沒有此操作項(xiàng)。n);CHOOSE;scanf(%d,&choose);if(ch

20、oose)goto loop;/可選擇繼續(xù)更新/選擇不同容更新else printf(對不起,沒有這個編號。n);printf(t-更新完畢-nn);void operate5(LNode *L)/輔助打印printf(t-家電數(shù)據(jù)表-nn);PrintList(L);SEPARATE;void operate6(LNode *L)/輔助查詢,以編號為索引。int i,j;sheet e;printf(您要查詢的產(chǎn)品編號是:);scanf(%d,&i);j=Cheekdate(L,i);/檢查數(shù)據(jù)是否存在if(j)LNode *p=L-next;while(p-date.number!=i)p=p-next;e=p-date;printf(t-產(chǎn)品數(shù)據(jù)-n);Printdate(e);/打印產(chǎn)品數(shù)據(jù)else printf(對不起,沒有此編號的信息。);SEPARATE;void main()/以鏈?zhǔn)浇Y(jié)構(gòu)的有序表表示某商廈家電部的庫存模型,日常的維護(hù)包括初始化、插入、刪除、更新、打印、查詢。int operate=1;LNode *L;printf(ttt !家電部庫存管

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論