數(shù)據(jù)結(jié)構(gòu)課程設計-倉庫進銷存管理系統(tǒng)_第1頁
已閱讀1頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  題 目: 倉庫進銷存管理系統(tǒng) </p><p>  學 院: 計算機與控制工程學院 </p><p>  專業(yè)班級: 軟件101 </p><p>  學

2、生姓名: </p><p>  指導教師: </p><p>  2012 年06 月2 9日</p><p><b>  綜合實踐1評分表</b></p><p>

3、;  注:介于A和C之間為B級,低于C為D級和E級。按各項指標打分后,總分在90~100為優(yōu),80~89為良,70~79為中,60~69為及格,60分以下不及格。</p><p><b>  目 錄</b></p><p>  1. 問題描述…………………………………………………………………………1</p><p>  2. 需求分析………

4、…………………………………………………………………1</p><p>  3. 軟件概要設計……………………………………………………………………2</p><p>  3.1 設計分析 ……………………………………………………………………2</p><p>  3.1.1 設計理念 ………………………………………………………………2</p><p

5、>  3.1.2 設計框架 ………………………………………………………………2</p><p>  4. 軟件詳細設計……………………………………………………………………3</p><p>  4.1 數(shù)據(jù)流程及結(jié)構(gòu)應用 ………………………………………………………3</p><p>  4.1.1 數(shù)據(jù)結(jié)構(gòu)應用 …………………………………………………………3&

6、lt;/p><p>  4.1.2 主要流程圖 ……………………………………………………………3</p><p>  4.2 主要函數(shù)設計 ………………………………………………………………4</p><p>  4.2.1 主函數(shù)的設計… ………………………………………………………4</p><p>  4.2.2 錄入函數(shù)的設計 …………………

7、……………………………………5</p><p>  4.2.3 查找函數(shù)的設計 ………………………………………………………7</p><p>  4.2.4 刪除函數(shù)的設計 ………………………………………………………8</p><p>  4.2.5 排序函數(shù)的設計 ………………………………………………………9</p><p>  5. 軟件

8、測試分析 …………………………………………………………………11</p><p>  5.1 函數(shù)模塊的設計……………………………………………………………11</p><p>  5.1.1 登錄函數(shù)的測試………………………………………………………11</p><p>  5.1.2 錄入函數(shù)的測試………………………………………………………12</p>

9、<p>  5.1.3 查找函數(shù)的測試………………………………………………………12</p><p>  5.1.4 修改函數(shù)的測試………………………………………………………13</p><p>  5.1.5 插入函數(shù)的測試………………………………………………………13</p><p>  5.1.6 刪除函數(shù)的測試………………………………………………

10、………14</p><p>  5.1.7 排序函數(shù)的測試………………………………………………………14</p><p>  5.2 文件模塊的測試……………………………………………………………15</p><p>  5.2.1 文件讀取的測試………………………………………………………15</p><p>  5.2.2 文件寫入的測試……

11、…………………………………………………15</p><p>  6. 課程設計總結(jié) …………………………………………………………………16</p><p>  7. 參考文獻 ………………………………………………………………………16</p><p><b>  附錄</b></p><p><b>  1.問

12、題描述</b></p><p><b>  倉庫管理的重要性:</b></p><p>  倉庫作為一總貨品資源的集散地,貨品的種類繁多,包含很多的信息數(shù)據(jù)管理。據(jù)調(diào)查得知,以前倉庫進行信息管理的方式主要是基于文本、表格等紙介質(zhì)的手工處理,對于貨品的出入庫情況的統(tǒng)計和核實等旺旺采用對賬本的的人工檢查,對管理者的管理權(quán)限的不受約束,任何人都可以查看,引起資料

13、外泄。另外,數(shù)據(jù)信息處理工作量大,容易出錯,不宜查找。而且,一般儲存情況是記錄在賬本上的,倉庫管理人員也只是當時記得比較清楚,時間長了進行查詢會造成費事、費時、費力,如對很長時間的商品以及大量商品進行管理就更加困難了。因此我們很有必要建立一個倉庫進銷存管理系統(tǒng),使商品管理工作更加規(guī)范化、系統(tǒng)化、程序化,提高信息處理的速度和準確性。</p><p><b>  2.軟件需求分析</b><

