庫存管理系統畢業(yè)設計_第1頁
已閱讀1頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  分類號: TP31 編號:201125502218 </p><p><b>  庫存管理系統</b></p><p>  Storage Management System</p><p>  (

2、申請煙臺大學學士學位論文)</p><p>  申請學位: 工學學士學位 </p><p>  院 系: 計算機學院 </p><p>  專 業(yè): 自動化 </p><p>  學生姓名: </p><p><b>  學 號: </b></

3、p><p><b>  指導老師 </b></p><p>  2011年 6 月 7 日</p><p><b>  申請學士學位論文</b></p><p><b>  庫存管理系統</b></p><p><b>  申請人:</b

4、></p><p><b>  導 師: </b></p><p>  2011年 6 月 7 日</p><p><b>  煙臺大學</b></p><p><b>  附3.</b></p><p>  煙臺大學畢業(yè)論文(設計)任務書&l

5、t;/p><p>  院(系):計算機學院</p><p>  [摘要] 庫存管理系統是物資管理系統的核心,是一個企業(yè)不可缺少的部分,它的內容對于企業(yè)的決策者和管理者來說都至關重要。—直以來人們使用傳統人工的方式管理倉庫,效率低,查找、更新和維護比較困難。尤其在我國由于勞動力相對充足,庫存信息管理仍以人工管理為主。該庫存管理系統以Visual Basic 6.0集成開發(fā)環(huán)境為平臺,外接Acce

6、ss數據庫,擁有采購入庫、存貨查看、銷售出庫、查詢、權限設置等模塊,操作簡單界面友好。利用該庫存管理系統不僅可以輕松管理查看元件、成品、訂單等的相關信息而且可以對產品銷售、倉庫存貨進行分析。對產品銷售、倉庫存貨進行分析是本庫存管理系統的特色所在。元件入庫、元件消耗、成品入庫、發(fā)貨、訂單等信息不僅可以列表查看而且可以生成報表。另外還可以生成柱狀圖查看存貨信息??蛻裟軌蛟诓樵兡K對任意信息進行查詢。查詢信息的輸入通過組合框和文本框完成的,界

7、面簡單明了。系統的采購入庫、存貨查看、銷售出庫、權限設置各對應一個權限。權限設置簡單快捷。</p><p>  [關鍵詞] 庫存管理;存貨分析;Visual Basic 6.0;Access數據庫;</p><p>  Abstract: Storage Management System which is an indispensable part to an enterprise p

8、lays an important role in goods and materials management system. The content of it is of vital importance to decision makers and managers in various enterprises. We used to manage storages manually. Of course, it is low

9、efficient and very difficult to search, update and maintain data. In China, manual management has been the main method to manage storages because of our abundant labor force. Connecting with Acc</p><p>  Key

10、 words: Storage Management System; marketing analyses; Visual Basic 6.0; Access data base </p><p><b>  目 錄</b></p><p><b>  1 緒 論1</b></p><p>  1.1 本課題的

11、研究意義及必要性1</p><p>  1.2 相關領域國內外應用的現狀及發(fā)展趨勢1</p><p><b>  2 系統分析2</b></p><p>  2.1 系統可行性分析2</p><p>  2.2 系統功能介紹2</p><p><b>  3 總體設計3&

12、lt;/b></p><p>  3.1 功能模塊劃分3</p><p>  3.2 系統流程4</p><p>  3.3 系統開發(fā)工具介紹4</p><p>  3.3.1 Visual Basic介紹4</p><p>  3.3.2 Access數據庫介紹5</p><p&g

13、t;<b>  4 詳細設計6</b></p><p>  4.1 各模塊的功能與實現6</p><p>  4.1.1 注冊與登錄模塊6</p><p>  4.1.2 采購入庫模塊8</p><p>  4.1.3 存貨查看模塊9</p><p>  4.1.4 銷售出庫模塊12

14、</p><p>  4.1.5 查詢模塊19</p><p>  4.1.6 權限設置模塊25</p><p>  4.2 系統數據庫的設計26</p><p>  4.2.1 數據庫選擇及理由26</p><p>  4.2.2 數據庫表的結構27</p><p>  5 綜合測

15、試31</p><p>  5.1 系統注冊與登錄模塊測試31</p><p>  5.2 采購入庫模塊測試32</p><p>  5.3 存貨分析測試33</p><p>  5.4 銷售出庫模塊測試34</p><p>  5.5 查詢模塊測試35</p><p>  5.6

16、權限設置模塊測試36</p><p><b>  結 束 語37</b></p><p><b>  致 謝38</b></p><p><b>  參考文獻39</b></p><p>  附錄A 部分代碼40</p><p><b&g

