基于c#進銷存管理系統(tǒng)[畢業(yè)論文]0_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  本科畢業(yè)設計(論文)</p><p><b>  ( 屆)</b></p><p>  論文題目基于C#與IDEF0的進銷存管理系統(tǒng)</p><p>  所在學院 </p><p>  專業(yè)班級 信息管理與信息系統(tǒng) &l

2、t;/p><p>  學生姓名 學號 </p><p>  指導教師 職稱 </p><p>  完成日期 年 月 日</p><p>  基于C#與IDEF0的進銷存管理系統(tǒng)研究</p><p&g

3、t;  摘要:隨著經濟的高速發(fā)展,企業(yè)的信息化工作也在如火如荼地進行,由于企業(yè)規(guī)模的不斷擴大以及商務往來的日益增多,企業(yè)對進銷存信息的掌握和使用也越來越多,以前原始的手工操作方式不能適應企業(yè)快速發(fā)展的需要,由此,提出了本研究課題。在研究中,在IDEF0建?;A上,結合進銷存業(yè)務流程,以軟件工程的思想作為指導,對系統(tǒng)的實現進行了研究,最后開發(fā)出一個進銷存管理系統(tǒng)。此系統(tǒng)經初步檢驗,可以迅速提高企業(yè)的業(yè)務效率,節(jié)省人力資源,提高管理水平,從

4、而降低企業(yè)的管理成本。</p><p>  關鍵詞:進銷存,C#,IDEF0,管理系統(tǒng)</p><p>  Invoicing Management System based on C# and IDEF0</p><p>  Abstract :With the rapid economic development, enterprise information

5、technology is also working quickly, due to the continuous expansion of business scale and the increasing number of business contacts, business-to-Invoicing and the use of information to grasp more and more, before the or

6、iginal manual mode of operation can not meet the needs of rapid development of enterprises, which is proposed in this research topic. In the study, lied to the IDEF0 modeling foundation, combined with Invoicing</p>

7、<p>  Key Words: Invoicing,C#,IDEF0, Management System</p><p><b>  目錄</b></p><p><b>  1 引言1</b></p><p>  1.1 問題的提出1</p><p>  1.2 研究意

8、義1</p><p><b>  2 系統(tǒng)分析2</b></p><p>  2.1 系統(tǒng)需求分析2</p><p>  2.2 可行性分析3</p><p>  3 相關技術介紹及分析3</p><p>  3.1 SQL Server概述3</p><

9、p>  3.2 .Net平臺介紹4</p><p>  3.3 C#語言概述5</p><p>  4 系統(tǒng)模塊設計及功能需求分析5</p><p>  4.1 基于IDEF0的系統(tǒng)建模5</p><p>  4.2 系統(tǒng)主要功能模塊分析9</p><p>  5 系統(tǒng)設計10</p

10、><p>  5.1 數據庫設計10</p><p>  5.1.1 數據庫概述10</p><p>  5.1.2 數據庫分析11</p><p>  5.1.3 數據庫邏輯結構設計13</p><p>  5.1.4 存儲過程以及觸發(fā)器18</p><p>  5.2 系

11、統(tǒng)詳細設計20</p><p>  5.2.1 數據庫連接20</p><p>  5.2.2 系統(tǒng)登陸設計21</p><p>  5.2.3 數據統(tǒng)計及打印21</p><p>  5.2.4 系統(tǒng)的安全性措施22</p><p>  5.2.5 系統(tǒng)測試運行22</p><

12、;p>  6 系統(tǒng)實現23</p><p>  6.1 系統(tǒng)登陸實現23</p><p>  6.2 主界面實現25</p><p>  6.3 部分基礎數據管理25</p><p>  6.4 業(yè)務管理27</p><p>  6.5 商品入庫、出庫管理30</p><

13、;p>  6.6 財務管理實現32</p><p><b>  7 總結34</b></p><p>  致謝錯誤!未定義書簽。</p><p><b>  參考文獻35</b></p><p><b>  1 引言朗讀</b></p><

14、;p>  顯示對應的拉丁字符的拼音</p><p>  字典 - 查看字典詳細內容</p><p>  中國工業(yè)和信息化部總工程師朱宏任26日在西安舉行的“2010中國(陜西)非公有制經濟發(fā)展論壇”上表示,目前中國中小企業(yè)總數已占全國企業(yè)總數的99%以上,創(chuàng)造的最終產品和服務價值相當于國內生產總值的60%左右,在繁榮經濟、推動創(chuàng)新、擴大出口、增加就業(yè)等方面發(fā)揮了重要作用[1]。雖然中

15、小企業(yè)在現階段取得了很好的成績,但是伴隨著經濟的高速發(fā)展,中小企業(yè)規(guī)模的不斷擴大以及商務往來的日益增多,中小企業(yè)的一些弊端就暴露了出來,其中最大的就是由于業(yè)務量的增大,對進銷存信息的掌握要求越來越高,以前原始的手工操作方式已經不能適應企業(yè)快速發(fā)展的需要,因此進行有效的進銷存管理已經成為中小企業(yè)生存的一個要事。</p><p>  1.1 問題的提出</p><p>  就目前來說大量的中

16、小型企業(yè)存在這樣的問題:由于進銷存方面管理的不完善,一些相關的管理人員都無法得到企業(yè)全面的進銷存信息,例如相關的報表,這就導致了整個企業(yè)管理人員中的信息無法保持一致。并且由于高速發(fā)展帶來的市場競爭日趨激烈,產品的日趨同質以及電子商務的快速發(fā)展帶來了貿易方式的變革以及經濟活動的革命,這些雖然給中小企業(yè)帶來了與大公司競爭的有利條件,但是由于中小企業(yè)在管理體制上的不完善,并且企業(yè)的競爭目標也從單純的產品競爭轉向為供應鏈的競爭,企業(yè)不僅僅關心銷

