庫(kù)房管理系統(tǒng)畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩33頁(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>  題 目:藥品庫(kù)房管理系統(tǒng)</p><p><b>  摘 要</b></p><p>  在藥店里,藥品庫(kù)房管理是一項(xiàng)非常重要的工作,使用人工方式管理各項(xiàng)品信息不僅效率低下,而且容易出錯(cuò)、安全性很差。并且在實(shí)際操作中,數(shù)據(jù)的查找和維護(hù)都不容易實(shí)現(xiàn)。藥品庫(kù)房管理系統(tǒng),就是為了解決這些問(wèn)題而設(shè)計(jì)的。其目的是實(shí)現(xiàn)藥品信息管理和出入庫(kù)記錄的快速高

2、效檢索,使操作簡(jiǎn)單安全,提高工作效率和質(zhì)量。本系統(tǒng)的主要功能是完成品庫(kù)房管理的日常工作,包括材料的入庫(kù)、出庫(kù)以及庫(kù)存材料信息的管理維護(hù)等。</p><p><b>  目 錄</b></p><p>  第一章 技術(shù)背景和分析……………………………………………………….1</p><p>  第二章 系統(tǒng)實(shí)施……………………...…………

3、….……………………………..1</p><p>  2.1 系統(tǒng)設(shè)計(jì)……………………………………………………………………….1</p><p>  2.1.1系統(tǒng)分析……….………………….…….…………………………………2</p><p>  2.1.1.1用戶需求分析…………………………………………………………..2</p><p> 

4、 2.1.1.2系統(tǒng)可行性分析……………………………………………………….2</p><p>  2.1.2系統(tǒng)功能模塊劃分………………………………………………………..3</p><p>  2.2數(shù)據(jù)庫(kù)設(shè)計(jì)…………………………………………………………………….4</p><p>  2.2.1數(shù)據(jù)庫(kù)需求分析………………………………………………………….4<

5、/p><p>  2.2.2數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)………………………………………………………….4</p><p>  2.2.3數(shù)據(jù)庫(kù)實(shí)現(xiàn)……………………………………………………………….5</p><p>  2.3表單設(shè)計(jì)……………………………………………………………………….7</p><p>  2.3.1材料信息維護(hù)表單……………………………

6、………………………….7</p><p>  2.3.2材料信息查詢表單…………………………………………….………..14</p><p>  2.3.3出入庫(kù)管理表單…………………………………………….…………..15</p><p>  2.3.4用戶向?qū)е谱鲌?bào)表…………………………………………….…………23</p><p>  2.3

7、.5主表單設(shè)計(jì)…………………………………………….…………………25</p><p>  2.4主控程序設(shè)計(jì)…………………………………………….……………………26</p><p>  第三章 問(wèn)題討論……………………………..…………….………………….….27</p><p>  3.1系統(tǒng)功能設(shè)計(jì)的不完善……………………………………………….………27<

8、/p><p>  3.2代碼維護(hù)…………………………………………….…………………………27</p><p>  3.3數(shù)據(jù)維護(hù)…………………………………………….…………………………27</p><p>  3.3.1數(shù)據(jù)庫(kù)的安全問(wèn)題…………………………………………….………….27</p><p>  3.3.2數(shù)據(jù)的安全問(wèn)題……………………

9、……………………….…………….27</p><p>  第四章 總結(jié)………………………………………………………………………..28</p><p>  4.1論文總結(jié) ………………………………………………………………………28</p><p>  4.2工作展望 ………………………………………………………………………28</p><p> 

10、 參考文獻(xiàn) ……………………………………………………………………………29 </p><p>  致謝……………………………………………………………………………………30</p><p>  第一章 技術(shù)背景和分析</p><p>  Visual FoxPro是為數(shù)據(jù)庫(kù)結(jié)構(gòu)和應(yīng)用程序開發(fā)而設(shè)計(jì)的功能強(qiáng)大的面向?qū)ο蟮能浖?。無(wú)論是組織信息、運(yùn)行查詢、創(chuàng)建集成的關(guān)系

11、型數(shù)據(jù)庫(kù)系統(tǒng),還是為最終用戶編寫功能全面的數(shù)據(jù)管理應(yīng)用程序,Visual FoxPro都可以提管理數(shù)據(jù)所需的工具,可以在應(yīng)用程序或數(shù)據(jù)庫(kù)開發(fā)的任何一個(gè)領(lǐng)域中提供幫助。本系統(tǒng)使用Visual FoxPro來(lái)設(shè)計(jì)開發(fā)的原因是Visual FoxPro具有三大特點(diǎn)。</p><p><b>  一、強(qiáng)大的管理功能</b></p><p>  VFP提了一種稱為“項(xiàng)目管理器”

12、(program manager)的管理工具,可供用戶對(duì)所開發(fā)項(xiàng)目中的數(shù)據(jù)、文檔、源代碼和類庫(kù)(class library)等資源進(jìn)行集中高效的管理,開發(fā)與維護(hù)均更加方便。</p><p>  二、大量使用可視化的界面操作工具</p><p>  VFP 6.0提供向?qū)?wizard)、 設(shè)計(jì)器(designer)、生成器(builder)等3類界面操作工具,達(dá)40種之多。它們普遍采用圖形

13、界面,能幫助用戶簡(jiǎn)便快捷地完成各種查詢和設(shè)計(jì)任務(wù)。VFP的設(shè)計(jì)器普遍配有工具欄和彈出式的快捷菜單。每個(gè)工具按鈕對(duì)應(yīng)一項(xiàng)功能;用戶可通過(guò)它們方便地完成操作或設(shè)計(jì)控件,不必編程或很少編程即可實(shí)現(xiàn)美觀實(shí)用的應(yīng)用程序界面。大多數(shù)設(shè)計(jì)器還提快捷菜單,內(nèi)含最常用的菜單選項(xiàng),供用戶隨時(shí)調(diào)用。</p><p>  三、支持面向?qū)ο蟮某绦蛟O(shè)計(jì)</p><p>  VFP除繼續(xù)使用傳統(tǒng)的面向過(guò)程的程序設(shè)計(jì)外,