17、t;  1 緒 論</b></p><p>  1.1 本課題的研究意義及必要性</p><p>  庫存管理系統是物資管理系統的核心,是一個企業(yè)不可缺少的部分,它的內容對于企業(yè)的決策者和管理者來說都至關重要?!币詠砣藗兪褂脗鹘y人工的方式管理倉庫,效率低,查找、更新和維護比較困難?,F在,倉庫作業(yè)和庫存管理作業(yè)已多樣化、復雜化,靠人工去處理已十分困難。如果不能保證正確的進貨、

18、驗收及發(fā)貨,就會導致產生過量的庫存,延遲交貨時間,增加經營成本,以致失去客戶。隨著科學技術的不斷提高,計算機科學日漸成熟,庫存管理系統應運而生,其檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等優(yōu)點極大地提高人事勞資管理的效率,其能夠有效地組織人員、空間和設備進行收貨、存儲、揀貨和運輸,組織運送原材料和部件到生產企業(yè),運送成品到批發(fā)商、分銷商和最終客戶手中等強大的功能已為人們所熟知。倉庫管理系統是為企業(yè)的采購、制造計劃

19、、制造執(zhí)行、客戶服務系統與倉庫或配送中心提供的管理手段,滿足企業(yè)對低成本和快速處理的要求,幫助不同行業(yè)的企業(yè)解決復雜的配送問題并且降低訂單履行成本,它已越來越廣泛的應用到各大倉庫,并隨著不斷的完善發(fā)揮著越來越重要的作用。</p><p>  為此,有必要開發(fā)一個信息添加快捷、查找方便、穩(wěn)定性高的庫存管理系統。該庫存管理系統以Visual Basic 6.0集成開發(fā)環(huán)境為平臺,擁有采購入庫、存貨查看、銷售出庫、查詢

20、、權限設置等模塊,操作簡單易學。</p><p>  1.2 相關領域國內外應用的現狀及發(fā)展趨勢</p><p>  庫存管理系統已經在發(fā)達國家廣泛應用,而且應用范圍越來越廣功能越來越全面,操作越來越簡便,成本越來越低廉。目前主要應用于大中小型企業(yè),工廠,物流公司,超市以及一些科研單位。在我國由于勞動力相對充足,企業(yè)對庫存管理系統不夠重視。現在我國的庫存信息管理仍以人工管理為主。</

21、p><p><b>  2 系統分析</b></p><p>  2.1 系統可行性分析</p><p>  首先,系統采用了完全模塊化的總體結構設計,自上而下,逐層求精,將大量過程組合在一個過程文件中,使整個系統程序只包括兩個部分:總控模塊和過程文件。系統結構清晰,并且大大減少了磁盤訪問的頻繁程度,使運行速度加快并且使程序的維護和保存更加簡便。

22、第二,本系統將采用VB制作友好的人機交互頁面。人機交互界面啟動時將要求用戶輸入密碼,保證了庫存信息的保密性。用戶可以在界面上選擇查看各個模塊。對于各原料庫存、原料需求、銷售情況等數據將盡量以圖形的形式給出,方便用戶對比分析。第三,采用數據庫存儲用到的各種數據。用戶可以在人機交互界面上實現對數據庫的操作,方便快捷。通過使用數據庫減少了人力勞動,降低了倉庫管理成本。第四,為方便信息對比、保存,系統設置了信息查看、報表等功能。</p&g

23、t;<p>  2.2 系統功能介紹</p><p>  庫存管理系統作為一種信息管理系統,其基本功能還是信息的錄入和查詢。該庫存管理系統以Visual Basic 6.0集成開發(fā)環(huán)境為平臺設計各種操作界面。由于Visual Basic 6.0只能支持Access97及其以下的版本,本庫存管理系統選擇使用Access97作為后臺數據庫。數據庫分為用戶管理、入庫成品管理、入庫元件管理、訂單管理、發(fā)貨管

24、理、產品所需元件、元件消耗管理七個表。Visual Basic 6.0新增了數據環(huán)境設計器,它與數據報表設計器一起使用能夠實現在VB中輕松創(chuàng)建報表的功能。</p><p><b>  3 總體設計</b></p><p>  3.1 功能模塊劃分</p><p>  本庫存管理系統由注冊與登錄、采購入庫、存貨查看、銷售出庫、查詢、權限設置等六

25、個功能模塊組成,如圖3.1所示。</p><p>  圖3.1 庫存管理系統模塊</p><p>  本庫存管理系統由注冊與登錄、采購入庫、存貨查看、銷售出庫、查詢、權限設置等六個功能模塊組成。系統注冊與登錄模塊為用戶提供簡潔的注冊、登錄界面。注冊之后方可登錄到主界面。采購入庫模塊主要完成成品和元件入庫信息的添加、刪除、編輯等工作,分為成品入庫管理、成品入庫信息查看、元件入庫管理、元件入庫

