課程設計----藥品倉庫管理系統(tǒng)_第1頁
已閱讀1頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  計算機學院計算機科學與技術專業(yè)</p><p>  《程序設計綜合課程設計》報告</p><p>  (20010/2011學年 第一學期)</p><p>  學生姓名: </p><p>  學生班級: </p><p>  學生學號: &

2、lt;/p><p>  指導教師: </p><p><b>  2011年1月8日</b></p><p><b>  藥</b></p><p><b>  品</b></p><p><b>  倉</

3、b></p><p><b>  庫</b></p><p><b>  管</b></p><p><b>  理</b></p><p><b>  系</b></p><p><b>  統(tǒng)</b>

4、</p><p><b>  目錄</b></p><p><b>  第一章 前言1</b></p><p>  1.1藥品倉庫管理系統(tǒng)的開發(fā)背景1</p><p>  1.2 選題的目的、意義2</p><p>  第二章藥品倉庫管理系統(tǒng)的內(nèi)容2</p&

5、gt;<p>  2.1功能要求:2</p><p>  2.2課程設計的目的3</p><p>  2.3課程設計的要求3</p><p>  2.4課程設計的目標4</p><p>  2.5 主要有三大重要模塊:4</p><p>  第三章 系統(tǒng)詳細設計說明4</p>

6、<p>  3.1系統(tǒng)的主要功能:4</p><p>  3.2 函數(shù)流程圖和藥品庫存管理模塊具體實現(xiàn)4</p><p>  3.3 測試計劃13</p><p>  3.4測試的意義14</p><p>  3.5 本系統(tǒng)的測試結(jié)果14</p><p>  第四章 軟件使用說明16</p&

7、gt;<p>  4.1 軟件使用說明16</p><p>  4.2 軟件測試結(jié)果16</p><p>  第五章 結(jié)束語17</p><p>  5.1程序設計的心得和體會17</p><p>  附錄一: 參考文獻17</p><p>  附錄二:程序代碼;18</p>&

8、lt;p><b>  第一章 前言</b></p><p>  1.1藥品倉庫管理系統(tǒng)的開發(fā)背景</p><p>  在市場經(jīng)濟的激烈競爭中,醫(yī)藥企業(yè)必須把業(yè)務經(jīng)營同市場需求聯(lián)系起來,為此,醫(yī)藥企業(yè)紛紛建立起了自己的數(shù)據(jù)庫系統(tǒng),由計算機管理代替手工操作。 </p><p>  藥品管理是一般醫(yī)藥企業(yè)生產(chǎn)管理環(huán)節(jié)中重要的一環(huán),需要對藥品基

9、本信息管理、藥品調(diào)配信息等盡心完整的監(jiān)控。藥品入庫首先需要登記藥品的基本信息,包括藥品的種類、名稱、型號、單位、單價等;然后登記藥品入庫信息,包括藥品基本信息、入庫地點、入庫人、經(jīng)辦人、數(shù)量等;出庫藥品需要登記出庫信息,包括藥品基本信息、出庫地點、出庫人、經(jīng)辦人、數(shù)量等;根據(jù)藥品的入庫、出庫過程的綜合,得到各種藥品的余額信息,方便進行后續(xù)工作。</p><p>  設計一個管理信息系統(tǒng),主要是我們通過在實際中了解

10、了一些醫(yī)藥企業(yè)的管理形式,并結(jié)合當今世界管理信息系統(tǒng)的蓬勃發(fā)展,了解現(xiàn)階段對管理信息系弘強調(diào)的是綜合管理功能,多維服務模式,人機協(xié)調(diào)的、智能化的、集成化的計算機輔助管理功能等。因此設計這樣一個管理信息系統(tǒng),來解決一些小型醫(yī)藥企業(yè)在物理管理上的缺點,能夠?qū)崿F(xiàn)藥品信息的系統(tǒng)化、規(guī)范化和自動化。</p><p>  醫(yī)藥企業(yè)生產(chǎn)所需要的各種藥品。進貨時經(jīng)檢查合同確認為有效托收以后,進行驗收入庫,填寫入庫單,進行入庫登記

11、。醫(yī)藥企業(yè)各個部門根據(jù)所需要的藥品總額和部門生產(chǎn)活動需要提出藥品需求申請。計劃員根據(jù)整個醫(yī)藥企業(yè)的需求開出藥品出庫單,藥品倉庫管理中根據(jù)出庫單核對發(fā)放藥品。藥品使用完畢需要及時歸還入庫,填寫入庫單。根據(jù)需要進行統(tǒng)計分析,產(chǎn)生相應報表。</p><p>  藥品倉庫管理的特點是信息自理量比較大。所管理的藥品種類繁多,而且由于入庫單、出庫單、需求單等單據(jù)發(fā)生量特別大,關聯(lián)信息多,查詢和統(tǒng)計的方工各不相同。因此在管理上

