[畢業(yè)設(shè)計(jì)精品]倉(cāng)庫(kù)管理系統(tǒng)(線性表的應(yīng)用)_第1頁(yè)
[畢業(yè)設(shè)計(jì)精品]倉(cāng)庫(kù)管理系統(tǒng)(線性表的應(yīng)用)_第2頁(yè)
[畢業(yè)設(shè)計(jì)精品]倉(cāng)庫(kù)管理系統(tǒng)(線性表的應(yīng)用)_第3頁(yè)
[畢業(yè)設(shè)計(jì)精品]倉(cāng)庫(kù)管理系統(tǒng)(線性表的應(yīng)用)_第4頁(yè)
[畢業(yè)設(shè)計(jì)精品]倉(cāng)庫(kù)管理系統(tǒng)(線性表的應(yīng)用)_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告信息工程學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)題目:倉(cāng)庫(kù)管理系統(tǒng)(線性表的應(yīng)用) 日期:2011 年12月30日程序設(shè)計(jì)書(shū)目錄一、程序設(shè)計(jì)目標(biāo)二、問(wèn)題描述三、需求分析(說(shuō)明課程設(shè)計(jì)的任務(wù))四、概要設(shè)計(jì)(說(shuō)明課程設(shè)計(jì)中用到的抽象數(shù)據(jù)類型的定義、主程序的流程以及各程序模塊之間的調(diào)用關(guān)系等)五、詳細(xì)設(shè)計(jì)(實(shí)現(xiàn)程序模塊的具體算法)六、軟件說(shuō)明書(shū)(給出軟件應(yīng)如何使用,使用時(shí)的注意事項(xiàng))七、源程序清單(要求400行以上,要有注釋說(shuō)明)八、測(cè)試報(bào)告(調(diào)試過(guò)程中遇到的問(wèn)題及解決方法,并列出測(cè)試結(jié)果,包括輸入和輸出) 九、課程設(shè)計(jì)總結(jié) 程序設(shè)計(jì)書(shū)1. 程序設(shè)計(jì)目標(biāo): (1)程序設(shè)計(jì)我們可以鞏固書(shū)本上的知識(shí)

2、,復(fù)習(xí)運(yùn)用的語(yǔ)言,比如說(shuō)你會(huì)對(duì)指針,結(jié)構(gòu)體有更加深入的理解。全面的理解數(shù)據(jù)結(jié)構(gòu),并運(yùn)用它 (2)我們一些書(shū)上的問(wèn)題看似容易,但當(dāng)我們自己動(dòng)手的時(shí)候,就可以現(xiàn),我們一些思想上的錯(cuò)誤。 (3)在這編程中,我們養(yǎng)成了一種很好的編程習(xí)慣。以防錯(cuò)誤的發(fā)生。 (4)處于將自己的程序裝扮的更漂亮,我們發(fā)揮了各自的頭腦,學(xué)習(xí)了不同的表現(xiàn)手法。 (5) 通過(guò)這次課程設(shè)計(jì),培養(yǎng)了團(tuán)隊(duì)合作精神,為以后的多人任務(wù)的完成提供了基礎(chǔ)。2. 問(wèn)題描述 建立一個(gè)倉(cāng)庫(kù)管理程序,實(shí)現(xiàn)建立表,對(duì)貨物的增加,刪除,查找,更改,顯示當(dāng)前貨物以及建立新倉(cāng)庫(kù)。3.需求分析 企業(yè)的庫(kù)存管理往往是很復(fù)雜、很繁瑣的。由于所掌握的物資種類眾多,出

3、入庫(kù)、管理、供銷商的渠道各有差異,各個(gè)企業(yè)之間的管理體制不盡相同,因此倉(cāng)庫(kù)的庫(kù)存管理必須編制一套庫(kù)存管理系統(tǒng),實(shí)現(xiàn)計(jì)算機(jī)化操作,而且必須根據(jù)企業(yè)的具體情況制定相應(yīng)的方案。 3. 概要設(shè)計(jì) 倉(cāng)庫(kù)管理系統(tǒng)邏輯圖(一)編號(hào)查找更改函數(shù)當(dāng)前貨物編號(hào)查找貨名查找數(shù)量查找當(dāng)前貨物繼續(xù)函數(shù)倉(cāng)庫(kù)的建立貨物的查找貨物的插入貨物的刪除貨物的更改當(dāng)前貨物回主菜單功能菜單我的倉(cāng)庫(kù)新的倉(cāng)庫(kù)(初始化)主菜單插入,刪除,更改略同編號(hào)查找插入函數(shù)當(dāng)前貨物編號(hào)查找刪除函數(shù)當(dāng)前貨物編號(hào)查找更改函數(shù)當(dāng)前貨物continual函數(shù)continual函數(shù)continual函數(shù)功能菜單函數(shù)功能菜單函數(shù)功能菜單函數(shù)倉(cāng)庫(kù)管理系統(tǒng)邏輯圖(二)

