倉庫管理系統(tǒng)課程設(shè)計(jì) (2)_第1頁
已閱讀1頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計(jì) 報(bào) 告 </p><p>  課程名稱 數(shù)據(jù)結(jié)構(gòu)</p><p>  設(shè)計(jì)題目 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)</p><p>  專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù)</p><p>  班 級(jí) </p><p>  學(xué)

2、 號(hào) </p><p>  姓 名 </p><p>  完成日期 _________2012年6月8日_____________</p><p><b>  1、問題描述</b></p><p>  建立一個(gè)倉庫管理程序,可以按順序和貨物名稱查詢倉庫存儲(chǔ)情況,也可以增加或刪除

3、貨物信息、實(shí)現(xiàn)貨物的入庫出庫,要求能用文件保存?zhèn)}庫貨品信息。</p><p><b>  2、基本要求</b></p><p><b>  (1)、數(shù)據(jù)要求</b></p><p>  1) 建議輸入貨物的名稱,編號(hào),數(shù)量等,其余信息學(xué)生自行設(shè)計(jì);</p><p>  2) 輸出形式:有合理的提示,

4、編號(hào),名稱,數(shù)量對(duì)應(yīng);</p><p>  3) 數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)自行設(shè)計(jì)。</p><p>  4)倉庫貨物的相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件中。</p><p><b>  (2)、操作要求</b></p><p>  建立一個(gè)倉庫管理程序,可以按順序和貨物名稱查詢倉庫存儲(chǔ)情況,也可以增加或刪除貨物信息、實(shí)現(xiàn)貨物的入庫出庫,要

5、求能用文件保存?zhèn)}庫貨品信息。</p><p>  (3)、測試數(shù)據(jù)要求</p><p><b>  測試數(shù)據(jù)要求使用:</b></p><p><b>  1、全部合法數(shù)據(jù);</b></p><p><b>  2、整體非法數(shù)據(jù);</b></p><p>

6、;  3、局部非法數(shù)據(jù)。進(jìn)行程序測試,以保證程序的穩(wěn)定。</p><p><b>  (4)、界面要求</b></p><p>  有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,能完成相關(guān)的功能操作并符合要求。</p><p>  (5)、存儲(chǔ)結(jié)構(gòu)要求</p><p>  學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計(jì),但是要求倉庫貨

7、物的相關(guān)數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)文件中。(數(shù)據(jù)文件的數(shù)據(jù)讀寫方法等相關(guān)內(nèi)容在c語言程序設(shè)計(jì)的書上,請自學(xué)解決)請?jiān)谧詈蟮纳辖毁Y料中指明你用到的存儲(chǔ)結(jié)構(gòu)。</p><p><b>  3、數(shù)據(jù)結(jié)構(gòu)</b></p><p>  (1)、定義貨物數(shù)據(jù)類型</p><p>  定義貨物數(shù)據(jù)類型雙向鏈表,用于存放貨物的信息,包括貨物名稱,數(shù)量,編號(hào)等信息。<

8、;/p><p>  typedef struct dnode </p><p><b>  {</b></p><p>  int Number; //貨物編號(hào)</p><p>  char Name[max]; //貨物名稱</p><p>  int Counter; //貨物數(shù)

9、量</p><p>  struct dnode *prior,*next;</p><p>  }dlnode,*dlinklist;</p><p><b>  4、總體設(shè)計(jì)</b></p><p>  根據(jù)倉庫管理系統(tǒng)的分析及設(shè)計(jì)要求,可以將此系統(tǒng)分為四個(gè)模塊:信息統(tǒng)計(jì)模塊、信息排序輸出模塊、信息查詢模塊、信息調(diào)用

10、模塊。</p><p> ?。?)、信息統(tǒng)計(jì)模塊實(shí)現(xiàn)信息的輸入、統(tǒng)計(jì),涉及函數(shù)有:void Input()、</p><p> ?。?)、信息輸出模塊實(shí)現(xiàn)信息的輸出,涉及函數(shù)有:void OutputByName()、void OutputByNum()void init_linklist()void Show()</p><p>  (3)、信息查詢模塊實(shí)現(xiàn)信息的