17、售的擴大,更加開始關心進、銷、存的各個環(huán)節(jié)。企業(yè)開始從成本控制方面加強企業(yè)的競爭力,這些無疑會使中小企業(yè)在競爭中處于及其不利的地位,使中小企業(yè)在日趨激烈的競爭中無法占有一席之地。</p><p><b>  1.2 研究意義</b></p><p>  進銷存系統(tǒng)通過對企業(yè)擁有的人力、物力、財力、設備、技術等資源的調查了解,建立正確的數據,加工處理并編制成各種信息資

18、料及時提供給管理人員,極大提高了工作人員的工作效率,并且大大減少了以往采購、入庫、銷售、出庫流程繁瑣,雜亂,周期長的弊端。利用進銷存軟件對企業(yè)進行管理,及時全面的共享關鍵信息,可以很好的降低消耗,提高了供應鏈的管理水平[2],并且進銷存系統(tǒng)通過各種數據的計算,可以為管理層提供大量基礎數據,以便進行正確的決策,不斷提高企業(yè)的管理水平和經濟效益。</p><p>  在實際的應用中本系統(tǒng)可以為企業(yè)具體提供以下的服務:

19、</p><p>  能對企業(yè)內的各類貨物進行分類管理,并提供最低庫存量、最高庫存量、安全庫存量的預警功能。</p><p>  可以存儲各種基本信息檔案包括客戶檔案、產品基本信息、供貨單位信息、倉庫信息、員工信息等。</p><p>  可以方便快捷的進行商品的采購、銷售管理。</p><p>  還必須要有退貨管理。</p>

20、<p>  可以通過查詢功能及報表分析功能對企業(yè)的基本商品采購及銷售信息有所了解為企業(yè)的決策提供依據。</p><p>  支持庫存的盤點功能。</p><p><b>  2 系統(tǒng)分析</b></p><p>  2.1 系統(tǒng)需求分析</p><p>  經過對系統(tǒng)的業(yè)務流程、系統(tǒng)流程的調查以及對所需提

21、供的服務,一個成功的進銷存信息系統(tǒng)應該具備如下的條件: </p><p>  此信息系統(tǒng)要具有方便的數據查詢功能,查詢數據的速度的效率要高,這就要求在建立數據庫的時候要建立合適的索引;</p><p>  此信息系統(tǒng)要具有良好的人機交互界面,人機交互界面作為軟件與客戶的溝通渠道,必須是清楚,簡單;</p><p>  此信息系統(tǒng)將為用戶提供賬號管理工具,以便用戶對賬

22、號進行管理,具體為添加用戶、刪除用戶、修改用戶密碼,并且在帳號管理的基礎之上,管理員具有權限管理的功能;</p><p>  此信息系統(tǒng)能通過圖表分析商品銷售狀況,圖表分析具有直觀,表達清楚的特點,通過圖表可以為公司決策者的決策提供可靠的依據;</p><p>  此系統(tǒng)可以對數據庫進行備份以及還原操作;</p><p>  此系統(tǒng)要求具有自動編號的功能,例如,采購

23、單的編號為PU+當天日期+5位單據編號;</p><p>  此系統(tǒng)大部分數據都要進行自動計算,盡量減少人工的計算,以免產生錯誤;</p><p>  2.2 可行性分析</p><p>  本系統(tǒng)后臺數據庫采用目前較流行的SQL Sever,該數據庫在安全性、準確性、運行速度上有著較好的表現,并且可以處理大量的數據;前臺則采用的是Visual Studio 20

24、08作為主要的開發(fā)工具,.NET Framework3.5框架作為微軟公司已經比較成熟的產品,現在有越來越多的企業(yè)及技術人員選擇它來作為開發(fā)平臺使訪問數據庫的操作更為簡單易用。因此,在技術上是完全可以勝任這個平臺的開發(fā)。</p><p>  3 相關技術介紹及分析</p><p>  3.1 SQL Server概述 </p><p>  SQL Server

25、2005 是一個非常全面的數據庫平臺,使用集成的商業(yè)智能 (BI) 工具提供了企業(yè)級的數據管理。SQL Server 2005 數據庫引擎為關系型數據和結構化數據提供了更安全可靠的存儲功能,可以構建和管理用于業(yè)務的高可用和高性能的數據應用程序。本系統(tǒng)采用SQL Server2005作為后臺數據庫。SQL Server2005的性價比最高、運行穩(wěn)定、安全性高、操作簡單,并且由于本系統(tǒng)處理的數據量不是很大,所以選擇了SQL Server 2

26、005作為本系統(tǒng)的后臺數據支持系統(tǒng)。并且SQL Server 2005還具有如下的特點:</p><p> ?。?)可編程性:CLR(Common Language Runtime,公共語言運行時)集成。本系統(tǒng)的開發(fā)平臺是Visual Studio 2008,它與此數據庫同是微軟的產品,其核心已由.NET Framework 3.5改寫,可以達到數據庫與開發(fā)平臺的無縫連接。</p><p>

27、; ?。?)安全性:SQL Server 2005 的安全達到了很強大水平,有著很更清晰的安全模型、安全對象和權限。 </p><p> ?。?)異步處理能力:Service Broker提供了一個功能強大的異步編程模型。Broker的最大好處一是異步執(zhí)行能力,提高了可伸縮性,二是可靠執(zhí)行,三是集成于數據庫中,備份數據庫就備份了broker 的消息隊列。 </p><p> ?。?)支持通