12、實現(xiàn)起來有一定的困難。在管理的過程中經(jīng)常會出現(xiàn)信息的重復傳遞;單據(jù)、報表種類繁多,各個部門管理規(guī)格不統(tǒng)一等問題。在本系統(tǒng)的設計過程中,為了克服這些困難,滿足計算機管理的需要。 </p><p>  1.2 選題的目的、意義</p><p>  此次畢業(yè)設計選題范圍是相當廣泛且實用的,含蓋了目前大部分計算機軟件類開發(fā)的課題,給我們很大的自由發(fā)展的空間??梢悦總€學生挑選出最合適的課題,更適合同

13、學們的興趣和價值取向。選擇此課題對我來說有著不同的意義,應該來說此課題更接近于實際開發(fā)的全過程。同時對編程、數(shù)據(jù)庫調(diào)用、結(jié)構化查詢語言STRUCTURED QUERY LANGUAGE等方面是一個比較綜合的考驗。讓我在此過程中得到很好的鍛煉。</p><p>  藥品倉庫管理系統(tǒng)的內(nèi)容</p><p><b>  2.1功能要求:</b></p><

14、;p>  用c/c++設計一系統(tǒng),實現(xiàn)以下功能:功能要求:</p><p><b>  用戶及權限管理;</b></p><p><b>  藥品入庫、出庫;</b></p><p><b>  藥品架位管理;</b></p><p>  藥品信息查詢、修改;</p

15、><p>  藥品過期提示,打印出過期藥品架位信息供工作人員將這些藥品下架;</p><p>  過期藥品下架后將這些藥品信息導入到過期藥品表或刪除。</p><p>  2.2課程設計的目的</p><p>  隨著現(xiàn)代科學技術的迅猛發(fā)展,計算機技術已經(jīng)滲透到個個領域,成為各行業(yè)必不可少的工具,隨著超市的規(guī)模不斷擴大,超市每天進出庫的產(chǎn)品數(shù)量急

16、劇增加,有關銷售的各種信息量也成倍增長。還要時刻更新產(chǎn)品的銷售信息,不斷添加,刪除商品信息,所以就需要合理的數(shù)據(jù)庫結(jié)構來保存數(shù)據(jù)信息,需要有效的程序結(jié)構支持各種數(shù)據(jù)操作的執(zhí)行。</p><p>  本次課程設計使得課堂教學與實驗實踐之間關系更為密切,讓同學們認識到必須重視實踐環(huán)節(jié),多讀程序,多編寫程序,多上機實踐。進一步培養(yǎng)結(jié)構化程序設計的思想,加深對高級語言要素和控制結(jié)構的理解,針對C ++語言中的重點

17、和難點內(nèi)容進行訓練,獨立完成有一定工作量的程序設計任務,同時強調(diào)好的程序風格。培養(yǎng)學生綜合利用C++語言進行程序設計的能力,考察學生的觀察能力和總結(jié)能力,使學生將所學知識轉(zhuǎn)化為分析和設計簡單實際問題的能力。</p><p><b>  具體目的如下:</b></p><p>  1.鞏固和加深對C++語言課程基本知識的理解和掌握。2.掌握C++語言編程和程序調(diào)試的基

18、本技能。3.提高C++語言編程技巧,培養(yǎng)分析問題和解決問題的能力。</p><p>  4.利用C++語言進行基本的軟件設計。</p><p>  5.掌握書寫程序設計說明文檔的能力。</p><p>  2.3課程設計的要求</p><p>  在程序設計中,。要求我們用所學的C++語言知識進行簡單的編程,制作出一個簡單的程序。既可以用傳

19、統(tǒng)的結(jié)構化程序設計的方法,也可以用先進的面向?qū)ο蟪绦蛟O計方法。</p><p>  具體要求如下:1)用C語言實現(xiàn)系統(tǒng);2)函數(shù)功能要劃分好(結(jié)構化程序設計);3)界面友好(良好的人機交互),加必要的注釋;4)提供程序測試方案。</p><p>  2.4課程設計的目標</p><p>  A.使藥品銷售的信息能及時得到統(tǒng)計、查詢</p>&l

20、t;p>  B.方便操作員的操作,達到簡單、易用的效果</p><p>  C.提高操作員的工作效率</p><p>  D.提高操作的正確率</p><p>  E.提高系統(tǒng)的可靠性及安全性</p><p>  2.5 主要有三大重要模塊:</p><p><b>  入庫模塊:</b>&

21、lt;/p><p><b>  出庫模塊:</b></p><p><b>  查詢模塊:</b></p><p><b>  信息保存模塊:</b></p><p>  第三章 系統(tǒng)詳細設計說明</p><p>  3.1系統(tǒng)的主要功能:</p&g

22、t;<p>  1) 產(chǎn)品入庫管理,可以填寫入庫單,確認產(chǎn)品入庫;</p><p>  2) 產(chǎn)品出庫管理,可以填寫出庫單,確認出庫;</p><p>  3) 初始庫存設置,設置庫存的初始值,庫存的上下警戒限;</p><p>  4) 可以查詢產(chǎn)品入庫情況、出庫情況、當前庫存情況,可以按藥品的編號或名稱;</p><p> 