4、(1) 定義一個(gè)貨物結(jié)構(gòu)體 int const max=10; int const time=10; int x;typedef struct dnodeinttype number; /編號(hào)chartype name10; /貨名inttype counter; / 數(shù)量 struct dnode *prior,*next;dlnode,*dlist;(2)動(dòng)畫效果1action1();(3) 動(dòng)畫效果2action2();(4) 動(dòng)畫效果3action3();(5) 動(dòng)畫效果4action4();(6) 尾插入法建表void addhead(dlnode *head);(7)判斷是否為空的

5、函數(shù)int isempty(dlnode *head);(8)查找函數(shù),有三個(gè)子函數(shù),按編號(hào),貨名,數(shù)量void findme(dlnode *head);(9)按編號(hào)查找(返回節(jié)點(diǎn))dlist findnumber(dlnode *head);(10) 按貨名查找void findname(dlnode *head);(11) 按數(shù)量查找void findcounter(dlnode *head);(12)顯示當(dāng)前貨物存儲(chǔ)情況void display(dlnode *head);(13) 是否繼續(xù),調(diào)用完相應(yīng)功能函數(shù),任意鍵繼續(xù)void continul(dlnode *head);(14)

6、刪除函數(shù),先顯示當(dāng)前情況,再刪除.void delet(dlnode *head);(15) 插入函數(shù),先顯示當(dāng)前情況,再插入void insert(dlnode *head);(16)修改函數(shù), 先顯示當(dāng)前情況,再修改void change(dlnode *head);(17) 功能菜單函數(shù),包含增,刪,查,改void menu(dlnode *head);(18)主菜單,調(diào)用菜單函數(shù)void menu1();(19)主函數(shù),調(diào)用actin. void main();5.詳細(xì)設(shè)計(jì)主要程序的介紹(1) 主函數(shù)先對(duì)head初始化,然后調(diào)用action1(),action2(),action3()

7、,有menu(head)調(diào)用action4();程序:void main()system(color 2f); head-next=null; rear=head;action1();action2();action3(); menu(head); (2) action4用星號(hào)的方式,表現(xiàn)出主菜單1. 我的倉(cāng)庫(kù)2. 新的倉(cāng)庫(kù)然后調(diào)用void menu();(3) menu()函數(shù)負(fù)責(zé)接收數(shù)1,2然后進(jìn)入功能菜單函數(shù)程序: void menu(dlnode *head)system(cls);action4();cout輸入你的選擇m; while(m0!=1&m0!=2|m1!=0) cout

8、輸入有誤,請(qǐng)重新輸入m; if(m0=1)menu1(); else head-next=null;rear=head;menu1(); (4) menu1()附有增,刪,查,改功能子選擇,根據(jù)輸入的數(shù)字的不同,使用switch分別調(diào)用相應(yīng)函數(shù),然后調(diào)用continul函數(shù)程序: void menu1() system(cls);for(x=-1;x10;x+) if(x=9) cout =8) cout*t1.倉(cāng)庫(kù)的建立t*7) cout*t2.貨物的插入t*6) cout*t3.貨物的查找t*5) cout*t4.貨物的刪除t*4) cout*t5.貨物的更改t*3) cout*t6.當(dāng)前

9、貨物 t*2) cout *t7.回主菜單 t*1) cout tt=0)cout tt* *-1)cout t= 宗旨:精益求精 =endl; sleep(time); if(x!=9)system(cls);cout輸入你的選擇m; while(m07|m1!=0)cout輸入有誤,請(qǐng)重新輸入m; switch(m0) case 1:addhead(head);continul(head); break; case 2:insert(head); continul(head); break; case 3: findme(head);continul(head);break; case 4

