版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 題 目:藥品庫房管理系統(tǒng)</p><p><b> 摘 要</b></p><p> 在藥店里,藥品庫房管理是一項非常重要的工作,使用人工方式管理各項品信息不僅效率低下,而且容易出錯、安全性很差。并且在實際操作中,數(shù)據(jù)的查找和維護都不容易實現(xiàn)。藥品庫房管理系統(tǒng),就是為了解決這些問題而設(shè)計的。其目的是實現(xiàn)藥品信息管理和出入庫記錄的快速高
2、效檢索,使操作簡單安全,提高工作效率和質(zhì)量。本系統(tǒng)的主要功能是完成品庫房管理的日常工作,包括材料的入庫、出庫以及庫存材料信息的管理維護等。</p><p><b> 目 錄</b></p><p> 第一章 技術(shù)背景和分析……………………………………………………….1</p><p> 第二章 系統(tǒng)實施……………………...…………
3、….……………………………..1</p><p> 2.1 系統(tǒng)設(shè)計……………………………………………………………………….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ù)庫設(shè)計…………………………………………………………………….4</p><p> 2.2.1數(shù)據(jù)庫需求分析………………………………………………………….4<
5、/p><p> 2.2.2數(shù)據(jù)庫邏輯設(shè)計………………………………………………………….4</p><p> 2.2.3數(shù)據(jù)庫實現(xiàn)……………………………………………………………….5</p><p> 2.3表單設(shè)計……………………………………………………………………….7</p><p> 2.3.1材料信息維護表單……………………………
6、………………………….7</p><p> 2.3.2材料信息查詢表單…………………………………………….………..14</p><p> 2.3.3出入庫管理表單…………………………………………….…………..15</p><p> 2.3.4用戶向?qū)е谱鲌蟊怼?…………23</p><p> 2.3
7、.5主表單設(shè)計…………………………………………….…………………25</p><p> 2.4主控程序設(shè)計…………………………………………….……………………26</p><p> 第三章 問題討論……………………………..…………….………………….….27</p><p> 3.1系統(tǒng)功能設(shè)計的不完善……………………………………………….………27<
8、/p><p> 3.2代碼維護…………………………………………….…………………………27</p><p> 3.3數(shù)據(jù)維護…………………………………………….…………………………27</p><p> 3.3.1數(shù)據(jù)庫的安全問題…………………………………………….………….27</p><p> 3.3.2數(shù)據(jù)的安全問題……………………
9、……………………….…………….27</p><p> 第四章 總結(jié)………………………………………………………………………..28</p><p> 4.1論文總結(jié) ………………………………………………………………………28</p><p> 4.2工作展望 ………………………………………………………………………28</p><p>
10、 參考文獻 ……………………………………………………………………………29 </p><p> 致謝……………………………………………………………………………………30</p><p> 第一章 技術(shù)背景和分析</p><p> Visual FoxPro是為數(shù)據(jù)庫結(jié)構(gòu)和應(yīng)用程序開發(fā)而設(shè)計的功能強大的面向?qū)ο蟮能浖?。無論是組織信息、運行查詢、創(chuàng)建集成的關(guān)系
11、型數(shù)據(jù)庫系統(tǒng),還是為最終用戶編寫功能全面的數(shù)據(jù)管理應(yīng)用程序,Visual FoxPro都可以提管理數(shù)據(jù)所需的工具,可以在應(yīng)用程序或數(shù)據(jù)庫開發(fā)的任何一個領(lǐng)域中提供幫助。本系統(tǒng)使用Visual FoxPro來設(shè)計開發(fā)的原因是Visual FoxPro具有三大特點。</p><p><b> 一、強大的管理功能</b></p><p> VFP提了一種稱為“項目管理器”
12、(program manager)的管理工具,可供用戶對所開發(fā)項目中的數(shù)據(jù)、文檔、源代碼和類庫(class library)等資源進行集中高效的管理,開發(fā)與維護均更加方便。</p><p> 二、大量使用可視化的界面操作工具</p><p> VFP 6.0提供向?qū)?wizard)、 設(shè)計器(designer)、生成器(builder)等3類界面操作工具,達40種之多。它們普遍采用圖形
13、界面,能幫助用戶簡便快捷地完成各種查詢和設(shè)計任務(wù)。VFP的設(shè)計器普遍配有工具欄和彈出式的快捷菜單。每個工具按鈕對應(yīng)一項功能;用戶可通過它們方便地完成操作或設(shè)計控件,不必編程或很少編程即可實現(xiàn)美觀實用的應(yīng)用程序界面。大多數(shù)設(shè)計器還提快捷菜單,內(nèi)含最常用的菜單選項,供用戶隨時調(diào)用。</p><p> 三、支持面向?qū)ο蟮某绦蛟O(shè)計</p><p> VFP除繼續(xù)使用傳統(tǒng)的面向過程的程序設(shè)計外,
14、還支持面向?qū)ο蟮某绦蛟O(shè)計。允許用戶對“對象”(object)和“類”(class)進行定義,并編寫相應(yīng)的代碼。由于VFP預(yù)先定義和提供了一批基類,用戶可以在基類的基礎(chǔ)上定義自己的類和子類(subclass),從而利用類的繼承性(inheritance),減少編程的工作量,加快軟件的開發(fā)過程。使用結(jié)構(gòu)化的程序設(shè)計,同時應(yīng)用面向?qū)ο蟮某绦蛟O(shè)計,構(gòu)成了VFP程序設(shè)計的特點,同時為用戶的編程帶來了很大的方便。</p><p&
15、gt;<b> 第二章 系統(tǒng)實施</b></p><p><b> 2.1系統(tǒng)設(shè)計</b></p><p> 本系統(tǒng)設(shè)計包括兩個部分:系統(tǒng)分析和系統(tǒng)功能模塊設(shè)計。</p><p><b> 2.1.1系統(tǒng)分析</b></p><p> 2.1.1.1用戶需求分析<
16、;/p><p> 某藥店根據(jù)業(yè)務(wù)發(fā)展的要求,選定建立一個“藥品庫房管理系統(tǒng)”,以取代人工管理。開發(fā)目的如下:</p><p> l、必須要指定的專門人員才能對藥品倉庫的日常事務(wù)進行管理。</p><p> 2、能夠?qū)λ幤穾旆績?nèi)的有關(guān)各種藥品材料的數(shù)據(jù)進行輸入、修改與查詢。</p><p> 3、當(dāng)有藥品入庫或出庫時,能夠更新藥品的數(shù)據(jù)進行
17、輸入、修改與查詢。</p><p> 4、要求有專門的報表存儲藥品材料的出入庫信息,能夠打印報表。</p><p> 2.1.1.2 系統(tǒng)可行性分析</p><p> 1、四項基本內(nèi)容的實現(xiàn)</p><p> 用戶在該藥品庫房管理系統(tǒng)中需要的四項基本內(nèi)容完全可以利用VFP進行的相關(guān)設(shè)置(主要是表單設(shè)置)來加以實現(xiàn)。例如可以用VFP進行
18、登錄界面設(shè)計,在表單上添加命令按鈕以實現(xiàn)對用戶身份的驗證,達到用戶要求的“必須要指定的專門人才對藥品倉庫的日常事務(wù)進行管理”的目的。</p><p><b> 2、數(shù)據(jù)庫分析</b></p><p> 藥店中所有藥品材料的信息都可以在VFP項目管理器的數(shù)據(jù)庫中建立與維護。該藥品倉庫管理系統(tǒng)查詢藥品信息只需要兩張數(shù)據(jù)表(即材料信息表和出入庫信息表)就可以滿足需求。&
19、lt;/p><p> 3、系統(tǒng)的發(fā)布及其運行環(huán)境。</p><p> ?。?)系統(tǒng)的發(fā)布:VFP項目管理器提供了一個管理應(yīng)用系統(tǒng)的集成環(huán)境,而且VFP提供的安裝向?qū)ВС钟脩魹樗_發(fā)的項目創(chuàng)建一套“安裝(磁)盤”,供系統(tǒng)發(fā)布使用。</p><p> ?。?)系統(tǒng)的運行環(huán)境:操作系統(tǒng)Windows9x系列、用戶自定義安裝需要85MB硬盤空間,完全安裝需要90MB硬盤空間
20、,內(nèi)存要求16MB以上。推薦使用VGA或更高分辨率的顯示器。</p><p> 2.1.2 系統(tǒng)功能模塊劃分</p><p> 根據(jù)以上分析,可以進行系統(tǒng)的功能模塊劃分,如圖2—1所示: </p><p> 圖2—1系統(tǒng)功能模塊</p><p> 功能模塊劃分圖中各個模塊的功能如下:</p><p><b
21、> 1、登錄界面</b></p><p> 通過輸入管理員的用戶名和密碼進入系統(tǒng)。</p><p><b> 2、主表單</b></p><p> 用戶可以在主表單上根據(jù)需要進行選擇以實現(xiàn)各種不同的操作。</p><p> 3、庫存材料信息的維護</p><p> 新
22、材料入庫時,系統(tǒng)允許管理員添加新材料的記錄。材料出庫或產(chǎn)品過期需要清除時,管理員可以刪除產(chǎn)品信息。記錄有誤時管理員可以修改數(shù)據(jù)表中的記錄。</p><p> 4、庫存材料信息的查詢</p><p> 信息查詢是倉庫管理系統(tǒng)的重要組成部分。用戶可以按照材料編號和材料名稱等查詢條件查詢倉庫中的材料信息。</p><p> 5、材料的入庫、出庫</p>
23、<p> 新產(chǎn)品或材料需要出入庫時,管理員可以直接進行出入庫操作;出入庫操作后,程序自動修改庫存材料的信息。</p><p><b> 6、報表打印功能</b></p><p> 可以打印庫存表,出入庫記錄的報表。</p><p><b> 2.2 數(shù)據(jù)庫設(shè)計</b></p><p&
24、gt; 2.2.1數(shù)據(jù)庫需求分析</p><p> 根據(jù)上一節(jié)的系統(tǒng)分析,本系統(tǒng)主要是實現(xiàn)倉庫藥品信息和出入庫信息的管理。因此,該藥品倉庫管理系統(tǒng)的數(shù)據(jù)關(guān)系比較簡單,只需要兩張數(shù)據(jù)表:材料信息表和出入庫記錄信息表。</p><p> 2.2.2 數(shù)據(jù)庫邏輯設(shè)計</p><p> 本系統(tǒng)中需要兩個數(shù)據(jù)表:材料信息表和出入庫信息表,數(shù)據(jù)表的字段和結(jié)構(gòu)如表1和表2
25、所示:</p><p><b> 表1材料信息表</b></p><p><b> 表2出入庫信息表</b></p><p> 2.2.3 數(shù)據(jù)庫實現(xiàn)</p><p> 本系統(tǒng)開發(fā)中,首先創(chuàng)建庫房管理系統(tǒng)的數(shù)據(jù)庫,然后在數(shù)據(jù)庫中創(chuàng)建需要的數(shù)據(jù)表,為數(shù)據(jù)表添加記錄。如果需要,還可以設(shè)計視圖和存
26、儲過程以及觸發(fā)器等。下面設(shè)計本系統(tǒng)數(shù)據(jù)庫,詳細步驟如下:</p><p> 1、創(chuàng)建項目文件“庫房管理.pjx”,保存路徑為project\庫房管理系統(tǒng)。</p><p> 2、在該項目中新建數(shù)據(jù)庫“倉庫管理”,保存路徑為project\倉庫管理系統(tǒng)\data。</p><p> 3、在數(shù)據(jù)庫中新建材料信息表,保存路徑為project\倉庫管理系統(tǒng)\data\
27、材料信息.dbf。</p><p> 在Table Designer的Fields選項卡中根據(jù)表1的內(nèi)容設(shè)置數(shù)據(jù)表的字段及其屬性,如2—2圖所示:</p><p> 圖2—2 “材料信息”表的字段設(shè)置</p><p> 切換到Indexes選項卡,設(shè)置表索引。如圖2—3所示。將“材料編號”設(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> 出入庫信息的創(chuàng)建方法與材料信息表相似,保存路徑也與材料信息表相同。表的字段設(shè)置和索引分別如圖2—4、圖2—5所示:</p><p> 圖2—4 “出入庫信息”表的字段設(shè)置</p><p> 圖2—5 “出入庫信息”表的索引設(shè)置</p><p> 表建立完成后,打開Database Designer,創(chuàng)建數(shù)據(jù)
30、表之間的關(guān)聯(lián)關(guān)系。其結(jié)果如圖2—6所示。其中,材料信息表和出入庫信息表之間通過索引“材料編號”相關(guān)聯(lián)。</p><p> 圖2—6 數(shù)據(jù)表的關(guān)聯(lián)關(guān)系</p><p> 至此,數(shù)據(jù)庫和數(shù)據(jù)表的設(shè)計完成。下面進入庫房管理系統(tǒng)的表單設(shè)計。</p><p><b> 2.3 表單設(shè)計</b></p><p> 本系統(tǒng)主要
31、功能模塊的實現(xiàn)由4個表單完成,分別是:材料信息維護表單、材料信息查詢表單、出入庫管理表單和用于選擇操作類型的主界面。</p><p> 2.3.1 材料信息維護表單</p><p> 材料信息維護表單的功能主要是完成材料信息的添加、修改和刪除等操作。</p><p> 1、材料信息維護表單設(shè)計</p><p> 在項目中新建表單,保存
32、路徑為“project\倉庫管理系統(tǒng)\forms\材料信息.scx”,在表單的Data Environment中添加“材料信息”表。在表單上添加控件并設(shè)置控件的屬性,得到如圖2—7所示的表單。</p><p> 圖2—7材料信息維護表單</p><p> 整個“材料信息維護”表單分為3部分,最上面的一部分是在一個Container控件中顯示當(dāng)前材料記錄的信息,如材料編號、材料名稱、規(guī)格
33、、單位和單價等。中間是4個命令按鈕分別表示第一條記錄、上一條記錄、下一條記錄、和最后一條記錄。下面是維護操作功能按鈕,包括添加、修改、刪除、保存和退出5種功能按鈕。</p><p><b> 2、添加響應(yīng)代碼</b></p><p> 下面為表單添加響應(yīng)代碼,實現(xiàn)上述各項功能。</p><p> “首記錄”按鈕。單擊按鈕時,顯示“材料信息
34、”表的第一記錄。即表中第一條記錄被設(shè)為當(dāng)前記錄。該按鈕的Click事件代碼如下:</p><p><b> Go top</b></p><p> Thisform.Refresh</p><p> “末記錄”按鈕。單擊按鈕時,顯示“材料信息”表的最后一條記錄,即表中最后一條記錄被設(shè)置為當(dāng)前記錄。該按鈕的Click事件代碼如下:</
35、p><p><b> Go bottom</b></p><p> Thisform.Refresh</p><p> “上一條”按鈕。單擊按鈕時,顯示當(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> “下一條”按鈕。單擊按鈕時,顯示當(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> “添加”按鈕。單擊按鈕時,完成材料添加功能,在材料信息表中加入一條新記錄。該按鈕的Click事件代碼如下:</p><p><b> go bottom</b></p><p> tempnum=val(材料信息.材料編號)</p><p>
44、 &&獲取最后一條記錄的材料編號字段</p><p> append blank</p><p><b> go bottom</b></p><p> replace 材料信息.材料編號 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),在添加新記錄的過程中,為防止出錯,應(yīng)設(shè)置除“保存”按鈕之外的其他按鈕為無效。這樣,在輸入完成后,只能使用“保存”按鈕來保存記錄。</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> “修改”按鈕。單擊按鈕時,修改當(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> “刪除”按鈕。單擊按鈕時,刪除表中當(dāng)前記錄。該按鈕的Click事件代碼如下:</p><p> tempstr=messagebox(“是否刪除記錄?”,4+32+256,”刪除對話框”)</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(獨占方式),然后用Delete語句為當(dāng)前記錄加上刪除標記,最后使用Pack語句刪除有標記的記錄。</p><p> “保存”按鈕。單擊按鈕時,將表單中用戶輸入的信息保存到“材料信息”表。該按鈕的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> &&將表單中的輸入值存儲到數(shù)組中</p><p> replace 材料信息.材料編號 with aaa(1)</p><p> replace 材料信息.規(guī)格 with aaa(2)</p><p> repl
61、ace 材料信息.單價 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、表單初始化時“保存”按鈕應(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è)計完成后,運行表單。如圖2—8所示:</p><p> 圖2—8材料信息維護表單的運行結(jié)果</p><p>
71、2.3.2材料信息查詢表單</p><p> 材料信息查詢表單的功能是實現(xiàn)材料信息的快速檢索。當(dāng)用戶輸入材料編號或名稱后,可快速檢索出所有符合條件的材料記錄。</p><p> 1、材料信息查詢表單設(shè)計</p><p> 新建表單“材料信息查詢”,保存路徑為“\project\庫房管理系統(tǒng)\forms\材料信息查詢.scx”,在表單的Data Environm
72、ent中添加“材料信息表”。在表單上添加控件并設(shè)置相應(yīng)的屬性,得到如圖2—9所示的表單。</p><p> 圖2—9材料信息查詢表單</p><p> 在表單上添加了一個Grid控件,用來顯示查詢的結(jié)果,將Grid的Readonly屬性設(shè)置為.t.。并且通過一個Combo下拉框控件來實現(xiàn)多依據(jù)的查詢,本系統(tǒng)中根據(jù)材料編號和材料名稱實現(xiàn)名稱查詢,將Combo的Readonly屬性設(shè)置為.
73、t.。</p><p><b> 2、添加響應(yīng)代碼</b></p><p> Combo用于選擇查詢依據(jù)。此處用戶分別選擇“材料編號”或“材料名稱”進行查詢。因此,在表單初始化時,要為Combo Box控件輸入初始值。為存儲查詢結(jié)果,還要定義一個在表單運行過程中有效的Cursor公共變量。因此,為表單的Init事件添加如下代碼:</p><p&
74、gt; Public tempcursor</p><p> Thisform.Combo1.additem(“材料編號”)</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=”材料編號”</p><p><b> select *;</b></p><p> from \project\庫房管理系統(tǒng)\
76、data\材料信息.dbf;</p><p> where 材料編號=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> &&按照材料編號查詢</p><p> if thisform.Combol,text=“材料名稱”</p><p><b> select *;</b></p><p>
78、from \project\倉庫管理系統(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、運行表單</b></p><p> 設(shè)計完成后,運行表單,結(jié)果如圖2—10所示:</p>&
80、lt;p> 圖2—10材料信息查詢表單的運行結(jié)果</p><p> 2.3.3出入庫管理表單</p><p> 出入庫管理表單實現(xiàn)的功能是記錄材料的出入庫信息,并修改相應(yīng)材料信息表。</p><p> 1、出入庫管理表單設(shè)計</p><p> 出庫和入庫的功能、結(jié)構(gòu)都比較相似,因而這里用一個表單來實現(xiàn)它們。表單中使用PageF
81、rame控件,分兩個頁面分別實現(xiàn)入庫和出庫的功能。</p><p> 新建表單“出入庫管理”,保存路徑為“\project\倉庫管理系統(tǒng)\forms\出入庫管理.scx”。</p><p> 在表單的Data Environment中添加“出入庫信息”數(shù)據(jù)表。</p><p> 該表單使用了一個PageFrame控件Pageframe1,將Pageframe的
82、PageCount屬性值設(shè)置為2,即PageFrame設(shè)置為兩頁,分別用于“入庫”管理和“出庫”管理。將Page1的標題設(shè)為“入庫管理”;將Page2的標題設(shè)為“出庫管理”。</p><p><b> 2、入庫管理</b></p><p> ?。?)入庫管理表單設(shè)計</p><p> 在表單的PageFrame控件單擊鼠標右鍵,在彈出的菜單
83、中選取Edit命令,使其處于編輯狀態(tài)。切換到Page1頁面,添加所需控件并設(shè)置其相應(yīng)屬性,界面如圖2—11所示。</p><p> 圖2—11入庫管理表單</p><p> 在Page1上添加的控件類型有Label、Text、Command Button、Container和Edit Box。</p><p> Edit Box控件和Text Box控件類似,
84、不同之處在于Edit Box控件可以對多行字符串進行編輯,并且有垂直滾動條,通常用來顯示或設(shè)置備注字段。下面首先介紹Edit Box控件特有的屬性。如表3所示:</p><p> 表3 Edit Box控件的常用屬性</p><p> Edit Box控件具有的與Text Box控件一樣的屬性,這里不再贅述。</p><p><b> ?。?)添加響應(yīng)
85、代碼</b></p><p> “確定” 按鈕的Click事件代碼如下:</p><p> select材料編號;</p><p> from project\倉庫管理系統(tǒng)\data\材料信息.dbf;</p><p> where 材料編號=alltrim(thisform.pageframe1.page1.text1.
86、value);</p><p> into cursor tempcursor</p><p> &&根據(jù)材料編號在材料信息表中查找記錄</p><p> temp 材料編號=tempcursor.材料編號</p><p> if empty(temp 材料編號) then</p><p>
87、messagebox(“你要添加的材料在材料庫中”+chr(13)+chr(10)+”沒有找到,請先到材料庫中”+chr(13)+chr(10)+”登記新材料 ”+temp材料編號,0+64,”材料檢測”)</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> &&材料信息表中沒有該編號的材料,提示用戶更新材料信息表,并設(shè)置各Text控件為只讀。</p><p><b> else</b></p><p> messagebox(“繼續(xù)下面的入庫信息填寫”,0+64,”材料檢測”)</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> &&材料編號正確,允許用戶繼續(xù)輸入。</p><p> Close tables</p><
92、p> thisform.pageframe1.page1.refresh</p><p> 當(dāng)進行入庫登記時,用戶首先輸入“入庫材料編號”。如果材料信息表中有該材料的信息,且“Txt出入庫編號”、“Txt出入庫日期”、“Txt經(jīng)手人”、“Txt數(shù)量”、“Txt備注”的ReadOnly屬性為.F.,用戶才可以繼續(xù)輸入。如果該材料不在材料信息表中,將提示用戶首先檢查材料信息表。如圖2—12所示,當(dāng)輸入的“入
93、庫材料編號”不在材料表中時,提示用戶檢查材料表。</p><p> 圖2—12材料編號不在材料表中時的運行結(jié)果</p><p> 如果材料編號正確,用戶可以進行“入庫”操作。</p><p> 單擊“入庫”按鈕時,根據(jù)用戶的輸入完成入庫操作并更新入庫信息表?!叭霂臁卑粹o的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; &&將入庫信息存儲在數(shù)組中</p><p> replace 出入庫信息.出入庫編號 with bbb(1)</p><p> replace 出入庫信息.類型 with bbb(2)</p><p> replace 出入庫信息.材料編號 with bbb(3)</p><p> replace 出入庫信息.
98、出入庫日期 with bbb(4)</p><p> replace 出入庫信息.數(shù)量 with bbb(5)</p><p> replace 出入庫信息.經(jīng)手人 with bbb(6)</p><p> replace 出入庫信息.備注 with bbb(7)</p><p> &&將記錄插入出入庫信息表中<
99、/p><p><b> select *;</b></p><p> from “project\倉庫管理系統(tǒng)\data\材料信息.dbf”;</p><p> where 材料編號=alltrim(thisform.pageframe1.page1.text1.value);</p><p> into curso
100、r tempcursor</p><p> num1= tempcursor.數(shù)量</p><p> 在材料信息表中按“材料編號”查找記錄</p><p> update project\倉庫管理系統(tǒng)\data\材料信息.dbf set;</p><p> 數(shù)量=num1+temp數(shù)量;</p><p> w
101、here 材料編號=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> 單擊“取消”按鈕時,取消用戶的前一次操作,表單恢復(fù)為初始狀態(tài)?!叭∠卑粹o的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\倉庫管理系統(tǒng)\forms\主表單.scx</p><p> thisform.release</p>
111、<p><b> 3、出庫管理</b></p><p> ?。?)出庫管理表單設(shè)計</p><p> 出庫管理的頁面設(shè)計與入庫管理的頁面相似,如圖2—13所示:</p><p> 圖2—13出庫管理表</p><p> 進行出庫管理時,用戶必須先輸入“出庫材料編號”,然后單擊“確定”按鈕。如果該材料編
112、號在材料信息表中,允許用戶繼續(xù)完成出入庫信息輸入,否則提示錯誤,要求用戶重新輸入材料編號。</p><p><b> ?。?)添加響應(yīng)代碼</b></p><p> “確定” 按鈕的Click事件代碼如下:</p><p> select材料編號;</p><p> from project\倉庫管理系統(tǒng)\data
113、\材料信息.dbf;</p><p> where 材料編號=alltrim(thisform.pageframe1.page2.text1.value);</p><p> into cursor tempcursor</p><p> &&根據(jù)材料編號在材料信息表中查找記錄</p><p> temp 材料編號=t
114、empcursor.材料編號</p><p> if empty(temp 材料編號) then</p><p> messagebox(“你要添加的材料在材料庫中”+chr(13)+chr(10)+”沒有找到,請先到材料庫中”+chr(13)+chr(10)+”登記新材料 ”+temp材料編號,0+64,”材料檢測”)</p><p><b> &
115、amp;&提示錯誤</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> &&材料編號正確,允許用戶繼續(xù)輸入。</p><p> thisform.pageframe1.page2.refresh</p><p> 出庫信息輸完后,單擊“出庫”按鈕,將完成材料的出庫操作。如果庫存材料足夠,將出庫信息加入出入庫信息表中,并更新相應(yīng)的材料信息表中的記錄。</p>&
118、lt;p> 如果庫存材料不足,提示用戶出錯。要求用戶重新輸入。</p><p> “出庫”按鈕的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> &&記錄需要出庫的材料數(shù)量</p><p><b> select *;</b></p><p> from “project\倉庫管理系統(tǒng)\data\材料信息.dbf”;</p><p> where 材料編
120、號=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(“出庫數(shù)量大于庫存數(shù)量!”,0+64,”入庫”)</p><p> thisform.pageframe1.page2.text5.value=’’</p><p> &&庫存不足,提示用戶出錯</p><p><b> else</b>&l
122、t;/p><p> update project\庫房管理系統(tǒng)\data\材料信息.dbf set;</p><p> 數(shù)量=num1-temp數(shù)量;</p><p> where 材料編號=alltrim(thisform.pageframe1.page2.text1.value);</p><p> &&修改材料數(shù)量信
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 庫房管理系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----藥品庫房管理系統(tǒng)
- 畢業(yè)設(shè)計(論文)-vfp庫房管理信息系統(tǒng)的設(shè)計
- 藥品庫房管理系統(tǒng).doc
- 藥品庫房管理系統(tǒng).pdf
- 機房管理系統(tǒng)畢業(yè)設(shè)計
- 庫房管理規(guī)定
- 醫(yī)院藥品庫房管理系統(tǒng).doc
- 庫房管理制度 庫房管理制度樣本
- 畢業(yè)設(shè)計---賓館客房管理系統(tǒng)
- 畢業(yè)設(shè)計--賓館客房管理系統(tǒng)
- 客房管理系統(tǒng)畢業(yè)設(shè)計 (2)
- 畢業(yè)設(shè)計---vb藥房管理系統(tǒng)設(shè)計
- 庫房管理辦法
- 庫房管理辦法
- 消防庫房管理流程
- 畢業(yè)設(shè)計---賓館客房管理系統(tǒng)的設(shè)計
- 庫房管理制度
- 庫房管理制度
- 產(chǎn)品庫房管理規(guī)定
評論
0/150
提交評論