14、/p><p>  商場購物已成為每家每戶生活中必須的經(jīng)歷,隨著人流量的增大。商場出售的商品種類也越來越多,商場的倉庫需要有規(guī)格有條理的管理方式,靈活記錄每天的情況。針對上面的情況,開發(fā)一個系統(tǒng)軟件成為必然。該系統(tǒng)需要能夠 方便的對每天進銷存貨操作和每天的銷售額及庫存量進行記錄,能夠給小型商場提供諸多方便。因此,商場庫存系統(tǒng)應運而生。</p><p><b>  功能需求:</b

15、></p><p> ?。?)用戶自行注冊登錄,保證倉庫商品信息的保密性。</p><p> ?。?)倉庫各種商品信息的輸入,主要包括商品名稱、數(shù)量、類別、日期等。</p><p> ?。?)倉庫各種商品信息的查詢、修改和維護。</p><p> ?。?)對倉庫中損壞商品信息的刪除。</p><p> ?。?)倉

16、庫商品信息列表的生成顯示。</p><p> ?。?)實現(xiàn)商品信息對文本中的保存。</p><p><b>  3.軟件概要設計</b></p><p><b>  3.1設計分析</b></p><p><b>  3.1.1設計理念</b></p><p

17、>  倉庫存系統(tǒng)主要運用了數(shù)據(jù)結(jié)構(gòu)中線性表的鏈式存儲,鏈式存儲空間的可擴展性大,將鏈表中的數(shù)據(jù)以文件的形式保存,程序功能包括初始化、創(chuàng)建表、插入、刪除和查找等,以最少的內(nèi)存使用和最高的效率為原則,實現(xiàn)客戶的需求。進入主菜單,選擇相應的功能按照提示即可進入相應的操作。 </p><p>  主菜單主要實現(xiàn)以下函數(shù)模塊功能:</p><p>  (1)錄入商品函數(shù) LinkList g

18、oods_input()//運用鏈式存儲</p><p>  商品信息寫入文件的函數(shù) void file_write(Node *p)</p><p>  文件中的信息讀出的函數(shù) LinkList file_read()</p><p> ?。?)查找商品函數(shù) void goods_find()</p><p>  (3)修改信息函數(shù)

19、 void goods_change()</p><p> ?。?)插入商品函數(shù) void goods_insert()</p><p>  (5)刪除商品函數(shù) void goods_delete()</p><p> ?。?)商品信息排序函數(shù) void goods_rank()</p><p><b>  3.1.2設計框架

20、</b></p><p><b>  4.軟件詳細設計</b></p><p>  4.1數(shù)據(jù)流程及結(jié)構(gòu)應用</p><p>  4.1.1數(shù)據(jù)結(jié)構(gòu)應用</p><p>  為了能夠提高內(nèi)存的利用及各功能的實現(xiàn),程序主要使用了:</p><p>  (1)線性表的鏈式存儲,分配存儲空間

21、,空間可擴展性強,方便頻繁的錄入、插入、查找、刪除和排序等而不占用多余的內(nèi)存。(主要應用)</p><p> ?。?)文件文本的讀取與寫入,為了方便用戶更加快速的執(zhí)行管理操作。</p><p> ?。?)結(jié)構(gòu)體的定義,定義了商品結(jié)構(gòu)體和日期結(jié)構(gòu)體。</p><p> ?。?)登錄用戶時的字符串讀取及驗證。</p><p>  4.1.2主要流

22、程圖</p><p>  圖4-1 程序流程圖</p><p>  4.2 主要函數(shù)設計</p><p>  4.2.1主函數(shù)的設計</p><p>  程序啟動進入主函數(shù),進入主菜單 界面和用戶進行交互。用戶可以直接明了的清楚軟件的功能項目,調(diào)用各個模塊的功能項目,進行選擇。</p><p>  void main