23、 3.2 函數(shù)流程圖和藥品庫存管理模塊具體實現(xiàn)</p><p><b>  1 藥品的屬性 </b></p><p>  藥品屬性包括:藥品的編號,藥品的有效日期,藥品名稱,藥品數(shù)量 ,藥品 生產(chǎn)日期價格 ,藥品生產(chǎn)商等等;</p><p>  2 藥品倉庫管理的主函數(shù)的流程圖</p><p>  3-2-1藥品倉庫

24、管理的主函數(shù)流程圖(1)</p><p>  3-2-2藥品倉庫管理的主函數(shù)流程圖(2)</p><p>  3-2-3藥品倉庫管理的主函數(shù)流程圖(3)</p><p>  3 出庫入庫連接流程圖</p><p>  3-2-4 出庫入庫連接流程圖(1)</p><p>  3-2-5 出庫入庫連接流程圖(2)<

25、/p><p><b>  4 藥品出庫</b></p><p><b>  藥品出庫流程圖</b></p><p>  3-2-6 藥品出庫流程圖(1)</p><p>  3-2-7 藥品出庫流程圖(2)</p><p><b>  (2)藥品出庫代碼</b&

26、gt;</p><p>  dlnode *output(dlnode *L)//出庫的函數(shù)</p><p><b>  {</b></p><p><b>  int y;</b></p><p>  dlnode *head=L;</p><p>  if(ifempty

27、==0)//檢測是否有貨物輸入</p><p><b>  {</b></p><p>  printf("沒有貨物輸入系統(tǒng)\n");</p><p>  getchar();getchar();</p><p>  return(head);</p><p><b>

28、;  } </b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  printf("=============\n");</p><p>  printf("1.按編號出庫\n"

29、;);</p><p>  printf("2.按名稱出庫\n");</p><p>  printf("0.返回上一層\n");</p><p>  printf("==============\n");</p><p>  printf("選擇0--2:");

30、scanf("%d",&y);</p><p><b>  switch(y)</b></p><p><b>  {</b></p><p>  case 1:outnum(L);break;//調(diào)用按編號出庫函數(shù)</p><p>  case 2:outname(L)

31、;break;//調(diào)用按名稱出庫函數(shù)</p><p>  case 0:return(L);</p><p>  default:printf("enter error!Please input 0--2!");</p><p>  getchar();getchar();printf("\n\n");</p>

32、<p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p>  dlnode *outnum(dlnode *L)//按編號出庫函數(shù)</p><p>  { <

33、/p><p><b>  int num;</b></p><p>  dlnode *head=L;</p><p>  printf("請輸入出庫貨物的編號:");</p><p>  scanf("%d",&num);</p><p>  whil

34、e((L=L->next)!=head)</p><p>  {//如果找到就刪除節(jié)點</p><p>  if(L->number==num)</p><p><b>  {</b></p><p>  L->prior->next=L->next;</p><p>

35、;  L->next->prior=L->prior;</p><p>  ifempty--; //ifempty減1 </p><p>  printf("編號為%d的貨物成功出庫",num); </p><p>  getchar();getchar();</p><p>  retur

36、n head; </p><p><b>  } </b></p><p><b>  }</b></p><p>  printf("沒有此編號的貨物,請查看是否還有貨物。\n\n");</p><p>  getchar();getchar();</

37、p><p>  return (head);</p><p><b>  }</b></p><p>  dlnode *outname(dlnode *L)//按名稱出庫函數(shù)</p><p><b>  {</b></p><p>  char na[32];</p>

38、;<p>  dlnode *head=L;</p><p>  printf("請輸入出庫貨物的名稱:");</p><p>  scanf("%s",&na);</p><p>  while((L=L->next)!=head)</p><p>  {//如果找到就刪除

39、節(jié)點</p><p>  if(strcmp(L->name,na)==0)</p><p><b>  {</b></p><p>  L->prior->next=L->next;</p><p>  L->next->prior=L->prior;</p>&

40、lt;p>  ifempty--; //ifempty減1 </p><p>  printf("名稱為%s的貨物成功出庫",na);</p><p>  getchar();getchar();</p><p>  return (head);</p><p><b>  }<

41、/b></p><p><b>  }</b></p><p>  printf("沒有此名稱的貨物,請查看是否還有貨物。\n\n");</p><p>  getchar();getchar();</p><p>  return(head);</p><p><

42、b>  } </b></p><p><b>  5. 藥品入庫</b></p><p>  輸入新進藥品的一切信息,新記錄將寫入,新的零售價格將寫入藥品庫存信息表相應的藥品記錄中去,方便藥品庫存的統(tǒng)計。</p><p>  需要強調(diào)的是當要求填寫的文本框為空時,系統(tǒng)會有提示信息要求用戶輸入必須的信息,否則新藥品