26、信息查看四個子模塊。存貨查看模塊分為成品存貨查看、元件存貨查看、存貨分析三個子模塊。成品存貨查看和元件存貨查看的功能是顯示元件和成品的當前存貨量,有圖表和柱狀圖兩種顯示方式供用戶選擇。存貨分析部分是該模塊的特色部分。存貨分析可以根據尚未發(fā)貨的訂單數分析當前的成品存貨、元件存貨是否充裕。存貨分析部分的存在使得本庫存管理系統不再是簡單的信息記錄系統。銷售出庫模塊由發(fā)貨信息、訂單信息、元件消耗、產品所需元件、銷銷售分析五個子模塊組成。其中,發(fā)

27、貨管理子模塊又分為發(fā)貨管理和發(fā)貨信息查看兩個子模塊,訂單信息子模塊又分為訂單信息管理、訂單信息查看兩個子模塊,元件消耗子模塊又分為元件消耗管理、元件消耗信息查看兩個子模塊。發(fā)貨信息、訂單信息、元件消耗主要用于對發(fā)貨、訂單、元件消耗信息的錄入、查看。產品所需元件子模塊的功</p><p><b>  3.2 系統流程</b></p><p>  本庫存管理系統的使用流程

28、是:用戶首先在注冊界面上注冊,只有注冊成功的用戶才可以在登陸界面憑用戶名和密碼登錄。登錄之后系統根據用戶具有的權限確定用戶可以使用哪些模塊。對于用戶沒有權限的模塊,系統將以灰色顯示并禁止用戶訪問。具體流程如圖3.2所示。</p><p>  圖3.2 系統流程圖</p><p>  3.3 系統開發(fā)工具介紹</p><p>  3.3.1 Visual Basic介

29、紹</p><p>  Visual Basic(簡稱VB)是美國微軟公司推出的Windows環(huán)境下的軟件開發(fā)工具,它采用面向對象的編程技術,巧妙的把開發(fā)Windows環(huán)境下應用程序的復雜性“封裝”起來,可以既快捷又簡單得開發(fā)Windows應用軟件,并使用事件驅動的編程思想,提高了編寫應用程序時的靈活性和方便性。Visual Basic 6.0的聯機幫助文檔使用Microsoft Visual Studio 6.

30、0統一的MSDN(Microsoft Developer Network)幫助方式。</p><p>  VB6.0是微軟公司Microsoft Visual Studio開發(fā)工具套件中的成員之一,包括三個版本:學習版(Learning)、專業(yè)版(Professional)和企業(yè)版(Enterprise)。</p><p>  本庫存管理系統使用的是Visual Basic 6.0專業(yè)版。

31、專業(yè)版為編程人員提供了一整套功能完備的軟件開發(fā)工具。包括學習班的全部功能,還包括Active X控件、Internet Information Server Application Designer、集成的Visual Database Tools和Data Environment、Active Data Objects和Dynamic HTML Page Designer。</p><p>  3.3.2 Ac

32、cess數據庫介紹</p><p>  Microsoft Office Access是由微軟發(fā)布的關聯式數據庫管理系統,它結合了Microsoft Jet Database Engine和圖形用戶界面兩項特點,是Microsoft Office的成員之一。Access作為一種數據庫管理軟件,是小型企業(yè)的專業(yè)化數據庫設計和開發(fā)工具,它可以完成保存信息、數據計算處理、數據分析處理等功能,與Excel等工具可實現協同

33、工作。</p><p><b>  4 詳細設計</b></p><p>  4.1 各模塊的功能與實現</p><p>  4.1.1 注冊與登錄模塊</p><p>  該模塊的功能是自動記錄用戶申請的用戶名和密碼,并在用戶登錄時進行驗證。當用戶申請的用戶名已經存在時,系統將給出提示“該用戶名已存在”并自動清空申請

34、用戶名的輸入框。在申請密碼部分,系統要求用戶兩次輸入密碼,只有兩次輸入一致才可以成為用戶的密碼。在用戶成功申請用戶名和密碼之后,系統將用戶名和密碼保存在后臺數據庫中的用戶管理表中。用戶憑用戶名和密碼登錄,當密碼錯誤或用戶名不存在時系統將給出提示“輸入密碼錯誤或該用戶名不存在!請重新輸入!”。當連續(xù)三次輸入錯誤時,系統將停止運行強行退出。</p><p>  登錄部分在驗證用戶名和密碼之后,如果用戶名和密碼一致還要

35、繼續(xù)分析用戶的權限。用戶權限可以看成是一個四位數,每一位代表一個權限。這個四位數從高位到低位依次代表采購入庫模塊、存貨查看模塊、銷售出庫模塊、權限設置模塊的權限。“1”表示有權使用該模塊,“0”表示無權使用該模塊。在分析用戶權限之后系統將設置各個模塊的Enable屬性,使之允許訪問或是不允許訪問。系統登錄部分主要代碼如下。</p><p>  Adodc1.Recordset.MoveFirst</p>