23、()</p><p><b>  {</b></p><p><b>  int c;</b></p><p><b>  key();</b></p><p><b>  do</b></p><p><b>  {

24、</b></p><p>  printf("請按任意鍵返回主菜單!");</p><p><b>  getch();</b></p><p>  system("cls");</p><p>  printf("\n********************

25、********歡迎進入商場貨物管理系統(tǒng)****************************\n\n");</p><p>  printf(" 1: 錄入商品信息;\n");</p><p>  printf(" 2: 查找商品信息;\n");</p><p>  printf(" 3: 修改商

26、品信息;\n");</p><p>  printf(" 4: 插入商品信息;\n");</p><p>  printf(" 5: 刪除商品信息;\n");</p><p>  printf(" 6: 商品信息排序;\n");</p><p>  printf(&q

27、uot; 7: 統(tǒng)計商品信息;\n");</p><p>  printf(" 0: 退出系統(tǒng);\n");</p><p>  printf(" 請選擇(0~7): ");</p><p>  scanf("%d",&c);</p><p><b>

28、  while(1)</b></p><p><b>  {</b></p><p>  if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==0)break;</p><p><b>  else </b></p><p><b> 

29、 {</b></p><p>  printf("\n輸入有誤,請重新輸入!\n清選擇(0~7):");</p><p>  scanf("%d",&c);</p><p>  if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==0) break;</p&g

30、t;<p><b>  }</b></p><p><b>  }</b></p><p><b>  switch(c)</b></p><p><b>  {</b></p><p>  case 1:goods_input();brea

31、k;</p><p>  case 2:goods_find();break;</p><p>  case 3:goods_change();break;</p><p>  case 4:goods_insert();break;</p><p>  case 5:goods_delete();break;</p><

32、p>  case 6:goods_rank();break;</p><p>  case 7:goods_tongji();break;</p><p>  case 0 :break;</p><p><b>  }</b></p><p>  }while(c!=0);</p><p>

33、;<b>  }</b></p><p>  4.2.2錄入函數(shù)的設計</p><p>  數(shù)據(jù)錄入是該軟件必備的基本功能當鏈表為空時,對商品信息變量“商品號”判斷并進行錄入,系統(tǒng)調(diào)用錄入函數(shù),在用戶輸入商品信息后添加到鏈表里,在添加過程中按提示自動插入到相應位置。添加成功后,返回主菜單并提示用戶保存到自建的文本中,并可以根據(jù)各個模塊要求進行讀取修改。</p&g

34、t;<p>  LinkList goods_input()</p><p><b>  {</b></p><p>  LinkList L;</p><p>  Node *p1,*p2;</p><p><b>  int i=1;</b></p><p>

35、;  void file_write(Node *p);</p><p>  int flag=1;</p><p>  L=p2=(Node*)malloc(sizeof(Node));//為頭節(jié)點分配存儲空間</p><p>  while(flag)</p><p><b>  {</b></p>&

36、lt;p>  p1=(Node*)malloc(sizeof(Node));</p><p>  printf("請輸入第%d種商品的信息(商品號為0時,結(jié)束商品輸入):\n\n",i++);</p><p>  flushall();</p><p>  printf("商品號:");</p><p

37、>  scanf("%ld",&p1->num);</p><p>  if(p1->num!=0)</p><p><b>  {</b></p><p>  flushall();</p><p>  printf("名稱:");</p>

38、<p>  scanf("%s",&p1->name);</p><p>  flushall();</p><p>  printf("類別:");</p><p>  scanf("%s",&p1->kind);</p><p>  flu

39、shall();</p><p>  printf("生產(chǎn)日期(年月日用空格隔開):");</p><p>  scanf("%d%d%d",&p1->pro_date.year,&p1->pro_date.month,&p1->pro_date.day);</p><p>  flu

40、shall();</p><p>  printf("保質(zhì)期:");</p><p>  scanf("%d",&p1->save_day);</p><p>  flushall();</p><p>  printf("商品數(shù)量:");</p><

41、;p>  scanf("%d",&p1->shuliang);</p><p>  flushall();</p><p>  printf("進價:");</p><p>  scanf("%f",&p1->jinjia);</p><p>  f

42、lushall();</p><p>  printf("售價:");</p><p>  scanf("%f",&p1->shoujia);</p><p>  flushall();</p><p>  printf("銷售日期(年月日用空格隔開):");</

43、p><p>  scanf("%d%d%d",&p1->sale_date.year,&p1->sale_date.month,&p1->sale_date.day);</p><p>  p2->next=p1;</p><p><b>  p2=p1;</b></p>

44、;<p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p><b>  flag=0;</b></p><p><b>  break;</b>

45、;</p><p><b>  }</b></p><p><b>  }</b></p><p>  p2->next=NULL;</p><p>  file_write(L);</p><p><b>  free(p1);</b></

