倉庫管理系統課程設計_第1頁
倉庫管理系統課程設計_第2頁
倉庫管理系統課程設計_第3頁
倉庫管理系統課程設計_第4頁
倉庫管理系統課程設計_第5頁
免費預覽已結束,剩余19頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課程設計報告課程名稱數據結構設計題目 運動會分數統計專 業計算機科學與技術班級學號姓名完成日期 2012年6月8日課程設計任務書設計題目:倉庫管理系統設計內容與要求:【設計內容】為倉庫設計一個倉庫管理系統,記錄存儲貨物的編號、名稱、數量。并且可以 隨時進行出貨和出庫操作、可隨時查看貨物信息。【基本要求】1)建立一個倉庫管理程序,可以按順序和貨物名稱查詢倉庫存儲情況;2)可以增加或刪除貨物;3)可以實現貨物的入庫出庫;4)能用文件保存倉庫貨品信息;指導教師:2012年6月8日課程設計評語成績:指導教師:1、問題描述建立一個倉庫管理程序,可以按順序和貨物名稱查詢倉庫存儲情況,也可以增加或刪除貨物信

2、息、實現貨物的入庫出庫,要求能用文件保存倉庫貨品信息。2、基本要求(1)、數據要求1) 建議輸入貨物的名稱,編號,數量等,其余信息學生自行設計;2) 輸出形式:有合理的提示,編號,名稱,數量對應;3) 數據的存儲結構自行設計。4)倉庫貨物的相關數據要存儲在數據文件中。(2)、操作要求建立一個倉庫管理程序,可以按順序和貨物名稱查詢倉庫存儲情況,也可以增加或刪除貨物信息、實現貨物的入庫出庫,要求能用文件保存倉庫貨品信息。(3)、測試數據要求測試數據要求使用:1、全部合法數據;2、整體非法數據;3、局部非法數據。進行程序測試,以保證程序的穩定。(4)、界面要求有合理的提示,每個功能可以設立菜單,根據

3、提示,能完成相關的功能操作并符合要求。(5)、存儲結構要求學生自己根據系統功能要求自己設計,但是要求倉庫貨物的相關數據要存儲在數據文件中。(數據文件的數據讀寫方法等相關內容在c 語言程序設計的書上,請自學解決)請在最后的上交資料中指明你用到的存儲結構。3、數據結構(1)、定義貨物數據類型定義貨物數據類型雙向鏈表,用于存放貨物的信息,包括貨物名稱,數量,編號等信息。typedef struct dnodeint Number; / 貨物編號char Namemax; / 貨物名稱int Counter; / 貨物數量struct dnode *prior,*next;dlnode,*dlinkl

4、ist;4) 總體設計根據倉庫管理系統的分析及設計要求,可以將此系統分為四個模塊:信息統計模塊、信息排序輸出模塊、信息查詢模塊、信息調用模塊。(1)、信息統計模塊實現信息的輸入、統計,涉及函數有:void Input()、(2)、信息輸出模塊實現信息的輸出,涉及函數有:void OutputByName()、voidOutputByNum()void init_linklist()void Show()(3)、信息查詢模塊實現信息的查詢,涉及函數有:(4)、信息調用模塊實現信息的調用,即從文件中讀出信息并輸出、保存信息,涉及函數有:void Load(), void Save()主函數與各函數

5、調用關系流程圖、結構圖:貨物的入庫和出庫加載貨物信息查看貨物信息查詢貨物信息退出并保存信息信息排序輸出模塊流程圖按貨物編號查詢按貨物名稱查詢退出返回主菜單主菜單XZ信息查詢模塊流程圖5、詳細設計(1)、貨物入庫功能void Input。、void InitList()是信息輸入、雙鏈表初始化函數,可以按用戶執意 輸入信息、包括貨物的名稱編號和數量。其主要功能流程圖如下:NYinit_linklist(dlinklist *l)束(2)、貨物出庫功能void OutputByName()、void OutputByNum()兩個函數分別可實現通過名稱查找出庫和通過編號查找出庫其主要功能流程圖如下