10、:delet(head);continul(head); break; case 5:change(head);continul(head); break; case 6:display(head);continul(head); break; case 7:menu(head);break; (5) 功能菜單函數(shù)選擇1,調(diào)用addhead函數(shù),先判斷是否繼續(xù)操作,輸入1繼續(xù),輸入2返回功能菜單。尾插入法建表主要是先申請(qǐng)一個(gè)頭結(jié)點(diǎn)。每次循環(huán)申請(qǐng)一個(gè)ptr節(jié)點(diǎn),首先將q指向head,然后q的下一個(gè)節(jié)點(diǎn)設(shè)為ptr,ptr的前一個(gè)節(jié)點(diǎn)設(shè)為head,q=ptr,如此便建立了一個(gè)雙向鏈表,判斷是否繼續(xù)。

11、 程序: void addhead(dlnode *head) system(cls);dlnode *q;q=head; cout1.繼續(xù)操作endl;cout2.放棄操作endl; cout輸入你的選擇m; while(m0!=1&m0!=2|m1!=0) cout輸入有誤,請(qǐng)重新輸入m; if(m0=2)menu1();m0=y;while(m0=y|m0=y) /編號(hào)為-1,作為結(jié)束標(biāo)志cout請(qǐng)順序”endl”輸入編號(hào),貨名,數(shù)量ptr-numberptr-nameptr-counter;q-next=ptr;ptr-prior=q;q=ptr;cout是否繼續(xù)建立(y/n)m;wh

12、ile(m0!=y&m0!=y&m0!=n&m0!=n|m1!=0) cout輸入有誤,請(qǐng)重新輸入m; if(q!=null) q-next=null;(6) 判斷是否為空(已完好),判斷head的下一個(gè)節(jié)點(diǎn)是否為空 int isempty(dlnode *head) return head-next=null;(7)查找,并返回,給出三個(gè)選擇,1為按編號(hào)查找,2為按貨名查找,3為按數(shù)量查找。根據(jù)輸入的不同數(shù)字,調(diào)用分別調(diào)用相應(yīng)的函數(shù)void findme(dlnode *head) system(cls); if(isempty(head)cout無(wú)貨物儲(chǔ)備endl;elsecout查找部分

13、endl;cout1.按編號(hào)查找endl;cout2.按貨名查找endl;cout3.按數(shù)量查找endl;cout4.直接顯示全部endl;cout5.回主菜單endl;cout請(qǐng)輸入m;while(m05|m1!=0)cout輸入有誤,請(qǐng)重新輸入m;switch(m0)case 1:cout請(qǐng)輸入編號(hào)endl;findnumber(head);break;case 2:findname(head);break;case 3:cout請(qǐng)輸入數(shù)量next,直到ptr的編號(hào)等于你要查詢的編號(hào)。因?yàn)橐粋€(gè)貨物子對(duì)應(yīng)與一個(gè)編號(hào),所以可以用編號(hào)函數(shù)返回一個(gè)節(jié)點(diǎn)的形式,來(lái)輔助插入,刪除,更改函數(shù)。 /* 按

14、編號(hào)查找*/dlist findnumber(dlnode *head) cinx; ptr=head; m0=0; while(ptr&ptr-number!=x) ptr=ptr-next;if(ptr!=null) coutt編號(hào) tt貨名tt數(shù)量endl;couttnumbertt;coutnamett;coutcounterendl;m0=1; if(m0=0)cout無(wú)此貨物next,直到結(jié)束。當(dāng)發(fā)現(xiàn)ptr的ptr的貨名與你查詢的貨名一樣時(shí),不能終止,因?yàn)橛邢嗤浢呢浳?。void findname(dlnode *head) cout請(qǐng)輸入貨名m;ptr=head; x=0;wh

15、ile(ptr) if(strcmp(ptr-name,m)=0) coutt編號(hào) tt貨tt數(shù)量endl;couttnumbertt;coutnamett;coutcounternext; if(x=0)cout無(wú)此貨物x; ptr=head; m0=0; while(ptr-next) if(ptr-counter=x) coutt編號(hào)tt貨名tt數(shù)量endl;couttnumbertt;coutnamett;coutcounternext; if(m0=0)cout無(wú)此貨物next;,直到為空 void display(dlnode *head)system(cls);ptr=head-