14、還支持面向?qū)ο蟮某绦蛟O(shè)計(jì)。允許用戶對(duì)“對(duì)象”(object)和“類”(class)進(jìn)行定義,并編寫相應(yīng)的代碼。由于VFP預(yù)先定義和提供了一批基類,用戶可以在基類的基礎(chǔ)上定義自己的類和子類(subclass),從而利用類的繼承性(inheritance),減少編程的工作量,加快軟件的開發(fā)過(guò)程。使用結(jié)構(gòu)化的程序設(shè)計(jì),同時(shí)應(yīng)用面向?qū)ο蟮某绦蛟O(shè)計(jì),構(gòu)成了VFP程序設(shè)計(jì)的特點(diǎn),同時(shí)為用戶的編程帶來(lái)了很大的方便。</p><p&

15、gt;<b>  第二章 系統(tǒng)實(shí)施</b></p><p><b>  2.1系統(tǒng)設(shè)計(jì)</b></p><p>  本系統(tǒng)設(shè)計(jì)包括兩個(gè)部分:系統(tǒng)分析和系統(tǒng)功能模塊設(shè)計(jì)。</p><p><b>  2.1.1系統(tǒng)分析</b></p><p>  2.1.1.1用戶需求分析<

16、;/p><p>  某藥店根據(jù)業(yè)務(wù)發(fā)展的要求,選定建立一個(gè)“藥品庫(kù)房管理系統(tǒng)”,以取代人工管理。開發(fā)目的如下:</p><p>  l、必須要指定的專門人員才能對(duì)藥品倉(cāng)庫(kù)的日常事務(wù)進(jìn)行管理。</p><p>  2、能夠?qū)λ幤穾?kù)房?jī)?nèi)的有關(guān)各種藥品材料的數(shù)據(jù)進(jìn)行輸入、修改與查詢。</p><p>  3、當(dāng)有藥品入庫(kù)或出庫(kù)時(shí),能夠更新藥品的數(shù)據(jù)進(jìn)行

17、輸入、修改與查詢。</p><p>  4、要求有專門的報(bào)表存儲(chǔ)藥品材料的出入庫(kù)信息,能夠打印報(bào)表。</p><p>  2.1.1.2 系統(tǒng)可行性分析</p><p>  1、四項(xiàng)基本內(nèi)容的實(shí)現(xiàn)</p><p>  用戶在該藥品庫(kù)房管理系統(tǒng)中需要的四項(xiàng)基本內(nèi)容完全可以利用VFP進(jìn)行的相關(guān)設(shè)置(主要是表單設(shè)置)來(lái)加以實(shí)現(xiàn)。例如可以用VFP進(jìn)行

18、登錄界面設(shè)計(jì),在表單上添加命令按鈕以實(shí)現(xiàn)對(duì)用戶身份的驗(yàn)證,達(dá)到用戶要求的“必須要指定的專門人才對(duì)藥品倉(cāng)庫(kù)的日常事務(wù)進(jìn)行管理”的目的。</p><p><b>  2、數(shù)據(jù)庫(kù)分析</b></p><p>  藥店中所有藥品材料的信息都可以在VFP項(xiàng)目管理器的數(shù)據(jù)庫(kù)中建立與維護(hù)。該藥品倉(cāng)庫(kù)管理系統(tǒng)查詢藥品信息只需要兩張數(shù)據(jù)表(即材料信息表和出入庫(kù)信息表)就可以滿足需求。&

19、lt;/p><p>  3、系統(tǒng)的發(fā)布及其運(yùn)行環(huán)境。</p><p>  (1)系統(tǒng)的發(fā)布:VFP項(xiàng)目管理器提供了一個(gè)管理應(yīng)用系統(tǒng)的集成環(huán)境,而且VFP提供的安裝向?qū)?,支持用戶為所開發(fā)的項(xiàng)目創(chuàng)建一套“安裝(磁)盤”,供系統(tǒng)發(fā)布使用。</p><p>  (2)系統(tǒng)的運(yùn)行環(huán)境:操作系統(tǒng)Windows9x系列、用戶自定義安裝需要85MB硬盤空間,完全安裝需要90MB硬盤空間

20、,內(nèi)存要求16MB以上。推薦使用VGA或更高分辨率的顯示器。</p><p>  2.1.2 系統(tǒng)功能模塊劃分</p><p>  根據(jù)以上分析,可以進(jìn)行系統(tǒng)的功能模塊劃分,如圖2—1所示: </p><p>  圖2—1系統(tǒng)功能模塊</p><p>  功能模塊劃分圖中各個(gè)模塊的功能如下:</p><p><b

21、>  1、登錄界面</b></p><p>  通過(guò)輸入管理員的用戶名和密碼進(jìn)入系統(tǒng)。</p><p><b>  2、主表單</b></p><p>  用戶可以在主表單上根據(jù)需要進(jìn)行選擇以實(shí)現(xiàn)各種不同的操作。</p><p>  3、庫(kù)存材料信息的維護(hù)</p><p>  新

22、材料入庫(kù)時(shí),系統(tǒng)允許管理員添加新材料的記錄。材料出庫(kù)或產(chǎn)品過(guò)期需要清除時(shí),管理員可以刪除產(chǎn)品信息。記錄有誤時(shí)管理員可以修改數(shù)據(jù)表中的記錄。</p><p>  4、庫(kù)存材料信息的查詢</p><p>  信息查詢是倉(cāng)庫(kù)管理系統(tǒng)的重要組成部分。用戶可以按照材料編號(hào)和材料名稱等查詢條件查詢倉(cāng)庫(kù)中的材料信息。</p><p>  5、材料的入庫(kù)、出庫(kù)</p>

