數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-倉(cāng)庫(kù)進(jìn)銷存管理系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩34頁(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、<p>  題 目: 倉(cāng)庫(kù)進(jìn)銷存管理系統(tǒng) </p><p>  學(xué) 院: 計(jì)算機(jī)與控制工程學(xué)院 </p><p>  專業(yè)班級(jí): 軟件101 </p><p>  學(xué)

2、生姓名: </p><p>  指導(dǎo)教師: </p><p>  2012 年06 月2 9日</p><p><b>  綜合實(shí)踐1評(píng)分表</b></p><p>

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

4、…………………………………………………………………1</p><p>  3. 軟件概要設(shè)計(jì)……………………………………………………………………2</p><p>  3.1 設(shè)計(jì)分析 ……………………………………………………………………2</p><p>  3.1.1 設(shè)計(jì)理念 ………………………………………………………………2</p><p

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

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

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

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

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

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

11、…………………………………………………15</p><p>  6. 課程設(shè)計(jì)總結(jié) …………………………………………………………………16</p><p>  7. 參考文獻(xiàn) ………………………………………………………………………16</p><p><b>  附錄</b></p><p><b>  1.問(wèn)

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

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

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

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

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

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

18、oods_input()//運(yùn)用鏈?zhǔn)酱鎯?chǔ)</p><p>  商品信息寫(xiě)入文件的函數(shù) void file_write(Node *p)</p><p>  文件中的信息讀出的函數(shù) LinkList file_read()</p><p> ?。?)查找商品函數(shù) void goods_find()</p><p> ?。?)修改信息函數(shù)

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

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

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

22、程圖</p><p>  圖4-1 程序流程圖</p><p>  4.2 主要函數(shù)設(shè)計(jì)</p><p>  4.2.1主函數(shù)的設(shè)計(jì)</p><p>  程序啟動(dòng)進(jìn)入主函數(shù),進(jìn)入主菜單 界面和用戶進(jìn)行交互。用戶可以直接明了的清楚軟件的功能項(xiàng)目,調(diào)用各個(gè)模塊的功能項(xiàng)目,進(jìn)行選擇。</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("請(qǐng)按任意鍵返回主菜單!");</p><p><b>  getch();</b></p><p>  system("cls");</p><p>  printf("\n********************

25、********歡迎進(jìn)入商場(chǎng)貨物管理系統(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)計(jì)商品信息;\n");</p><p>  printf(" 0: 退出系統(tǒng);\n");</p><p>  printf(" 請(qǐng)選擇(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輸入有誤,請(qǐng)重新輸入!\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ù)的設(shè)計(jì)</p><p>  數(shù)據(jù)錄入是該軟件必備的基本功能當(dāng)鏈表為空時(shí),對(duì)商品信息變量“商品號(hào)”判斷并進(jìn)行錄入,系統(tǒng)調(diào)用錄入函數(shù),在用戶輸入商品信息后添加到鏈表里,在添加過(guò)程中按提示自動(dòng)插入到相應(yīng)位置。添加成功后,返回主菜單并提示用戶保存到自建的文本中,并可以根據(jù)各個(gè)模塊要求進(jìn)行讀取修改。</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é)點(diǎn)分配存儲(chǔ)空間</p><p>  while(flag)</p><p><b>  {</b></p>&

36、lt;p>  p1=(Node*)malloc(sizeof(Node));</p><p>  printf("請(qǐng)輸入第%d種商品的信息(商品號(hào)為0時(shí),結(jié)束商品輸入):\n\n",i++);</p><p>  flushall();</p><p>  printf("商品號(hào):");</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)日期(年月日用空格隔開(kāi)):");</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("進(jìn)價(jià):");</p><p>  scanf("%f",&p1->jinjia);</p><p>  f

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

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>  保存文本文件的讀寫(xiě)函數(shù)模塊:</p><p>  void file_write(Node *p) //將商品信息寫(xiě)入文件</p><p><b> ?。?lt;/b></p>

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

48、;<p>  查找商品是信息管理的基本功能,當(dāng)數(shù)據(jù)很多時(shí)怎么快速找到商品對(duì)管理員來(lái)說(shuō)很重要,系統(tǒng)調(diào)用查找函數(shù)模塊,顯示查找菜單。根據(jù)提示輸入需要查找的“商品號(hào)”進(jìn)行查找,查找成功,用戶會(huì)看到查找商品的詳細(xì)信息,如沒(méi)有該商品,則查找失敗,查找函數(shù)設(shè)計(jì):</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("請(qǐng)輸入你要查找的商品信息的商品號(hào):");</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("商品號(hào)\t名稱\t類別\t生產(chǎn)日期\t保質(zhì)期\t數(shù)量\t進(jìn)價(jià)\t售價(jià)\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("此商品號(hào)不存在,查找失敗!\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ù)的設(shè)計(jì)</p><p>  刪除是一項(xiàng)對(duì)數(shù)據(jù)管理的功能,將過(guò)期的商品信息刪除,以免影響倉(cāng)庫(kù)管理,刪除函數(shù)的原理和查找函數(shù)原理一樣,只是在輸入“商品號(hào)”找到對(duì)應(yīng)的商品后刪除該結(jié)點(diǎn),就

58、會(huì)刪除該商品的所有詳細(xì)信息,并提示用戶保存!</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("請(qǐng)輸入你要?jiǎng)h除的商品的商品號(hào):");</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("你輸入的商品號(hào)不存在!\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("商品號(hào)\t名稱\t

66、類別\t生產(chǎn)日期\t保質(zhì)期\t數(shù)量\t進(jìn)價(jià)\t售價(jià)\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ù)的設(shè)計(jì)</p><p>  商品信息排序,為了可以更清楚的了解到商品庫(kù)存量的多少,方便于管理者對(duì)商場(chǎng)商品的銷售政策和對(duì)即將過(guò)期商品的多少

70、有所了解,使倉(cāng)庫(kù)管理員更直觀的了解到倉(cāng)庫(kù)庫(kù)存。該函數(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("商品號(hào)\t名稱\t類別\t生產(chǎn)日期\t保質(zhì)期\t數(shù)量\t進(jìn)價(jià)\t售價(jià)\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.軟件測(cè)試分析</b></p><p>  5.1函數(shù)模塊的測(cè)試</p>

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

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

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

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

85、主要運(yùn)用了本學(xué)期學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)中的線性表鏈?zhǔn)酱鎯?chǔ)的方式,節(jié)點(diǎn)的插入刪除等 。讓我們?cè)僖淮卧趹?yīng)用中對(duì)線性表的運(yùn)用有所提高,并加深了數(shù)據(jù)結(jié)構(gòu)與實(shí)際應(yīng)用的聯(lián)系。</p><p>  此外,這次的課程設(shè)計(jì),還加強(qiáng)了我們動(dòng)手、思考和解決問(wèn)題的能力。鞏固和加深了對(duì)數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運(yùn)用本課程所學(xué)知識(shí)的能力。培養(yǎng)了我選用參考書(shū),查閱手冊(cè)及文獻(xiàn)資料的能力。培養(yǎng)獨(dú)立思考,深入研究,分析問(wèn)題、解決問(wèn)題的能力。通過(guò)實(shí)際編譯系統(tǒng)的

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

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