11、查詢,涉及函數(shù)有:</p><p> ?。?)、信息調(diào)用模塊實(shí)現(xiàn)信息的調(diào)用,即從文件中讀出信息并輸出、保存信息,涉及函數(shù)有:void Load(),void Save() </p><p>  主函數(shù)與各函數(shù)調(diào)用關(guān)系流程圖、結(jié)構(gòu)圖:</p><p>  信息排序輸出模塊流程圖</p><p><b>  信息查詢模塊流程圖</

12、b></p><p><b>  5、詳細(xì)設(shè)計(jì)</b></p><p>  (1)、貨物入庫功能</p><p>  void Input()、void InitList()是信息輸入、雙鏈表初始化函數(shù),可以按用戶執(zhí)意輸入信息 、包括貨物的名稱編號(hào)和數(shù)量。</p><p>  其主要功能流程圖如下:</p&g

13、t;<p>  (2)、貨物出庫功能</p><p>  void OutputByName()、void OutputByNum()兩個(gè)函數(shù) 分別可實(shí)現(xiàn)通過名稱查找出庫和通過編號(hào)查找出庫</p><p>  其主要功能流程圖如下:</p><p>  (3)、貨物查詢功能</p><p>  ()void Show()<

14、/p><p>  函數(shù)是一個(gè)信息查詢函數(shù)及查詢菜單函數(shù),顯示一個(gè)查詢菜單,利用switch語句實(shí)現(xiàn)按貨物編號(hào)查詢和按名稱查詢,利用循環(huán)語句do…while()返回查詢菜單,break語句終止循環(huán)。</p><p>  其主要功能流程如下:</p><p>  (4)、信息保存及讀取</p><p>  void save()、void ReadI

15、nfo()這兩個(gè)函數(shù)分別實(shí)現(xiàn)信息保存到文件以及從文件中讀取信息的功能。把信息保存到文件中以及讀取保存在文件里的信息并輸出。由于采用的是鏈?zhǔn)酱鎯?chǔ),可以很方便的一下把文件里的信息全部讀取出來,再依次創(chuàng)建生成雙鏈表,將信息全部讀到兩個(gè)雙鏈表中存儲(chǔ)。</p><p>  其主要功能流程圖如下:</p><p><b>  6、測試與調(diào)試</b></p><

16、p><b>  1、輸出界面</b></p><p>  運(yùn)行程序,進(jìn)入主菜單界面,用戶可以選擇貨物入庫出庫、加載貨物信息、信息查詢、保存信息到文件、從文件中讀入信息、退出系統(tǒng)等操作選項(xiàng)。為了避免再次輸入大量信息,可以先選擇從文件中讀入信息,將以前輸入的信息重新顯示在屏幕上,再進(jìn)行后續(xù)操作。</p><p>  主菜單界面如圖所示:</p><

17、;p><b> ?。?)、貨物的入庫</b></p><p>  按照程序引導(dǎo)輸入貨物信息</p><p>  輸入蘋果、橘子、饅頭各10個(gè)。</p><p>  (2)、輸出所有貨物信息信息</p><p>  在主菜單輸入3進(jìn)入貨物查看界面,所有貨物信息如下圖顯示所示:</p><p>

18、<b>  (3)、貨物出庫</b></p><p>  在主菜單中輸入1進(jìn)行貨物出庫</p><p><b>  選擇按名稱出庫</b></p><p><b>  輸出出庫結(jié)果</b></p><p><b>  選擇按編號(hào)出庫</b></p&g

19、t;<p><b>  輸出出庫結(jié)果</b></p><p><b> ?。?)、查詢信息</b></p><p>  輸入4進(jìn)入信息查詢界面,用戶可根據(jù)自己喜好選擇按貨物編號(hào)查詢、按貨物名稱查詢或者退出返回主菜單。</p><p>  信息查詢界面如圖所示:</p><p>  用戶