28、過HTTP SOAP協(xié)議直接訪問數據庫,增加XML數據類型,支持Xquery,使用新的SQL Server Management Studio 等等。</p><p>  3.2 .Net平臺介紹</p><p>  .NET(全稱Dot NET)是由Microsoft公司經過長時間的研發(fā)所推出的開發(fā)平臺,它吸取了以前開發(fā)平臺的經驗和教訓,定義了開發(fā)和運行企業(yè)級客戶端應用的一個標準,一個

29、體系結構,它以開發(fā)的可靠性、可擴展性、可管理性和安全性很快被Web和Windows Form的開發(fā)者所喜愛。.NET的體系結構[3]如下:</p><p>  圖3.1 .Net平臺體系結構</p><p>  .Net平臺在開發(fā)上還有以下的優(yōu)勢【4】:</p><p> ?。?)優(yōu)秀的設計。只有一個基類庫,并以一種非常直觀的方式設計出來。</p>&

30、lt;p> ?。?)語言無關性。在.NET中,VB.NET、C#、J#和Managed C++等語言都可以編譯為通用的中間語言(Intermediate Language),這說明,語言可以用以前沒有的方式交互操作。</p><p> ?。?)高效的數據訪問。一組.NET組件,總稱為ADO.NET,提供了對關系數據庫和各種數據源的高效訪問,這些組件也可以訪問文件系統(tǒng)和目錄。.NET內置了XML支持,可以處

31、理從非Windows平臺導入或導出的數據。</p><p> ?。?)增強的安全性。每個程序集還可以包含內置的安全信息,這些信息可以準確的指出誰或哪種類型的用戶或進程可以調用什么類的哪些方法,這樣就可以非常準確的控制程序集的使用方式。</p><p>  3.3 C#語言概述</p><p>  C#是一種面向對象編程的語言,主要用于在開發(fā)可以在.Net平臺上運行

32、的應用程序。C#語言體系都構建在.Net框架上,它是從C和C++派生出來的一種簡單、現代、面向對象和類型安全的編程語言,并且能夠與.Net框架完美結合,除此之外,C#還具有以下特點 [5]: </p><p> ?。?)語法簡潔。不允許直接操作內存,去掉了指針操作。</p><p> ?。?)徹底的面向對象設計。C#具有面向對象語言所應有的一切特性——封裝、繼承和多態(tài)。</p>

33、<p> ?。?)強大的安全機制。可以消除軟件開發(fā)中的常見錯誤(如語法錯誤),.NET提供的垃圾回收器能夠幫助開發(fā)者有效地管理內存資源。</p><p> ?。?)兼容性。因為C#遵循.NET的公共語言規(guī)范(CLS),從而保證能夠與其他語言開發(fā)的組件兼容。</p><p> ?。?)靈活的版本處理技術。因為C#語言本身內置了版本控制功能,使得開發(fā)人員可以更容易地開發(fā)和維護。&

34、lt;/p><p> ?。?)完善的錯誤、異常處理機制。C#提供了完善的錯誤和異常處理機制,使程序在交付應用時能夠更加健壯。</p><p>  4 系統(tǒng)模塊設計及功能需求分析</p><p>  4.1 基于IDEF0的系統(tǒng)建模</p><p>  建模的目的包括分析現有系統(tǒng)以及待建的未來系統(tǒng),是對企業(yè)整體運營活動的描述以及開發(fā)過程中各種關

35、系的分析。企業(yè)建模是實現信息系統(tǒng)集成和優(yōu)化的基礎,是針對企業(yè)所需要解決的問題【6】。</p><p>  企業(yè)信息系統(tǒng)建模作為企業(yè)信息集成的決策支持工具和方法的集合, 是信息系統(tǒng)開發(fā)的關鍵。IDEF0作為IDEF中的一種已得到廣泛的應用【7】。IDEF0的基本概念是在70年代提出的結構化分析方法基礎上發(fā)展起來的。結構化分析方法在許多應用問題中起了很好的作用。該方法在降低開發(fā)費用、減少系統(tǒng)中的錯誤、促進交流的一致性

36、及加強管理等方面都產生了較好的效益【8】。</p><p>  IDEF0描述系統(tǒng)的功能活動及其聯(lián)系,在ICAM中建立加工制造業(yè)的體系結構模型,其基本內容是SADT的活動模型方法,是由Softech發(fā)展而來的。</p><p>  作為一種功能建模語言,IDEF0具有以下特點:全面及表達能力強;是一種連貫的簡單的語言;易于學習并強調細節(jié)的層次化;在美國空軍、其他政府開發(fā)工程以及私營工業(yè)中的

37、應用得到了很好的檢驗和證明;能由多種計算機圖形工具生成[9]。</p><p>  進銷存系統(tǒng)是一個比較復雜的過程,涉及多個方面的內容,一般的說,一個系統(tǒng)可以被認為是由對象物體(用數據表示)和活動(由人、機器和軟件來執(zhí)行)以及他們之間的聯(lián)系組成。但如果是從數據或活動來描述,那么至多只反映了一個側面,這樣的技術很難說明系統(tǒng)的全貌[10],而IDEF0卻很好的解決了這個問題,如圖4.1.1所示,IDEF0能同時表達系

38、統(tǒng)的活動(盒子)和數據流(箭頭)以及他們之間的聯(lián)系,由此我們可以很好的看到整個系統(tǒng)。系統(tǒng)得到輸入的商品資料、供應商資料及客戶資料等基本信息,根據市場情況以及人員資金等,得出各種報表數據以及為公司決策提供依據。圖4.1.2是系統(tǒng)頂層系統(tǒng)功能圖,它表明系統(tǒng)中各模塊之間的輸入輸出關系。系統(tǒng)主要由采購管理,銷售管理,庫存管理,財務管理等模塊組成。采購管理主要是根據實際需求進行采購活動,包括采購單錄入,審核,明細單的錄入等功能。銷售管理主要是填寫