88、/p><p>  本系統(tǒng)軟件為倉(cāng)庫(kù)管理中的基本軟件,實(shí)現(xiàn)功能為商品信息的錄入、查找、刪除、修改和查看等。用戶首先需要注冊(cè)然后登錄到主菜單,按菜單提示選擇相應(yīng)的模塊操作進(jìn)行倉(cāng)庫(kù)管理的實(shí)施。用戶還可以在創(chuàng)建的文本中直接查看保存的商品信息,方便用戶直接的對(duì)倉(cāng)庫(kù)的管理與查看。使用流程按提示操作即可。</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>  //申請(qǐng)函數(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申請(qǐng)成功,請(qǐng)登錄!\n");</p><p><b>  else</b></p><p>  printf("\n申請(qǐng)失敗,請(qǐng)重新申請(qǐng)!\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("用戶名或密碼錯(cuò)誤;請(qǐng)重新登錄!"); return 0;}</p><p><b>  }</b></p><p><b>  //密碼保護(hù)系統(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、**************申請(qǐng)登錄系統(tǒng)********************************\n\n");</p><p>  printf(" 1: 新用戶注冊(cè); \n\n");</p><p>  printf(" 2: 新用戶登錄;

110、 \n\n");</p><p>  printf("請(qǐng)選擇:");</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é)點(diǎn)分配存儲(chǔ)空間</p><p>  while(flag)</p><p><b>  {</b></p><p>  p1=(Node

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

115、%ld",&p1->num);</p><p>  if(p1->num!=0)</p><p><b>  {</b></p><p>  flushall();// i/o庫(kù)函數(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)日期(年月日用空格隔開(kāi)):");</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("進(jìn)價(jià):");</p><p>  scanf("%f",&p1->jinjia);</p><p>  flus

120、hall();</p><p>  printf("售價(jià):");</p><p>  scanf("%f",&p1->shoujia);</p><p>  flushall();</p><p>  printf("銷售日期(年月日用空格隔開(kāi)):");</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>  //將商品信息寫(xiě)入文件</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為了將你操作的信息保存下來(lái),請(qǐng)輸入要寫(xiě)入的文件的路經(jīng)或文件:");</p><p>  gets(filename);</p><p>  fp=fopen(filename,"w"

127、;);//文件寫(xiě)入</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("請(qǐng)輸

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

134、t;  fp=fopen(filename,"r");//文件讀出</p><p>  L=p2=(Node*)malloc(sizeof(Node));//為頭節(jié)點(diǎn)分配存儲(chǔ)空間</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("請(qǐng)輸入你要查找的商品信息的商品號(hào):");</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("商品號(hào)\t名稱\t類別\t生產(chǎn)日期\t保質(zhì)期\t數(shù)量\t進(jìn)價(jià)\t售價(jià)\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. 本站所有資源如無(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ù)僅提供信息存儲(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)論