23、<p>  新產(chǎn)品或材料需要出入庫(kù)時(shí),管理員可以直接進(jìn)行出入庫(kù)操作;出入庫(kù)操作后,程序自動(dòng)修改庫(kù)存材料的信息。</p><p><b>  6、報(bào)表打印功能</b></p><p>  可以打印庫(kù)存表,出入庫(kù)記錄的報(bào)表。</p><p><b>  2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p&

24、gt;  2.2.1數(shù)據(jù)庫(kù)需求分析</p><p>  根據(jù)上一節(jié)的系統(tǒng)分析,本系統(tǒng)主要是實(shí)現(xiàn)倉(cāng)庫(kù)藥品信息和出入庫(kù)信息的管理。因此,該藥品倉(cāng)庫(kù)管理系統(tǒng)的數(shù)據(jù)關(guān)系比較簡(jiǎn)單,只需要兩張數(shù)據(jù)表:材料信息表和出入庫(kù)記錄信息表。</p><p>  2.2.2 數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)</p><p>  本系統(tǒng)中需要兩個(gè)數(shù)據(jù)表:材料信息表和出入庫(kù)信息表,數(shù)據(jù)表的字段和結(jié)構(gòu)如表1和表2

25、所示:</p><p><b>  表1材料信息表</b></p><p><b>  表2出入庫(kù)信息表</b></p><p>  2.2.3 數(shù)據(jù)庫(kù)實(shí)現(xiàn)</p><p>  本系統(tǒng)開發(fā)中,首先創(chuàng)建庫(kù)房管理系統(tǒng)的數(shù)據(jù)庫(kù),然后在數(shù)據(jù)庫(kù)中創(chuàng)建需要的數(shù)據(jù)表,為數(shù)據(jù)表添加記錄。如果需要,還可以設(shè)計(jì)視圖和存

26、儲(chǔ)過(guò)程以及觸發(fā)器等。下面設(shè)計(jì)本系統(tǒng)數(shù)據(jù)庫(kù),詳細(xì)步驟如下:</p><p>  1、創(chuàng)建項(xiàng)目文件“庫(kù)房管理.pjx”,保存路徑為project\庫(kù)房管理系統(tǒng)。</p><p>  2、在該項(xiàng)目中新建數(shù)據(jù)庫(kù)“倉(cāng)庫(kù)管理”,保存路徑為project\倉(cāng)庫(kù)管理系統(tǒng)\data。</p><p>  3、在數(shù)據(jù)庫(kù)中新建材料信息表,保存路徑為project\倉(cāng)庫(kù)管理系統(tǒng)\data\

27、材料信息.dbf。</p><p>  在Table Designer的Fields選項(xiàng)卡中根據(jù)表1的內(nèi)容設(shè)置數(shù)據(jù)表的字段及其屬性,如2—2圖所示:</p><p>  圖2—2 “材料信息”表的字段設(shè)置</p><p>  切換到Indexes選項(xiàng)卡,設(shè)置表索引。如圖2—3所示。將“材料編號(hào)”設(shè)置為主索引,索引類型為Primary。將“材料名稱”設(shè)置為普通索引,索

28、引類型為Regular。</p><p>  圖2—3 “材料信息”表的索引設(shè)置</p><p>  關(guān)閉Table Designer,在“材料信息”表中添加記錄。具體做法是:在Project Designer中選中材料信息表,單擊Browse按鈕,瀏覽數(shù)據(jù)表。然后在Visual FoxPro 6.0的主窗口中選取Table | Append New Record菜單命令,在數(shù)據(jù)表中添加新

29、的記錄。</p><p>  出入庫(kù)信息的創(chuàng)建方法與材料信息表相似,保存路徑也與材料信息表相同。表的字段設(shè)置和索引分別如圖2—4、圖2—5所示:</p><p>  圖2—4 “出入庫(kù)信息”表的字段設(shè)置</p><p>  圖2—5 “出入庫(kù)信息”表的索引設(shè)置</p><p>  表建立完成后,打開Database Designer,創(chuàng)建數(shù)據(jù)

30、表之間的關(guān)聯(lián)關(guān)系。其結(jié)果如圖2—6所示。其中,材料信息表和出入庫(kù)信息表之間通過(guò)索引“材料編號(hào)”相關(guān)聯(lián)。</p><p>  圖2—6 數(shù)據(jù)表的關(guān)聯(lián)關(guān)系</p><p>  至此,數(shù)據(jù)庫(kù)和數(shù)據(jù)表的設(shè)計(jì)完成。下面進(jìn)入庫(kù)房管理系統(tǒng)的表單設(shè)計(jì)。</p><p><b>  2.3 表單設(shè)計(jì)</b></p><p>  本系統(tǒng)主要

31、功能模塊的實(shí)現(xiàn)由4個(gè)表單完成,分別是:材料信息維護(hù)表單、材料信息查詢表單、出入庫(kù)管理表單和用于選擇操作類型的主界面。</p><p>  2.3.1 材料信息維護(hù)表單</p><p>  材料信息維護(hù)表單的功能主要是完成材料信息的添加、修改和刪除等操作。</p><p>  1、材料信息維護(hù)表單設(shè)計(jì)</p><p>  在項(xiàng)目中新建表單,保存

32、路徑為“project\倉(cāng)庫(kù)管理系統(tǒng)\forms\材料信息.scx”,在表單的Data Environment中添加“材料信息”表。在表單上添加控件并設(shè)置控件的屬性,得到如圖2—7所示的表單。</p><p>  圖2—7材料信息維護(hù)表單</p><p>  整個(gè)“材料信息維護(hù)”表單分為3部分,最上面的一部分是在一個(gè)Container控件中顯示當(dāng)前材料記錄的信息,如材料編號(hào)、材料名稱、規(guī)格