36、;<p><b>  i = 0</b></p><p>  While (Not Adodc1.Recordset.EOF)</p><p>  If str = Adodc1.Recordset.Fields("用戶名") And mima = Adodc1.Recordset.Fields("密碼") The

37、n</p><p><b>  i = 1</b></p><p>  quan = Adodc1.Recordset.Fields("權限")</p><p><b>  End If</b></p><p>  Adodc1.Recordset.MoveNext</p&

38、gt;<p><b>  Wend</b></p><p>  If i = 0 Then</p><p>  Label4.Caption = "輸入密碼錯誤或該用戶名不存在!請重新輸入!"</p><p>  cishu = cishu + 1</p><p>  If cishu

39、= 3 Then</p><p>  'Label4.Caption = "您已三次輸入錯誤!"</p><p>  MsgBox "您已三次輸入錯誤!"</p><p><b>  End</b></p><p>  'Unload Me</p>&

40、lt;p><b>  End If</b></p><p><b>  End If</b></p><p>  If i = 1 Then</p><p>  MDIForm1.Show</p><p>  a = quan / 1000 '采購入庫</p

41、><p>  b = (quan / 100) Mod 10 '銷售出庫</p><p>  c = (quan / 10) Mod 10 '存貨查看</p><p>  d = quan Mod 10 '系統設置</p><p><b>  If a Then&l

42、t;/b></p><p>  MDIForm1.mnu采購入庫.Enabled = True</p><p><b>  Else</b></p><p>  MDIForm1.mnu采購入庫.Enabled = False</p><p><b>  End If</b></p>

43、;<p><b>  If b Then</b></p><p>  MDIForm1.mnu銷售出庫.Enabled = True</p><p><b>  Else</b></p><p>  MDIForm1.mnu銷售出庫.Enabled = False</p><p>&l

44、t;b>  End If</b></p><p><b>  If c Then</b></p><p>  MDIForm1.mnu存貨查看.Enabled = True</p><p><b>  Else</b></p><p>  MDIForm1.mnu存貨查看.Enab

45、led = False</p><p><b>  End If</b></p><p><b>  If d Then</b></p><p>  MDIForm1.mnuSet.Enabled = True</p><p><b>  Else</b></p>

46、<p>  MDIForm1.mnuSet.Enabled = False</p><p><b>  End If</b></p><p><b>  Unload Me</b></p><p>  'MDIForm1.Show</p><p><b>  End I

47、f</b></p><p>  用戶注冊界面如圖4.1所示,登錄界面如圖4.2所示。</p><p>  圖4.1 用戶注冊界面</p><p><b>  圖4.2 登錄界面</b></p><p>  4.1.2 采購入庫模塊</p><p>  該模塊的主要功能是完成成品和元件入

48、庫信息的添加、刪除、編輯等工作,分為成品入庫管理、成品入庫信息查看、元件入庫管理、元件入庫信息查看四個子模塊。該模塊的入庫元件管理界面和入庫成品管理界面是在用VB 6.0中的數據窗體設計器自動生成窗體的基礎上調整美化而成。入庫元件信息查看和入庫成品信息查看子模塊使用了ADO數據控件和MSFlexGrid控件。ADO數據訪問方式是現在和未來VB6.0乃至Microsoft的各種應用軟件進行數據訪問的主流。ADO是通過OLE DB所提供的方

49、法對各種數據源進行操作和訪問。ADO是VB數據訪問技術的發(fā)展方向。MSFlexGrid控件能夠顯示包含若干行和列的表格數據。MSFlexGrid控件的優(yōu)點在于它的靈活性,它可以顯示任意列任意行。為了方便用戶查看、保存和打印信息,在次模塊設置了數據報表。數據報表(Data Report)設計器是VB6.0新增加的功能,與數據環(huán)境(Data Environment)設計器配套使用可以完成數據報表的設計和打印功能。入庫元件管理界面、入庫元件信

50、息查看界面、入庫元件數據報表分別如圖4.3、圖4.4和圖4.5所示。</p><p>  圖4.3 入庫元件管理界面</p><p>  圖4.4 入庫元件信息查看界面</p><p>  圖4.5 入庫元件數據報表</p><p>  4.1.3 存貨查看模塊</p><p>  存貨查看模塊分為成品存貨查看、元件存

51、貨查看、存貨分析三個子模塊。成品存貨查看和元件存貨查看的功能是顯示元件和成品的當前存貨量,有圖表和柱狀圖兩種顯示方式。成品存貨查看中的數據由入庫成品管理和發(fā)貨管理兩個表的數據運算得到。例如,要顯示溫升報警器的存貨數量:首先在入庫成品管理中搜索所有溫升報警器的入庫記錄,把每條記錄的數量累加存在一個變量中。然后在發(fā)貨管理中搜索所有溫升報警器的發(fā)貨記錄,從剛才的變量中逐一減去各個發(fā)貨記錄中的數量。最后,變量的值就是庫中溫升報警器的存有量。系統