46、p><p>  return(L);</p><p><b>  }</b></p><p>  保存文本文件的讀寫函數(shù)模塊:</p><p>  void file_write(Node *p) //將商品信息寫入文件</p><p><b> ?。?lt;/b></p>

47、<p><b> ?。?lt;/b></p><p>  LinkList file_read()//將文件中的信息讀出的函數(shù)</p><p><b>  {</b></p><p><b> ?。?lt;/b></p><p>  4.2.3查找函數(shù)的設計</p>

48、;<p>  查找商品是信息管理的基本功能,當數(shù)據(jù)很多時怎么快速找到商品對管理員來說很重要,系統(tǒng)調(diào)用查找函數(shù)模塊,顯示查找菜單。根據(jù)提示輸入需要查找的“商品號”進行查找,查找成功,用戶會看到查找商品的詳細信息,如沒有該商品,則查找失敗,查找函數(shù)設計:</p><p>  void goods_find()</p><p><b>  {</b></

49、p><p>  long snum;</p><p>  int flag=0,t;</p><p>  Node *p0,*p1;</p><p>  p1=p0=file_read();</p><p><b>  while(1)</b></p><p><b>

50、;  {</b></p><p><b>  flag=0;</b></p><p>  printf("請輸入你要查找的商品信息的商品號:");</p><p>  scanf("%ld",&snum);</p><p>  while( p0->nex

51、t!=NULL)</p><p><b>  {</b></p><p>  p0=p0->next;</p><p>  if(p0->num==snum) </p><p><b>  { </b></p><p><b>  flag=1;<

52、;/b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag==1)</p><p><b>  { </b>&

53、lt;/p><p>  printf("該商品的信息如下:\n\n");</p><p>  printf("商品號\t名稱\t類別\t生產(chǎn)日期\t保質(zhì)期\t數(shù)量\t進價\t售價\t銷售日期\n");</p><p>  printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f

54、\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sa

55、le_date.month,p0->sale_date.day);</p><p><b>  }</b></p><p><b>  else</b></p><p>  printf("此商品號不存在,查找失敗!\n");</p><p><b>  p0=p

56、1;</b></p><p>  printf("結(jié)束查找按0,繼續(xù)查找按1:");</p><p>  scanf("%d",&t);</p><p><b>  if(t==0)</b></p><p><b>  break;</b>

57、</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.4刪除函數(shù)的設計</p><p>  刪除是一項對數(shù)據(jù)管理的功能,將過期的商品信息刪除,以免影響倉庫管理,刪除函數(shù)的原理和查找函數(shù)原理一樣,只是在輸入“商品號”找到對應的商品后刪除該結(jié)點,就

58、會刪除該商品的所有詳細信息,并提示用戶保存!</p><p>  void goods_delete()</p><p><b>  {</b></p><p><b>  long num;</b></p><p>  Node *p,*p0,*p1,*p2;</p><p&g

59、t;  int flag=0,t;</p><p>  p0=file_read();</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  flag=0;</b></p><p>&l

60、t;b>  p1=p2=p0;</b></p><p>  p=p1->next;</p><p>  if(p==NULL) flag=0;</p><p>  printf("請輸入你要刪除的商品的商品號:");</p><p>  scanf("%ld",&num)

61、;</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  if(p->num==num)</p><p><b>  {</b></p><p>  p1->next=p->next;</p>

62、;<p><b>  free(p);</b></p><p><b>  flag=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  p1=p;&l

63、t;/b></p><p>  p=p->next;</p><p><b>  flag=0;</b></p><p><b>  }</b></p><p>  if(flag==1)</p><p>  printf("你已正確刪除!\n"

64、;);</p><p><b>  else</b></p><p>  printf("你輸入的商品號不存在!\n");</p><p>  printf("結(jié)束刪除按0,繼續(xù)刪除按1:");</p><p>  scanf("%d",&t);<

65、/p><p><b>  if(t==0)</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  p0=p0->next;</p><p>  printf("商品號\t名稱\t

66、類別\t生產(chǎn)日期\t保質(zhì)期\t數(shù)量\t進價\t售價\t銷售日期</p><p><b>  \n");</b></p><p>  while(p0!=NULL)</p><p><b>  {</b></p><p>  printf("--------------------

67、------------------------------------------------------------\n"); printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->pro_date.year,p0-&

68、gt;pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.day);</p><p>  p0=p0->next;</p><

69、p><b>  }</b></p><p>  file_write(p2);</p><p><b>  }</b></p><p>  4.2.5排序函數(shù)的設計</p><p>  商品信息排序,為了可以更清楚的了解到商品庫存量的多少,方便于管理者對商場商品的銷售政策和對即將過期商品的多少

70、有所了解,使倉庫管理員更直觀的了解到倉庫庫存。該函數(shù)找到商品的記錄信息按照商品數(shù)量從小到大重新排序,排序完后,返回主菜單并提示用戶保存! </p><p>  void goods_rank()</p><p><b>  {</b></p><p>  Node *p,*q,*k,*L,t;</p><p><b

71、>  Node *p0;</b></p><p>  int flag=0;</p><p>  L=file_read();</p><p>  p=L->next;</p><p>  while(p->next)</p><p><b>  {</b></

72、p><p><b>  k=p;</b></p><p>  q=p->next;</p><p><b>  while(q)</b></p><p><b>  {</b></p><p>  if((k->shuliang)>(q-&

73、gt;shuliang))</p><p><b>  k=q;</b></p><p>  q=q->next;</p><p><b>  }</b></p><p><b>  if(p!=k)</b></p><p><b>  

74、{</b></p><p><b>  t=*p;</b></p><p>  *p=*k; </p><p><b>  *k=t;</b></p><p>  t.next=p->next;</p><p>  p->next=k->

75、;next;</p><p>  k->next=t.next;</p><p><b>  flag=1;</b></p><p><b>  }</b></p><p>  p=p->next;</p><p><b>  }</b>&l

76、t;/p><p>  if(flag=1)</p><p>  printf("按商品數(shù)量從小到大排序成功!\n");</p><p><b>  else</b></p><p>  printf("按商品數(shù)量從小到大排序失敗!\n");</p><p>&l

77、t;b>  p0=L;</b></p><p>  p0=p0->next;</p><p>  printf("商品號\t名稱\t類別\t生產(chǎn)日期\t保質(zhì)期\t數(shù)量\t進價\t售價\t銷售日期\n");</p><p>  while(p0!=NULL)</p><p>  {printf(&qu

78、ot;--------------------------------------------------------------------------------\n");printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->

79、;pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.day);</p><p>  p0=p0->ne

80、xt;</p><p><b>  }</b></p><p>  file_write(L);</p><p><b>  }</b></p><p><b>  5.軟件測試分析</b></p><p>  5.1函數(shù)模塊的測試</p>

81、<p>  5.1.1登錄函數(shù)的測試</p><p>  圖5-1-1 登錄測試(a)(b)</p><p>  5.1.2錄入商品函數(shù)的測試</p><p>  圖5-1-2 錄入商品信息測試</p><p>  5.1.3查找商品函數(shù)的測試</p><p>  圖5-1-3 查找商品信息測試</p

82、><p>  5.1.4修改商品函數(shù)的測試</p><p>  圖5-1-4 修改商品信息測試</p><p>  5.1.4插入商品函數(shù)的測試</p><p>  圖5-1-4 插入商品信息測試</p><p>  5.1.5刪除商品函數(shù)的測試</p><p>  圖5-1-5 刪除商品信息測試

83、</p><p>  5.1.6商品排序函數(shù)的測試</p><p>  圖5-1-6 商品信息排序測試</p><p>  5.2 文件模塊的的測試</p><p>  5.2.1 文件讀取測試</p><p>  圖5-2-1 文件讀取</p><p>  5.2.2 文本寫入測試</p

84、><p>  圖5-2-2 文本寫入</p><p><b>  6.課程設計總結(jié)</b></p><p>  經(jīng)過近兩周的課程設計實習過程中我學到了很多,我做的是商場倉庫管理系統(tǒng),這個系統(tǒng)基本完成了預期的一些基本功能(商品信息的錄入、刪除、查找和修改等),實現(xiàn)了倉庫管理的信息化,滿足了客戶對于基本倉庫管理的需求。這次課程設計中,各個功能模版的執(zhí)行

85、主要運用了本學期學習的數(shù)據(jù)結(jié)構(gòu)中的線性表鏈式存儲的方式,節(jié)點的插入刪除等 。讓我們再一次在應用中對線性表的運用有所提高,并加深了數(shù)據(jù)結(jié)構(gòu)與實際應用的聯(lián)系。</p><p>  此外,這次的課程設計,還加強了我們動手、思考和解決問題的能力。鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運用本課程所學知識的能力。培養(yǎng)了我選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考,深入研究,分析問題、解決問題的能力。通過實際編譯系統(tǒng)的

86、分析設計、編程調(diào)試,掌握應用軟件的分析方法和工程設計方法。而且做課程設計同時也是對課本知識的鞏固和加強,平時看課本時,有些問題就不是很能理解,做完課程設計,那些問題就迎刃而解了。而且還可以記住很多東西。認識來源于實踐,實踐是認識的動力和最終目的,實踐是檢驗真理的唯一標準。所以這個期末測試之后的課程設計對我們的作用是非常大的。</p><p><b>  7.參考文獻</b></p>

87、;<p>  嚴蔚敏, 吳偉民. 數(shù)據(jù)結(jié)構(gòu)(C語言版). 北京: 清華大學出版社, 1997.4</p><p>  嚴蔚敏, 吳偉民, 米寧. 數(shù)據(jù)結(jié)構(gòu)題集(C語言版). 北京: 清華大學出版社, 1999.2</p><p><b>  附錄</b></p><p><b>  使用說明:</b><

88、/p><p>  本系統(tǒng)軟件為倉庫管理中的基本軟件,實現(xiàn)功能為商品信息的錄入、查找、刪除、修改和查看等。用戶首先需要注冊然后登錄到主菜單,按菜單提示選擇相應的模塊操作進行倉庫管理的實施。用戶還可以在創(chuàng)建的文本中直接查看保存的商品信息,方便用戶直接的對倉庫的管理與查看。使用流程按提示操作即可。</p><p><b>  源代碼:</b></p><p&

89、gt;  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  #include<conio.h></p><p><b>  //日期結(jié)構(gòu)體</b><

90、;/p><p>  typedef struct </p><p><b>  {</b></p><p><b>  int year;</b></p><p>  int month;</p><p><b>  int day;</b></p&

91、gt;<p><b>  }DATE;</b></p><p><b>  //商品結(jié)構(gòu)體</b></p><p><b>  //定義鏈表</b></p><p>  typedef struct Node</p><p><b>  {</b&

92、gt;</p><p><b>  long num;</b></p><p>  char name[20];</p><p>  char kind[20];</p><p>  DATE pro_date;</p><p>  int save_day;</p><p&g

93、t;  int shuliang;</p><p>  float jinjia;</p><p>  float shoujia;</p><p>  DATE sale_date;</p><p>  struct Node *next;</p><p>  }Node,*LinkList;</p>