33、、單位和單價(jià)等。中間是4個(gè)命令按鈕分別表示第一條記錄、上一條記錄、下一條記錄、和最后一條記錄。下面是維護(hù)操作功能按鈕,包括添加、修改、刪除、保存和退出5種功能按鈕。</p><p><b>  2、添加響應(yīng)代碼</b></p><p>  下面為表單添加響應(yīng)代碼,實(shí)現(xiàn)上述各項(xiàng)功能。</p><p>  “首記錄”按鈕。單擊按鈕時(shí),顯示“材料信息

34、”表的第一記錄。即表中第一條記錄被設(shè)為當(dāng)前記錄。該按鈕的Click事件代碼如下:</p><p><b>  Go top</b></p><p>  Thisform.Refresh</p><p>  “末記錄”按鈕。單擊按鈕時(shí),顯示“材料信息”表的最后一條記錄,即表中最后一條記錄被設(shè)置為當(dāng)前記錄。該按鈕的Click事件代碼如下:</

35、p><p><b>  Go bottom</b></p><p>  Thisform.Refresh</p><p>  “上一條”按鈕。單擊按鈕時(shí),顯示當(dāng)前記錄上一條記錄。該按鈕的Click事件代碼如下:</p><p>  thisform.text1.readonly=.t.</p><p>

36、;  thisform.text2.readonly=.t.</p><p>  thisform.text3.readonly=.t.</p><p>  thisform.text4.readonly=.t.</p><p>  thisform.text5.readonly=.t. </p><p>  thisform.text6.r

37、eadonly=.t. </p><p>  thisform.text7.readonly=.t.</p><p>  thisform.text8.readonly=.t.</p><p>  thisform.edit1.readonly=.t.</p><p>  &&設(shè)置各Text Box和Edit的ReadOnly

38、屬性</p><p><b>  if eof()</b></p><p><b>  go bottom</b></p><p><b>  else</b></p><p><b>  skip –1</b></p><p>&

39、lt;b>  endif</b></p><p>  thisform.refresh</p><p>  “下一條”按鈕。單擊按鈕時(shí),顯示當(dāng)前記錄的下一條記錄。該按鈕的Click事件代碼如下:</p><p>  thisform.text1.readonly=.t.</p><p>  thisform.text2.re

40、adonly=.t.</p><p>  thisform.text3.readonly=.t.</p><p>  thisform.text4.readonly=.t.</p><p>  thisform.text5.readonly=.t.</p><p>  thisform.text6.readonly=.t.</p>

41、<p>  thisform.text7.readonly=.t.</p><p>  thisform.text8.readonly=.t.</p><p>  thisform.edit1.readonly=.t.</p><p>  &&設(shè)置各Text Box控件的屬性</p><p><b> 

42、 if eof()</b></p><p><b>  go top</b></p><p><b>  else</b></p><p><b>  skip 1</b></p><p><b>  endif</b></p>

43、<p>  thisform.refresh</p><p>  “添加”按鈕。單擊按鈕時(shí),完成材料添加功能,在材料信息表中加入一條新記錄。該按鈕的Click事件代碼如下:</p><p><b>  go bottom</b></p><p>  tempnum=val(材料信息.材料編號(hào))</p><p>

44、  &&獲取最后一條記錄的材料編號(hào)字段</p><p>  append blank</p><p><b>  go bottom</b></p><p>  replace 材料信息.材料編號(hào) with alltrim(str(tempnum+1))</p><p>  &&在表尾添加

45、一條新記錄</p><p>  thisform.command1.enabled=.f.</p><p>  thisform.command2.enabled=.f.</p><p>  thisform.command3.enabled=.f.</p><p>  thisform.command4.enabled=.f.</p&

46、gt;<p>  thisform.command5.enabled=.f.</p><p>  thisform.command6.enabled=.f.</p><p>  thisform.command7.enabled=.f.</p><p>  thisform.command8.enabled=.f.</p><p&g

47、t;  thisform.command9.enabled=.f.</p><p>  &&設(shè)置各按鈕的有效狀態(tài),在添加新記錄的過(guò)程中,為防止出錯(cuò),應(yīng)設(shè)置除“保存”按鈕之外的其他按鈕為無(wú)效。這樣,在輸入完成后,只能使用“保存”按鈕來(lái)保存記錄。</p><p>  thisform.text1.readonly=.f.</p><p>  thisfo

48、rm.text2.readonly=.f.</p><p>  thisform.text3.readonly=.f.</p><p>  thisform.text4.readonly=.f.</p><p>  thisform.text5.readonly=.f.</p><p>  thisform.text6.readonly=.f

49、.</p><p>  thisform.text7.readonly=.f.</p><p>  thisform.text8.readonly=.f.</p><p>  thisform.edit1.readonly=.f.</p><p>  &&設(shè)置各TextBox控件的屬性</p><p>

50、  thisform.refresh</p><p>  “修改”按鈕。單擊按鈕時(shí),修改當(dāng)前記錄。該按鈕的Click事件代碼如下:</p><p>  thisform.command1.enabled=.f.</p><p>  thisform.command2.enabled=.f.</p><p>  thisform.command

51、3.enabled=.f.</p><p>  thisform.command4.enabled=.f.</p><p>  thisform.command5.enabled=.f.</p><p>  thisform.command6.enabled=.f.</p><p>  thisform.command7.enabled=.f

52、.</p><p>  thisform.command8.enabled=.f.</p><p>  thisform.command9.enabled=.f.</p><p>  thisform.text1.readonly=.f.</p><p>  thisform.text2.readonly=.f.</p><

53、;p>  thisform.text3.readonly=.f.</p><p>  thisform.text4.readonly=.f.</p><p>  thisform.text5.readonly=.f.</p><p>  thisform.text6.readonly=.f.</p><p>  thisform.tex