52、逐一計算出每種成品的庫存量,在MSFlexGrid表格中顯示出來并生成柱狀圖以給用戶更直觀的印象。元件存貨查看是根據入庫元件管理和元件消耗管理兩個表計算元件存貨量的。計算過程與成品存貨量的計算過程類似。該部分的代碼見附錄A。成品存貨查看界面如圖4.6所示。</p><p>  圖4.6(a)成品存貨表格界面</p><p>  圖4.6(b)成品存貨柱狀圖界面</p><

53、;p>  存貨分析子模塊是該模塊的特色部分。存貨分析可以根據尚未發(fā)貨的訂單數分析當前的成品存貨、元件存貨是否充裕。該子模塊分成訂單分析、成品存貨分析、元件存貨分析三個部分。訂單分析部分首先從訂單管理表中搜索出尚未發(fā)貨的訂單并顯示出來。然后系統將根據產品所需元件表中的信息列出每個訂單產品所需的元件及數量,并統計以上訂單一共需要多少元件。成品存貨分析部分搜索訂單中的產品在倉庫中存有多少,如果某種產品的存貨量低于訂貨量系統將給出提示并列

54、出所缺產品需要哪些元件及元件的數量。最后成品存貨分析部分將計算出所缺少的成品一共需要多少元件。元件存貨分析部分將根據成品存貨分析部分最后列出的元件信息搜索這些元件在倉庫中的存貨量,如果某元件的存貨量低于生產訂單所需要的數量系統將給出進貨提示。</p><p>  存貨分析子模塊中最核心的部分是計算庫中不能滿足訂單需求的產品需要哪些元件及其元件的數量。其程序如下所示。</p><p>  A

55、dodc5.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info= False;Data Source=" & App.Path & "\db1.mdb"</p><p>  Adodc5.RecordSource = "產品所需元件"<

56、;/p><p>  Adodc5.Refresh</p><p>  Open "F:\VB文件\ziduan.dat" For Input As #2</p><p>  Input #2, zmax</p><p><b>  Close 2</b></p><p>  zui

57、dayuanjianshu = 0</p><p>  For k = 1 To maxi 'maxi用來表示最大缺貨數</p><p>  biaozhi = 0</p><p>  Adodc5.Recordset.MoveFirst</p><p>  While Not Adodc5.Records

58、et.EOF</p><p>  If quehuo(k) = Adodc5.Recordset.Fields("產品名稱") Then</p><p>  biaozhi = 1 'biaozhi做為是否找到某產品元件信息的標志</p><p>  For j = 0 To zmax</p><p&g

59、t;  str2 = "元件" & j</p><p>  str3 = "數量" & j</p><p>  If IsNumeric(Adodc5.Recordset.Fields(str3)) Then</p><p>  '////////////////////////////////////

60、///////////////////////////////////////////////////////////</p><p>  If zuidayuanjianshu = 0 Then</p><p>  qyj(j) = Adodc5.Recordset.Fields(str2)</p><p>  qyjs(j) = Adodc5.Recordset

61、.Fields(str3) * queshu(k)</p><p>  zuidayuanjianshu = 1</p><p><b>  Else</b></p><p>  mbz = 0 '從第二條記錄開始默認沒有跟前一條一樣的元件,mbz是一個標志</p><p>  For n = 0 To

62、 zuidayuanjianshu</p><p>  If qyj(n) = Adodc5.Recordset.Fields(str2) Then</p><p>  qyjs(n) = qyjs(n) + Adodc5.Recordset.Fields(str3) * queshu(k)</p><p>  'zuidayuanjianshu = zui

63、dayuanjianshu + 1</p><p><b>  mbz = 1</b></p><p><b>  End If</b></p><p><b>  Next n</b></p><p>  If mbz = 0 Then</p><p>

64、;  qyj(zuidayuanjianshu) = Adodc5.Recordset.Fields(str2)</p><p>  qyjs(zuidayuanjianshu) = Adodc5.Recordset.Fields(str3) * queshu(k)</p><p>  zuidayuanjianshu = zuidayuanjianshu + 1</p>&

65、lt;p><b>  End If</b></p><p><b>  End If</b></p><p>  '///////////////////////////////////////////////////////////////////////////////////////////////</p>&l

66、t;p>  Picture5.Print Adodc5.Recordset.Fields(str2) & ":" & Adodc5.Recordset.Fields(str3) & "個"</p><p><b>  End If</b></p><p><b>  Next j</

67、b></p><p><b>  End If</b></p><p>  Adodc5.Recordset.MoveNext</p><p><b>  Wend</b></p><p>  If biaozhi = 0 Then</p><p>  Picture5

68、.Print k & "、" & "暫時還沒有" & quehuo(k) & "的元件信息"</p><p><b>  End If</b></p><p><b>  Next k</b></p><p>  Picture6.