43、不能入存。步驟為:輸入藥品資料,開始入庫,結(jié)束入庫,提交入庫資料。</p><p><b>  藥品入庫代碼為:</b></p><p>  dlnode *input(dlnode *L)//定義入庫函數(shù)</p><p><b>  {</b></p><p>  dlnode *in,*head

44、;</p><p>  head=in=(dlnode *)malloc(sizeof(dlnode));//分配空間</p><p><b>  head=L;</b></p><p>  printf("\n請輸入貨物數(shù)據(jù):\n");</p><p>  printf("編號:"

45、;);scanf("%d",&in->number);</p><p>  printf("名稱:");scanf("%s",&in->name);</p><p>  printf("數(shù)量:");scanf("%d",&in->counter);&

46、lt;/p><p>  if(L->next==NULL) //如果只有頭節(jié)點,</p><p>  { //把剛輸入的in節(jié)點</p><p>  L->next=in; //跟在頭節(jié)點后面</p><p>  L->prior=in; //</p><

47、p>  in->next=L; //</p><p>  in->prior=L; //</p><p>  ifempty++; //ifempty加1</p><p><b>  }</b></p><p><b>  else</b></p>&l

48、t;p>  {//如果當前L的下一個節(jié)點不是頭節(jié)點</p><p>  while((L=L->next)!=head)</p><p>  {//如果輸入的數(shù)大于L->number,則插到L的前面</p><p>  if(L->number<in->number)</p><p><b>  

49、{</b></p><p>  in->next=L;</p><p>  in->prior=L->prior; </p><p>  L->prior->next=in;</p><p>  L->prior=in;</p><p>  ifempty+

50、+; //ifempty加1</p><p>  return(head);</p><p>  } </p><p><b>  }</b></p><p>  //輸入的編號比其它編號都小,則插到最后個節(jié)點,并首尾相連</p><p>  head->prior-&

51、gt;next=in;</p><p>  in->prior=head->prior;</p><p>  head->prior=in;</p><p>  in->next=head;</p><p>  ifempty++; //ifempty加1</p><p>  }

52、 </p><p>  return head;</p><p><b>  }</b></p><p><b>  6.藥品查詢</b></p><p>  系統(tǒng)查詢所需藥品,在售藥過程中銷售人員對藥品數(shù)據(jù)庫進行查詢。兩種方法,第一種:按編號查詢;第二種:按名稱查詢;</p><

53、;p><b>  7.登錄模塊</b></p><p>  主要是完成用戶的登錄,根據(jù)用戶的級別系統(tǒng)賦予不同的權限。要求用戶從列表框中選取出用戶名,然后輸入密碼。通過驗證進入系統(tǒng)。</p><p><b>  8.藥品信息模塊</b></p><p>  這個模塊是構成本系統(tǒng)的基本元素,所有藥品的各種詳細信息都必須在

54、本模塊中完成錄入,在這里要求用戶輸入組成一條藥品信息的基本信息。并且可以隨時對這些信息進行增、刪、改。</p><p><b>  9藥品庫存管理模塊</b></p><p>  有了基本的藥品信息以后,就可以對所擁有的產(chǎn)品資料添加進貨信息了,用戶必須輸入一些必要的數(shù)據(jù),如進貨的價格和數(shù)量,模塊完成對庫存藥品的盤點以及藥品過期銷毀功能。藥庫采購藥品實現(xiàn)入庫登記,對藥庫

55、中的藥品進行有效的管理,根據(jù)藥品使用情況及時與供應商實現(xiàn)進貨與退貨。在藥庫中過期的藥品應及時銷毀,這樣才能保證客戶的健康,對客戶負責。</p><p><b>  10.用戶管理模塊</b></p><p>  用戶分別兩種,一種是A級用戶,是系統(tǒng)管理員級;另一種是B級用戶,是藥房銷售人員級。這兩種級別的用戶的區(qū)別就是所擁有的權限不同。在用戶管理模塊中,能夠?qū)λ杏脩?/p>

56、密碼、創(chuàng)建用戶的工作以及系統(tǒng)資料的刪除,只有A級用戶,即系統(tǒng)管理員級用戶。</p><p>  11藥品倉庫管理模塊</p><p>  3-3-8 藥品倉庫管理模塊</p><p><b>  3.3 測試計劃</b></p><p>  先通過對模塊的測試,模塊通過后,在進行整體調(diào)試,進而達到程序的順利完成;<

57、;/p><p><b>  3.4測試的意義</b></p><p>  在開發(fā)軟件系統(tǒng)的過程中,面對錯綜復雜的問題,人的主觀認識不可能完全符合客觀現(xiàn)象,因此,每個階段都不可避免地產(chǎn)生錯誤,在每個階段結(jié)束之前通過嚴格的技術審查,盡可能早的發(fā)現(xiàn)所有錯誤,此外,在編碼過程中還會不可避免地引入新的錯誤,測試的目的就是在軟件投入生產(chǎn)運行之前,盡可能多地發(fā)現(xiàn)軟件中發(fā)的錯誤。<