54、t7.readonly=.f.</p><p>  thisform.text8.readonly=.f.</p><p>  thisform.edit1.readonly=.f.</p><p>  thisform.refresh</p><p>  &&本段代碼主要功能是設(shè)置表單上各控件的可讀寫狀態(tài)。</p>

55、;<p>  “刪除”按鈕。單擊按鈕時(shí),刪除表中當(dāng)前記錄。該按鈕的Click事件代碼如下:</p><p>  tempstr=messagebox(“是否刪除記錄?”,4+32+256,”刪除對(duì)話框”)</p><p>  if tempstr=6</p><p>  set exclusive on</p><p><

56、b>  delete</b></p><p><b>  pack</b></p><p>  set exclusive off</p><p>  thisform.refresh</p><p><b>  endif</b></p><p>  &a

57、mp;&在刪除記錄之前,首先設(shè)置表的操作方式為Exclusive(獨(dú)占方式),然后用Delete語(yǔ)句為當(dāng)前記錄加上刪除標(biāo)記,最后使用Pack語(yǔ)句刪除有標(biāo)記的記錄。</p><p>  “保存”按鈕。單擊按鈕時(shí),將表單中用戶輸入的信息保存到“材料信息”表。該按鈕的Click事件代碼如下:</p><p>  dimension aaa(9)</p><p>&

58、lt;b>  &&定義數(shù)組</b></p><p>  aaa(1)=thisform.text1.value</p><p>  aaa(2)=thisform.text2.value</p><p>  aaa(3)=thisform.text3.value</p><p>  aaa(4)=thisfo

59、rm.text4.value</p><p>  aaa(5)=thisform.text5.value</p><p>  aaa(6)=thisform.text6.value</p><p>  aaa(7)=thisform.text7.value</p><p>  aaa(8)=thisform.text8.value</p

60、><p>  aaa(9)=thisform.text9.value</p><p>  &&將表單中的輸入值存儲(chǔ)到數(shù)組中</p><p>  replace 材料信息.材料編號(hào) with aaa(1)</p><p>  replace 材料信息.規(guī)格 with aaa(2)</p><p>  repl

61、ace 材料信息.單價(jià) with aaa(3)</p><p>  replace 材料信息.產(chǎn)地 with aaa(4)</p><p>  replace 材料信息.生產(chǎn)廠家 with aaa(5)</p><p>  replace 材料信息.材料名稱 with aaa(6)</p><p>  replace 材料信息.單位 with

62、 aaa(7)</p><p>  replace 材料信息.數(shù)量 with aaa(8)</p><p>  replace 材料信息.備注 with aaa(9)</p><p>  &&用數(shù)組修改表記錄的各字段</p><p>  thisform.command1.enabled=.t.</p><

63、p>  thisform.command2.enabled=.t.</p><p>  thisform.command3.enabled=.t.</p><p>  thisform.command4.enabled=.t.</p><p>  thisform.command5.enabled=.t.</p><p>  thisf

64、orm.command6.enabled=.t.</p><p>  thisform.command7.enabled=.t.</p><p>  thisform.command8.enabled=.t.</p><p>  thisform.command9.enabled=.t.</p><p>  &&設(shè)置各按鈕的有

65、效狀態(tài)</p><p>  thisform.text1.readonly=.t.</p><p>  thisform.text2.readonly=.t.</p><p>  thisform.text3.readonly=.t.</p><p>  thisform.text4.readonly=.t.</p><p

66、>  thisform.text5.readonly=.t.</p><p>  thisform.text6.readonly=.t.</p><p>  thisform.text7.readonly=.t.</p><p>  thisform.text8.readonly=.t.</p><p>  thisform.edit1

67、.readonly=.t.</p><p>  thisform.refresh</p><p>  &&設(shè)置TextBox控件為只讀</p><p>  “退出”按鈕。單擊該按鈕,退出表單。該按鈕的Click事件代碼如下:</p><p>  Thisform.Release</p><p>  另外

68、表單初始化時(shí)“保存”按鈕應(yīng)該為不可用,且顯示的內(nèi)容應(yīng)該處于只讀狀態(tài),因此為表單的Init事件添加如下代碼:</p><p>  thisform.text1.readonly=.t.</p><p>  thisform.text2.readonly=.t.</p><p>  thisform.text3.readonly=.t.</p><p

69、>  thisform.text4.readonly=.t.</p><p>  thisform.text5.readonly=.t.</p><p>  thisform.text6.readonly=.t.</p><p>  thisform.text7.readonly=.t.</p><p>  thisform.text8

70、.readonly=.t.</p><p>  thisform.edit1.readonly=.t.</p><p>  thisform.command8.enabled=.f.</p><p>  設(shè)計(jì)完成后,運(yùn)行表單。如圖2—8所示:</p><p>  圖2—8材料信息維護(hù)表單的運(yùn)行結(jié)果</p><p>  

71、2.3.2材料信息查詢表單</p><p>  材料信息查詢表單的功能是實(shí)現(xiàn)材料信息的快速檢索。當(dāng)用戶輸入材料編號(hào)或名稱后,可快速檢索出所有符合條件的材料記錄。</p><p>  1、材料信息查詢表單設(shè)計(jì)</p><p>  新建表單“材料信息查詢”,保存路徑為“\project\庫(kù)房管理系統(tǒng)\forms\材料信息查詢.scx”,在表單的Data Environm

72、ent中添加“材料信息表”。在表單上添加控件并設(shè)置相應(yīng)的屬性,得到如圖2—9所示的表單。</p><p>  圖2—9材料信息查詢表單</p><p>  在表單上添加了一個(gè)Grid控件,用來(lái)顯示查詢的結(jié)果,將Grid的Readonly屬性設(shè)置為.t.。并且通過(guò)一個(gè)Combo下拉框控件來(lái)實(shí)現(xiàn)多依據(jù)的查詢,本系統(tǒng)中根據(jù)材料編號(hào)和材料名稱實(shí)現(xiàn)名稱查詢,將Combo的Readonly屬性設(shè)置為.