16、next;if(isempty(head)cout無(wú)貨物儲(chǔ)備endl;else coutt編號(hào)tt貨名tt數(shù)量endl;while(ptr) couttnumbertt;coutnamett;coutcounternext;(12) 插入函數(shù),首先得顯示當(dāng)前情況,然客戶知道是否有必要插入,可能已經(jīng)處在了你想插入的貨物。插入先確定你在哪個(gè)節(jié)點(diǎn)后面插入,所以調(diào)用按編號(hào)查找確定ptr。然后在分是否是最后一個(gè)節(jié)點(diǎn),因?yàn)檫@兩中情況操作不一樣。 void insert(dlnode *head)system(cls);display(head);cout1.繼續(xù)操作endl;cout2.放棄操作endl;

17、 cout輸入你的選擇m; while(m0!=1&m0!=2|m1!=0) cout輸入有誤,請(qǐng)重新輸入m; if(m0=2)menu1(); if(isempty(head); else cout輸入你要插入節(jié)點(diǎn)的編號(hào)endl; ptr=findnumber(head);if(ptr=null);else q=(dlnode*)malloc(sizeof(dlnode);cout輸入新節(jié)點(diǎn)的編號(hào),貨名,數(shù)量q-numberq-nameq-counter; if(ptr-next=null)ptr-next=q;q-prior=ptr;q-next=null;cout插入成功next-pri

18、or=q;q-next=ptr-next;ptr-next=q;q-prior=ptr;cout插入成功endl;(13) 刪除函數(shù)跟插入函數(shù)相近。也得分是不是最后一個(gè)節(jié)點(diǎn)。 void delet(dlnode *head)system(cls);display(head);cout1.繼續(xù)操作endl;cout2.放棄操作endl; cout輸入你的選擇m; while(m0!=1&m0!=2|m1!=0) cout輸入有誤,請(qǐng)重新輸入m; if(m0=2)menu1();if(head-next!=null)cout輸入你要?jiǎng)h除節(jié)點(diǎn)的編號(hào)next=null) q-prior-next=nu

19、ll;elseq-prior-next=q-next;q-next-prior=q-prior;free(q);cout刪除成功!endl; (14) 更改函數(shù),就直接按編號(hào)查找到一個(gè)節(jié)點(diǎn),在從新輸入。 void change(dlnode *head)system(cls); display(head);cout1.繼續(xù)操作endl;cout2.放棄操作endl; cout輸入你的選擇m; while(m0!=1&m0!=2|m1!=0) cout輸入有誤,請(qǐng)重新輸入m; if(m0=2)menu1(); if(isempty(head); else cout輸入你要修改節(jié)點(diǎn)的編號(hào)endl;

20、 q=findnumber(head);if(ptr=null)cout無(wú)此貨物endl;else cout輸入新的”endl”編號(hào),貨名,數(shù)量q-numberq-nameq-counter; cout修改成功!endl;(6) 軟件說(shuō)明書(shū) 經(jīng)過(guò)一番動(dòng)畫的欣賞后。出現(xiàn)選擇字樣的時(shí)候,你這時(shí)就正式進(jìn)入了我們倉(cāng)庫(kù)。輸入你的選擇,開(kāi)始時(shí)選擇我的倉(cāng)庫(kù)和建立新的倉(cāng)庫(kù)時(shí)等同的。進(jìn)入用便到了我們的功能菜單區(qū),里面有一系列功能,因?yàn)橛行┕δ苁墙⒃谟胸浳锏那疤嶂系?,所以你先要選擇倉(cāng)庫(kù)的建立,然后在進(jìn)行其他功能。每次建立倉(cāng)庫(kù)都會(huì)保存已有的貨物,所以你并不用擔(dān)心會(huì)導(dǎo)致貨物信息的丟失。如果貨物的堆積讓你頭痛,你可

21、以返回主菜單,建立新的倉(cāng)庫(kù)。事項(xiàng):我們的程序就有比較高的健壯性,一般情況下你不用擔(dān)心系統(tǒng)的崩潰,但在輸入編號(hào),貨名,數(shù)量的時(shí)候請(qǐng)按就規(guī)范輸入,否則將出現(xiàn)錯(cuò)誤。(7) 源程序清單 #include iostream#include malloc.h /有的軟件不需這個(gè)也可以識(shí)別malloc#include windows.h /能有延時(shí),設(shè)置顏色等函數(shù)using namespace std;typedef int inttype; int const max=10; /將其聲明為全局變量,可以方便維護(hù)int const time=10; int x;char m20;typedef char c