94、<p><b>  //申請函數(shù)</b></p><p>  void apply()</p><p><b>  {</b></p><p>  int i,flag=1;</p><p><b>  FILE *fp;</b></p><p&g

95、t;  char name[20],key[20];</p><p>  flushall();</p><p>  printf("用戶名(不能為空):");</p><p>  scanf("%s",name);</p><p>  flushall();</p><p> 

96、 printf("密碼(不能為空):");</p><p>  for(i=0;i<=20;i++)</p><p><b>  {</b></p><p>  key[i]=getch();</p><p>  if(key[i]==13)</p><p><b&

97、gt;  {</b></p><p>  key[i]='\0';</p><p><b>  break;</b></p><p><b>  }</b></p><p>  printf("*");</p><p><

98、b>  }</b></p><p>  fp=fopen("key.txt","w");</p><p>  if(fp==NULL)</p><p><b>  {</b></p><p>  printf("the file can not open

99、!");</p><p><b>  flag=0;</b></p><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  fprintf(fp,"%s %s",name,key);</p&

100、gt;<p>  fclose(fp);</p><p>  if(flag==1)</p><p>  printf("\n申請成功,請登錄!\n");</p><p><b>  else</b></p><p>  printf("\n申請失敗,請重新申請!\n"

101、;);</p><p><b>  }</b></p><p><b>  //登錄函數(shù)</b></p><p>  int load()</p><p><b>  {</b></p><p><b>  FILE *fp;</b>

102、;</p><p><b>  int i;</b></p><p>  char name[20],key[20];</p><p>  char name1[20],key1[20];</p><p>  fp=fopen("key.txt","r");</p>

103、<p>  fscanf(fp,"%s %s",name,key);</p><p>  fclose(fp);</p><p>  printf("用戶名(不能為空):");</p><p>  scanf("%s",name1);</p><p>  flushall(

104、);</p><p>  printf("密碼(不能為空):");</p><p>  for(i=0;i<=20;i++)</p><p><b>  {</b></p><p>  key1[i]=getch();</p><p>  if(key1[i]==13)&

105、lt;/p><p><b>  {</b></p><p>  key1[i]='\0';</p><p><b>  break;</b></p><p><b>  }</b></p><p>  printf("*"

106、);</p><p><b>  }</b></p><p>  printf("\n");</p><p>  if(strcmp(name1,name)==0&&strcmp(key1,key)==0)</p><p>  { printf("登陸成功!\n\n&qu

107、ot;);return 1;}</p><p><b>  else</b></p><p>  { printf("用戶名或密碼錯誤;請重新登錄!"); return 0;}</p><p><b>  }</b></p><p><b>  //密碼保護系統(tǒng)&