39、銷售單錄入,審核,銷售明細單的錄入等。庫存管理主要是對當前的庫存狀況進行查詢,對庫存進行報警以及庫存盤點調撥等一系列的功能。財務管理是根據采購明細單和銷售明細單形成欠款信息,根據欠款信息進行收付款。</p><p>  圖4.1 進銷存管理系統(tǒng)活動圖</p><p>  圖4.2進銷存管理系統(tǒng)頂層功能圖</p><p>  按照IDEF0功能模型的特點,即從上到下,

40、逐層分解,可以得到一張系統(tǒng)功能模型的層次分解表。如表1所示:</p><p>  表4.1 系統(tǒng)功能模型層次分解表</p><p>  根據上表的內容,由此可以得到系統(tǒng)功能分解圖,如圖3所示:</p><p>  圖4.3 系統(tǒng)功能分解圖</p><p>  根據IDEF0模型可以得到的信息模型如圖4所示,表達了整個進銷存系統(tǒng)中各功能模塊之間

41、的聯(lián)系,讓整個進銷存系統(tǒng)能夠完整的運行。</p><p>  圖4.4 進銷存系統(tǒng)信息模型</p><p>  4.2 系統(tǒng)主要功能模塊分析</p><p>  圖4.5 系統(tǒng)總功能模塊圖</p><p>  根據需求分析以及建立的IDEF0模型,將進銷存管理系統(tǒng)的開發(fā)具體劃分為9個模塊:基礎資料設置、業(yè)務管理、查詢中心、庫存管理、報表分析

42、、財務管理、基本工具以及系統(tǒng)管理。</p><p>  基礎資料設置模塊:主要負責對系統(tǒng)的基本數據錄入,眾所周知,我們在整個系統(tǒng)的運行中,最基本的操作就是對數據進行操作,本模塊就是對進銷存中所涉及到的數據輸入到數據庫,在這里我們總共有6方面的基礎資料:客戶資料、員工資料、供應商資料、倉庫信息資料、商品資料、商品類別資料。通過本模塊可以對數據進行增、刪、改、查是本系統(tǒng)的一個很基本的功能模塊。</p>

43、<p>  業(yè)務管理模塊下面又可以細分為采購模塊和銷售模塊。</p><p>  采購管理模塊:隨著時代的發(fā)展,企業(yè)對于采購的管理越來越重視,對于供應商的選擇也越來越慎重,雙方從討價還價的關系轉變成了相互依存的關系,企業(yè)更加充分的認識到了企業(yè)的產品質量要從采購抓起,這就關系到了供貨商的供貨質量。采購業(yè)務的流程主要涉及到下面幾個環(huán)節(jié),由員工填寫采購訂單,主要內容包括供應商,采購的商品,采購價格,采購數量等

44、。并且當發(fā)現商品的質量不合格,型號不對、運輸錯誤等原因造成的問題作出采購退貨的處理,在這里我們的采購退貨由銷售單進行處理,在單據類型中選擇采購退貨。</p><p>  銷售管理模塊:自古以來,銷售在企業(yè)的經營活動中占據著很重要的地位,企業(yè)只有通過銷售才能實現自己的價值,創(chuàng)造出可觀的理論,因此企業(yè)必須加強銷售管理,才能提高自己的經濟效益。銷售管理的流程類似于采購管理,由員工填寫銷售單之后,然后將銷售單發(fā)往倉庫,由

45、倉庫對商品進行發(fā)貨處理,并且根據銷售訂單生成出庫單(一張笑的訂單可以對應多張出庫單),當出現退貨的情況時,在采購管理中增加一條退貨單的記錄。</p><p>  查詢中心模塊:主要功能是對歷史記錄進行查詢。</p><p>  庫存管理模塊:企業(yè)庫存不當的話會增加很多不必要的費用,當存貨過多的時候,將導致庫存產品的積壓、存儲的費用也相應的增加,造成流動資金周轉不利,并且過量的庫存還會導致管

46、理上面出現問題。而庫存不足的話則會造成企業(yè)正常的銷售環(huán)節(jié)無法展開給企業(yè)造成經濟上的損失,因此良好的庫存管理是一個十分必要的事情,庫存管理的目標就是尋求最恰當的標準,使庫存的成本減到最低。</p><p>  報表分析模塊:市場預測是對影響市場供求變化的諸因素進行調查研究,分析和預見其發(fā)展趨勢,掌握市場供求變化的規(guī)律,為經營決策提供可靠的數據。預測為決策服務,是為了提高管理的科學水平,減少決策的盲目性,我們需要通過

47、預測來把握企業(yè)發(fā)展或者未來市場變化的有關動態(tài),減少未來的不確定性,降低決策可能遇到的風險,使決策目標得以順利實現。而報表分析就是一種很好的市場預測手段,通過報表分析可以知道近段時候商品的銷售情況,采購情況以及員工的銷售業(yè)績等,從而預測出市場的一些信息。</p><p>  財務管理模塊:財務管理的流程是當訂單下去之后就會自動生成一張應付或者應收款的單據,并且一張訂單可以有多張財務單據,分多次付款或者收款。<

48、/p><p>  基本工具模塊主要有計算機,天氣預報、記事本、鬧鐘等小功能。</p><p>  系統(tǒng)管理主要負責更改用戶、更改密碼、備份還原數據庫,管理權限、用戶注冊。</p><p><b>  5 系統(tǒng)設計</b></p><p>  5.1 數據庫設計</p><p>  5.1.1