6、:(3)、貨物查詢功能()void Show()函數是一個信息查詢函數及查詢菜單函數,顯示一個查詢菜單,利用 switch語句實現按貨物編號查詢和按名稱查詢,利用循環語句do-while()返回查t5菜單,break 語句終止循環。其主要功能流程如下:(4)、信息保存及讀取void save()、void ReadInfo(泅兩個函數分別實現信息保存到文件以及從文件中 讀取信息的功能。把信息保存到文件中以及讀取保存在文件里的信息并輸出。由 于采用的是鏈式存儲,可以很方便的一下把文件里的信息全部讀取出來,再依次 創建生成雙鏈表,將信息全部讀到兩個雙鏈表中存儲。其主要功能流程圖如下:關閉文件6、測

7、試與調試1、輸出界面運行程序,進入主菜單界面,用戶可以選擇貨物入庫出庫、加載貨物信息、 信息查詢、保存信息到文件、從文件中讀入信息、退出系統等操作選項。為了避 免再次輸入大量信息,可以先選擇從文件中讀入信息,將以前輸入的信息重新顯 示在屏幕上,再進行后續操作。主菜單界面如圖所示:信信存 一人物物物保 物或看詢出T 江能本查退0 12 3 40累 -加 二 聿 SV- II,一和息息白,,息(1)、貨物的入庫工、貨物的入庫2,貨物的出庫;3、返回主菜電請選擇操作.九2,1請請請請物物回的的主人出菜.,編名的物物 一鬼隹器閃 擇人人入果10蘋.:量按照程序引導輸入貨物信息輸入蘋果、橘子、饅頭各10

8、個。(2)、輸出所有貨物信息信息在主菜單輸入3進入貨物查看界面,所有貨物信息如下圖顯示所示:歡迎進入包庫管理系統! In一次查看黃,一 _ .4、查詢賀物信息1 一出舁保存信息:數量101S編號12度、請按任意鞋繼續.(3)、貨物出庫在主菜單中輸入1進行貨物出庫士二安名符.我編號出庫1I 2s回上一島 請選擇爵;.選擇按名稱出庫I#蘋果庫庫層i貨 果的 出出一色的;蘋翟 越干上耕庫是出 三編回酎出覆客一重物 蓑返窗要信編名數貨 、, 1父的的的的人 1 2 3東翦物物物輸 請叱罡相番請力入茸物出庫的數量:5輸出出庫結果一一 q一口中單果剩余的數量為:E 請按任意鍵繼續一.選擇按編號出庫而出一區

9、的 尊P上鈣庫 苔編回科出 翼返哪事3 *Ji川1仃|1( 量 - 數 - 子的12橘翼 是出 一息物 信編名數貨 曲的的的匯心物物物輸輸出出庫結果請瑜入貨物出庫的數量:5出庫成功I 庫中橘子乘除的數量為 請獲任意鍵矗繞一(4)、查詢信息輸入4進入信息查詢界面,用戶可根據自己喜好選擇按貨物編號查詢、按貨 物名稱查詢或者退出返回主菜單。信息查詢界面如圖所示:1.裝編易查詢;2,按名稱查詢;3.返回主菜單: 請選擇操作:用戶可根據自己喜好選擇按哪種方式查詢,查詢結束后,按任意鍵返回信息 查詢界面。輸入3則返回主菜單。以下是分別按照貨物編號、貨物名稱查詢的情 況。按貨物編號查詢情況:查查菜色詢物之橘

10、S續 口薪主耕查貨:- 0 編名回翔要重鍵 展返薊悠功編名數意 、變成的的的任 1 2 NEe物藥物送物息 ;暮 詢詢第1的的子按貨物名稱查詢:蘋果名;的是物息詢的的果香黃不自詢物蘋S續 I主稀查貨 快您功編名數意 、二成的附的任 12 3.陰需物物物按(5)、調用信息為了避免每次運行程序時都要輸入大量數據,在第一次運行程序后,就已經 將信息自動存檔,再次運行時,可以先直接調用信息,按任意鍵返回主菜單,再 進行后續操作。調用的信息如圖所示:歡迎進入倉庫管理系統!-i苓襄嗡庫和出庫,T:查看貴/4a查詢貢物后顯0.退出棄保薦信息息,息,s 9螢存儲成功”?謝謝使用 親住意鍵避續顯示文件中讀取的信

11、息如圖所示:息,市息息息信信信存物物物保蚊物就看詢出轡桁查杳建續 功繼 成碑 2S :數任 4載按 0-加請J三豳.丁器出* 3 .7息 轉和息息息信信信存 -Ve人物物物保m 好的裳是洋=, 支物既看詢出T XL倍加查查退:裳信信信存詢出查退3、調試分析運行程序,進入主菜單界面,用戶可以根據編號選擇測試數據:選才 1號功能進入輸入信息模塊,根據提示信息將以下信息輸入系統中名稱:蘋果。編號:1。數量:10名稱:橘子。編號:2。數量:10名稱:饅頭。編號:3。數量:10存在問題的思考及算法的改進設想:1顯示的內容堆積在一個屏幕上,看著很混亂,用 C語言里的clrscr()函數在 VC+理似乎不能

12、用,上網查了下資料,找到了一個頭文件為的清屏函數system(“cls)。2調試程序時,遇到了屏幕一閃又回到原來界面的情況,沒有輸出想要得到的信息,原來是信息在屏幕上顯示后,程序執行到了清屏函數,所以立馬清屏了, 為了看到輸出信息,調用system (pause)函數,使程序暫停,以讓用戶看到輸 出地信息,然后再按任意鍵繼續執行程序。3對于讀寫文件不是很熟悉,fread和fwrite函數不是很會用,在讀出文件里 的信息并輸出時花了很長時間,不過,最后總算是會用了。4、設計總結本次課程設計是圍繞數據結構進行。根據問題描述可知,需要 解決問題并不復雜,整個問題只需要實現一個員工管理系統功能,那 就

13、是在這個系統中實現對職工信息的插入、刪除、查詢、排序、修改, 但是,為了實現該功能,卻需要一定的算法和數據結構以保證實現的 時間和空間效率。把職工信息存儲在一個單鏈表中,利用指針實現對職工信息的各項基本操作。經過這次數據結構課程設計,我們不僅及時鞏固的了數據結構、算法、以及軟件工程的知識,并明白數據結構和算法對于程序時間和空間性能的影響,及軟件工程提供的開發流程和工具對于實現特定功能程序的重要意義。當我們面對一個實際問題,應該迅速根據問題性質和特點抽象成特定的數據結構,當然每個問題都有可能能夠抽象成多種數據結構,每種數據結構適應于不同的算法。因此應該綜合考慮這樣的數據結構、算法以及它們的空間和

14、時間效率,然后從中選擇一個作為實現程序的基礎。此外,對程序的測試應該要仔細,根據模塊的特點和測試階段,采用各種軟件測試方法對程序進行測試,確保各個模塊的正確性和完整性,最后集成起來測試其是否正確和完整地實現了問題描述中要求的功能。7、 源程序清單源代碼:#include#include#include# define OK 1# define ERROR 0# define max 20typedef struct dnodeint Number;char Namemax;int Counter;struct dnode *prior,*next;dlnode,*dlinklist;int M

15、enu()printf(tt歡迎進入倉庫管理系統!printf(tt-1、貨物的入庫和出庫;n);printf(tt-2、加載貨物信息;n);printf(tt-3、查看貨物信息;n);printf(tt-4、查詢貨物信息;n);printf(tt-0、退出并保存信息;n);printf(tt請選擇操作: );int flag;system(cls);scanf(%d,&flag);return flag;n);int Menu1()int flag;system(cls);printf(ttt1、貨物的入庫;n);printf(ttt2、貨物的出庫;n);printf(ttt3、返回主菜單;

16、n);printf(ttt請選擇操作:);scanf(%d,&flag);return flag;int Menu2()int flag;system(cls);printf(ttt1、按編號查詢;n);printf(ttt2、按名稱查詢;n);printf(ttt3、返回主菜單;n);printf(ttt請選擇操作:);scanf(%d,&flag);return flag;int Menu3()int flag;system(cls);printf(ttt 1、按名稱出庫;n);printf(ttt2、按編號出庫;n);printf(ttt3、返回上一層;n);printf(ttt 請選擇

17、操作:);scanf(%d,&flag);return flag;void init_linklist(dlinklist *l)*l=(dlinklist)malloc(sizeof(dnode);(*l)-prior=NULL;(*l)-next=NULL;void Input(dlinklist L)dlnode *s,*p;int number,counter;char namemax;printf(ttt請輸入貨物編號:);scanf(%d,&number);getchar();printf(ttt請輸入貨物名稱:);scanf(%s,name);printf(ttt 請輸入貨物的數

18、量:);scanf(%d,&counter);getchar();s=(dlnode*)malloc(sizeof(dnode);s-Number=number;strcpy(s-Name,name);s-Counter=counter;if(L-next=NULL)L-next=s;s-prior=L;s-next=NULL;elsewhile(L=L-next)!=NULL)if(s-NumberNumber)break; p=L;if(L=NULL)p-next=s;s-prior=p;s-next=NULL;elseif(L-Number=s-Number)L-Counter=L-Co

19、unter+s-Counter; elses-prior=L-prior;L-prior-next=s;s-next=L;L-prior=s;printf(ttt 入庫成功!n);printf(ttt );system(pause);void Show(dlinklist L)dlinklist p;p=L-next;printf(ttt 名稱 tt 編號 tt 數量 n);while(p!=NULL)printf(ttt%stt%dtt%dn,p-Name,p-Number,p-Counter);p=p-next;printf(ttt );system(pause);void OutputB

20、yNum(dlinklist L,int num)int num1;dlnode *p;p=L;while(p=p-next)!=NULL)if(p-Number=num)break;if(p=NULL) printf(ttt 倉庫中沒有該編號的貨物!n);elseprintf(ttt 貨物的信息是:n);printf(ttt 貨物的編號:);printf(%dn,p-Number);printf(ttt貨物的名稱:);printf(%sn,p-Name);printf(ttt貨物的數量:);printf(%dn,p-Counter);printf(ttt 請輸入貨物出庫的數量:);scanf

21、(%d,&num1);getchar();if(p-Counternum1)p-Counter=p-Counter-num1;printf(ttt 出 庫 成 功 ! 倉 庫 中 %s 剩 余 的 數 量為: %dn,p-Name,p-Counter);else if(p-Counter=num1)if(p-next=NULL)p-prior-next=NULL;free(p);elsep-prior-next=p-next;p-next-prior=p-prior;free(p);printf(ttt 出庫成功!貨物已經全部出庫!n);else printf(ttt 倉庫中貨物數量不夠出庫數

22、量,請核實貨物信息!n);printf(ttt );system(pause);void OutputByName(dlinklist L,char namemax)int num1;dlnode *p;p=L;while(p=p-next)!=NULL)if(strcmp(name,p-Name)=0)break;if(p=NULL)printf(ttt 倉庫中沒有叫該名稱的貨物!n);elseprintf(ttt 貨物的信息是:n);printf(ttt 貨物的編號:);printf(%dn,p-Number);printf(ttt貨物的名稱:);printf(%sn,p-Name);pr

23、intf(ttt貨物的數量:);printf(%dn,p-Counter);printf(ttt 請輸入貨物出庫的數量:);scanf(%d,&num1);getchar();if(p-Counternum1)p-Counter=p-Counter-num1;printf(ttt 出 庫 成 功 ! 倉 庫 中 %s 剩 余 的 數 量為: %dn,p-Name,p-Counter);else if(p-Counter=num1)if(p-next=NULL)p-prior-next=NULL;free(p);elsep-prior-next=p-next;p-next-prior=p-pri

24、or;free(p);printf(ttt 出庫成功!貨物已經全部出庫!n);else printf(ttt 倉庫中貨物數量不夠出庫數量,請核實貨物信息!n);printf(ttt );system(pause);void Save(dlinklist L)dlnode *p;p=L-next;FILE *fp;if(fp=fopen(,w)=NULL)printf(ttt 文件打開失敗!n);return;while(p!=NULL)fprintf(fp,%d %s %d ,p-Number,p-Name,p-Counter); p=p-next;fclose(fp);printf(ttt

25、數據存儲成功! 謝謝使用!n);printf(ttt );system(pause);void Load(dlinklist L)dlnode *r,*s;r=L;FILE *fp;if(fp=fopen(,r)=NULL)printf(tttt 文件打開失敗!n);return;while(!feof(fp)s=(dlnode*)malloc(sizeof(dnode);fscanf(fp,%d %s %d ,&s-Number,&s-Name,&s-Counter);r-next=s;s-prior=r;r=s;r-next=NULL;fclose(fp);printf(tttt 加載數據

26、成功!n);printf(tttt);system(pause);dlnode *SrchByName(dlinklist L,char namemax)dlnode *p;p=L-next;while (p!=NULL)if (strcmp(p-Name,name)!=0) p=p-next;elsebreak;return p;dlnode *SrchByNumber(dlinklist L,int num)dlnode *p;p=L-next;while (p!=NULL)if (p-Number!=num) p=p-next;elsebreak;return p;void main()

27、int num1,num2;int flag=1,flag1=1,flag2=1;char name1max,name2max;dlinklist L;init_linklist(&L);while(1)switch(Menu()case 1:while(1)switch(Menu1()case 1:Input(L);break;case 2:while(1)switch(Menu3()case 1:printf(ttt 請輸入要出庫的貨物的名稱:);scanf(%s,name1);OutputByName(L,name1);break;case 2:printf(ttt 請輸入要出庫的貨物的編號:);scanf(%d,&num1);getchar();OutputByNum(L,num1);break;case 3:flag=0;break;default:printf(ttt 選擇錯誤! 請重新選擇!n);printf(ttt );system(pause);if(flag=0)break;break;case 3:flag1=0;break;default:printf(ttt 選擇錯誤! 請重新選擇!n);printf(ttt );system(pause);if(flag1=0)break;break;case 2:L

溫馨提示

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

評論

0/150

提交評論