22、hartype;typedef struct dnodeinttype number; /編號(hào)chartype name10; /貨名inttype counter; / 數(shù)量 struct dnode *prior,*next;dlnode,*dlist;dlnode *ptr=(dlnode*)malloc(sizeof(dlnode);/申請(qǐng)一個(gè)ptr指針節(jié)點(diǎn) dlnode *q=(dlnode*)malloc(sizeof(dlnode);/申請(qǐng)一個(gè)q指針節(jié)點(diǎn) dlnode *head=(dlnode*)malloc(sizeof(dlnode);/ 申請(qǐng)頭結(jié)點(diǎn)dlnode *rear

23、=(dlnode*)malloc(sizeof(dlnode);/ 申請(qǐng)尾結(jié)點(diǎn)void addhead(dlnode *head); /前向聲明有利于函數(shù)間的調(diào)用int isempty(dlnode *head);void findme(dlnode *head);dlist findnumber(dlnode *head);void findname(dlnode *head);void findcounter(dlnode *head);void display(dlnode *head);void continul(dlnode *head);void delet(dlnode *hea

24、d);void insert(dlnode *head);void change(dlnode *head);void menu(dlnode *head);void menu1();/* 顯示3*/void action1()int i;for(i=0;i5;i+)coutendl;coutttt *endl;coutttt *endl; coutttt *endl;coutttt *endl;coutttt *endl;coutttt *endl;coutttt *endl; coutttt *endl;coutttt *endl;coutttt *endl;coutttt *endl;c

25、outttt *endl; sleep(1000);system(cls);/* 顯示2*/void action2()int i;for(i=0;i5;i+)coutendl;coutttt *endl;coutttt *endl; coutttt *endl;coutttt *endl;coutttt *endl;coutttt *endl;coutttt *endl; coutttt *endl;coutttt *endl;coutttt *endl;coutttt *endl;coutttt *endl; sleep(1000);system(cls);/* 顯示1*/void act

26、ion3()int i;for(i=0;i5;i+)coutendl;couttttt *endl;couttttt *endl; couttttt *endl;couttttt *endl;couttttt *endl;couttttt *endl;couttttt *endl;couttttt *endl;couttttt *endl;couttttt *endl; sleep(1000);system(cls);/* 顯示房子與菜單*/void action4()int i;for(i=0;i2;i+)coutendl;couttt *endl;couttt * * *endl;cout

27、tt * * *endl;couttt * * *endl;couttt * * *endl;couttt * * * *endl; couttt * * * * endl; couttt * * * endl;couttt * * * endl;couttt * * * endl;couttt * 1. * 我的倉(cāng)庫(kù) * endl;couttt * * * endl;couttt * * * endl;couttt * 2. * 新的倉(cāng)庫(kù) * endl; couttt * * * endl; couttt * * * endl;couttt * * * endl; couttt * * *

28、endl; couttt * endl;/* 尾插入法建表*/void addhead(dlnode *head) system(cls);dlnode *q;q=rear; cout1.繼續(xù)操作endl;cout2.放棄操作endl; cout輸入你的選擇m; while(m0!=1&m0!=2|m1!=0) cout輸入有誤,請(qǐng)重新輸入m; if(m0=2)menu1();m0=y;while(m0=y|m0=y) /編號(hào)為-1,作為結(jié)束標(biāo)志cout請(qǐng)順序輸入編號(hào),貨名,數(shù)量ptr-numberptr-nameptr-counter;q-next=ptr;ptr-prior=q;q=ptr

29、;cout是否繼續(xù)建立(y/n)m;while(m0!=y&m0!=y&m0!=n&m0!=n|m1!=0) cout輸入有誤,請(qǐng)重新輸入m; rear=q;if(q!=null) q-next=null;/* 判斷是否為空*/int isempty(dlnode *head)return head-next=null;/* 查找,并返回*/void findme(dlnode *head) system(cls); if(isempty(head)cout無(wú)貨物儲(chǔ)備endl;elsecout查找部分endl;cout1.按編號(hào)查找endl;cout2.按貨名查找endl;cout3.按數(shù)量查找endl;cout4.直接顯示全部endl;cout5.回主菜單endl;cout請(qǐng)輸入m;while(m05|m1!=0)cout輸入有誤,請(qǐng)重新輸入m;switch(m0)case 1:cout請(qǐng)輸入編號(hào)endl;findnumber(head);break;case 2:findnam

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論