49、數據庫概述</p><p>  數據庫設計是整個系統(tǒng)設計的核心,數據庫的好壞直接影響到整個系統(tǒng)的效率,所以對于整個數據庫的開發(fā)是十分重要的,在開發(fā)中有著舉足輕重的作用,所有的數據都將存在于數據庫中,數據庫管理的思想是:對所有的數據實行統(tǒng)一的、集中的、獨立的管理,使數據存儲獨立于使用的數據程序,實現數據共享[11]。本研究的系統(tǒng)構建也正是對數據庫進行操作的。</p><p>  數據庫技術最

50、初產生于20世紀60年代中期。第一代數據庫的代表是1968年IBM公司研制的層次模型的數據庫管理系統(tǒng)IMS和1969年美國數據庫系統(tǒng)語言協(xié)商CODASYL下屬數據庫任務組DBTG提議的網狀模型。層次數據庫的數據模型是有根的定向有序樹,網狀模型對應的是有向圖。第二代數據庫的主要特征是支持關系數據模。在20世紀70年代由時任IBM研究員的E.F.Codd博士在Communications of ACM 上發(fā)表的《大型共享數據庫數據的關系模型

51、》上提出,它首次明確而清晰地為數據庫系統(tǒng)提出了一個嶄新的模型,即關系模型?!瓣P系”是數學中的一個基本概念,由集合中的任意元素所組成的若干有序偶對表示,用以反應客觀事物之間所存在的一定關系,如數之間的大小關系,一個組織中成員間的領導與被領導關系等等[12]。而E.F.Codd博士也被人稱為“關系數據庫之父”,并在1981年榮獲圖靈獎。關系數據庫系統(tǒng)管理的數據是以二維表的形式進行存儲;表之間的數據聯(lián)系是通過一個表的鍵與另一個表的鍵的連接來實

52、現。關系數據庫系統(tǒng)為其管理的數據提供并發(fā)控制、應急恢復和可伸縮性等功能。關系數據庫最重要的特征不是其存儲和讀</p><p>  5.1.2 數據庫分析</p><p>  針對企業(yè)進銷存管理系統(tǒng)中分析所得出的功能,分別對三個重要的環(huán)節(jié)進、銷、存進行分析,總結出如下的數據庫設計需求,進銷存系統(tǒng)中的每個環(huán)節(jié)幾乎都涉及到了商品,因此商品必須要有一張表,商品是按照類別進行分類的,一個商品它必須

53、屬于一個類別,如果沒有的話那就需要建立一個類別,并且一個類別下還有商品就無法對該類別進行刪除,因此需要有一張表來存儲商品類別這個信息,在商品存放的時候,商品可以存放在多個倉庫,倉庫信息也需要存儲到數據庫中,在整個系統(tǒng)的運行過程中,需要有人對整個系統(tǒng)進行操作,必須要有一張存儲員工的表,不是每個員工都有權限操作整個系統(tǒng),必須控制員工的權限,權限表跟角色表的配合能很好的完成這個功能。在采購的過程中,涉及到的屬性有一個是供應商信息,這就需要提供

54、一個表來存儲供應商的信息,并且當有單據涉及到該供應商的時候該供應商無法刪除,采購本身還要提供一張采購訂單表來存儲信息,與采購訂單對應的還有付款單和入庫單,在銷售過程中,涉及到的信息有客戶信息,收款信息還有出庫信息,這些信息都需要在數據庫中能夠查詢的到,庫存管理作為進銷存中極其重要的一個環(huán)節(jié),他具有的功能:庫存調撥、庫存變動、庫存盤點,因此與之</p><p>  經上述數據庫的分析,并且考慮到將來功能的擴展,可以

55、得出如下的數據庫設計方案,用戶表、角色表、員工表、商品類別表、客戶表、商品表、倉庫信息表、權限表、采購訂單表、采購訂單明細表、入庫單、入庫單明細、銷售訂單、銷售訂單明細、出庫訂單、出庫訂單明細,庫存盤點單、庫存調撥單、庫存變動單、庫存表。</p><p>  根據以上的關系,得出了整個系統(tǒng)的總體ER圖(圖5.1):</p><p>  圖 5.1 數據庫ER圖</p><

56、;p>  5.1.3 數據庫邏輯結構設計</p><p>  根據對企業(yè)基本業(yè)務的分析,一個商品流通企業(yè)進銷存管理系統(tǒng)可包括許多個數據表、數據視圖、存儲過程以及函數等,但有一些最基本的數據表,這里列出了系統(tǒng)設計中用到的最常用到的,最基本的數據表包括:商品信息表、商品類別表、供應商信息表、客戶信息表、采購訂單表、采購訂單明細表、銷售訂單表、銷售訂單明細表、庫存信息表、入庫單表、出庫單表、員工信息表、庫存盤點

57、表等。</p><p>  5.1.4 存儲過程以及觸發(fā)器</p><p>  存儲過程和觸發(fā)器在整個數據庫中有著及其重要的功能,存儲過程是微軟SQL Server數據庫中的重要技術。合理地使用存儲過程,可以有效地提高程序的性能。并且,將商業(yè)邏輯封裝在數據庫系統(tǒng)的存儲過程中,可以大大提高整個軟件系統(tǒng)的可維護【14】。</p><p>  觸發(fā)器是一種特殊的存儲過程