20、可根據(jù)自己喜好選擇按哪種方式查詢,查詢結(jié)束后,按任意鍵返回信息查詢界面。輸入3則返回主菜單。以下是分別按照貨物編號(hào)、貨物名稱查詢的情況。</p><p>  按貨物編號(hào)查詢情況:</p><p><b>  按貨物名稱查詢:</b></p><p><b>  (5)、調(diào)用信息</b></p><p&g

21、t;  為了避免每次運(yùn)行程序時(shí)都要輸入大量數(shù)據(jù),在第一次運(yùn)行程序后,就已經(jīng)將信息自動(dòng)存檔,再次運(yùn)行時(shí),可以先直接調(diào)用信息,按任意鍵返回主菜單,再進(jìn)行后續(xù)操作。調(diào)用的信息如圖所示:</p><p>  顯示文件中讀取的信息如圖所示:</p><p><b>  (6)退出系統(tǒng)</b></p><p>  輸入0則退出系統(tǒng),并保存信息。如圖所示:&

22、lt;/p><p><b>  3、調(diào)試分析</b></p><p>  運(yùn)行程序,進(jìn)入主菜單界面,用戶可以根據(jù)編號(hào)選擇</p><p><b>  測試數(shù)據(jù):</b></p><p>  選擇1號(hào)功能進(jìn)入輸入信息模塊,根據(jù)提示信息將以下信息輸入系統(tǒng)中。</p><p>  名稱

23、:蘋果。編號(hào):1。數(shù)量:10</p><p>  名稱:橘子。編號(hào):2。數(shù)量:10</p><p>  名稱:饅頭。編號(hào):3。數(shù)量:10</p><p>  存在問題的思考及算法的改進(jìn)設(shè)想:</p><p>  1顯示的內(nèi)容堆積在一個(gè)屏幕上,看著很混亂,用C語言里的clrscr()函數(shù)在VC++里似乎不能用,上網(wǎng)查了下資料,找到了一個(gè)頭文件為

24、stdlib.h的清屏函數(shù)system(”cls”)。</p><p>  2調(diào)試程序時(shí),遇到了屏幕一閃又回到原來界面的情況,沒有輸出想要得到的信息,原來是信息在屏幕上顯示后,程序執(zhí)行到了清屏函數(shù),所以立馬清屏了,為了看到輸出信息,調(diào)用system(”pause”)函數(shù),使程序暫停,以讓用戶看到輸出地信息,然后再按任意鍵繼續(xù)執(zhí)行程序。</p><p>  3對(duì)于讀寫文件不是很熟悉,frea

25、d和fwrite函數(shù)不是很會(huì)用,在讀出文件里的信息并輸出時(shí)花了很長時(shí)間,不過,最后總算是會(huì)用了。</p><p><b>  4、設(shè)計(jì)總結(jié)</b></p><p>  本次課程設(shè)計(jì)是圍繞數(shù)據(jù)結(jié)構(gòu)進(jìn)行。根據(jù)問題描述可知,需要解決問題并不復(fù)雜,整個(gè)問題只需要實(shí)現(xiàn)一個(gè)員工管理系統(tǒng)功能,那就是在這個(gè)系統(tǒng)中實(shí)現(xiàn)對(duì)職工信息的插入、刪除、查詢、排序、修改。但是,為了實(shí)現(xiàn)該功能,卻需