108、lt;/b></p><p>  void key()</p><p><b>  {</b></p><p>  int choice,c;</p><p><b>  do</b></p><p>  { printf("\n**************

109、**************申請登錄系統(tǒng)********************************\n\n");</p><p>  printf(" 1: 新用戶注冊; \n\n");</p><p>  printf(" 2: 新用戶登錄;

110、 \n\n");</p><p>  printf("請選擇:");</p><p>  scanf("%d",&choice);</p><p>  switch(choice)</p><p><b>  {</b></p><p>

111、;  case 1: apply(); break;</p><p>  case 2: c=load();break;</p><p><b>  }</b></p><p>  }while(c!=1);</p><p><b>  }</b></p><p>  Lin

112、kList goods_input()</p><p><b>  {</b></p><p>  LinkList L;</p><p>  Node *p1,*p2;</p><p><b>  int i=1;</b></p><p>  void file_write

113、(Node *p);</p><p>  int flag=1;</p><p>  L=p2=(Node*)malloc(sizeof(Node));//為頭節(jié)點分配存儲空間</p><p>  while(flag)</p><p><b>  {</b></p><p>  p1=(Node

114、*)malloc(sizeof(Node));</p><p>  printf("請輸入第%d種商品的信息(商品號為0時,結(jié)束商品輸入):\n\n",i++);</p><p>  flushall();</p><p>  printf("商品號:");</p><p>  scanf("

115、%ld",&p1->num);</p><p>  if(p1->num!=0)</p><p><b>  {</b></p><p>  flushall();// i/o庫函數(shù) 清除緩沖</p><p>  printf("名稱:");</p>&l

116、t;p>  scanf("%s",&p1->name);</p><p>  flushall();</p><p>  printf("類別:");</p><p>  scanf("%s",&p1->kind);</p><p>  flusha

117、ll();</p><p>  printf("生產(chǎn)日期(年月日用空格隔開):");</p><p>  scanf("%d%d%d",&p1->pro_date.year,&p1->pro_date.month,&p1->pro_date.day);</p><p>  flusha

118、ll();</p><p>  printf("保質(zhì)期:");</p><p>  scanf("%d",&p1->save_day);</p><p>  flushall();</p><p>  printf("商品數(shù)量:");</p><p&

119、gt;  scanf("%d",&p1->shuliang);</p><p>  flushall();</p><p>  printf("進價:");</p><p>  scanf("%f",&p1->jinjia);</p><p>  flus

120、hall();</p><p>  printf("售價:");</p><p>  scanf("%f",&p1->shoujia);</p><p>  flushall();</p><p>  printf("銷售日期(年月日用空格隔開):");</p&g

121、t;<p>  scanf("%d%d%d",&p1->sale_date.year,&p1->sale_date.month,&p1->sale_date.day);</p><p>  p2->next=p1;</p><p><b>  p2=p1;</b></p>

122、<p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p><b>  flag=0;</b></p><p><b>  break;</b>&l

123、t;/p><p><b>  }</b></p><p><b>  }</b></p><p>  p2->next=NULL;</p><p>  file_write(L);</p><p><b>  free(p1);</b></p&g