73、t.。</p><p><b>  2、添加響應(yīng)代碼</b></p><p>  Combo用于選擇查詢依據(jù)。此處用戶分別選擇“材料編號(hào)”或“材料名稱”進(jìn)行查詢。因此,在表單初始化時(shí),要為Combo Box控件輸入初始值。為存儲(chǔ)查詢結(jié)果,還要定義一個(gè)在表單運(yùn)行過(guò)程中有效的Cursor公共變量。因此,為表單的Init事件添加如下代碼:</p><p&

74、gt;  Public tempcursor</p><p>  Thisform.Combo1.additem(“材料編號(hào)”)</p><p>  Thisform.Combo1.additem(“材料名稱”)</p><p>  Thisform.refresh</p><p>  “查詢”按鈕完成材料信息的查詢。根據(jù)用戶選擇的查詢依據(jù)和

75、輸入的查詢數(shù)據(jù)的值,在表中查找符合條件的記錄,顯示在表格中。</p><p>  “查詢”按鈕的Click事件代碼如下:</p><p>  if thisform.Combo1.text=”材料編號(hào)”</p><p><b>  select *;</b></p><p>  from \project\庫(kù)房管理系統(tǒng)\

76、data\材料信息.dbf;</p><p>  where 材料編號(hào)=alltrim(thisform.text1.value);</p><p>  into cursor tempcursor;</p><p>  thisform.grid1.recordsource=tempcursor;</p><p><b>  en

77、dif</b></p><p>  thisform.refresh</p><p>  &&按照材料編號(hào)查詢</p><p>  if thisform.Combol,text=“材料名稱”</p><p><b>  select *;</b></p><p>  

78、from \project\倉(cāng)庫(kù)管理系統(tǒng)\data\材料信息.dbf;</p><p>  where 材料名稱=alltrim(thisform.text1.value);</p><p>  into cursor tempcursor;</p><p>  thisform.grid1.recordsource=tempcursor;</p>&

79、lt;p><b>  endif</b></p><p>  thisform.refresh</p><p>  &&按照材料名稱查詢</p><p><b>  3、運(yùn)行表單</b></p><p>  設(shè)計(jì)完成后,運(yùn)行表單,結(jié)果如圖2—10所示:</p>&

80、lt;p>  圖2—10材料信息查詢表單的運(yùn)行結(jié)果</p><p>  2.3.3出入庫(kù)管理表單</p><p>  出入庫(kù)管理表單實(shí)現(xiàn)的功能是記錄材料的出入庫(kù)信息,并修改相應(yīng)材料信息表。</p><p>  1、出入庫(kù)管理表單設(shè)計(jì)</p><p>  出庫(kù)和入庫(kù)的功能、結(jié)構(gòu)都比較相似,因而這里用一個(gè)表單來(lái)實(shí)現(xiàn)它們。表單中使用PageF

81、rame控件,分兩個(gè)頁(yè)面分別實(shí)現(xiàn)入庫(kù)和出庫(kù)的功能。</p><p>  新建表單“出入庫(kù)管理”,保存路徑為“\project\倉(cāng)庫(kù)管理系統(tǒng)\forms\出入庫(kù)管理.scx”。</p><p>  在表單的Data Environment中添加“出入庫(kù)信息”數(shù)據(jù)表。</p><p>  該表單使用了一個(gè)PageFrame控件Pageframe1,將Pageframe的

82、PageCount屬性值設(shè)置為2,即PageFrame設(shè)置為兩頁(yè),分別用于“入庫(kù)”管理和“出庫(kù)”管理。將Page1的標(biāo)題設(shè)為“入庫(kù)管理”;將Page2的標(biāo)題設(shè)為“出庫(kù)管理”。</p><p><b>  2、入庫(kù)管理</b></p><p> ?。?)入庫(kù)管理表單設(shè)計(jì)</p><p>  在表單的PageFrame控件單擊鼠標(biāo)右鍵,在彈出的菜單

83、中選取Edit命令,使其處于編輯狀態(tài)。切換到Page1頁(yè)面,添加所需控件并設(shè)置其相應(yīng)屬性,界面如圖2—11所示。</p><p>  圖2—11入庫(kù)管理表單</p><p>  在Page1上添加的控件類型有Label、Text、Command Button、Container和Edit Box。</p><p>  Edit Box控件和Text Box控件類似,

84、不同之處在于Edit Box控件可以對(duì)多行字符串進(jìn)行編輯,并且有垂直滾動(dòng)條,通常用來(lái)顯示或設(shè)置備注字段。下面首先介紹Edit Box控件特有的屬性。如表3所示:</p><p>  表3 Edit Box控件的常用屬性</p><p>  Edit Box控件具有的與Text Box控件一樣的屬性,這里不再贅述。</p><p><b>  (2)添加響應(yīng)

85、代碼</b></p><p>  “確定” 按鈕的Click事件代碼如下:</p><p>  select材料編號(hào);</p><p>  from project\倉(cāng)庫(kù)管理系統(tǒng)\data\材料信息.dbf;</p><p>  where 材料編號(hào)=alltrim(thisform.pageframe1.page1.text1.

86、value);</p><p>  into cursor tempcursor</p><p>  &&根據(jù)材料編號(hào)在材料信息表中查找記錄</p><p>  temp 材料編號(hào)=tempcursor.材料編號(hào)</p><p>  if empty(temp 材料編號(hào)) then</p><p>  