58、,它類似于數據表中參照完整性約束,主要功能是監(jiān)視用戶對數據的修改、更新和刪除。如果對一個數據表創(chuàng)建了觸發(fā)器.則當用戶欲對數據表進行INSERT、UPDATE和DELETE操作時,數據庫系統(tǒng)會使觸發(fā)器自動觸發(fā)執(zhí)行,以便采取適當的措施,對相關數據表進行級聯(lián)更新,從而保證數據的完整性?!?3】</p><p>  在本次的系統(tǒng)開發(fā)中,使用了存儲過程來完成了系統(tǒng)的登陸功能,并且使用大量的觸發(fā)器來保證數據庫中數據的一致性及

59、完整性;以下是一些比較重要的存儲過程以及觸發(fā)器。</p><p>  該存儲過程的功能是將程序中傳入的帳號和密碼跟數據庫中的進行比對,當成功匹配的時候,將100返回給程序,從而可以進入主界面進行操作,反之則返回-100。</p><p>  create procedure [dbo].[proc_Login]</p><p><b>  (</b&

60、gt;</p><p>  @UserName varchar (20),</p><p>  @UserPwd varchar (20)</p><p><b>  )</b></p><p><b>  as</b></p><p>  if exists(select

61、* from tb_User where UserName=@UserName and UserPwd=@UserPwd)</p><p>  return 100</p><p><b>  else</b></p><p>  return -100</p><p>  以下是一個在本研究中十分重要的一個觸發(fā)器,通

62、過該觸發(fā)器可以實現當商品入庫之后,級聯(lián)修改庫存里面的數量,并且判斷當前庫存是否處于正常水平,若未處于正常水平則彈出提示,并且在入庫后判斷該單據是否已完成,若已完成,將單據狀態(tài)修改為已完成。</p><p>  Create TRIGGER [Trigger_Inventory_In]</p><p>  ON [dbo].[tb_InStockOrder]</p><p

63、>  After INSERT</p><p><b>  AS</b></p><p>  declare @InStockNo varchar(20),@NewNo varchar(20),@TotalCount int,@x int,@Upper int</p><p>  --從Inserted表中取得主鍵的自動編號</p&

64、gt;<p>  select @InStockNo=InStockNo from Inserted</p><p>  select @Upper=(select UpperCount from tb_Inventory,inserted where tb_Inventory.GoodNo=inserted.GoodNo and tb_Inventory.Stock=inserted.Stock)

65、</p><p>  select @x=(select count(*) from tb_Inventory,inserted where tb_Inventory.GoodNo=inserted.GoodNo and tb_Inventory.Stock=inserted.Stock)</p><p>  select @NewNo=(select 'RK'+conve

66、rt(varchar,getdate(),112)+right(100001+isnull(max(cast(right(InStockNo,5) as int)),0),5) from tb_InStockOrder) </p><p>  update tb_InStockOrder set InStockNo=@NewNo where InStockNo = @InStockNo</p>&

67、lt;p><b>  if(@x>0)</b></p><p>  begin </p><p>  select @TotalCount=TotalCount+InStockCount from inserted,tb_Inventory where inserted.GoodNo=tb_Inventory.GoodNo and insert

68、ed.Stock=tb_Inventory.Stock</p><p>  update tb_Inventory set tb_Inventory.GoodPrice =inserted.GoodPrice,TotalCount=@TotalCount,TotalMoney=inserted.GoodPrice*@TotalCount from tb_Inventory,inserted where tb_In

69、ventory.GoodNo=inserted.GoodNo and tb_Inventory.Stock=inserted.Stock</p><p>  update tb_ProcureDetail set tb_ProcureDetail.CompleteCount=tb_ProcureDetail.CompleteCount+inserted.InStockCount from tb_ProcureDe

70、tail,inserted where tb_ProcureDetail.DetailNo=inserted.DetailNo</p><p>  if((select count(*) from tb_ProcureDetail where CompleteCount=GoodCount and tb_ProcureDetail.ProcureNo=(select ProcureNo from tb_Procu

71、reDetail,inserted where tb_ProcureDetail.DetailNo=inserted.DetailNo))=(select count(*) from tb_ProcureDetail where tb_ProcureDetail.ProcureNo=(select ProcureNo from tb_ProcureDetail,inserted where tb_ProcureDetail.Detail

72、No=inserted.DetailNo)))</p><p><b>  begin</b></p><p>  update tb_Procure set ProcureState='已完成' where ProcureNo=(select ProcureNo from tb_ProcureDetail,inserted where tb_Proc

73、ureDetail.DetailNo=inserted.DetailNo)</p><p><b>  end</b></p><p><b>  end </b></p><p><b>  if(@x<=0)</b></p><p><b>  begin

74、</b></p><p>  insert into tb_Inventory(GoodNo,GoodName,GoodClass,Stock,GoodPrice,TotalCount,TotalMoney,UpperCount,LowCount) select tb_Good.GoodNo,GoodName,c.GoodClass,Stock,GoodPrice,InStockCount,InSto

75、ckMoney,UpperLimit,LowerLimit from inserted I,tb_Good,tb_GoodClass as c where I.GoodNo=tb_Good.GoodNo and c.GoodClass=(select GoodClass from tb_Good,inserted where tb_Good.GoodNo=inserted.GoodNo)</p><p>  up

76、date tb_ProcureDetail set tb_ProcureDetail.CompleteCount=tb_ProcureDetail.CompleteCount+inserted.InStockCount from tb_ProcureDetail,inserted where tb_ProcureDetail.DetailNo=inserted.DetailNo</p><p>  if((sel

77、ect count(*) from tb_ProcureDetail where CompleteCount=GoodCount and tb_ProcureDetail.ProcureNo=(select ProcureNo from tb_ProcureDetail,inserted where tb_ProcureDetail.DetailNo=inserted.DetailNo))=(select count(*) from t

78、b_ProcureDetail where tb_ProcureDetail.ProcureNo=(select ProcureNo from tb_ProcureDetail,inserted where tb_ProcureDetail.DetailNo=inserted.DetailNo)))</p><p><b>  begin</b></p><p>  