124、t;<p>  return(L);</p><p><b>  }</b></p><p>  //將商品信息寫入文件</p><p>  void file_write(Node *p)</p><p><b>  { </b></p><p><b

125、>  FILE *fp;</b></p><p>  char filename[50];int c;</p><p>  printf("是否保存?(保存按1;不保存按0):");</p><p>  scanf("%d",&c);</p><p><b>  if

126、(c==1)</b></p><p>  { flushall();</p><p>  printf("\n為了將你操作的信息保存下來,請輸入要寫入的文件的路經(jīng)或文件:");</p><p>  gets(filename);</p><p>  fp=fopen(filename,"w"

127、;);//文件寫入</p><p>  if(fp==NULL)</p><p><b>  {</b></p><p>  printf("\n this file can not be open!");</p><p><b>  exit(1);</b></p>

128、<p><b>  }</b></p><p>  p=p->next;</p><p>  while(p!=NULL)</p><p><b>  { </b></p><p>  fprintf(fp,"%ld %s %s %d %d %d %d %d %f

129、 %f %d %d %d\n",p->num,p->name,p->kind,p->pro_date.year,p->pro_date.month,p->pro_date.day,p->save_day,p->shuliang,p->jinjia,p->shoujia,p->sale_date.year,p->sale_date.month,p->s

130、ale_date.day);</p><p>  p=p->next;</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  printf("文件保存成功!");</p><p><b>  }</b>