69、Print "以上產品一共需要一下元件:"</p><p>  For k = 0 To zuidayuanjianshu - 1</p><p>  Picture6.Print qyj(k) & ":" & qyjs(k) & "個" '這里求出了所有需要的元件!(除去了成品存貨)

70、</p><p><b>  Next k</b></p><p>  存貨分析子模塊的界面如圖4.7所示。</p><p>  圖4.7 存貨分析界面</p><p>  4.1.4 銷售出庫模塊</p><p>  銷售出庫模塊由發(fā)貨信息、訂單信息、元件消耗、產品所需元件、銷銷售分析五個子模塊

71、組成。其中,發(fā)貨信息子模塊又分為發(fā)貨管理和發(fā)貨信息查看兩個子模塊,訂單信息子模塊又分為訂單信息管理、訂單信息查看兩個子模塊,元件消耗子模塊又分為元件消耗管理、元件消耗信息查看兩個子模塊。發(fā)貨信息、訂單信息、元件消耗主要用于對發(fā)貨、訂單、元件消耗信息的錄入、查看。產品所需元件子模塊的功能是記錄每一種產品需要的元件及數量,該子模塊既可以供用戶編輯、產看又可以為存貨查看模塊中的存貨分析部分提供支持。銷售分析子模塊有總體銷售分析和按產品分析兩個

72、部分。每個部分都以不同顏色的折線顯示過去三年每月的銷售總額并繪制今年過去月份的銷售折線,從而為用戶提供直觀的銷售分析依據。</p><p>  銷售出庫模塊中的發(fā)貨管理、發(fā)貨信息查看、訂單管理和訂單信息查看與前面采購入庫中入庫成品管理和入庫成品信息查看的功能、實現方法類似,不再贅述。產品所需元件子模塊利用數據表存儲產品所需的元件信息,該子模塊可以動態(tài)增加字段。動態(tài)增加字段是該子模塊的核心部分。該表中第一個字段是“

73、產品名稱”,第二個字段是“元件0”,第三個字段是“元件1”,以此類推。程序中把當前最大字段數寫入一個二進制文件中。錄入第一條記錄時把第一條記錄的字段數當做當前最大字段數,以后每記入一個記錄都會從“元件0”開始填寫元件,當元件種類超過最大字段數時,系統就會自動增加一個字段,并把當前的字段數賦給最大字段數。該部分的核心程序如下。</p><p>  Dim zmax As Integer '用來

74、表示最大字段數</p><p>  Dim j As Integer '用來表示當前記錄數</p><p>  Str = "元件"</p><p>  str2 = "數量"</p><p>  j = Adodc1.Recordset.RecordCount</p&

75、gt;<p>  'Adodc1.Recordset.Delete</p><p>  If j = 1 Then</p><p>  sql = "alter table 產品所需元件 add " & Str & i & " varchar(10)"</p><p>  Adod

76、c1.Recordset.ActiveConnection.Execute sql</p><p>  Adodc1.Recordset.Update</p><p>  Adodc1.Recordset.Save</p><p>  sql = "alter table 產品所需元件 add " & str2 & i &

77、 " varchar(10)"</p><p>  Adodc1.Recordset.ActiveConnection.Execute sql</p><p>  Adodc1.Recordset.Update</p><p>  Adodc1.Recordset.Save</p><p>  Adodc1.Refresh

78、</p><p>  Adodc1.Recordset.MoveLast</p><p>  Str = "元件" & i</p><p>  str2 = "數量" & i</p><p>  Adodc1.Recordset.Fields(Str) = Text2.Text</

79、p><p>  Adodc1.Recordset.Fields(str2) = Text3.Text</p><p>  Open "F:\VB文件\ziduan.dat" For Output As #2 '用文件來保存最大字段數</p><p>  Write #2, i</p><p><b&

80、gt;  Close 2</b></p><p>  'Print "文件已建立!"</p><p><b>  i = i + 1</b></p><p><b>  End If</b></p><p>  If j > 1 Then</p&g

81、t;<p>  Open "F:\VB文件\ziduan.dat" For Input As #2</p><p>  Input #2, zmax</p><p><b>  Close 2</b></p><p>  If k <= zmax Then</p><p>  St

82、r = "元件" & k</p><p>  str2 = "數量" & k</p><p>  Adodc1.Recordset.Fields(Str) = Text2.Text</p><p>  Adodc1.Recordset.Fields(str2) = Text3.Text</p>&

83、lt;p><b>  k = k + 1</b></p><p><b>  Else</b></p><p>  Str = "元件" & k</p><p>  str2 = "數量" & k</p><p>  sql = &quo

84、t;alter table 產品所需元件 add " & Str & " varchar(10)"</p><p>  Adodc1.Recordset.ActiveConnection.Execute sql</p><p>  Adodc1.Recordset.Update</p><p>  Adodc1.Reco