58、/p><p>  3.5 本系統(tǒng)的測試結(jié)果</p><p>  1.藥品倉庫管理系統(tǒng)的登陸界面:.</p><p>  3-5-1藥品倉庫管理系統(tǒng)的登陸界面</p><p>  2.藥品入庫 </p><p>  3-5-2藥品入庫 </p

59、><p><b>  3藥品出庫:</b></p><p><b>  3-5-3藥品出庫</b></p><p>  4藥品查詢: </p><p>  3-5-4藥品查詢: </p><p>  5

60、將藥品信息保存在文件中:</p><p>  3-5-5將藥品信息保存在文件中:</p><p>  第四章 軟件使用說明</p><p>  4.1 軟件使用說明</p><p>  該程序可以實現(xiàn)對藥品的倉庫管理,在C語言的運行下進行。</p><p>  界面顯示后,需選擇入庫出庫選項或查詢選項,如要如果要入庫出

61、庫,按1,進入藥品入庫出庫信息頁面,則根據(jù)要求需依次輸入藥品編號,藥品名稱,藥品數(shù)量,藥品價格,藥品的生產(chǎn)日期及有效日期(為了方便,我們可以將其都輸入1),藥品的生產(chǎn)商,輸入完成后,則關于藥品的信息已存入。如要查詢藥品信息,按2,進入查詢藥品信息頁面,它將會出現(xiàn)兩種查詢方式,第一種,按編號查詢,第二種,按名稱查詢;類似這樣步驟進行,按 0,即可退出;</p><p>  4.2 軟件測試結(jié)果</p>

62、<p><b>  如同系統(tǒng)測試結(jié)果;</b></p><p><b>  第五章 結(jié)束語</b></p><p>  5.1程序設計的心得和體會</p><p>  在這次課程設計中,讓我學到了很多在課堂和書本上學不到的知識,我在這次課程設計中最大的收獲有以下幾個方面:</p><p>

63、;  一、領略到了數(shù)據(jù)庫設計在計算機領域的重要性。數(shù)據(jù)庫作為一個永久存儲形式在應用中發(fā)揮著重要的作用。在數(shù)據(jù)庫設計中,我明白了數(shù)據(jù)庫設計中不是范式越高越好的。我們要根據(jù)我們的應用來決定,一切應該以需求為首要選擇。</p><p>  二、對變成環(huán)境、一些控件的使用和界面的美化方面更加熟悉。因為《藥品倉庫管理系統(tǒng)》中涉及到很多控件的使用,只有很好的使用這些控件才可以給出一個很好的界面呈現(xiàn)在用戶的面前。這樣更有利于數(shù)

64、據(jù)庫和用戶之間的交流。這里就要涉及一些平時不太常見的控件的使用問題。為了更好的在系統(tǒng)中利用這些控件,我上網(wǎng)查詢了一些關于控件使用的資料,最主要的是MSDN上面、還有借了一些這方面的書籍。在界面的美化方面,我了解了一些WINDOWS自定義界面的知識,現(xiàn)在的軟件其實好多面向用戶的時候用戶首先看的就是一個軟件的界面是否有好,是否漂亮。其實,界面美化是很重要的。因為美,是人一直追求的。主要知識有:自定義窗口形狀,控件的自定義等等。這些都是通過面

65、向?qū)ο缶幊痰囊恍┨匦詫崿F(xiàn)的,又得是通過多態(tài),又得是通過類的繼承。</p><p>  三、利用軟件工程學開發(fā)系統(tǒng)。雖然這個《藥品倉庫管理系統(tǒng)》是一個小的系統(tǒng),但只有從這些小的項目中就利用軟件工程學的知識,這樣可以開發(fā)在系統(tǒng)設計和實現(xiàn)中我們可以總結(jié)很多經(jīng)驗和教訓。我們一般按照瀑布開發(fā)模型、增量模型、 螺旋模型來做我們的項目。</p><p><b>  附錄一: 參考文獻

66、</b></p><p>  [1]、譚浩強,C++語言程序設計,清華大學出版社</p><p>  [2]、譚浩強,C語言程序設計(第二版),清華大學出版社,1992</p><p>  [3] 《visual c++ 工程應用與項目實踐》 機械工業(yè)出版社 張雨,阮偉良等 2005·1</p><p>  [4] 《管

67、理信息系統(tǒng)完整項目實例剖析》 人民郵電出版社,明日科技 2005·7</p><p><b>  附錄二:程序代碼;</b></p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<st

68、ring.h></p><p>  #include<malloc.h></p><p>  #define max 32</p><p>  int ifempty=0;//標志,判斷鏈表是無否為空</p><p>  typedef struct dnode /* 定義雙向鏈表結(jié)構體 */ </p>