131、;</p><p><b>  }</b></p><p>  //將文件中的信息讀出的函數(shù)</p><p>  LinkList file_read()</p><p><b>  {</b></p><p><b>  FILE *fp;</b>&l

132、t;/p><p>  LinkList L;</p><p>  Node *p1,*p2; </p><p>  char filename[50];</p><p>  int i,k=0,t=-2;</p><p>  flushall();</p><p>  printf("請輸

133、入要讀取的文件的路徑或文件名:");</p><p>  gets(filename);</p><p>  flushall();</p><p>  printf("請輸入商品的種類數(shù):");</p><p>  scanf("%d",&i);</p><p&g

134、t;  fp=fopen(filename,"r");//文件讀出</p><p>  L=p2=(Node*)malloc(sizeof(Node));//為頭節(jié)點分配存儲空間</p><p>  while(t!=EOF&&k<i)</p><p><b>  {</b></p>&l

135、t;p>  p1=(Node*)malloc(sizeof(Node));</p><p>  t=fscanf(fp,"%ld %s %s %d %d %d %d %d %f %f %d %d %d",&p1->num,p1->name,p1->kind,&p1->pro_date.year,&p1->pro_date.month,

136、&p1->pro_date.day,&p1->save_day,&p1->shuliang,&p1->jinjia,&p1->shoujia,&p1->sale_date.year,&p1->sale_date.month,&p1->sale_date.day);</p><p>  p2->ne

137、xt=p1;</p><p><b>  p2=p1;</b></p><p><b>  k++;</b></p><p><b>  }</b></p><p>  p2->next=NULL;</p><p>  fclose(fp);<

138、;/p><p><b>  return L;</b></p><p><b>  }</b></p><p><b>  //查找商品信息</b></p><p>  void goods_find()</p><p><b>  {</b

139、></p><p>  long snum;</p><p>  int flag=0,t;</p><p>  Node *p0,*p1;</p><p>  p1=p0=file_read();</p><p><b>  while(1)</b></p><p>

140、;<b>  {</b></p><p><b>  flag=0;</b></p><p>  printf("請輸入你要查找的商品信息的商品號:");</p><p>  scanf("%ld",&snum);</p><p>  while( p

141、0->next!=NULL)</p><p><b>  {</b></p><p>  p0=p0->next;</p><p>  if(p0->num==snum) </p><p><b>  { </b></p><p><b>  f

142、lag=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag==1)</p><p>  { printf(&qu

143、ot;該商品的信息如下:\n\n");</p><p>  printf("商品號\t名稱\t類別\t生產(chǎn)日期\t保質(zhì)期\t數(shù)量\t進價\t售價\t銷售日期\n");</p><p>  printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0

144、->num,p0->name,p0->kind,p0->pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.d

溫馨提示

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

評論

0/150

提交評論