85、rdset.Save</p><p>  sql = "alter table 產品所需元件 add " & str2 & " varchar(10)"</p><p>  Adodc1.Recordset.ActiveConnection.Execute sql</p><p>  Adodc1.Record

86、set.Update</p><p>  Adodc1.Recordset.Save</p><p>  Adodc1.Refresh</p><p>  Adodc1.Recordset.MoveLast</p><p>  Adodc1.Recordset.Fields(Str) = Text2.Text</p><p

87、>  Adodc1.Recordset.Fields(str2) = Text3.Text</p><p>  Open "F:\VB文件\ziduan.dat" For Output As #2 '用文件來保存最大字段數</p><p>  Write #2, k</p><p><b>  Close 2<

88、;/b></p><p><b>  k = k + 1</b></p><p><b>  End If</b></p><p>  在產品所需元件子模塊中設計了刪除按鈕,供客戶刪除過時的或錯誤的記錄。該子模塊的界面如圖4.8所示。</p><p>  圖4.8 產品所需元件界面</p

89、><p>  銷售分析子模塊利用VB的繪圖功能以不同顏色繪制過去三年的歷史銷售折線以及今年過去月份的銷售折線。另外還可以根據用戶輸入的產品名稱繪制該產品在過去三年的銷售折線以及今年過去月份的銷售折線。該子模塊的重點在于按月求出銷售總額并繪制折線圖。由于每個月的銷售總額是不定的,無法預知其最大值。所以在繪制銷售折線時把每個月銷售總額中的最大值作為折線圖的最高點,其他月份的銷售額對應的點按照與最大值的比例繪制,然后把相鄰

90、的兩個點用直線連接起來就是銷售折線。在按照用戶輸入的產品名稱繪制折線圖之后,系統還會求出該種產品每個月的歷史銷售最大值和歷史銷售最小值供用戶參考。該部分的核心程序如下。</p><p>  Dim strSQL As String</p><p>  Dim j As Integer</p><p>  Dim i As Integer</p><

91、;p>  Dim maxshu As Integer</p><p>  Dim shu(0 To 3, 1 To 12) As Integer</p><p>  Dim nian As Integer</p><p>  Dim yue As Integer</p><p>  Dim maxyu(1 To 12) As Integ

92、er</p><p>  Dim minyu(1 To 12) As Integer</p><p>  Picture3.Cls</p><p>  Picture4.Cls</p><p>  strSQL = "Select * From 發(fā)貨管理 Where 產品名稱 " & " ='&q

93、uot; & str & "'"</p><p>  Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info= False;Data Source=" & App.Path & "\db1.mdb"<

94、/p><p>  Adodc2.RecordSource = strSQL</p><p>  Adodc2.Refresh</p><p>  If Adodc2.Recordset.RecordCount <> 0 Then</p><p>  Adodc2.Recordset.MoveFirst</p><p

95、>  Label5.Caption = ""</p><p>  nian = Year(Date)</p><p>  For j = 0 To 3</p><p>  If Adodc2.Recordset.RecordCount <> 0 Then</p><p>  Adodc2.Recordse

96、t.MoveFirst</p><p><b>  End If</b></p><p>  While Not Adodc2.Recordset.EOF</p><p>  If Year(Adodc2.Recordset.Fields("出庫時間")) = (nian - j) Then</p><p

97、>  Select Case Month(Adodc2.Recordset.Fields("出庫時間"))</p><p><b>  Case 1</b></p><p>  shu(j, 1) = shu(j, 1) + Adodc2.Recordset.Fields("數量")</p><p>

98、;<b>  Case 2</b></p><p>  shu(j, 2) = shu(j, 2) + Adodc2.Recordset.Fields("數量")</p><p><b>  Case 3</b></p><p>  shu(j, 3) = shu(j, 3) + Adodc2.Reco

99、rdset.Fields("數量")</p><p><b>  Case 4</b></p><p>  shu(j, 4) = shu(j, 4) + Adodc2.Recordset.Fields("數量")</p><p><b>  Case 5</b></p>

100、<p>  shu(j, 5) = shu(j, 5) + Adodc2.Recordset.Fields("數量")</p><p><b>  Case 6</b></p><p>  shu(j, 6) = shu(j, 6) + Adodc2.Recordset.Fields("數量")</p>

101、<p><b>  Case 7</b></p><p>  shu(j, 7) = shu(j, 7) + Adodc2.Recordset.Fields("數量")</p><p><b>  Case 8</b></p><p>  shu(j, 8) = shu(j, 8) + A

102、dodc2.Recordset.Fields("數量")</p><p><b>  Case 9</b></p><p>  shu(j, 9) = shu(j, 9) + Adodc2.Recordset.Fields("數量")</p><p><b>  Case 10</b>

103、;</p><p>  shu(j, 10) = shu(j, 10) + Adodc2.Recordset.Fields("數量")</p><p><b>  Case 11</b></p><p>  shu(j, 11) = shu(j, 11) + Adodc2.Recordset.Fields("數量&

104、quot;)</p><p><b>  Case 12</b></p><p>  shu(j, 12) = shu(j, 12) + Adodc2.Recordset.Fields("數量")</p><p>  End Select</p><p><b>  End If</b