69、<p><b>  {</b></p><p>  int number; /* 藥品編號 */</p><p>  char name[max]; /* 藥品名稱 */ </p><p>  int counter; /* 藥品數(shù)量 */</p><p>  

70、int data; /*藥品生產(chǎn)日期*/</p><p>  int price; /*藥品單價*/</p><p>  int edata; //藥品有效日期</p><p>  int pname;//藥品生產(chǎn)商</p><p>  struct dnode *prior, *next;</p

71、><p>  /* 定義兩指針,分別指向其前驅(qū)和后繼 */</p><p>  }dlnode; </p><p>  dlnode *create(dlnode *L);</p><p>  dlnode *input(dlnode *L);</p><p>  dlnode *o

72、utput(dlnode *L);</p><p>  dlnode * outnum(dlnode *L);</p><p>  dlnode * outname(dlnode *L);</p><p>  dlnode *current(dlnode *L);</p><p>  void search(dlnode *L);<

73、/p><p>  void print(dlnode *L);</p><p>  void searchnum(dlnode *L);</p><p>  void searchname(dlnode *L);</p><p>  void display(dlnode *L) ;</p><p>  v

74、oid main()</p><p><b>  {</b></p><p><b>  int x;</b></p><p>  dlnode *L;</p><p>  if(!(L=(dlnode *)malloc(sizeof(dlnode)))) //分配空間</p><

75、;p><b>  {</b></p><p>  printf("\n");</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  create(L);///調(diào)用函數(shù),創(chuàng)建頭節(jié)點</p&

76、gt;<p><b>  while(1)</b></p><p>  {////////////////////////主菜單///////////////////////////</p><p>  printf(" ============================\n");</p>

77、<p>  printf(" 1. 藥品出庫和入庫\n");</p><p>  printf(" 2. 查找藥品表\n"); </p><p>  printf(" 3. 顯示倉庫藥品表\n");

78、</p><p>  printf(" 4. 輸出到文件\n");</p><p>  printf(" 0. 退出\n");</p><p>  printf(" ===================

79、==========\n");</p><p>  printf(" 選擇0--4: ");</p><p>  scanf("%d",&x);</p><p><b>  switch(x)</b></p><p><b>

80、;  {</b></p><p>  case 2:search(L);break;//調(diào)用查找函數(shù)</p><p>  case 1:current(L);break;//調(diào)用入庫出庫函數(shù)</p><p>  case 3:display(L);break;//調(diào)用顯示輸出函數(shù)</p><p>  case 4:print(L)

81、;break;//調(diào)用打印函數(shù)</p><p>  case 0:printf("\n bye!see you!\n");</p><p>  getchar();getchar();exit(0);//退出程序</p><p>  default:printf("\n E

82、nter erreor!please input 0--4!"); </p><p>  getchar();getchar();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p&g

83、t;<p>  dlnode *create(dlnode *L)//創(chuàng)建鏈表頭節(jié)點</p><p><b>  {</b></p><p>  printf(" 藥品倉庫管理系統(tǒng)\n");</p><p>  printf(" 按enter開始");</p

84、><p>  getchar(); </p><p>  ifempty=0;</p><p>  ///////初始化頭節(jié)點的值////////</p><p>  L->next=NULL;L->prior=NULL;</p><p>  L->number=L->counter=L->d

85、ata=L->price=L->edata=L->pname=0;//**</p><p>  strcpy(L->name," "); </p><p><b>  return L;</b></p><p><b>  }</b></p><p>

86、;  void search(dlnode *L) ///查找的主要菜單</p><p><b>  {</b></p><p><b>  int y;</b></p><p>  if(ifempty==0)</p><p><b>  {</b></p>&

87、lt;p>  printf("沒有輸入藥品!\n");</p><p>  getchar();getchar();</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  else</b>

88、;</p><p><b>  {</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  printf("=====================\n");</p><

89、p>  printf("1.按編號查詢\n");</p><p>  printf("2.按藥品名稱查詢\n");</p><p>  printf("0.返回上一層\n");</p><p>  printf("====================\n");</p>

90、;<p>  printf("選擇0--2:");</p><p>  scanf("%d",&y);</p><p><b>  switch(y)</b></p><p><b>  {</b></p><p>  case 1:se

91、archnum(L);break;//調(diào)用按編號查找的函數(shù)</p><p>  case 2:searchname(L);break;//調(diào)用按名稱查找的函數(shù)</p><p>  case 0:return;//返回</p><p>  default:printf("enter error!Please input 0--2!\n\n");&l

92、t;/p><p>  getchar();getchar();printf("\n\n");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><

93、b>  }</b></p><p>  void searchnum(dlnode *L)///按編號查找的函數(shù)</p><p><b>  {</b></p><p>  int num,flag=0;//flag為是否找到的標志</p><p>  dlnode *head=L;</p>

94、<p>  if(ifempty==0)</p><p><b>  {</b></p><p>  printf("沒有藥品被輸入\n");</p><p>  getchar();getchar();</p><p><b>  return;</b></

95、p><p><b>  }</b></p><p>  printf("輸入你要查找的藥品編號:\n");</p><p>  scanf("%d",&num);</p><p>  while((L=L->next)!=head)</p><p>

96、;<b>  {</b></p><p>  if(L->number==num)</p><p>  { flag=1;//flag為1時表示找到</p><p>  printf("找到指定編號藥品 \n"); </p><p>  printf("\n編號:%d\

97、n",L->number);</p><p>  printf("名稱:%s\n",L->name) ;</p><p>  printf("數(shù)量:%d\n",L->counter); </p><p>  printf("生產(chǎn)日期:%d\n",L->data);</

98、p><p>  printf("藥品單價:%d\n",L->price);</p><p>  printf("藥品有效日期:%d\n",L->edata);</p><p>  printf("藥品生產(chǎn)商:%d\n",L->pname);</p><p><b&

99、gt;  } </b></p><p><b>  }</b></p><p>  if(flag==0)//flag為0時表示沒有找到</p><p>  printf("沒有找到指定編號藥品,請查看是否還有藥品。\n");</p><p>  getchar();getc

100、har();</p><p><b>  }</b></p><p>  void searchname(dlnode *L)//按名稱查找的函數(shù)</p><p><b>  {</b></p><p>  int flag=0;//flag為是否找到的標志</p><p>

101、  char na[32];</p><p>  dlnode *head=L;</p><p>  if(ifempty==0)</p><p><b>  {</b></p><p>  printf("沒有藥品被輸入\n");</p><p>  getchar();ge

102、tchar();</p><p><b>  return;</b></p><p><b>  }</b></p><p>  printf("輸入你要查找的藥品名稱\n");</p><p>  scanf("%s",&na);</p>

103、<p>  while((L=L->next)!=head)</p><p><b>  {</b></p><p>  if(strcmp(L->name,na)==0)</p><p>  { flag=1;//flag為1時表示找到</p><p>  printf("找到指

104、定名稱藥品 \n"); </p><p>  printf("\n編號:%d\n",L->number);</p><p>  printf("名稱:%s\n",L->name) ;</p><p>  printf("數(shù)量:%d\n",L->counter); &l

105、t;/p><p>  printf("生產(chǎn)日期:%d\n",L->data);//******************4</p><p>  printf("藥品單價:%d\n",L->price);</p><p>  printf("藥品有效日期:%d\n",L->edata);</

106、p><p>  printf("藥品生產(chǎn)商:%d\n",L->pname);</p><p><b>  } </b></p><p><b>  }</b></p><p>  if(flag==0)//flag為0時表示沒有找到</p><

107、p>  printf("沒有找到指定編號藥品,請查看是否還有藥品。\n\n");</p><p>  getchar();getchar();</p><p><b>  }</b></p><p>  dlnode *current(dlnode *L)//藥品出庫入庫函數(shù)</p><p>&

108、lt;b>  {</b></p><p><b>  int y;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  printf("======================

109、==\n");</p><p>  printf(" 1.藥品入庫\n");</p><p>  printf(" 2.藥品出庫\n");</p><p>  printf(" 0.返回上一層\n");</p><p>  printf("

110、========================\n");</p><p>  printf(" 選擇0--2:");</p><p>  scanf("%d",&y);</p><p><b>  switch(y)</b></p><p><b&

111、gt;  {</b></p><p>  case 1:input(L);break;//調(diào)用入庫函數(shù)</p><p>  case 2:output(L);break;//調(diào)用出庫函數(shù)</p><p>  case 0:return(L);//返回上一層</p><p>  default:printf("enter

112、error!Please input 0--2!");</p><p>  getchar();getchar();</p><p>  printf("\n\n");</p><p><b>  }</b></p><p><b>  }</b></p>

113、<p><b>  }</b></p><p>  dlnode *input(dlnode *L)//定義入庫函數(shù)</p><p><b>  {</b></p><p>  dlnode *in,*head;</p><p>  head=in=(dlnode *)malloc(si

114、zeof(dlnode));//分配空間</p><p><b>  head=L;</b></p><p>  printf("\n請輸入藥品數(shù)據(jù):\n");</p><p>  printf("編號:");scanf("%d",&in->number);</p&

115、gt;<p>  printf("名稱:");scanf("%s",&in->name);</p><p>  printf("數(shù)量:");scanf("%d",&in->counter);</p><p>  printf("生產(chǎn)日期:");sca

116、nf("%d",&in->data);//******************5</p><p>  printf("藥品單價:");scanf("%d",&in->price);</p><p>  printf("藥品有效日期:");scanf("%d",&a

117、mp;in->edata);</p><p>  printf("藥品生產(chǎn)商:");scanf("%d",&in->pname);</p><p>  if(L->next==NULL) //如果只有頭節(jié)點,</p><p>  { //把剛輸入的in節(jié)點<

118、;/p><p>  L->next=in; //跟在頭節(jié)點后面</p><p>  L->prior=in; //</p><p>  in->next=L; //</p><p>  in->prior=L; //</p><p>  ifempty++; //ifem

119、pty加1</p><p><b>  }</b></p><p><b>  else</b></p><p>  {//如果當前L的下一個節(jié)點不是頭節(jié)點</p><p>  while((L=L->next)!=head)</p><p>  {//如果輸入的數(shù)大于

120、L->number,則插到L的前面</p><p>  if(L->number<in->number)</p><p><b>  {</b></p><p>  in->next=L;</p><p>  in->prior=L->prior; </p&g

121、t;<p>  L->prior->next=in;</p><p>  L->prior=in;</p><p>  ifempty++; //ifempty加1</p><p>  return(head);</p><p>  } </p><p><b

122、>  }</b></p><p>  //輸入的編號比其它編號都小,則插到最后個節(jié)點,并首尾相連</p><p>  head->prior->next=in;</p><p>  in->prior=head->prior;</p><p>  head->prior=in;</p>

123、;<p>  in->next=head;</p><p>  ifempty++; //ifempty加1</p><p>  } </p><p>  return head;</p><p><b>  }</b></p><p>  dlnode *ou

124、tput(dlnode *L)//出庫的函數(shù)</p><p><b>  {</b></p><p><b>  int y;</b></p><p>  dlnode *head=L;</p><p>  if(ifempty==0)//檢測是否有藥品輸入</p><p>

125、<b>  {</b></p><p>  printf("沒有藥品輸入系統(tǒng)\n");</p><p>  getchar();getchar();</p><p>  return(head);</p><p><b>  } </b></p><p&

126、gt;<b>  while(1)</b></p><p><b>  {</b></p><p>  printf("=============\n");</p><p>  printf("1.按編號出庫\n");</p><p>  printf(&qu

127、ot;2.按名稱出庫\n");</p><p>  printf("0.返回上一層\n");</p><p>  printf("==============\n");</p><p>  printf("選擇0--2:");scanf("%d",&y);</p&

128、gt;<p><b>  switch(y)</b></p><p><b>  {</b></p><p>  case 1:outnum(L);break;//調(diào)用按編號出庫函數(shù)</p><p>  case 2:outname(L);break;//調(diào)用按名稱出庫函數(shù)</p><p&

129、gt;  case 0:return(L);</p><p>  default:printf("enter error!Please input 0--2!");</p><p>  getchar();getchar();printf("\n\n");</p><p><b>  }</b></

130、p><p><b>  }</b></p><p><b>  }</b></p><p>  dlnode *outnum(dlnode *L)//按編號出庫函數(shù)</p><p><b>  {</b></p><p><b>  int num

131、;</b></p><p>  dlnode *head=L;</p><p>  printf("請輸入出庫藥品的編號:");</p><p>  scanf("%d",&num);</p><p>  while((L=L->next)!=head)</p>

132、<p>  {//如果找到就刪除節(jié)點</p><p>  if(L->number==num)</p><p><b>  {</b></p><p>  L->prior->next=L->next;</p><p>  L->next->prior=L->prior

133、;</p><p>  ifempty--; //ifempty減1 </p><p>  printf("編號為%d的藥品成功出庫",num); </p><p>  getchar();getchar();</p><p>  return head; </p><p>

134、;<b>  } </b></p><p><b>  }</b></p><p>  printf("沒有此編號的藥品,請查看是否還有藥品。\n\n");</p><p>  getchar();getchar();</p><p>  return (head);<

135、;/p><p><b>  }</b></p><p>  dlnode *outname(dlnode *L)//按名稱出庫函數(shù)</p><p><b>  {</b></p><p>  char na[32];</p><p>  dlnode *head=L;</p

136、><p>  printf("請輸入出庫藥品的名稱:");</p><p>  scanf("%s",&na);</p><p>  while((L=L->next)!=head)</p><p>  {//如果找到就刪除節(jié)點</p><p>  if(strcmp(

137、L->name,na)==0)</p><p><b>  {</b></p><p>  L->prior->next=L->next;</p><p>  L->next->prior=L->prior;</p><p>  ifempty--; //ifempty減1

138、 </p><p>  printf("名稱為%s的藥品成功出庫",na);</p><p>  getchar();getchar();</p><p>  return (head);</p><p><b>  }</b></p><p><b>

139、;  }</b></p><p>  printf("沒有此名稱的藥品,請查看是否還有藥品。\n\n");</p><p>  getchar();getchar();</p><p>  return(head);</p><p><b>  }</b></p><p

140、>  void display(dlnode *L)//顯示藥品清單</p><p><b>  {</b></p><p>  dlnode *head=L;</p><p>  if(ifempty==0)</p><p><b>  {</b></p><p> 

溫馨提示

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

評論

0/150

提交評論