26、要一定的算法和數(shù)據(jù)結(jié)構(gòu)以保證實(shí)現(xiàn)的時(shí)間和空間效率。把職工信息存儲(chǔ)在一個(gè)單鏈表中,利用指針實(shí)現(xiàn)對(duì)職工信息的各項(xiàng)基本操作。</p><p>  經(jīng)過這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),我們不僅及時(shí)鞏固的了數(shù)據(jù)結(jié)構(gòu)、算法、以及軟件工程的知識(shí),并明白數(shù)據(jù)結(jié)構(gòu)和算法對(duì)于程序時(shí)間和空間性能的影響,及軟件工程提供的開發(fā)流程和工具對(duì)于實(shí)現(xiàn)特定功能程序的重要意義。</p><p>  當(dāng)我們面對(duì)一個(gè)實(shí)際問題,應(yīng)該迅速根據(jù)

27、問題性質(zhì)和特點(diǎn)抽象成特定的數(shù)據(jù)結(jié)構(gòu),當(dāng)然每個(gè)問題都有可能能夠抽象成多種數(shù)據(jù)結(jié)構(gòu),每種數(shù)據(jù)結(jié)構(gòu)適應(yīng)于不同的算法。因此應(yīng)該綜合考慮這樣的數(shù)據(jù)結(jié)構(gòu)、算法以及它們的空間和時(shí)間效率,然后從中選擇一個(gè)作為實(shí)現(xiàn)程序的基礎(chǔ)。</p><p>  此外,對(duì)程序的測試應(yīng)該要仔細(xì),根據(jù)模塊的特點(diǎn)和測試階段,采用各種軟件測試方法對(duì)程序進(jìn)行測試,確保各個(gè)模塊的正確性和完整性,最后集成起來測試其是否正確和完整地實(shí)現(xiàn)了問題描述中要求的功能。&

28、lt;/p><p><b>  源程序清單</b></p><p>  源代碼:#include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  #define

29、 OK 1</p><p>  #define ERROR 0</p><p>  #define max 20</p><p>  typedef struct dnode </p><p><b>  {</b></p><p>  int Number; </p><p&