105、></p><p>  Adodc2.Recordset.MoveNext</p><p><b>  Wend</b></p><p><b>  Next j</b></p><p>  For j = 0 To 3</p><p>  For i = 1 To 1

106、2</p><p>  If shu(j, i) > maxshu Then</p><p>  maxshu = shu(j, i)</p><p><b>  End If</b></p><p><b>  Next i</b></p><p><b>

107、  Next j</b></p><p>  'Print maxshu</p><p>  '//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<

108、/p><p><b>  '繪出每年的走勢圖</b></p><p>  Picture3.Line (200, 4500)-(200, 100) '豎軸的長度是4400</p><p>  Picture3.Print "數量(件)"</p><p>  Picture3.

109、Line (200, 4500)-(13500, 4500) '橫軸的長度是11500</p><p>  Picture3.Print "月份"</p><p>  For i = 1 To 12</p><p>  Picture3.CurrentX = 200 + 1000 * i</p><p> 

110、 Picture3.CurrentY = 4500</p><p>  Picture3.Print i & "月"</p><p><b>  Next i</b></p><p>  For j = 0 To 3</p><p>  For i = 1 To 12</p>&

111、lt;p>  If j = 0 Then</p><p>  Picture3.Circle (200 + 1000 * i, 4500 - shu(0, i) / maxshu * 4000), 40, RGB(255, 0, 0)</p><p>  If i < Month(Date) Then</p><p>  Picture3.Line (2

112、00 + 1000 * i, 4500 - shu(0, i) / maxshu * 4000)-(200 + 1000 * (i + 1), 4500 - shu(0, (i + 1)) / maxshu * 4000), RGB(255, 0, 0)</p><p><b>  End If</b></p><p><b>  End If</b&

113、gt;</p><p>  If j = 1 Then</p><p>  Picture3.Circle (200 + 1000 * i, 4500 - shu(1, i) / maxshu * 4000), 40, RGB(0, 255, 0)</p><p>  If i < 12 Then</p><p>  Picture3.

114、Line (200 + 1000 * i, 4500 - shu(1, i) / maxshu * 4000)-(200 + 1000 * (i + 1), 4500 - shu(1, (i + 1)) / maxshu * 4000), RGB(0, 255, 0)</p><p><b>  End If</b></p><p><b>  End If

115、</b></p><p>  If j = 2 Then</p><p>  Picture3.Circle (200 + 1000 * i, 4500 - shu(2, i) / maxshu * 4000), 40, RGB(0, 0, 255)</p><p>  If i < 12 Then</p><p>  Pi

116、cture3.Line (200 + 1000 * i, 4500 - shu(2, i) / maxshu * 4000)-(200 + 1000 * (i + 1), 4500 - shu(2, (i + 1)) / maxshu * 4000), RGB(0, 0, 255)</p><p><b>  End If</b></p><p><b> 

117、 End If</b></p><p>  If j = 3 Then</p><p>  Picture3.Circle (200 + 1000 * i, 4500 - shu(3, i) / maxshu * 4000), 40, RGB(0, 0, 0)</p><p>  If i < 12 Then</p><p>

118、;  Picture3.Line (200 + 1000 * i, 4500 - shu(3, i) / maxshu * 4000)-(200 + 1000 * (i + 1), 4500 - shu(3, (i + 1)) / maxshu * 4000), RGB(0, 0, 0)</p><p><b>  End If</b></p><p><b&g

119、t;  End If</b></p><p>  Picture3.CurrentX = 200 + 1000 * i</p><p>  Picture3.CurrentY = 4500 - shu(j, i) / maxshu * 4000 - 150</p><p>  If shu(j, i) <> 0 Then</p>

120、<p>  Picture3.Print shu(j, i)</p><p><b>  End If</b></p><p><b>  Next i</b></p><p><b>  Next j</b></p><p>  '////////////

121、///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</p><p>  yue = Month(Date)</p><p>  Label4.Caption = nian & "

122、年" & yue & "月以后銷售分析"</p><p>  Picture4.CurrentX = 0</p><p>  Picture4.CurrentY = 500</p><p>  For i = yue To 12</p><p>  For j = 1 To 3</p>

123、<p>  If j = 1 Then</p><p>  maxyu(i) = shu(1, i)</p><p>  minyu(i) = shu(1, i)</p><p><b>  End If</b></p><p>  If shu(j, i) > maxyu(i) Then</p

124、><p>  maxyu(i) = shu(j, i)</p><p><b>  End If</b></p><p>  If shu(j, i) < minyu(i) Then</p><p>  minyu(i) = shu(j, i)</p><p><b>  End If

溫馨提示

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

評論

0/150

提交評論