87、messagebox(“你要添加的材料在材料庫(kù)中”+chr(13)+chr(10)+”沒(méi)有找到,請(qǐng)先到材料庫(kù)中”+chr(13)+chr(10)+”登記新材料 ”+temp材料編號(hào),0+64,”材料檢測(cè)”)</p><p>  thisform.pageframe1.page1.text2.readonly=.t.</p><p>  thisform.pageframe1.page1.t

88、ext3.readonly=.t.</p><p>  thisform.pageframe1.page1.text4.readonly=.t.</p><p>  thisform.pageframe1.page1.text5.readonly=.t.</p><p>  thisform.pageframe1.page1.edit1.readonly=.t.&l

89、t;/p><p>  &&材料信息表中沒(méi)有該編號(hào)的材料,提示用戶更新材料信息表,并設(shè)置各Text控件為只讀。</p><p><b>  else</b></p><p>  messagebox(“繼續(xù)下面的入庫(kù)信息填寫”,0+64,”材料檢測(cè)”)</p><p>  thisform.pageframe1

90、.page1.text2.readonly=.f.</p><p>  thisform.pageframe1.page1.text3.readonly=.f.</p><p>  thisform.pageframe1.page1.text4.readonly=.f.</p><p>  thisform.pageframe1.page1.text5.readon

91、ly=.f.</p><p>  thisform.pageframe1.page1.edit1.readonly=.f.</p><p><b>  endif</b></p><p>  &&材料編號(hào)正確,允許用戶繼續(xù)輸入。</p><p>  Close tables</p><

92、p>  thisform.pageframe1.page1.refresh</p><p>  當(dāng)進(jìn)行入庫(kù)登記時(shí),用戶首先輸入“入庫(kù)材料編號(hào)”。如果材料信息表中有該材料的信息,且“Txt出入庫(kù)編號(hào)”、“Txt出入庫(kù)日期”、“Txt經(jīng)手人”、“Txt數(shù)量”、“Txt備注”的ReadOnly屬性為.F.,用戶才可以繼續(xù)輸入。如果該材料不在材料信息表中,將提示用戶首先檢查材料信息表。如圖2—12所示,當(dāng)輸入的“入

93、庫(kù)材料編號(hào)”不在材料表中時(shí),提示用戶檢查材料表。</p><p>  圖2—12材料編號(hào)不在材料表中時(shí)的運(yùn)行結(jié)果</p><p>  如果材料編號(hào)正確,用戶可以進(jìn)行“入庫(kù)”操作。</p><p>  單擊“入庫(kù)”按鈕時(shí),根據(jù)用戶的輸入完成入庫(kù)操作并更新入庫(kù)信息表。“入庫(kù)”按鈕的Click事件代碼如下:</p><p>  dimension

94、bbb(7)</p><p><b>  &&定義數(shù)組</b></p><p>  temp 數(shù)量=val(alltrim(thisform.pageframe1.page1.text4.value))</p><p>  bbb(1)= alltrim(thisform.pageframe1.page1.text2.value

95、)</p><p>  bbb(2)= “i”</p><p>  bbb(3)= alltrim(thisform.pageframe1.page1.text1.value)</p><p>  bbb(4)= alltrim(thisform.pageframe1.page1.text3.value)</p><p>  bbb(5)=

96、alltrim(thisform.pageframe1.page1.text4.value)</p><p>  bbb(6)= alltrim(thisform.pageframe1.page1.text5.value)</p><p>  bbb(7)= alltrim(thisform.pageframe1.page1.editt1.value)</p><p&g

97、t;  &&將入庫(kù)信息存儲(chǔ)在數(shù)組中</p><p>  replace 出入庫(kù)信息.出入庫(kù)編號(hào) with bbb(1)</p><p>  replace 出入庫(kù)信息.類型 with bbb(2)</p><p>  replace 出入庫(kù)信息.材料編號(hào) with bbb(3)</p><p>  replace 出入庫(kù)信息.

98、出入庫(kù)日期 with bbb(4)</p><p>  replace 出入庫(kù)信息.數(shù)量 with bbb(5)</p><p>  replace 出入庫(kù)信息.經(jīng)手人 with bbb(6)</p><p>  replace 出入庫(kù)信息.備注 with bbb(7)</p><p>  &&將記錄插入出入庫(kù)信息表中<

99、/p><p><b>  select *;</b></p><p>  from “project\倉(cāng)庫(kù)管理系統(tǒng)\data\材料信息.dbf”;</p><p>  where 材料編號(hào)=alltrim(thisform.pageframe1.page1.text1.value);</p><p>  into curso

100、r tempcursor</p><p>  num1= tempcursor.數(shù)量</p><p>  在材料信息表中按“材料編號(hào)”查找記錄</p><p>  update project\倉(cāng)庫(kù)管理系統(tǒng)\data\材料信息.dbf set;</p><p>  數(shù)量=num1+temp數(shù)量;</p><p>  w

101、here 材料編號(hào)=alltrim(thisform.pageframe1.page1.text1.value);</p><p><b>  &&修改材料信息表</b></p><p>  thisform.pageframe1.page1.text1.value=””</p><p>  thisform.pageframe

102、1.page1.text2.value=””</p><p>  thisform.pageframe1.page1.text3.value=””</p><p>  thisform.pageframe1.page1.text4.value=””</p><p>  thisform.pageframe1.page1.text5.value=””</p>

103、;<p>  thisform.pageframe1.page1.text6.value=””</p><p>  thisform.pageframe1.page1.edit1.value=””</p><p>  &&重置Text Box控件和Edit值</p><p>  thisform.pageframe1.page1.tex

104、t2.readonly=.t.</p><p>  thisform.pageframe1.page1.text3.readonly=.t.</p><p>  thisform.pageframe1.page1.text4.readonly=.t.</p><p>  thisform.pageframe1.page1.text5.readonly=.t.<