79、update tb_Procure set ProcureState='已完成' where ProcureNo=(select ProcureNo from tb_ProcureDetail,inserted where tb_ProcureDetail.DetailNo=inserted.DetailNo)</p><p><b>  end</b></p>

80、<p>  end </p><p>  if(@TotalCount>@Upper)</p><p><b>  begin</b></p><p>  print('庫存數量大于庫存上限,請及時出貨!')</p><p><b>  end</b>

81、</p><p>  5.2 系統(tǒng)詳細設計</p><p>  5.2.1 數據庫連接</p><p>  一個信息管理系統(tǒng)能成功的運行需要的就是對數據庫的控制,因此,如何連接數據庫以及對數據庫的訪問就成了整個系統(tǒng)設計的一個關鍵,所有的數據都要通過連接數據庫才能存入到數據庫中,但是在整個系統(tǒng)中需要連接數據庫的操作非常之多,一個個寫是非常繁瑣的,在本系統(tǒng)中,所采用

82、的思想是采用類來訪問數據庫,類名為SqlClass,是連接數據庫的類,里面還有對數據的一些基本的操作,例如查詢數據,打開和關閉數據庫的連接操作。在本系統(tǒng)中對數據庫的操作主要是使用DataTable和DataSet來完成,將數據存放到DataTable或者DataSet中,在最后完成的時候一起存放到數據庫中,由于可以支持離線操作,因此在效率上是比較高的,但是相應的需要一定的內存作為代價。</p><p><b

83、>  主要代碼如下所示:</b></p><p>  public void inorde(string sqlstr)</p><p><b>  {</b></p><p>  opensql(); 打開數據庫連接</p><p>  SqlCommand sqlcom = new SqlComma

84、nd(sqlstr, conn);</p><p>  sqlcom.ExecuteNonQuery();</p><p>  sqlcom.Dispose();釋放資源</p><p>  sqlclose();關閉連接</p><p>  }主要功能是對數據進行更新操作</p><p>  public DataS

85、et search(string sqlstr)</p><p><b>  {</b></p><p>  opensql();</p><p>  SqlDataAdapter sqlsearch = new SqlDataAdapter(sqlstr, conn);</p><p>  DataSet ds = n

86、ew DataSet();</p><p>  sqlsearch.Fill(ds);</p><p>  sqlclose();</p><p>  return ds;</p><p>  }主要功能是將數據庫中的數據查詢出來</p><p>  5.2.2 系統(tǒng)登陸設計</p><p>

87、  當系統(tǒng)第一次登陸的時候,必須配置服務器,配置界面主要有以下內容需填寫,IP地址是服務器所在地址,數據庫是服務器的數據庫名,用戶名和密碼是操作員對數據庫的權限賬號。當配置完服務器后就可以進行登陸操作了,下次登陸的時候只需選使用上次的配置即可(配置信息儲存在注冊表中)</p><p>  系統(tǒng)登陸主要用于對進銷存系統(tǒng)的用戶安全性進行檢查,沒有正確的賬號和密碼是無法進入系統(tǒng)的,并且在登錄過程中會自動驗證該用戶的權限

88、,從而判斷該用戶是否可以進行相應的操作,而用戶的權限只有超級管理員才可以進行分配。</p><p>  判斷用戶權限的操作主要是通過查詢賬號和密碼是否符合數據庫里面的值,如果值存在,則賬號和密碼正確,允許登錄,否則提示賬號和密碼錯誤。</p><p>  5.2.3 數據統(tǒng)計及打印</p><p>  對于一個進銷存的系統(tǒng)來說,數據統(tǒng)計及報表打印的功能是必不可少的

89、,本系統(tǒng)的設計思路是單據的打印通過打印控件進行控制,是使用畫筆工具通過程序實現單據格式以及內容的顯示。對于報表來說是使用了Visual Studio 2008的水晶報表功能來完成,將需要的數據以SQL語句的形式傳給數據庫,并且得到返回的數據,通過水晶報表可以將返回的數據顯示到水晶報表中,并且可以將數據以圖表的形式表現出來,除此之外,水晶報表自帶打印功能可以將匯總的數據以及圖表等打印出來。</p><p>  5.

90、2.4 系統(tǒng)的安全性措施</p><p>  對于一個信息系統(tǒng)來說安全性無疑是一個十分重要的部分,在本系統(tǒng)中總共在三個方面對安全性進行了設計。</p><p> ?。?)權限管理:如果無相應的權限,則無法進行相應的操作,具體的實施已經在登陸設計中給出。</p><p> ?。?)信息記錄:在數據庫中建立一個系統(tǒng)日志表,用于查看操作員的登陸情況,可以知道什么時候誰登

91、陸過系統(tǒng),什么時候退出系統(tǒng),可以做到有據可查。</p><p> ?。?)數據庫備份及還原:本系統(tǒng)提供客戶端的數據備份及還原功能,通過該功能可以將數據從數據中備份到客戶端中,并且當數據發(fā)生意外的情況下,可進行災難恢復,最大限度地避免損失。</p><p>  5.2.5 系統(tǒng)測試運行</p><p>  本系統(tǒng)的測試分別選擇了白盒測試法和黑盒測試法,分別從系統(tǒng)的內

92、部邏輯方面和外部功能出發(fā)做單元測試、組裝測試以及確認測試。主要涉及到以下幾個方面的測試:</p><p> ?。?)系統(tǒng)管理員的賬號和密碼的正確性和一致性進行檢查,檢驗系統(tǒng)安全性。確保用戶沒有權限的話無法進行相關的操作。</p><p>  (2)對信息填寫的正確性以及合法性的檢查,例如:在一些文本框中只能填入數字而無法填入字符,每個文本框最大可以填寫的字符數等等,通過這些措施保證數據輸入