30、gt;  char Name[max]; </p><p>  int Counter; </p><p>  struct dnode *prior,*next;</p><p>  }dlnode,*dlinklist;</p><p>  int Menu()</p><p><b>  {</b

31、></p><p><b>  int flag;</b></p><p>  system("cls");</p><p>  printf("\t\t 『歡迎進(jìn)入倉庫管理系統(tǒng)!』 \n");</p><p>  printf("

32、;\t\t --1、貨物的入庫和出庫; \n");</p><p>  printf("\t\t --2、加載貨物信息; \n");</p><p>  printf("\t\t --3、查看貨物信息; \n");</p&g

33、t;<p>  printf("\t\t --4、查詢貨物信息; \n");</p><p>  printf("\t\t --0、退出并保存信息; \n");</p><p>  printf("\t\t 請選擇操作<0-4>:&

34、quot;);</p><p>  scanf("%d",&flag);</p><p>  return flag;</p><p><b>  }</b></p><p>  int Menu1()</p><p><b>  {</b><

35、;/p><p><b>  int flag;</b></p><p>  system("cls");</p><p>  printf("\t\t\t 1、貨物的入庫;\n");</p><p>  printf("\t\t\t 2、貨物的出庫;\n&qu

36、ot;);</p><p>  printf("\t\t\t 3、返回主菜單;\n");</p><p>  printf("\t\t\t 請選擇操作:");</p><p>  scanf("%d",&flag);</p><p>  return flag

37、;</p><p><b>  }</b></p><p>  int Menu2()</p><p><b>  {</b></p><p><b>  int flag;</b></p><p>  system("cls");&

38、lt;/p><p>  printf("\t\t\t 1、按編號(hào)查詢;\n");</p><p>  printf("\t\t\t 2、按名稱查詢;\n");</p><p>  printf("\t\t\t 3、返回主菜單;\n");</p><p>  pri

39、ntf("\t\t\t 請選擇操作:");</p><p>  scanf("%d",&flag);</p><p>  return flag;</p><p><b>  }</b></p><p>  int Menu3()</p><p&

40、gt;<b>  {</b></p><p><b>  int flag;</b></p><p>  system("cls");</p><p>  printf("\t\t\t 1、按名稱出庫;\n");</p><p>  printf(&q

41、uot;\t\t\t 2、按編號(hào)出庫;\n");</p><p>  printf("\t\t\t 3、返回上一層;\n");</p><p>  printf("\t\t\t 請選擇操作:");</p><p>  scanf("%d",&flag);</p

42、><p>  return flag;</p><p><b>  }</b></p><p>  void init_linklist(dlinklist *l)</p><p><b>  {</b></p><p>  *l=(dlinklist)malloc(sizeof

43、(dnode)); </p><p>  (*l)->prior=NULL;</p><p>  (*l)->next=NULL; </p><p><b>  }</b></p><p>  void Input(dlinklist L)</p><

44、;p><b>  { </b></p><p>  dlnode *s,*p;</p><p>  int number,counter;</p><p>  char name[max];</p><p>  printf("\t\t\t 請輸入貨物編號(hào):");</p>

45、<p>  scanf("%d",&number);getchar();</p><p>  printf("\t\t\t 請輸入貨物名稱:");</p><p>  scanf("%s",name);</p><p>  printf("\t\t\t 請輸入貨物

46、的數(shù)量:");</p><p>  scanf("%d",&counter);getchar();</p><p>  s=(dlnode*)malloc(sizeof(dnode)); </p><p>  s->Number=number;</p><p>  strcpy(s->Nam

47、e,name);</p><p>  s->Counter=counter;</p><p>  if(L->next==NULL)</p><p><b>  {</b></p><p>  L->next=s;</p><p>  s->prior=L;</p&g

48、t;<p>  s->next=NULL;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  while((L=L->next)!=NULL)</p&

49、gt;<p><b>  {</b></p><p>  if(s->Number<=L->Number)break;</p><p><b>  p=L;</b></p><p><b>  }</b></p><p>  if(L==NULL

50、)</p><p><b>  {</b></p><p>  p->next=s;</p><p>  s->prior=p;</p><p>  s->next=NULL;</p><p><b>  }</b></p><p>

51、<b>  else </b></p><p><b>  {</b></p><p>  if(L->Number==s->Number)L->Counter=L->Counter+s->Counter;</p><p><b>  else</b></p>

52、<p><b>  {</b></p><p>  s->prior=L->prior;</p><p>  L->prior->next=s;</p><p>  s->next=L;</p><p>  L->prior=s;</p><p>

53、<b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("\t\t\t 入庫成功!\n");</p><p>  printf("\t\t\t &qu

54、ot;);</p><p>  system("pause");</p><p><b>  } </b></p><p>  void Show(dlinklist L)</p><p><b>  {</b></p><p>  dlinkli

55、st p;</p><p>  p=L->next;</p><p>  printf("\t\t\t名稱\t\t編號(hào)\t\t數(shù)量\n");</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  printf(&qu

56、ot;\t\t\t%s\t\t%d\t\t%d\n",p->Name,p->Number,p->Counter);</p><p>  p=p->next;</p><p><b>  }</b></p><p>  printf("\t\t\t ");</p><

57、;p>  system("pause");</p><p><b>  }</b></p><p>  void OutputByNum(dlinklist L,int num)</p><p><b>  {</b></p><p><b>  int num1

58、;</b></p><p>  dlnode *p;</p><p><b>  p=L;</b></p><p>  while((p=p->next)!=NULL) </p><p><b>  { </b></p><p>  if(p->N

59、umber==num)break;</p><p><b>  }</b></p><p>  if(p==NULL)printf("\t\t\t 倉庫中沒有該編號(hào)的貨物!\n");</p><p><b>  else </b></p><p><b>  {

60、</b></p><p>  printf("\t\t\t 貨物的信息是:\n");</p><p>  printf("\t\t\t 貨物的編號(hào):");</p><p>  printf("%d\n",p->Number);</p><p>  printf(

61、"\t\t\t 貨物的名稱:");</p><p>  printf("%s\n",p->Name);</p><p>  printf("\t\t\t 貨物的數(shù)量:");</p><p>  printf("%d\n",p->Counter);</p>&

62、lt;p>  printf("\t\t\t 請輸入貨物出庫的數(shù)量:");</p><p>  scanf("%d",&num1);getchar();</p><p>  if(p->Counter>num1)</p><p><b>  {</b></p>&l

63、t;p>  p->Counter=p->Counter-num1;</p><p>  printf("\t\t\t 出庫成功!倉庫中%s剩余的數(shù)量為:%d\n",p->Name,p->Counter);</p><p><b>  } </b></p><p>  else if

64、(p->Counter==num1)</p><p><b>  {</b></p><p>  if(p->next==NULL)</p><p><b>  {</b></p><p>  p->prior->next=NULL;</p><p>

65、<b>  free(p);</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  p->prior->next=p->next;<

66、/p><p>  p->next->prior=p->prior;</p><p>  free(p); </p><p><b>  }</b></p><p>  printf("\t\t\t 出庫成功!貨物已經(jīng)全部出庫!\n");</p><

67、p><b>  }</b></p><p>  else printf("\t\t\t 倉庫中貨物數(shù)量不夠出庫數(shù)量,請核實(shí)貨物信息!\n");</p><p><b>  }</b></p><p>  printf("\t\t\t ");</p><p

68、>  system("pause");</p><p><b>  }</b></p><p>  void OutputByName(dlinklist L,char name[max])</p><p><b>  {</b></p><p><b>  in

69、t num1;</b></p><p>  dlnode *p;</p><p><b>  p=L;</b></p><p>  while((p=p->next)!=NULL) </p><p><b>  { </b></p><p>  if(s

70、trcmp(name,p->Name)==0)break;</p><p><b>  }</b></p><p>  if(p==NULL)printf("\t\t\t 倉庫中沒有叫該名稱的貨物!\n");</p><p><b>  else </b></p>

71、<p><b>  {</b></p><p>  printf("\t\t\t 貨物的信息是:\n");</p><p>  printf("\t\t\t 貨物的編號(hào):");</p><p>  printf("%d\n",p->Number);</p&

72、gt;<p>  printf("\t\t\t 貨物的名稱:");</p><p>  printf("%s\n",p->Name);</p><p>  printf("\t\t\t 貨物的數(shù)量:");</p><p>  printf("%d\n",p->

73、;Counter);</p><p>  printf("\t\t\t 請輸入貨物出庫的數(shù)量:");</p><p>  scanf("%d",&num1);getchar();</p><p>  if(p->Counter>num1)</p><p><b>  {&

74、lt;/b></p><p>  p->Counter=p->Counter-num1;</p><p>  printf("\t\t\t 出庫成功!倉庫中%s剩余的數(shù)量為:%d\n",p->Name,p->Counter);</p><p><b>  } </b></p&

75、gt;<p>  else if(p->Counter==num1)</p><p><b>  {</b></p><p>  if(p->next==NULL)</p><p><b>  {</b></p><p>  p->prior->next=NUL

76、L;</p><p><b>  free(p);</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  p->prior-&

77、gt;next=p->next;</p><p>  p->next->prior=p->prior;</p><p>  free(p); </p><p><b>  }</b></p><p>  printf("\t\t\t 出庫成功!貨物已經(jīng)全部出庫!\n&

78、quot;);</p><p><b>  }</b></p><p>  else printf("\t\t\t 倉庫中貨物數(shù)量不夠出庫數(shù)量,請核實(shí)貨物信息!\n");</p><p><b>  }</b></p><p>  printf("\t\t\t &q

79、uot;);</p><p>  system("pause");</p><p><b>  }</b></p><p>  void Save(dlinklist L) </p><p><b>  {</b></p><p>  dlnode *p;

80、</p><p>  p=L->next;</p><p>  FILE *fp; </p><p>  if((fp=fopen("stu.txt","w"))==NULL) </p><p><b>  { </b></p><p>  print

81、f("\t\t\t 文件打開失敗!!\n"); </p><p><b>  return; </b></p><p><b>  } </b></p><p>  while(p!=NULL)</p><p><b>  {</b></p>

82、;<p>  fprintf(fp,"%d %s %d ",p->Number,p->Name,p->Counter);</p><p>  p=p->next;</p><p><b>  }</b></p><p>  fclose(fp); </p><p&g

83、t;  printf("\t\t\t 數(shù)據(jù)存儲(chǔ)成功!!!謝謝使用!!!\n");</p><p>  printf("\t\t\t ");</p><p>  system("pause");</p><p><b>  } </b></p><p&g

84、t;  void Load(dlinklist L)</p><p><b>  {</b></p><p>  dlnode *r,*s;</p><p><b>  r=L;</b></p><p>  FILE *fp; </p><p>  if((fp=fopen(

85、"stu.txt","r"))==NULL) </p><p><b>  { </b></p><p>  printf("\t\t\t\t文件打開失敗!!\n"); </p><p><b>  return; </b></p><p&g

86、t;<b>  } </b></p><p>  while(!feof(fp))</p><p><b>  {</b></p><p>  s=(dlnode*)malloc(sizeof(dnode));</p><p>  fscanf(fp,"%d %s %d ",&

87、amp;s->Number,&s->Name,&s->Counter); </p><p>  r->next=s;</p><p>  s->prior=r;</p><p><b>  r=s;</b></p><p>  r->next=NULL;<

88、/p><p><b>  }</b></p><p>  fclose(fp);</p><p>  printf("\t\t\t\t加載數(shù)據(jù)成功!\n");</p><p>  printf("\t\t\t\t");</p><p>  system(&quo

89、t;pause");</p><p><b>  }</b></p><p>  dlnode *SrchByName(dlinklist L,char name[max])</p><p><b>  { </b></p><p>  dlnode *p;</p><

90、;p>  p=L->next;</p><p>  while (p!=NULL)</p><p><b>  {</b></p><p>  if (strcmp(p->Name,name)!=0)</p><p>  p=p->next; </p><p><b&

91、gt;  else </b></p><p>  break; </p><p><b>  }</b></p><p><b>  return p;</b></p><p><b>  }</b></p><p>  dlno

92、de *SrchByNumber(dlinklist L,int num)</p><p><b>  { </b></p><p>  dlnode *p;</p><p>  p=L->next; </p><p>  while (p!=NULL)</p><p><b&g

93、t;  {</b></p><p>  if (p->Number!=num)</p><p>  p=p->next; </p><p><b>  else </b></p><p>  break; </p><p><b>  }</b&

94、gt;</p><p><b>  return p;</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  int num1,num2;</p>

95、;<p>  int flag=1,flag1=1,flag2=1;</p><p>  char name1[max],name2[max];</p><p>  dlinklist L; </p><p>  init_linklist(&L);</p><p><b>  while(1)</b&

96、gt;</p><p><b>  {</b></p><p>  switch(Menu())</p><p><b>  {</b></p><p><b>  case 1:</b></p><p><b>  while(1)</

97、b></p><p><b>  {</b></p><p>  switch(Menu1())</p><p><b>  {</b></p><p><b>  case 1:</b></p><p><b>  Input(L);&

98、lt;/b></p><p><b>  break;</b></p><p><b>  case 2:</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>

99、  switch(Menu3())</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  printf("\t\t\t 請輸入要出庫的貨物的名稱:");</p><p>  scanf("%s",na

100、me1);</p><p>  OutputByName(L,name1);</p><p><b>  break;</b></p><p>  case 2:</p><p>  printf("\t\t\t 請輸入要出庫的貨物的編號(hào):");</p><p> 

101、 scanf("%d",&num1);getchar();</p><p>  OutputByNum(L,num1);</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p><b>  flag=

102、0;</b></p><p><b>  break;</b></p><p><b>  default:</b></p><p><b>  {</b></p><p>  printf("\t\t\t 選擇錯(cuò)誤!請重新選擇<1-3>!\

103、n");</p><p>  printf("\t\t\t ");</p><p>  system("pause");</p><p><b>  }</b></p><p><b>  }</b></p><p>  i

104、f(flag==0)break;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case 3:flag1=0;break;</p><p><b>  default:</b></p><p&g

105、t;<b>  {</b></p><p>  printf("\t\t\t 選擇錯(cuò)誤!請重新選擇<1-3>!\n");</p><p>  printf("\t\t\t ");</p><p>  system("pause");</p><p&g

106、t;<b>  }</b></p><p><b>  }</b></p><p>  if(flag1==0)break;</p><p><b>  }</b></p><p><b>  break;</b></p><p>

107、  case 2:Load(L);break;</p><p>  case 3:Show(L);break;</p><p><b>  case 4:</b></p><p><b>  while(1)</b></p><p><b>  {</b></p>

108、<p>  switch(Menu2())</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  printf("\t\t\t 請輸入您要查詢的貨物的編號(hào):");</p><p>  scanf("

109、%d",&num2);getchar();</p><p>  if(SrchByNumber(L,num2)!=NULL)</p><p><b>  {</b></p><p>  printf("\t\t\t 查詢成功!貨物的信息是:\n");</p><p>  print

110、f("\t\t\t 貨物的編號(hào):");</p><p>  printf("%d\n",SrchByNumber(L,num2)->Number);</p><p>  printf("\t\t\t 貨物的名稱:");</p><p>  printf("%s\n",SrchB

111、yNumber(L,num2)->Name);</p><p>  printf("\t\t\t 貨物的數(shù)量:");</p><p>  printf("%d\n",SrchByNumber(L,num2)->Counter);</p><p><b>  }</b></p>

112、<p>  else printf("\t\t\t 查詢失敗!\n");</p><p>  printf("\t\t\t ");</p><p>  system("pause");</p><p><b>  break;</b></p><p&g

113、t;<b>  case 2:</b></p><p>  printf("\t\t\t 請輸入您要查詢的貨物的名稱:");</p><p>  scanf("%s",name2);</p><p>  if(SrchByName(L,name2)!=NULL)</p><p

114、><b>  {</b></p><p>  printf("\t\t\t 查詢成功!貨物的信息是:\n");</p><p>  printf("\t\t\t 貨物的編號(hào):");</p><p>  printf("%d\n",SrchByName(L,name2)->

115、;Number);</p><p>  printf("\t\t\t 貨物的名稱:");</p><p>  printf("%s\n",SrchByName(L,name2)->Name);</p><p>  printf("\t\t\t 貨物的數(shù)量:");</p><p&

116、gt;  printf("%d\n",SrchByName(L,name2)->Counter);</p><p><b>  }</b></p><p>  else printf("\t\t\t 查詢失??!\n");</p><p>  printf("\t\t\t ")

117、;</p><p>  system("pause");</p><p><b>  break;</b></p><p>  case 3:flag2=0;break;</p><p><b>  default:</b></p><p><b&g

118、t;  {</b></p><p>  printf("\t\t\t 選擇錯(cuò)誤!請重新選擇<1-3>!\n");</p><p>  printf("\t\t\t ");</p><p>  system("pause");</p><p><b&g

119、t;  }</b></p><p><b>  }</b></p><p>  if(flag2==0)break;</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>

120、  case 0:</b></p><p><b>  Save(L);</b></p><p><b>  exit(0);</b></p><p><b>  break;</b></p><p><b>  default:</b><

121、;/p><p><b>  {</b></p><p>  printf("\t\t\t 選擇錯(cuò)誤!請重新選擇<0-4>!\n");</p><p>  printf("\t\t\t ");</p><p>  system("pause");<

溫馨提示

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

評(píng)論

0/150

提交評(píng)論