版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
湖南理工學院南湖學院畢業(yè)設(shè)計(論文)頁1緒論隨著現(xiàn)代科學技術(shù)的迅猛發(fā)展,人們的生活方式正發(fā)生著巨大的變化。計算機技術(shù)已經(jīng)滲透到各個領(lǐng)域,成為各個行業(yè)必不可少的工具。特別是Internet技術(shù)的推廣和信息高速公路的建立,使得IT產(chǎn)業(yè)在市場競爭中越發(fā)顯示出其獨特的優(yōu)勢??茖W技術(shù)是第一生產(chǎn)力,科學技術(shù)的發(fā)展讓人類更加受益。各類信息系統(tǒng)應(yīng)用于各行各業(yè),不但給管理上帶來了極大的便利,而且還提高了工作效率。中小型超市在我國經(jīng)濟發(fā)展中具有重要地位,目前我國的中小型超市數(shù)量多,地區(qū)分布廣泛,行業(yè)分布跨度大。隨著全球經(jīng)濟一體化的發(fā)展和電子商務(wù)的興起,中小型超市之間的競爭將越來越激烈。網(wǎng)絡(luò)及電子商務(wù)的迅猛發(fā)展突破了時間、空間的局限性,給中小型超市帶來了更多的發(fā)展機會,同時也增大了超市行業(yè)間的競爭強度。這就要求中小型超市必須改變營業(yè)管理模式,提高運營效率。目前,我國中小型超市的信息化水平還很低。隨著技術(shù)的發(fā)展,電腦操作及管理日趨簡化,電腦知識日趨普及,同時市場經(jīng)濟快速多變,競爭激烈,超市行業(yè)采用電腦管理進貨、庫存、銷售等諸多環(huán)節(jié)也已成為必然趨勢。1.1研究課題的目的社會生活的現(xiàn)代化,使得市場的走向發(fā)生巨大變化,由于經(jīng)濟的發(fā)展,人民對生活的需求已經(jīng)不再滿足于豐衣足食的低度要求,許多人們往往不是單純?yōu)闈M足生活必須去購買,而是憑著喜歡、意欲和感官去購買。如果一個商店能夠打動顧客、吸引顧客,自然會顧客盈門,而近幾年新興產(chǎn)業(yè)中超級市場(supermarket)的現(xiàn)代化管理方式和便捷的購物方式,尤其是它輕松的購物環(huán)境,往往是打動顧客,吸引顧客的最主要的原因,且良好的周密的銷售服務(wù)更是贏得信譽、吸引的顧客的優(yōu)勢所在。商品經(jīng)濟的高速現(xiàn)代化發(fā)展也促進了競爭,使一切不甘落后的商家都爭先恐后地采用最新的管理方法來加強自己的競爭地位。因為,超市經(jīng)營者如果不掌握當今市場發(fā)展的這一走向,不能將超市現(xiàn)代化經(jīng)營作為奴努力開拓的目標,就無法使經(jīng)營活絡(luò)、財源茂盛。現(xiàn)代化事業(yè)的發(fā)展,也使超市的管理數(shù)段發(fā)生前所未有的革命,計算機的運用正在發(fā)達國家的各類商店超市中普及。由于它能夠準確記載和查詢有關(guān)超市經(jīng)營活動的大量數(shù)據(jù),幫助超市經(jīng)營者掌握和分析營銷情況,及時作出正確決策,并且有利于商店內(nèi)部財務(wù)、工資、人員、庫存、銷售情況等管理,因而大大提高了現(xiàn)代超市的管理水平。國外很多發(fā)達資本主義國家的有關(guān)人士都在開發(fā)超市管理系統(tǒng),開發(fā)出很多大型的軟件,由于本人能力有限,開發(fā)一個小型超市管理系統(tǒng),它可以使我們國內(nèi)新起小型超市可以更好的操作。此系統(tǒng)的有減少差錯,節(jié)省人力、減少顧客購物時間,增加客流量,提高顧客滿意度等特點。我通過開發(fā)這個簡單管理信息系統(tǒng),鞏固了以前所學的知識,提高了應(yīng)用能力。1.2研究課題的意義21世紀,超市的競爭進入到了一個全新的領(lǐng)域,競爭不再是規(guī)模的競爭,而是技術(shù)的競爭、管理的競爭、人才的競爭。技術(shù)的提升和管理的升級是超市業(yè)的競爭核心。如何在激烈的競爭中擴大銷售額、降低經(jīng)營成本、擴大經(jīng)營規(guī)模,成為超市經(jīng)營者努力追求的目標。為了提高物資管理的水平和工作效率,盡可能杜絕商品流通中各環(huán)節(jié)中可能出現(xiàn)的資金流失不明現(xiàn)象,商品進銷存領(lǐng)域迫切需要引進信息系統(tǒng)來加以管理,而商品銷售管理系統(tǒng)是當前應(yīng)用于超市或者公司管理系統(tǒng)的典型代表。從消費者的角度來說,結(jié)帳時應(yīng)該準備和快速,畢竟時間就是金錢。由于傳統(tǒng)的超市收銀管理給顧客和店主帶來很多不便。針對這方面的缺陷,開發(fā)這個系統(tǒng)可以方便快捷地查出顧客結(jié)帳情況,商品信息情況,每天的售貨情況,方便了對超市商品管理、人員管理,大大提高了超市的售貨速度。進而加速了社會的發(fā)展速度,提高了人民的生活水平。總之,借助于信息系統(tǒng)可以大大提高超市的運作效率,通過全面的信息的采集和處理,不僅輔助提高了超市的決策水平,還可以迅速提高超市的管理水平,為降低經(jīng)營成本,提高效率,增強超市擴張力,提供有效的技術(shù)保障。
2需求分析2.1可行性研究系統(tǒng)開始和可行性研究是為系統(tǒng)開發(fā)做前期準備[1]。在對一個項目的開發(fā)之前,我們總是要對其進行一個可行性分析與需求分析,通過和指導老師的共同分析得出了可行性開發(fā)計劃。對于需求分析我們作了如下調(diào)查分析的需求。2.1.1技術(shù)可行性隨著軟件編程技術(shù)的不斷增加,功能的不斷加強,和網(wǎng)絡(luò)技術(shù)的不斷成熟,信息安全的不斷完善以及開發(fā)工具的日益進步,采用計算機系統(tǒng)來管理超市要求數(shù)據(jù)的采集、更新能夠完整、準確和及時,所以開發(fā)通用的超市收銀系統(tǒng)已經(jīng)完全可以做到。2.1.2經(jīng)濟可行性因為通過網(wǎng)絡(luò)傳遞銷售信息,可以不受距離的限制,因此可以節(jié)約許多的人力和物力,方便管理,由此可以減少不必要的開支,同時該系統(tǒng)可以提高超市的銷售效率,即提高了超市的經(jīng)濟效益,所以從經(jīng)濟上是完全可行的。2.1.3操作可行性本系統(tǒng)采用Windows圖形界面,是大家熟悉的操作系統(tǒng),對于用戶只需要具有一般的計算機知識的人員都可以輕松上手。而且整個銷售系統(tǒng)采用最友好的交互界面,簡潔明了,不需要對數(shù)據(jù)庫非常了解。
由此,該系統(tǒng)的操作是可行的,有必要推廣該系統(tǒng)。綜合以上三方面,該系統(tǒng)具有很高的開發(fā)可行性,無論是從技術(shù)上經(jīng)濟上還是操作上。故此,可以設(shè)計該系統(tǒng)流程圖,建立數(shù)據(jù)字典。2.2需求分析對于大型超市信息管理系統(tǒng)來說,通常它會把員工人事管理系統(tǒng)也包括在內(nèi)。由于現(xiàn)考慮的是小型超市,其可承擔的研發(fā)支費也有限[2]。所以在這個系統(tǒng)中,要實現(xiàn)的功能主要如下:功能要求對庫存產(chǎn)品進行資料管理和統(tǒng)計;對產(chǎn)品的進貨單和產(chǎn)品的銷售單進行錄入管理和統(tǒng)計;對進貨、銷售、庫存情況進行查詢;對用戶進行管理,具體為添加用戶、刪除用戶、修改用戶密碼;對供應(yīng)商基本信息的管理;對贏利狀況分析,進行營業(yè)統(tǒng)計,按年月日及商品類別統(tǒng)計;數(shù)據(jù)精確度產(chǎn)品的進貨單和銷售單中,單價、金額采用浮點數(shù),數(shù)量都取整數(shù)。時間特性該系統(tǒng)軟件從啟動到進入系統(tǒng)登錄界面的時間正常情況下少于5秒,錄入并更新數(shù)據(jù)的時間正常情況下少于10秒。適用性該管理系統(tǒng)軟件適用于Windows2000/WindowsXP中文版下運行。2.3開發(fā)環(huán)境介紹該系統(tǒng)屬于管理信息系統(tǒng),管理信息系統(tǒng)(MIS,ManagementInformationSystem)可以保存用戶信息,通過對信息進行分析和處理,可以幫助用戶制定計劃、規(guī)范管理或提供決策依據(jù)。超市收銀系統(tǒng)具有其特殊性,通常采用C/S結(jié)構(gòu),考慮到其為小型超市,所以在架構(gòu)上面選擇兩層。2.3.1C#介紹Csharp(又被簡稱為”C#”)是微軟公司在2000年6月發(fā)布的一種新的編程語言。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承,界面,與Java幾乎同樣的語法,和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NETwindows網(wǎng)絡(luò)框架的主角[3]。C#在帶來對應(yīng)用程序的快速開發(fā)能力的同時,并沒有犧牲C與C++程序員所關(guān)心的各種特性。它忠實地繼承了C和C++的優(yōu)點。如果你對C或C++有所了解,你會發(fā)現(xiàn)它是那樣的熟悉。即使你是一位新手,C#也不會給你帶來任何其它的麻煩,快速應(yīng)用程序開發(fā)(RapidApplicationDevelopment,RAD)的思想與簡潔的語法將會使你迅速成為一名熟練的開發(fā)人員。C#是專門為.NET應(yīng)用而開發(fā)出的語言。這從根本上保證了C#與.NET框架的完美結(jié)合。在.NET運行庫的支持下,.NET框架的各種優(yōu)點在C#中表現(xiàn)得淋漓盡致。C#具有如下幾個特點:簡潔的語法在缺省的情況下,C#的代碼在.NET框架提供的“可操縱”環(huán)境下運行,不允許直接地內(nèi)存操作。它所帶來的最大的特色是沒有了指針。C#只支持一個“.”,對于我們來說,現(xiàn)在需要理解的一切僅僅是名字的嵌套而已。精心地面向?qū)ο笤O(shè)計C#具有面向?qū)ο蟮恼Z言所應(yīng)有的一切特性:封裝、繼承與多態(tài)性,這并不出奇。然而,通過精心地面向?qū)ο笤O(shè)計,從高級商業(yè)對象到系統(tǒng)級應(yīng)用,C#建造廣泛組件的絕對選擇。在C#的類型系統(tǒng)中,每種類型都可以看作一個對象。C#提供了一個叫做裝箱(boxing)與拆箱(unboxing)的機制來完成這種操作,而不給使用者帶來麻煩。C#只允許單繼承,即一個類不會有多個基類,從而避免了類型定義的混亂。C#中沒有了全局函數(shù),沒有了全局變量,也沒有了全局常數(shù)。一切的一切,都必須封裝在一個類之中。你的代碼將具有更好的可讀性,并且減少了發(fā)生命名沖突的可能。與Web的緊密結(jié)合C#組件將能夠方便地為Web服務(wù),并允許它們通過Internet被運行在任何操作系統(tǒng)上的任何語言所調(diào)用。舉個例子,XML已經(jīng)成為網(wǎng)絡(luò)中數(shù)據(jù)結(jié)構(gòu)傳遞的標準,為了提高效率,C#允許直接將XML數(shù)據(jù)映射成為結(jié)構(gòu)。這樣就可以有效的處理各種數(shù)據(jù)。完整的安全性與錯誤處理語言的安全性與錯誤處理能力,是衡量一種語言是否優(yōu)秀的重要依據(jù)。C#的先進設(shè)計思想可以消除軟件開發(fā)中的許多常見錯誤,并提供了包括類型安全在內(nèi)的完整的安全性能。內(nèi)存管理中的垃圾收集機制減輕了開發(fā)人員對內(nèi)存管理的負擔。.NET平臺提供的垃圾收集器(GarbageCollection,GC)將負責資源的釋放與對象撤銷時的內(nèi)存清理工作。版本處理技術(shù)C#提供內(nèi)置的版本支持來減少開發(fā)費用,使用C#將會使開發(fā)人員更加輕易地開發(fā)和維護各種商業(yè)用戶。靈活性和兼容性如果需要,C#允許你將某些類或者類的某些方法聲明為非安全的。如此就能使用指針、結(jié)構(gòu)和靜態(tài)數(shù)組。此外,它還引進了模擬指針功能的--delegates,指代。C#不支持類的多繼承,但是通過對接口的繼承,你將獲得這一功能。2.3.2SQLServer2005介紹Microsoft公司的SQLServer是關(guān)系型網(wǎng)絡(luò)數(shù)據(jù)庫管理系統(tǒng),它的工作環(huán)境為MicrosoftWindowsNT系列或MicrosoftWindows98。SQLServer與Microsoft公司的其它軟件,如Microsoftoffice和MicrosoftVisualStudio設(shè)計風格一致,并能相互配合。SQLServer具有分布式數(shù)據(jù)庫和倉庫管理功能,支持客戶機/服務(wù)器結(jié)構(gòu),并能進行分布式事務(wù)處理和聯(lián)機分析處理。SQLServer具有強大的數(shù)據(jù)庫管理功能,它提供豐富的管理工具以支持數(shù)據(jù)庫的安全性管理、完整性管理和作業(yè)管理。SQLServer還具有強大的網(wǎng)絡(luò)功能,支持發(fā)布Web頁面和接收電子郵件。SQLServer支持ANSISQL(標準SQL),并將標準SQL擴展成為更加實用的Transact-SQL[4]。使用SQLServer2005,開發(fā)人員通過使用相似的語言,例如微軟的VisualC#.NET和微軟的VisualBasic,將能夠創(chuàng)立數(shù)據(jù)庫對象。開發(fā)人員還將能夠建立兩個新的對象——用戶定義的類和集合。在使用本地網(wǎng)絡(luò)和互聯(lián)網(wǎng)的情況下,在不同應(yīng)用軟件之間散步數(shù)據(jù)的時候,可擴展標記語言(XML)是一個重要的標準。SQLServer2005將會自身支持存儲和查詢可擴展標記語言文件。從對SQL類的新的支持,到多活動結(jié)果集(MARS),SQLServer2005中的ADO.NET將推動數(shù)據(jù)集的存取和操縱,實現(xiàn)更大的可升級性和靈活性。2.3.3C/S介紹在網(wǎng)絡(luò)連接模式中,除對等網(wǎng)外,還有另一種形式的網(wǎng)絡(luò),即客戶機/服務(wù)器網(wǎng),Client/Server。在客戶機/服務(wù)器網(wǎng)絡(luò)中,服務(wù)器是網(wǎng)絡(luò)的核心,而客戶機是網(wǎng)絡(luò)的基礎(chǔ),客戶機依靠服務(wù)器獲得所需要的網(wǎng)絡(luò)資源,而服務(wù)器為客戶機提供網(wǎng)絡(luò)必須的資源。這里客戶和服務(wù)器都是指通信中所涉及的兩個應(yīng)用進程(軟件),所以有時要根據(jù)上下文判斷client與server是指軟件還是硬件。C/S可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷[5]。最簡單的C/S體系結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用,由兩部分組成,即客戶應(yīng)用程序和數(shù)據(jù)庫服務(wù)器程序。二者可分別稱為前臺程序與后臺程序。運行數(shù)據(jù)庫服務(wù)器程序的機器,稱為應(yīng)用服務(wù)器,一旦服務(wù)器程序被啟動,就隨時等待響應(yīng)客戶程序發(fā)來的請求;客戶程序運行在用戶自己的電腦上,對應(yīng)于服務(wù)器電腦,可稱為客戶電腦。當需要對數(shù)據(jù)庫中的數(shù)據(jù)進行任何操作時,客戶程序就自動地尋找服務(wù)器程序,并向其發(fā)出請求,服務(wù)器程序根據(jù)預(yù)定的規(guī)則作出應(yīng)答,送回結(jié)果。在典型的C/S數(shù)據(jù)庫應(yīng)用中,數(shù)據(jù)的儲存管理功能,是由服務(wù)器程序獨立進行的,并且通常把那些不同的(不管是已知還是未知的)前臺應(yīng)用所不能違反的規(guī)則,在服務(wù)器程序中集中實現(xiàn),例如訪問者的權(quán)限,編號不準重復、必須有客戶才能建立定單這樣的規(guī)則。所有這些,對于工作在前臺程序上的最終用戶,是“透明”的,他們無須過問(通常也無法干涉)這背后的過程,就可以完成自己的一切工作。在客戶服務(wù)器架構(gòu)的應(yīng)用中,前臺程序可以變的非?!笆菪 ?,麻煩的事情,都交給了服務(wù)器和網(wǎng)絡(luò)。在C/S體系的下,數(shù)據(jù)庫真正變成了公共、專業(yè)化的倉庫,受到獨立的專門管理。
3總體設(shè)計3.1設(shè)計思想(1)系統(tǒng)分成幾個相對獨立的模塊,但這些模塊都進行集中式管理。(2)分層的模塊化程序設(shè)計思想,整個系統(tǒng)采用模塊化機構(gòu)設(shè)計。作為應(yīng)用程序有較強的可操作性和擴展性。(3)合理的數(shù)據(jù)流設(shè)計,在應(yīng)用系統(tǒng)設(shè)計中,相對獨立的模塊間以數(shù)據(jù)流相互連接,使各模塊間的耦合性較低,方便系統(tǒng)運行,提高系統(tǒng)安全性。3.2設(shè)計原則為了使本系統(tǒng)功能齊全完備,操作簡便,最大限度的提高軟件的質(zhì)量,從而滿足用戶的實際需要,在設(shè)計開發(fā)過程中遵循了,如下原則:(1)合法性原則:依據(jù)產(chǎn)品核算系統(tǒng)的工作規(guī)定以及要求,參照核算實際的工作情況,進行諸如商品進貨、銷售等工作。(2)實用性原則:適合產(chǎn)品信息管理工作的實際需求,并能夠處理一些特殊情況的要求,此外,盡可能預(yù)留空間,以便擴充功能。(3)準確性原則:對輸入的相關(guān)資料建立檢錯機制,及時報錯,使用戶能夠及時準確的輸入合法資料(如類型匹配,長度不超限等)。(4)易操作原則:要求設(shè)計的系統(tǒng)功能齊全,接口友好,操作方便,必要的地方進行提示。(5)源程序可讀性原則:為了便于其它設(shè)計,維護人員讀懂代碼或以后的代碼修改,軟件升級維護,既可能做好代碼注釋工作。(6)優(yōu)化原則:為了達到優(yōu)化的目的,合理的運用窗口,菜單,對象等的繼承,自定義用戶對象,事件,函數(shù),減少不必要的重復性代碼,使程序簡潔明了,也方便了將來的維護。(7)安全性原則:該系統(tǒng)的管理員具有可設(shè)置登陸密碼,修改密碼的權(quán)限。經(jīng)過前面的設(shè)計,我們對整個系統(tǒng)有了一個初步的認識,并對各個模塊進行了功能分化。3.3功能模塊和結(jié)構(gòu)設(shè)計小型超市管理系統(tǒng)包括系統(tǒng)管理員、庫存管理員、商品銷售員三大角色,對應(yīng)本系統(tǒng)中的權(quán)限,根據(jù)權(quán)限的不同,可操作的業(yè)務(wù)不同。本節(jié)將對小型超市收銀系統(tǒng)進行總體設(shè)計,介紹系統(tǒng)的總體功能和模塊劃分。3.3.1系統(tǒng)結(jié)構(gòu)小型超市收銀系統(tǒng)所包含的功能模塊有:商品入庫模塊、商品銷售模塊、營業(yè)統(tǒng)計模塊、商品信息模塊、供應(yīng)商信息模塊、用戶信息模塊。系統(tǒng)功能結(jié)構(gòu)圖見圖3-1。小型超市收銀系統(tǒng)小型超市收銀系統(tǒng)商品入庫商品銷售營業(yè)統(tǒng)計商品信息供應(yīng)商信息用戶信息圖3-1系統(tǒng)功能結(jié)構(gòu)圖超市收銀系統(tǒng)的業(yè)務(wù)流程圖,如圖3-2所示。圖3-2系統(tǒng)業(yè)務(wù)流程圖3.3.2系統(tǒng)各功能模塊定義(1)商品入庫模塊該模塊用于實現(xiàn)商品的入庫管理,當供應(yīng)商所供商品出現(xiàn)問題需退貨時可以實現(xiàn)退貨管理。另外用戶還可以根據(jù)條件查詢相關(guān)的入庫記錄。(2)商品銷售模塊該模塊用于實現(xiàn)商品售出、收銀功能。顧客倘若對商品不滿意還可以進行退貨處理。(3)營業(yè)統(tǒng)計模塊該模塊實現(xiàn)商品銷售情況及入庫情況統(tǒng)計分析,讓系統(tǒng)用戶可以根據(jù)時間查詢統(tǒng)計信息。(4)商品信息模塊該模塊實現(xiàn)商品基本信息的管理,如商品的添加、修改、刪除操作、條件查詢。對于低于庫存報警值的商品會顯示出來。(5)用戶信息模塊該模塊實現(xiàn)用戶基本信息的管理,含用戶的添加、修改、刪除,用戶信息記錄的瀏覽。(6)供應(yīng)商信息模塊該模塊實現(xiàn)供應(yīng)商基本信息的管理,系統(tǒng)用戶可以實現(xiàn)供應(yīng)商信息的添加、刪除、修改,條件查詢以及查看供應(yīng)商可提供的相關(guān)商品。3.4數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫在一個管理信息系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞將直接對應(yīng)用系統(tǒng)的效率以及實現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計可以提高數(shù)據(jù)存儲的效率,保證數(shù)據(jù)的完整和一致,同時,合理的數(shù)據(jù)庫也將有利于程序的實現(xiàn)[6]。設(shè)計數(shù)據(jù)庫系統(tǒng)時應(yīng)該充分了解用戶各個方面的需求,包括現(xiàn)有的以及將來可能增加的需求。3.4.1數(shù)據(jù)庫的需求分析SQLServer數(shù)據(jù)庫的建立方法可以分成兩個階段,第一個階段是根據(jù)要輸入的數(shù)據(jù)性質(zhì),新增表并設(shè)置表的字段名稱、數(shù)據(jù)類型和語句,第二個階段是在表內(nèi)輸入數(shù)據(jù)。根據(jù)上述系統(tǒng)功能的分析,得出系統(tǒng)有如下需求信息:(1)系統(tǒng)必須能夠區(qū)別各種用戶,如庫存員、收銀員。(2)系統(tǒng)支持用戶的增加、登陸。(3)系統(tǒng)必須能夠顯示各種商品的信息,并允許用戶使用搜索功能來查找自己所需要的商品。(4)系統(tǒng)必須能將所有商品信息進行分類。(5)系統(tǒng)能支持用戶將商品入庫、退貨。(6)系統(tǒng)能支持用戶將商品售出、退貨。(7)系統(tǒng)支持供應(yīng)商信息的管理。(8)系統(tǒng)支持營業(yè)情況的查詢。經(jīng)過上述功能分析和需求總結(jié),設(shè)計如下的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):(1)用戶,包括數(shù)據(jù)項:編號,用戶名,密碼,權(quán)限。(2)商品類別,包括數(shù)據(jù)項:編號,商品名稱。(3)商品,包括數(shù)據(jù)項:商品編號(條形碼),商品名稱,類別,庫存量、報警值,計量單位,規(guī)格,售價。(4)供應(yīng)商,包括數(shù)據(jù)項:名稱,聯(lián)系人,聯(lián)系電話,傳真,地址,合作起始時間。(5)銷售記錄,包括數(shù)據(jù)項:編號,操作人,商品編號,售價,售出數(shù)量,售出時間。(6)進貨記錄,包括數(shù)據(jù)項:商品,供應(yīng)商,操作人,進價,進貨數(shù)量,進貨時間。(7)供貨,包括數(shù)據(jù)項:供應(yīng)商,商品,最新進價。3.4.2數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計得到上面的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)后,就可以設(shè)計出系統(tǒng)中的各個實體以及他們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計打下基礎(chǔ)。本系統(tǒng)根據(jù)上面功能分析和需求總結(jié)設(shè)計出的實體共有下面幾個,下面分別列出本系統(tǒng)所使用到的各基本實體和各實體之間的聯(lián)系。如圖3-3所示:
圖3-3實體聯(lián)系(E-R)圖3.4.3數(shù)據(jù)庫邏輯設(shè)計(1)表設(shè)計將數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計轉(zhuǎn)換成關(guān)系模型,就得到了以下的幾張數(shù)據(jù)庫中的表[7]:下面分別介紹這些表。系統(tǒng)登錄用戶的基本信息保存在用戶信息表里,其中對于用戶編號,通過自增方式實現(xiàn),無需用戶手動編號,編號從1000起始。詳細說明如表3-1所示。表3-1用戶信息表(Users)序號屬性名字段名類型長度NULL默認備注1編號UserIDint4×主鍵自增,標識種子10002真實名字UserNamevarchar10×3密碼UserPasswordvarchar50×MD5加密存儲4權(quán)限UserRightvarchar10×商品種類繁多,可以劃分為大范圍的不同種類。對于這些種類,已事先劃分并存儲于數(shù)據(jù)庫中,不需要用戶自動添加。商品類別信息表如下表3-2。表3-2商品類別信息表(GoodsType)序號屬性名字段名類型長度NULL默認備注1類別編號TypeIDtinyint×主鍵自增2名稱TypeNamenvarchar10×商品信息表記載的是商品的詳細信息,含商品編號、名稱、類別、計量單位、規(guī)格、售價、庫存量等等。具體的各字段屬性說明和類型如下表3-3。表3-3商品信息表(GoodsInfo)序號屬性名字段名類型長度NULL默認備注1商品編號GoodsIDnvarchar20×主鍵2類型號TypeIDtinyint×3名稱GoodsNamenvarchar50×4計量單位GoodsUnitnvarchar5×5規(guī)格GoodsNormnvarchar20√6售價GoodsSellPricesmallmoney×7庫存量GoodsNumint4×08報警值A(chǔ)larmNumint4×09備注GoodsRemarknvarchar100√描述信息入庫記錄表包含商品入庫的相關(guān)信息,入庫信息有入庫時間、操作人、進庫商品、商品數(shù)量等。每一筆商品的入庫都對應(yīng)一個編號,具有唯一性。在這里,對編號的處理就是用入庫時的時間做編號。具體的各字段的屬性說明和類型如下表3-4所示。表3-4入庫記錄表(StockInfo)序號屬性名字段名類型長度NULL默認備注1編號StockIDvarchar20×主鍵,與時間相關(guān)2商品編號GoodsIDnvarchar20×外鍵3供應(yīng)商編號CompanyIDint4×外鍵4操作員Operatorint4×外鍵5進價GoodsPricesmallmoney×6數(shù)量GoodsNumint4×17備注Remarknvarchar100√商品銷售信息存儲在銷售記錄表中,流水編號也采用時間作為編號,具有唯一性。各字段的詳細情況見下表3-5。表3-5銷售記錄表(SellInfo)序號屬性名字段名類型長度NULL默認備注1編號SellIDvarchar20×主鍵,與時間相關(guān)2商品編號GoodsIDnvarchar20×外鍵3操作者Operatorint4×外鍵4售價SellPricesmallmoney×5數(shù)量GoodsNumint4×6備注Remarknvarchar100√退貨原因供應(yīng)商供貨價格表中記載的是供應(yīng)商所可商品的信息,含商品編號、供貨商編號、最新進價。各字段的詳細信息見下表3-6。表3-6供應(yīng)商供貨價格表(StockPrice)序號屬性名字段名類型長度NULL默認備注1商品編號GoodsIDnvarchar20×組合主鍵2供應(yīng)商編號CompanyIDint4×組合主鍵3最新進價GoodsSellPricesmallmoney×供應(yīng)商信息表記錄的是供應(yīng)商的基本信息,其中編號由系統(tǒng)自動編號,采取主鍵自增方式,編號始于1000。各字段的詳細信息見下表3-7。
表3-7供應(yīng)商信息表(Company)序號屬性名字段名類型長度NULL默認備注1編號CompanyIDint4×主鍵自增,標識種子10002名稱CompanyNamenvarchar50×3聯(lián)系人CompanyDirectornvarchar10×4電話CompanyPhonenvarchar20×5傳真CompanyFaxnvarchar20√6地址CompanyAddnvarchar50×7合作時間HzDataTimedatetime×(2)視圖設(shè)計根據(jù)邏輯模型所設(shè)計出的各種數(shù)據(jù)表構(gòu)成了完整的物理數(shù)據(jù)庫。由于業(yè)務(wù)范圍的限制,每一個用戶不可能訪問數(shù)據(jù)庫系統(tǒng)中的所有數(shù)據(jù)表,所訪問的只是數(shù)據(jù)表的一個子集。我們把一個用戶能訪問到的數(shù)據(jù)表集合稱為一個視圖(View)[8]。視圖是以一致和直觀的方式提供給用戶的數(shù)據(jù)形式。視圖以這種形式給用戶提供數(shù)據(jù),一方面為了滿足用戶對數(shù)據(jù)訪問的方便性、簡潔性需要,使數(shù)據(jù)在視圖中以更符合用戶要求和喜好的形式展現(xiàn)出來,另一方面,為了保證數(shù)據(jù)的一致性,最好不要把數(shù)據(jù)表直接提供給最終用戶。該數(shù)據(jù)庫中涉及到的視圖有兩個:視圖QuerySell,對應(yīng)的Transact-SQL語句:SELECTdbo.SellInfo.SellID,dbo.SellInfo.GoodsID,dbo.GoodsInfo.GoodsName,dbo.GoodsType.TypeName,dbo.Users.UserName,dbo.SellInfo.SellPrice,dbo.SellInfo.GoodsNum,dbo.SellInfo.RemarkFROMdbo.GoodsInfoINNERJOINdbo.SellInfoONdbo.GoodsInfo.GoodsID=dbo.SellInfo.GoodsIDINNERJOINdbo.UsersONdbo.SellInfo.Operator=dbo.Users.UserIDINNERJOINdbo.GoodsTypeONdbo.GoodsInfo.TypeID=dbo.GoodsType.TypeID視圖QueryStock,對應(yīng)的Transact-SQL語句:SELECTdbo.StockInfo.StockID,dbo.StockInfo.GoodsID,dbo.GoodsInfo.GoodsName,dbo.GoodsType.TypeName,dbo.Company.CompanyName,dbo.Users.UserName,dbo.StockInfo.GoodsPrice,dbo.StockInfo.GoodsNum,dbo.StockInfo.RemarkFROMdbo.StockInfoINNERJOINdbo.GoodsInfoONdbo.StockInfo.GoodsID=dbo.GoodsInfo.GoodsIDINNERJOINdbo.UsersONdbo.StockInfo.Operator=dbo.Users.UserIDINNERJOINdbo.CompanyONdbo.StockInfo.CompanyID=dbo.Company.CompanyIDINNERJOINdbo.GoodsTypeONdbo.GoodsInfo.TypeID=dbo.GoodsType.TypeID
4系統(tǒng)實現(xiàn)系統(tǒng)用SQLServer2005做后臺數(shù)據(jù)庫,進行基于.net發(fā)平臺的WinForm應(yīng)用程序開發(fā),基本實現(xiàn)其功能。以下將描述系統(tǒng)幾個主要功能模塊的運行和測試的結(jié)果。4.1登陸系統(tǒng)模塊當我們建立了一個完整的系統(tǒng)時,尤其對于管理系統(tǒng),對于進入每個系統(tǒng)的人員我們都要對他進行身份驗證,我們當然不希望有任何人進入該系統(tǒng)進行惡意的破壞,對系統(tǒng)中的數(shù)據(jù)進行修改,維護該系統(tǒng)的系統(tǒng)管理員也不希望有任何麻煩,所以對系統(tǒng)進行安全保護顯的很重要,無論對于誰,系統(tǒng)的安全問題是首要的[9]。為了解決這個問題,有一個簡單、實用,但是老套的方法,就是口令加密。在該小型超市收銀系統(tǒng)中對口令的加密采取的是常用的MD5加密算法。在新增或修改用戶信息時,存入數(shù)據(jù)庫的是用戶密碼的MD5哈希值,在登錄驗證時根據(jù)用戶輸入的密碼計算相應(yīng)的MD5哈希值進行比較。加密方法:publicstaticstringEncryptMD5(stringoldData){//將字符串轉(zhuǎn)化為字節(jié)序列Byte[]clearBytes=newUnicodeEncoding().GetBytes(oldData);//計算字節(jié)序列對應(yīng)的Hash值Byte[]hashedBytes=((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);//返回經(jīng)MD5加密后的字符串returnBitConverter.ToString(hashedBytes);}在用戶登錄系統(tǒng)時,用戶只需要輸入分配的用戶ID,只要ID號正確就可以自動顯示出相應(yīng)的用戶名。為了防止他人獲知用戶的密碼,增強系統(tǒng)的安全性,我們將待輸入密碼的文本框的PasswordChar設(shè)為*,當用戶輸入密碼后,系統(tǒng)將對所輸入的密碼進行檢查,只有當密碼正確才可進入到系統(tǒng)主界面,否則系統(tǒng)會提示錯誤。登錄界面如圖4-1所示。
圖4-1登錄界面圖用戶登錄成功后,會記下登錄該系統(tǒng)的用戶的權(quán)限,權(quán)限的不同,進入主界面后可進行的操作而異,體現(xiàn)在控件的可響應(yīng)用戶的鼠標點擊事件與否。主界面如圖4-2所示。由于該用戶屬商品銷售中的收銀員,可以看到他只具有商品銷售的權(quán)限。圖4-2系統(tǒng)主界面圖4.2商品信息模塊商品基本信息管理模塊,用戶可以對商品信息加以管理,界面可交互性強,運行時的界面圖如下圖4-3。其中紅色顯示為低于庫存值,需要進貨的商品。圖4-3商品基本信息管理界面圖4.3商品入庫模塊具有庫存管理權(quán)限的用戶進行商品入庫操作時,需要輸入商品編號,至于供應(yīng)商可以從下拉列表中選擇,如果供應(yīng)商記錄未添加至數(shù)據(jù)庫,可先單擊右側(cè)的“添加供應(yīng)商”按鈕。依次輸入進貨價、進貨數(shù)量,當進貨數(shù)量為負數(shù)時進行就是退貨操作。確認進貨時若發(fā)現(xiàn)為新商品則提示先新增商品,進貨記錄成功添加出現(xiàn)對話框提醒。進貨運行界面如下圖4-4所示。圖4-4商品入庫運行圖在入庫查詢中,可以根據(jù)各種條件組合查詢,在輸入商品名稱時可實現(xiàn)模糊查詢匹配,滿足條件的入庫記錄將出現(xiàn)在網(wǎng)格中[10]。如圖4-5。圖4-5入庫查詢界面圖4.4商品銷售模塊商品銷售模塊能處理商品銷售業(yè)務(wù)過程,輸入商品編號后回車確認后單擊“確認”按鈕就可將商品添加至待售商品列表。根據(jù)快捷鍵操作,修改數(shù)量。當顧客對購買的商品不滿意時,在未使用商品的情況下,可以對商品進行退貨。這時只需將商品數(shù)量的修改置為負數(shù)即可。另外可以在備注框中輸入退貨原因信息,方便了解退貨原因,反饋給商品廠家。商品銷售運行界面圖如下圖4-6所示。圖4-6商品銷售運行界面圖開發(fā)商品銷售模塊過程中,對輸入的數(shù)據(jù)要進行嚴格控制。此時,用到較多的是TextBox控件的KeyPress事件和TextChange事件,下面對這兩個事件進行詳細說明。(1)實收金額文本框中控制金額的輸入合理,只能是數(shù)字鍵、BackSpace鍵、小數(shù)點鍵被按下時才接受所按下的鍵,實現(xiàn)的代碼如下[11]:privatevoidtxtGetMoney_KeyPress(objectsender,KeyPressEventArgse){if(e.KeyChar!=8&&!char.IsDigit(e.KeyChar)&&e.KeyChar!='.'&&e.KeyChar!='-'){MessageBox.Show("輸入數(shù)字");//彈出提示e.Handled=true;}}(2)找零金額由系統(tǒng)自動計算出并顯示在文本框中,實現(xiàn)代碼如下:privatevoidtxtGetMoney_TextChanged(objectsender,EventArgse)//當所收付款改變時,所找零錢數(shù)目也跟著改變{if(txtGetMoney.Text!=""){if(txtGetMoney.Text!="-"){floatfltMoney=Convert.ToSingle(txtGetMoney.Text.ToString());floatfltNeedPay=Convert.ToSingle(lblNeedM.Text.ToString());txtChange.Text=(fltMoney-fltNeedPay).ToString("0.0");}}else{txtChange.Text="";}}應(yīng)該所收的錢數(shù)及商品的數(shù)量也由系統(tǒng)自動計算出,當網(wǎng)格中待售商品的信息有所改變時就自動計算。相應(yīng)的系統(tǒng)運行界面如下圖4-7所示。實現(xiàn)代碼如下:privatevoidSetCount()//并修改標簽中的值,即售出總件數(shù)及售價{intintGoodsNum=0;floatfltMoney=0.0f;for(inti=0;i<dataGridView1.Rows.Count;i++){intGoodsNum+=Convert.ToInt32(dataGridView1.Rows[i].Cells[4].Value);fltMoney+=(Convert.ToSingle(dataGridView1.Rows[i].Cells[3].Value)*Convert.ToInt32(dataGridView1.Rows[i].Cells[4].Value));}intGoodsNum=Math.Abs(intGoodsNum);lblCount.Text=intGoodsNum.ToString();lblNeedM.Text=fltMoney.ToString();}圖4-7商品銷售結(jié)算結(jié)果圖手動輸入商品編號時,當已輸入前七位后系統(tǒng)將自動檢索前部相同的商品編號信息。實現(xiàn)代碼如下:privatevoidtxtID_TextChanged(objectsender,EventArgse){//自動補充功能,如果文本框中已輸入字符總長度不小于則允許自動補充if(txtID.Text.ToString().Length>=7){AutoCompleteStringCollectionmyString=newAutoCompleteStringCollection();stringstrID=txtID.Text.ToString();DataTablemyTable=newDataTable();stringstrSql="selectGoodsIDfromGoodsInfowhereGoodsIDlike'";strSql+=strID;strSql+="%'";myTable=mySql.SelectDataBase(strSql);if(myTable.Rows.Count>0){for(inti=0;i<myTable.Rows.Count;i++){myString.Add(myTable.Rows[i][0].ToString());}txtID.AutoCompleteCustomSource=myString;txtID.AutoCompleteSource=AutoCompleteSource.CustomSource;txtID.AutoCompleteMode=AutoCompleteMode.Suggest;}}else{txtID.AutoCompleteSource=AutoCompleteSource.None;txtID.AutoCompleteMode=AutoCompleteMode.None;}}商品銷售的過程中要與數(shù)據(jù)庫交涉,與數(shù)據(jù)庫頻繁傳輸數(shù)據(jù),采用ADO.NET數(shù)據(jù)庫訪問技術(shù)。為了提高效率,對插入商品銷售記錄實現(xiàn)時借助于存儲過程來提高速度。4.5營業(yè)統(tǒng)計模塊用戶可以根據(jù)時間段的輸入查看營業(yè)情況,本系統(tǒng)對營業(yè)情況的分類,有依具體明細,有按商品分類,也有按收銀員統(tǒng)計。運行界面圖如下圖4-8所示:圖4-8營業(yè)統(tǒng)計運行結(jié)果4.6供應(yīng)商模塊對供應(yīng)商信息的管理,增刪改查都在該界面完成,工具欄中的增刪改按鈕對應(yīng)相應(yīng)的操作。初進入到該窗體時所有的供應(yīng)商信息都會出現(xiàn)在窗體中的網(wǎng)格,用戶可以輸入查詢條件定位出某供應(yīng)商,對其進行修改刪除操作。雙擊網(wǎng)格中某供應(yīng)商的記錄,會出現(xiàn)該供應(yīng)商所提供的商品信息。相應(yīng)的運行界面圖如下圖4-9所示。圖4-9供應(yīng)商管理運行圖修改刪除可實現(xiàn)批量更新,而新增必須在無改刪操作或者以上操作后已做保存。這得利于數(shù)據(jù)庫ADO.NET技術(shù)中提供的對象SqlCommandBuild,將離線數(shù)據(jù)庫DataSet集中的數(shù)據(jù)更新至數(shù)據(jù)庫,保持二者的同步和一致性。實現(xiàn)代碼如下://保持和數(shù)據(jù)庫的同步更新publicDataSetUpdateDataBase(DataSetchangedDataSet,stringtableName){this.msqlCon=newSqlConnection(mstrCon);this.msqlDa=newSqlDataAdapter(this.strSQL,this.msqlCon);this.msqlCmdBld=newSqlCommandBuilder(msqlDa);this.msqlDa.Update(changedDataSet,tableName);if(changedDataSet.Tables.Contains(tableName)==true){changedDataSet.Tables[tableName].Clear();}msqlDa.Fill(changedDataSet,tableName);returnchangedDataSet;//返回已更新的數(shù)據(jù)庫表}4.7用戶信息模塊具有系統(tǒng)管理員的用戶可打開用戶信息模塊對應(yīng)的窗體,完成對用戶信息的管理,運行界面如下圖4-10。圖4-10用戶信息界面運行圖
5總結(jié)經(jīng)過三個月的努力,我終于完成了小型超市收銀系統(tǒng)的全部設(shè)計過程,各功能模塊運行流暢自然且具有一定的實用價值。軟件設(shè)計是一個精細漫長的過程。在整個過程中,都需要周密的計劃和安排,每一步驟,都需要按照軟件工程標準來完成。在設(shè)計中,我始終堅持理論指導實踐原則,并通過實踐來加強理論的學習。通過實習鍛煉,我熟悉了軟件的一般過程,加強了對實際問題的處理能力。在實習過程中,我也遇到了一些困難,主要表現(xiàn)了技術(shù)和經(jīng)驗的欠缺,但通過努力,終于一一克服了。由于開發(fā)者能力有限,加上時間倉促,本系統(tǒng)難免會出現(xiàn)一些不足之處,例如:本系統(tǒng)只適合小型超市使用,不能適合中大型超市使用;超市管理系統(tǒng)涉及范圍寬,要解決的問題多,功能復雜,實現(xiàn)困難,但由于限于時間,本系統(tǒng)只能做出其中的一部分功能。對于以上出現(xiàn)的問題,我們深表歉意,如發(fā)現(xiàn)還有其它問題,希望老師批評指正。該軟件有待改進,體現(xiàn)在如下方面:其一,條形碼掃描儀的引進將從根本上提高業(yè)務(wù)處理的速度,提高超市運作的速度。在這個系統(tǒng)中它缺少了。只因能力有限。本人亦曾查詢過相關(guān)資料,了解到要實現(xiàn)這一功能需要涉及到的知識有:串口通信、多線程等等。再者,界面美工方面有不足之處。最后,系統(tǒng)的可擴展性不是特別強,因為本系統(tǒng)采取的C/S兩層開發(fā),雖然有用到些許的公共類,實現(xiàn)了代碼共享,節(jié)省了系統(tǒng)資源,但畢竟有限且是在在兩層開發(fā)的思路上設(shè)計的。希望在以后的時間里能繼續(xù)完善。
參考文獻[1]張海藩.軟件工程導論(第五版)[M].北京:清華大學出版社,2008年.[2]衛(wèi)紅春,朱欣娟.信息系統(tǒng)分析與設(shè)計[M].西安:西安電子科技大學出版社,2008年.[3]JoeMayo.C#揭秘[M].北京:人民郵電出版社,2010年.[4]閃四清.完全掌握SQLServer2000[M].北京:人民郵電出版社,2001年.[5]謝希仁.計算機網(wǎng)絡(luò)[M].大連:大連理工大學出版社,2000年.[6]王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論(第四版)[M].北京:高等教育出版社,2006年.[7]閃四清.數(shù)據(jù)庫系統(tǒng)原理與應(yīng)用教程[M].北京:清華大學出版社,2002年.[8]李律松,陳少剛.VisualC#數(shù)據(jù)庫高級教程[M].北京:清華大學出版社,2005年.[9]唐政,房大偉.C#項目開發(fā).北京:清華大學出版社,2008年.[10]李滿潮.VisualC#.NET高級編程[M].北京:清華大學出版社,2002年.[11]MatthewReynolds,KarliWatson..NETEnterpriseDevelopmentinC#:FromDesigntoDeployment[M].London:WroxPressLtd,2002.
致謝時間如梭,大學四年馬上就要結(jié)束了,在這四年的學習生活中,我學習到了很多知識,專業(yè)知識方面更是有了很大的提高,是我這一生當中最寶貴的財富。在這最后的階段,我衷心的向?qū)W校的各位老師和我的同學及其關(guān)心鼓勵我的親人表示我最衷心的感謝,感謝他們在這四年當中對我的幫助和關(guān)心。感謝從大一到大四所有的授課教師,他們孜孜不倦的教導我們,使我們真正的學習到了知識。感謝湖南理工學院的圖書館,藏書豐富,我總能從中獲得我想要的知識和思想。這次論文其實也是學習的過程,從圖書館中我找到很多相關(guān)學習指導書籍,才有了這次畢業(yè)設(shè)計的順利完成,我感謝她。尤其要感謝的是我的畢業(yè)設(shè)計輔導老師,陶躍進老師。在他的幫助下我們才能順利的完成這次設(shè)計。陶老師多次詢問并督促研究進程,而且為我指點迷津,幫助我開拓研究思路,精心點撥、熱忱鼓勵。陶老師嚴謹求實的態(tài)度,踏踏實實的精神給我留下了深刻的印象。這些足以讓我終生受益。我祝愿陶老師工作順心順意,心想事成!最后感謝幫助過我的每一個人,沒有他們就沒有我的今天。
附錄公共類代碼:classDbSQL{privatestringmstrCon="DataSource=localhost;Database=SuperMarket;UserID=diff;Password=diffdiff";privateSqlConnectionmsqlCon;privateSqlDataAdaptermsqlDa;privatestringstrSQL;//SQL語句privateSqlCommandBuildermsqlCmdBld;privateDataSetmds=newDataSet();//publicvoidOpen()//{//this.msqlCon=newSqlConnection(mstrCon);//}///直接操作數(shù)據(jù)庫(未創(chuàng)建該類的實例時直接用)//返回DataTable,檢索數(shù)據(jù)庫數(shù)據(jù),傳入字符串,直接操作數(shù)據(jù)庫publicDataTableSelectDataBase(stringtempStrSQL){this.msqlCon=newSqlConnection(mstrCon);DataSettempDataSet=newDataSet();this.msqlDa=newSqlDataAdapter(tempStrSQL,this.msqlCon);this.msqlDa.Fill(tempDataSet);returntempDataSet.Tables[0];}//數(shù)據(jù)庫數(shù)據(jù)更新(傳字符串,直接操作數(shù)據(jù)庫)publicintUpdateDataBase(stringtempStrSql){this.msqlCon=newSqlConnection(mstrCon);msqlCon.Open();SqlCommandtemSqlCmd=newSqlCommand(tempStrSql,msqlCon);intintNumber=temSqlCmd.ExecuteNonQuery();//返回數(shù)據(jù)庫中影響的行數(shù)msqlCon.Close();returnintNumber;}///操作脫機數(shù)據(jù)庫(創(chuàng)建了該類的實例時直接用)//返回DataSet,檢索數(shù)據(jù)庫,傳入字符串,及表名稱,publicDataSetSelectDataBase(stringtempStrSQL,stringtempTableName){this.strSQL=tempStrSQL;this.msqlCon=newSqlConnection(mstrCon);this.msqlDa=newSqlDataAdapter(this.strSQL,this.msqlCon);if(mds.Tables.Contains(tempTableName)==true){this.mds.Tables[tempTableName].Clear();}this.msqlDa.Fill(mds,tempTableName);returnmds;}//保持DataSet和數(shù)據(jù)庫的同步更新publicDataSetUpdateDataBase(DataSetchangedDataSet,stringtableName){this.msqlCon=newSqlConnection(mstrCon);this.msqlDa=newSqlDataAdapter(this.strSQL,this.msqlCon);this.msqlCmdBld=newSqlCommandBuilder(msqlDa);this.msqlDa.Update(changedDataSet,tableName);if(changedDataSet.Tables.Contains(tableName)==true){changedDataSet.Tables[tableName].Clear();}msqlDa.Fill(changedDataSet,tableName);returnchangedDataSet;//返回已更新的數(shù)據(jù)庫表}//用于用戶登錄驗證publicintUserLogin(intuserId,stringuserPwd){SqlCommandmyCmd=newSqlCommand("IsUser",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//給存儲過程添加參數(shù)SqlParameterUserId=newSqlParameter("@UserId",SqlDbType.Int,4);UserId.Value=userId;myCmd.Parameters.Add(UserId);//給存儲過程添加參數(shù)SqlParameterUserPwd=newSqlParameter("@Userpwd",SqlDbType.NVarChar,10);UserPwd.Value=userPwd;myCmd.Parameters.Add(UserPwd);//給存儲過程添加參數(shù)SqlParameterflag=newSqlParameter("@exits",SqlDbType.Int,4);flag.Direction=ParameterDirection.Output;myCmd.Parameters.Add(flag);//執(zhí)行數(shù)據(jù)庫操作myCmd.ExecuteNonQuery();//取得存儲過程OUTPUT參數(shù)的值作為函數(shù)的返回值returnConvert.ToInt32(flag.Value);}//插入商品基本信息publicboolAddGoods(GoodsDetailstempGoods){this.msqlCon=newSqlConnection(mstrCon);SqlCommandmyCmd=newSqlCommand("AddGoods",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//給存儲過程添加參數(shù)SqlParametermyID=newSqlParameter("@GoodsID",SqlDbType.NVarChar,20);myID.Value=tempGoods.GoodsId;myCmd.Parameters.Add(myID);//SqlParametermyName=newSqlParameter("@GoodsName",SqlDbType.NVarChar,50);myName.Value=tempGoods.GoodsName;myCmd.Parameters.Add(myName);//SqlParametermyType=newSqlParameter("@TypeName",SqlDbType.NVarChar,10);myType.Value=tempGoods.TypeName;myCmd.Parameters.Add(myType);//SqlParametermyUnit=newSqlParameter("@GoodsUnit",SqlDbType.NVarChar,5);myUnit.Value=tempGoods.GoodsUnit;myCmd.Parameters.Add(myUnit);//SqlParametermyNorm=newSqlParameter("@GoodsNorm",SqlDbType.NVarChar,20);myNorm.Value=tempGoods.GoodsNorm;myCmd.Parameters.Add(myNorm);//SqlParametermyPrice=newSqlParameter("@GoodsSellPrice",SqlDbType.SmallMoney);myPrice.Value=tempGoods.GoodsSellPrice;myCmd.Parameters.Add(myPrice);//SqlParametermyAlarm=newSqlParameter("@AlarmNum",SqlDbType.Int);myAlarm.Value=tempGoods.AlarmNum;myCmd.Parameters.Add(myAlarm);//SqlParametermyRemark=newSqlParameter("@GoodsRemark",SqlDbType.NVarChar,100);myRemark.Value=tempGoods.GoodsRemark;myCmd.Parameters.Add(myRemark);//執(zhí)行存儲過程try{msqlCon.Open();myCmd.ExecuteNonQuery();returntrue;}catch{returnfalse;}finally{msqlCon.Close();}}//修改商品基本信息publicboolUpdateGoods(GoodsDetailstempGoods){this.msqlCon=newSqlConnection(mstrCon);SqlCommandmyCmd=newSqlCommand("UpdateGoods",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//給存儲過程添加參數(shù)SqlParametermyID=newSqlParameter("@GoodsID",SqlDbType.NVarChar,20);myID.Value=tempGoods.GoodsId;myCmd.Parameters.Add(myID);//SqlParametermyName=newSqlParameter("@GoodsName",SqlDbType.NVarChar,50);myName.Value=tempGoods.GoodsName;myCmd.Parameters.Add(myName);//SqlParametermyType=newSqlParameter("@TypeName",SqlDbType.NVarChar,10);myType.Value=tempGoods.TypeName;myCmd.Parameters.Add(myType);//SqlParametermyUnit=newSqlParameter("@GoodsUnit",SqlDbType.NVarChar,5);myUnit.Value=tempGoods.GoodsUnit;myCmd.Parameters.Add(myUnit);//SqlParametermyNorm=newSqlParameter("@GoodsNorm",SqlDbType.NVarChar,20);myNorm.Value=tempGoods.GoodsNorm;myCmd.Parameters.Add(myNorm);//SqlParametermyPrice=newSqlParameter("@GoodsSellPrice",SqlDbType.SmallMoney);myPrice.Value=tempGoods.GoodsSellPrice;myCmd.Parameters.Add(myPrice);//SqlParametermyAlarm=newSqlParameter("@AlarmNum",SqlDbType.Int);myAlarm.Value=tempGoods.AlarmNum;myCmd.Parameters.Add(myAlarm);//SqlParametermyRemark=newSqlParameter("@GoodsRemark",SqlDbType.NVarChar,100);myRemark.Value=tempGoods.GoodsRemark;myCmd.Parameters.Add(myRemark);//執(zhí)行存儲過程try{msqlCon.Open();myCmd.ExecuteNonQuery();returntrue;}catch{returnfalse;}finally{msqlCon.Close();}}//刪除商品基本信息publicboolDeleteGoods(stringtempGoodsID){this.msqlCon=newSqlConnection(mstrCon);SqlCommandmyCmd=newSqlCommand("DeleteGoods",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//給存儲過程添加參數(shù)SqlParametermyID=newSqlParameter("@GoodsID",SqlDbType.NVarChar,20);myID.Value=tempGoodsID;myCmd.Parameters.Add(myID);//執(zhí)行存儲過程try{msqlCon.Open();myCmd.ExecuteNonQuery();returntrue;}catch{returnfalse;}finally{msqlCon.Close();}}//判斷是否存在商品publicboolHasGoods(stringtempGoodsID){this.msqlCon=newSqlConnection(mstrCon);SqlCommandmyCmd=newSqlCommand("HasGoods",msqlCon);myCmd.CommandType=CommandType.StoredProcedure;//給存儲過程添加參數(shù)SqlParametermyID=newSqlParameter("@GoodsID",SqlDbType.NVarChar,20);myID.Value=tempGoodsID;myCmd.Parameters.Add(myID);//SqlParameterflag=newSqlParameter("@has",SqlDbType.Int);flag.Direction=ParameterDirection.Output;myCmd.Parameters.Add(flag);try{msqlCon.Open();myCmd.ExecuteNonQuery();return(Convert.ToBoolean(flag.Value));}
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國餐飲行業(yè)發(fā)展模式投資規(guī)劃分析報告版
- 2024-2030年中國食品及飼料添加劑市場競爭策略及發(fā)展走勢分析報告
- 2024-2030年中國風冷發(fā)電機行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 2024-2030年中國陶瓷油料產(chǎn)業(yè)未來發(fā)展趨勢及投資策略分析報告
- 2024-2030年中國陰極電泳漆磷化劑行業(yè)市場發(fā)展規(guī)模及投資可行性分析報告
- 2024-2030年中國鏍母項目可行性研究報告
- 2024-2030年中國鍍金設(shè)備行業(yè)發(fā)展前景預(yù)測及投資策略研究報告
- 2024-2030年中國銘版印刷項目可行性研究報告
- 2024年新式智能汽車短期租賃協(xié)議
- 2024年度安置房買賣合同協(xié)議書模板
- 【審計工作底稿模板】SA營業(yè)收入
- 2022年《學習有方法教案》初中心理健康教育魯畫報社版六年級全一冊教案
- 怡安翰威特:高潛人才標準構(gòu)建技術(shù)與案例分享課件
- 統(tǒng)編小學語文四年級上冊教材解讀及教學建議課件(19頁)
- 鐵塔基礎(chǔ)施工方案(完整版)
- 課堂教學觀察量表—教師課堂教學行為觀察量表
- 面部微表情大全和詳解
- 子兒吐吐(繪本) (2)
- 203741_彩繪工程施工組織設(shè)計
- 中國古典發(fā)型
- 廈門宏發(fā)繼電器基礎(chǔ)知識(課堂PPT)
評論
0/150
提交評論