105、/p><p>  thisform.pageframe1.page1.edit1.readonly=.t.</p><p>  &&重置控件的ReadOnly屬性</p><p>  thisform.refresh</p><p>  單擊“取消”按鈕時(shí),取消用戶的前一次操作,表單恢復(fù)為初始狀態(tài)。“取消”按鈕的Click事件代碼

106、如下:</p><p>  thisform.pageframe1.page1.text1.value=””</p><p>  thisform.pageframe1.page1.text2.value=””</p><p>  thisform.pageframe1.page1.text3.value=””</p><p>  thisf

107、orm.pageframe1.page1.text4.value=””</p><p>  thisform.pageframe1.page1.text5.value=””</p><p>  thisform.pageframe1.page1.text6.value=””</p><p>  thisform.pageframe1.page1.edit1.valu

108、e=””</p><p>  &&重置Text Box控件和Edit值</p><p>  thisform.pageframe1.page1.text2.readonly=.t.</p><p>  thisform.pageframe1.page1.text3.readonly=.t.</p><p>  thisform

109、.pageframe1.page1.text4.readonly=.t.</p><p>  thisform.pageframe1.page1.text5.readonly=.t.</p><p>  thisform.pageframe1.page1.edit1.readonly=.t.</p><p>  &&重置控件的ReadOnly屬性&l

110、t;/p><p>  thisform. pageframe1.page1.refresh</p><p>  “退出”按鈕的功能是返回主控界面。該按鈕的Click事件代碼如下:</p><p>  do form project\倉(cāng)庫(kù)管理系統(tǒng)\forms\主表單.scx</p><p>  thisform.release</p>

111、<p><b>  3、出庫(kù)管理</b></p><p> ?。?)出庫(kù)管理表單設(shè)計(jì)</p><p>  出庫(kù)管理的頁(yè)面設(shè)計(jì)與入庫(kù)管理的頁(yè)面相似,如圖2—13所示:</p><p>  圖2—13出庫(kù)管理表</p><p>  進(jìn)行出庫(kù)管理時(shí),用戶必須先輸入“出庫(kù)材料編號(hào)”,然后單擊“確定”按鈕。如果該材料編

112、號(hào)在材料信息表中,允許用戶繼續(xù)完成出入庫(kù)信息輸入,否則提示錯(cuò)誤,要求用戶重新輸入材料編號(hào)。</p><p><b> ?。?)添加響應(yīng)代碼</b></p><p>  “確定” 按鈕的Click事件代碼如下:</p><p>  select材料編號(hào);</p><p>  from project\倉(cāng)庫(kù)管理系統(tǒng)\data

113、\材料信息.dbf;</p><p>  where 材料編號(hào)=alltrim(thisform.pageframe1.page2.text1.value);</p><p>  into cursor tempcursor</p><p>  &&根據(jù)材料編號(hào)在材料信息表中查找記錄</p><p>  temp 材料編號(hào)=t

114、empcursor.材料編號(hào)</p><p>  if empty(temp 材料編號(hào)) then</p><p>  messagebox(“你要添加的材料在材料庫(kù)中”+chr(13)+chr(10)+”沒(méi)有找到,請(qǐng)先到材料庫(kù)中”+chr(13)+chr(10)+”登記新材料 ”+temp材料編號(hào),0+64,”材料檢測(cè)”)</p><p><b>  &

115、amp;&提示錯(cuò)誤</b></p><p><b>  else</b></p><p>  thisform.pageframe1.page2.text2.readonly=.f.</p><p>  thisform.pageframe1.page2.text3.readonly=.f.</p><p

116、>  thisform.pageframe1.page2.text4.readonly=.f.</p><p>  thisform.pageframe1.page2.text5.readonly=.f.</p><p>  thisform.pageframe1.page2.edit1.readonly=.f.</p><p><b>  endi

117、f</b></p><p>  &&材料編號(hào)正確,允許用戶繼續(xù)輸入。</p><p>  thisform.pageframe1.page2.refresh</p><p>  出庫(kù)信息輸完后,單擊“出庫(kù)”按鈕,將完成材料的出庫(kù)操作。如果庫(kù)存材料足夠,將出庫(kù)信息加入出入庫(kù)信息表中,并更新相應(yīng)的材料信息表中的記錄。</p>&

118、lt;p>  如果庫(kù)存材料不足,提示用戶出錯(cuò)。要求用戶重新輸入。</p><p>  “出庫(kù)”按鈕的Click事件代碼如下:</p><p>  dimension ccc(7)</p><p><b>  &&定義數(shù)組</b></p><p>  temp 數(shù)量=val(alltrim(thisf

119、orm.pageframe1.page2.text5.value))</p><p>  &&記錄需要出庫(kù)的材料數(shù)量</p><p><b>  select *;</b></p><p>  from “project\倉(cāng)庫(kù)管理系統(tǒng)\data\材料信息.dbf”;</p><p>  where 材料編

120、號(hào)=alltrim(thisform.pageframe1.page2.text1.value);</p><p>  into cursor tempcursor</p><p>  num1= tempcursor.數(shù)量</p><p>  &&記錄原有材料的數(shù)量</p><p>  if (num1-temp數(shù)量)<

121、;0 then</p><p>  messagebox(“出庫(kù)數(shù)量大于庫(kù)存數(shù)量!”,0+64,”入庫(kù)”)</p><p>  thisform.pageframe1.page2.text5.value=’’</p><p>  &&庫(kù)存不足,提示用戶出錯(cuò)</p><p><b>  else</b>&l

122、t;/p><p>  update project\庫(kù)房管理系統(tǒng)\data\材料信息.dbf set;</p><p>  數(shù)量=num1-temp數(shù)量;</p><p>  where 材料編號(hào)=alltrim(thisform.pageframe1.page2.text1.value);</p><p>  &&修改材料數(shù)量信

溫馨提示

  • 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)論