93、的正確性。</p><p> ?。?)系統(tǒng)在輸出的時候,檢查輸出的內容是不是用戶所需要的。</p><p>  (4)數據庫的完整性,建立數據庫的時候設定相關的主鍵,并且采用觸發(fā)器的機制來確保信息的一致性。</p><p><b>  6 系統(tǒng)實現</b></p><p>  6.1 系統(tǒng)登陸實現</p>

94、<p>  在進入系統(tǒng)前需要進入登陸界面,通過登陸界面限定用戶登陸和判斷權限。</p><p><b>  圖6.1登陸界面</b></p><p>  當第一次登陸的時候,如果不是在服務器上運行,需要配置服務器,服務器配置界面如下所示:</p><p>  圖6.2服務器配置界面</p><p><

95、b>  流程圖:</b></p><p>  圖6.3 系統(tǒng)登錄流程圖</p><p><b>  部分代碼設計如下:</b></p><p>  private void btnlogin_Click(object sender, EventArgs e)</p><p><b>  {&l

96、t;/b></p><p>  if (txtuserid.Text == "" && txtuserpwd.Text == "")</p><p><b>  {</b></p><p>  MessageBox.Show("請輸入登陸信息!");</p&

97、gt;<p>  txtuserid.Focus();</p><p><b>  return;</b></p><p><b>  }</b></p><p>  Class.sqlOperate UserLogin = new Class.sqlOperate();</p><p&g

98、t;  int P_int_returnValue = UserLogin.UserLogin(txtuserid.Text.Trim(), txtuserpwd.Text.Trim());</p><p>  if (P_int_returnValue == 100)</p><p><b>  {</b></p><p>  SqlClas

99、s.login_name = txtuserid.Text;</p><p>  this.Close();</p><p><b>  }</b></p><p>  if (P_int_returnValue == -100)</p><p><b>  {</b></p><

100、;p>  MessageBox.Show("用戶名或密碼錯誤!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);</p><p>  txtuserpwd.Text = "";</p><p>  txtuserpwd.Focus();</p>

101、<p><b>  } </b></p><p><b>  }</b></p><p>  6.2 主界面實現</p><p><b>  圖6.4信息主界面</b></p><p>  當登錄到系統(tǒng)主界面的時候會根據用戶名對系統(tǒng)的用戶權限進行判斷,并且將登陸時

102、間,登陸人員顯示在系統(tǒng)下方的狀態(tài)欄中。</p><p>  6.3 部分基礎數據管理</p><p>  圖6.5商品基本信息操作界面</p><p>  該界面是商品信息管理以及新增記錄的對話框,通過本窗口可以對基本的商品信息進行添加、修改、刪除操作,除此之外可以將數據導出至Excel,方便數據管理,通過右側的ListBox還可以對數據進行簡單的查詢。其它基礎數

103、據界面基本類似于上述界面。</p><p>  圖6.6商品基本信息流程圖</p><p>  部分代碼:private void DataSave()</p><p><b>  {</b></p><p>  if (AlterValue[7] == "0")</p><p&g

104、t;<b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  if (txtGoodNo.Text.Trim() == "" || txtGoodName.Text.Trim() == ""

105、|| txtGoodUnit.Text.Trim() == "" || txtGoodClass.Text.Trim() == "")</p><p><b>  {</b></p><p>  MessageBox.Show("請檢查,數據輸入有問題!");</p><p><

106、b>  return;</b></p><p><b>  }</b></p><p>  Class.SqlClass sql = new 進銷存管理系統(tǒng)V3._1.Class.SqlClass();</p><p>  string str = "insert into tb_Good values('&

107、quot; + txtGoodNo.Text.Trim() + "'" + ",'" + txtGoodName.Text.Trim() + "'" + ",'" + txtGoodClass.Text.Trim() + "'" + ",'" + txtGoodPinYi

108、n.Text.Trim() + "'" + ",'" + txtGoodUnit.Text.Trim() + "'" + ",'" + txtGoodLocation.Text.Trim() + "'" + ",'" + txtGoodModel.Text.Trim()

109、+ "')";</p><p>  sql.inorde(str);</p><p><b>  }</b></p><p>  catch (Exception ex)</p><p><b>  {</b></p><p>  MessageB

110、ox.Show(ex.Message);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><

111、b>  try</b></p><p><b>  {</b></p><p>  if (txtGoodNo.Text.Trim() == "" || txtGoodName.Text.Trim() == "" || txtGoodUnit.Text.Trim() == "" || txt

112、GoodClass.Text.Trim() == "")</p><p><b>  {</b></p><p>  MessageBox.Show("請檢查,數據輸入有問題!");</p><p><b>  return;</b></p><p><

113、b>  }</b></p><p>  Class.SqlClass sql = new 進銷存管理系統(tǒng)V3._1.Class.SqlClass();</p><p>  string str = "update tb_Good set GoodName='" + txtGoodName.Text.Trim() + "',Go

114、odClass='" + txtGoodClass.Text + "',GoodPinYin='" + txtGoodPinYin.Text.Trim() + "',GoodUnit='" + txtGoodUnit.Text.Trim() + "',GoodLocation='" + txtGoodLocati

115、on.Text.Trim() + "',GoodModel='" + txtGoodModel.Text.Trim() + "' where GoodNo='"+txtGoodNo.Text.Trim()+"'";</p><p>  sql.inorde(str);</p><p><

溫馨提示

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

評論

0/150

提交評論