基礎(chǔ)Java的超市管理系統(tǒng)開發(fā)研究_第1頁
基礎(chǔ)Java的超市管理系統(tǒng)開發(fā)研究_第2頁
基礎(chǔ)Java的超市管理系統(tǒng)開發(fā)研究_第3頁
基礎(chǔ)Java的超市管理系統(tǒng)開發(fā)研究_第4頁
基礎(chǔ)Java的超市管理系統(tǒng)開發(fā)研究_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PAGEPAGEI基礎(chǔ)Java的超市管理系統(tǒng)開發(fā)摘要隨著小型超市及店面規(guī)模的不斷擴(kuò)大,商品數(shù)量急劇增加,有關(guān)商品的各種信息量也成倍增長。各行業(yè)間聯(lián)系愈發(fā)密切,對(duì)超市管理的要求也不斷提高,實(shí)現(xiàn)超市管理自動(dòng)化,無疑將帶來高效率的企業(yè)管理。超市時(shí)時(shí)刻刻都需要對(duì)商品各種信息進(jìn)行統(tǒng)計(jì)分析,以及對(duì)所產(chǎn)生的各類數(shù)據(jù)進(jìn)來合理的整理和分析。該系統(tǒng)采用java作為接口和功能開發(fā)工具,2010作為后臺(tái)數(shù)據(jù)庫,利用java提供的各種面向?qū)ο蟮拈_發(fā)工具開發(fā)接口和數(shù)據(jù)庫。本文系統(tǒng)基本上能滿足現(xiàn)代超市進(jìn)銷存管理的需求。本文分析了軟件開發(fā)的背景以過程;首先介紹了軟件的開發(fā)環(huán)境,其次介紹了本軟件的詳細(xì)過程:數(shù)據(jù)庫的設(shè)計(jì)、各個(gè)模塊的設(shè)計(jì)和實(shí)現(xiàn),以及具體界面的設(shè)計(jì)和功能。關(guān)鍵詞:超市管理系統(tǒng);數(shù)據(jù)查詢;數(shù)據(jù)庫;JAVA

AbstractWiththecontinuousexpansionofsmallsupermarketsandstorefronts,thenumberofcommoditieshasincreaseddramatically,andtheamountofinformationrelatedtogoodshasdoubled.Thelinksbetweenindustriesarebecomingmoreandmorecloselyrelated,andthedemandforsupermarketmanagementisalsoimproving.Theautomationofsupermarketmanagementwillundoubtedlybringaboutefficientbusinessmanagement.Supermarketsneedtomakestatisticalanalysisofallkindsofinformation,andsortoutandanalyzeallkindsofdata.ThissystemusesJAVAastheinterfaceandfunctiondevelopmenttoolandSQLSever2010asthebackgrounddatabase,andusesallkindsofobjectorienteddevelopmenttoolsprovidedbythemtodeveloptheinterfaceanddatabase.Thissystembasicallymeetstheneedsofmodernsupermarket'spurchase,saleandstoragemanagement.Thebackgroundofsoftwaredevelopmentisanalyzedinthispaper.First,thedevelopmentenvironmentofthesoftwareisintroduced.Secondly,thedetailedprocessofthesoftwareisintroduced:thedesignofthedatabase,thedesignandimplementationofeachmodule,andthedesignandfunctionofthespecificinterface.Keywords:supermarketmanagementsystem;dataquery;database;JAVA

目錄摘要 IAbstract II1緒論 11.1項(xiàng)目背景 11.2國內(nèi)外發(fā)展?fàn)顩r 11.3研究?jī)?nèi)容 22開發(fā)技術(shù) 32.1系統(tǒng)運(yùn)行環(huán)境環(huán)境 32.2系統(tǒng)開發(fā)技術(shù) 32.2.1JAVA簡(jiǎn)介 32.2.2MySQL數(shù)據(jù)庫 32.2.3HTML5 43軟件需求分析 53.1需求分析 53.2可行性分析 53.3系統(tǒng)功能結(jié)構(gòu) 53.4系統(tǒng)業(yè)務(wù)流圖 54系統(tǒng)設(shè)計(jì) 74.1數(shù)據(jù)庫與數(shù)據(jù)庫表設(shè)計(jì) 74.1.1數(shù)據(jù)庫介紹 74.1.2E-R圖 74.1.3數(shù)據(jù)庫表設(shè)計(jì) 84.2系統(tǒng)功能模塊設(shè)計(jì) 114.2.1公共類設(shè)計(jì) 114.2.2系統(tǒng)登錄模塊設(shè)計(jì) 124.2.3系統(tǒng)主窗體設(shè)計(jì) 134.2.4進(jìn)貨單模塊設(shè)計(jì) 144.2.5銷售單模塊設(shè)計(jì) 184.2.6庫存盤點(diǎn)模塊設(shè)計(jì) 214.2.7數(shù)據(jù)庫備份與恢復(fù)模塊設(shè)計(jì) 225系統(tǒng)測(cè)試 245.1系統(tǒng)軟件測(cè)試 245.1.1測(cè)試的原則 245.1.2模塊測(cè)試 245.1.3集成測(cè)試 25結(jié)語 26參考文獻(xiàn) 27致謝 29PAGE281緒論1.1項(xiàng)目背景二十一世紀(jì)是信息的時(shí)代,隨著計(jì)算機(jī)技術(shù)的發(fā)展以及計(jì)算機(jī)網(wǎng)絡(luò)(互聯(lián)網(wǎng)等)的逐漸普及。信息的交換和信息流通特別重要。超市等服務(wù)性行業(yè)的競(jìng)爭(zhēng)也進(jìn)入到一個(gè)全新的領(lǐng)域。同時(shí)我們都可以看到這樣一個(gè)現(xiàn)象競(jìng)爭(zhēng)已不再是規(guī)模的競(jìng)爭(zhēng),而是技術(shù)的競(jìng)爭(zhēng)、管理的競(jìng)爭(zhēng)、人才的競(jìng)爭(zhēng)。技術(shù)的提升和管理的升級(jí)是連鎖超市業(yè)的競(jìng)爭(zhēng)核心。零售領(lǐng)域目前呈現(xiàn)多元化發(fā)展趨勢(shì),多種行業(yè)形態(tài),如:超市、倉儲(chǔ)店、便利店、特許加盟店、專店、貨倉等等將相互并存,相互制約。如何在激烈的競(jìng)爭(zhēng)中擴(kuò)大銷售額、降低經(jīng)營成本、擴(kuò)大經(jīng)營規(guī)模,將成為本進(jìn)銷存管理系統(tǒng)努力追求的目標(biāo)和發(fā)展方向。超市經(jīng)營模式是當(dāng)前最為流行的市場(chǎng)模式之一,所以與之相關(guān)的管理和配置的需求與要求都大大提高了。當(dāng)今社會(huì),超市已成為社會(huì)不可缺少的一部分,不論大中小城市,都存在或大或小或多或少的超市。對(duì)于一個(gè)稍有規(guī)模的超市甚至很小的店面,都需要一個(gè)管理系統(tǒng),進(jìn)行規(guī)范化統(tǒng)一化的管理。因此超市管理系統(tǒng)的開發(fā),顯得十分有必要。超市形態(tài)模式具有種種優(yōu)點(diǎn),但在目前狀況下,它仍存在零售業(yè)企業(yè)所共有的落后的一面。目前市面上是有何種各樣的這類管理系統(tǒng),但是用JAVA語言編譯實(shí)現(xiàn)的幾乎沒有。因本人熱愛并學(xué)習(xí)JAVA語言,為了驗(yàn)證自己的JAVA學(xué)習(xí)情況,同時(shí)想知道自己對(duì)JAVA的掌握能力。于是決定用JAVA重新開發(fā)一個(gè)這樣的系統(tǒng),以彌補(bǔ)JAVA語言編譯在這類系統(tǒng)上的空缺。經(jīng)過認(rèn)真的市場(chǎng)研究和從實(shí)際分析,開發(fā)并實(shí)現(xiàn)一個(gè)比較合理的,完善的超市進(jìn)銷存管理系統(tǒng)。也許這個(gè)系統(tǒng)還有很多BUG,但是我會(huì)在以后慢慢修改,同時(shí)也希望大家能提出所知道的漏洞。1.2國內(nèi)外發(fā)展?fàn)顩r信息管理系統(tǒng)在強(qiáng)調(diào)管理、強(qiáng)調(diào)信息的現(xiàn)代社會(huì)中它變得越來越普及。信息管理系統(tǒng)在很多科學(xué)的基礎(chǔ)上,形成信息收集和加工的方法,從而形成一個(gè)縱橫交錯(cuò)的系統(tǒng)。從國際技術(shù)發(fā)展趨勢(shì)來看,20世紀(jì)90年代出現(xiàn)了集中全新的管理技術(shù)。一種遠(yuǎn)見的企業(yè)管理模式,其特點(diǎn)是職工素質(zhì)高、組織機(jī)構(gòu)精良、多功能小組效率高、信息存放靈活、影響要求迅速。在二十一世紀(jì)中,管理信息系統(tǒng)(MIS)也正處于進(jìn)入新的發(fā)展階段的特點(diǎn)。許多新問題和新情況要我們?nèi)パ芯亢吞接?。?jīng)濟(jì)領(lǐng)域和經(jīng)濟(jì)學(xué)思想的變化和科學(xué)思想的變化是兩個(gè)直接影響到MIS研究和教學(xué)的重要的背景。值得我們認(rèn)真地進(jìn)行研究。中國大學(xué)中開設(shè)MIS課程的不到100個(gè)。具體包括在管理科學(xué)當(dāng)中,并涵蓋了圖書情報(bào),信息管理等內(nèi)容。中國的MIS的先期發(fā)展有大連研究中心和幾個(gè)財(cái)經(jīng)學(xué)校,隨后又逐漸有北大、人大等大學(xué)加入其中。1.3研究?jī)?nèi)容本系統(tǒng)使用JAVA作為界面和功能開發(fā)工具和SQLSever2010作為后臺(tái)數(shù)據(jù)庫,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具進(jìn)行界面和數(shù)據(jù)庫開發(fā)。本文系統(tǒng)基本上能滿足現(xiàn)代超市進(jìn)銷存管理的需求。本文分析了軟件開發(fā)的背景以過程;首先介紹了軟件的開發(fā)環(huán)境,其次介紹了本軟件的詳細(xì)過程:數(shù)據(jù)庫的設(shè)計(jì)、各個(gè)模塊的設(shè)計(jì)和實(shí)現(xiàn),以及具體界面的設(shè)計(jì)和功能。

2開發(fā)技術(shù)2.1系統(tǒng)運(yùn)行環(huán)境環(huán)境硬件環(huán)境,CPU(中央處理器):Intel(R)Pentium(R)E53002.60GHzRAM(內(nèi)存):2GHDD(硬盤):500G軟件開發(fā)環(huán)境,操作系統(tǒng):WindowsxpSP3JDK環(huán)境:JAVASEDevelopmentKIT(JDK)Version6開發(fā)工具:Eclipse3.2數(shù)據(jù)庫管理軟件:MicrosoftMySQLSP42.2系統(tǒng)開發(fā)技術(shù)本系統(tǒng)的開發(fā)主要是使用在Eclipse平臺(tái)下的JAVA語言,并結(jié)合了MySQL數(shù)據(jù)庫技術(shù),使此系統(tǒng)具有強(qiáng)大的查詢功能。2.2.1JAVA簡(jiǎn)介Java語言是一個(gè)支持網(wǎng)絡(luò)計(jì)算的面向?qū)ο蟪绦蛟O(shè)計(jì)語言。Java語言吸收了Smalltalk語言和C++語言的優(yōu)點(diǎn),并增加了其它特性,如支持并發(fā)程序設(shè)計(jì)、網(wǎng)絡(luò)通信、和多媒體數(shù)據(jù)控制等。主要特性如下:(1)Java語言是簡(jiǎn)單的。Java語言的語法與C語言和C++語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java。另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換。特別地,Java語言不使用指針,并提供了自動(dòng)的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。(2)Java語言是一個(gè)面向?qū)ο蟮?。Java語言全面支持動(dòng)態(tài)綁定,而C++語言只對(duì)虛函數(shù)使用動(dòng)態(tài)綁定??傊?,Java語言是一個(gè)純的面向?qū)ο蟪绦蛟O(shè)計(jì)語言。2.2.2MySQL數(shù)據(jù)庫MySQL是最受歡迎的開源SQL數(shù)據(jù)庫管理系統(tǒng),它由MySQLAB開發(fā)、發(fā)布和支持。MySQL是MySQLAB的注冊(cè)商標(biāo)。MySQL是一個(gè)快速的、多線程、多用戶和健壯的SQL數(shù)據(jù)庫服務(wù)器。MySQL服務(wù)器支持關(guān)鍵任務(wù)、重負(fù)載生產(chǎn)系統(tǒng)的使用,也可以將它嵌入到一個(gè)大配置(mass-deployed)的軟件中去。MySQL網(wǎng)站()提供了關(guān)于MySQL和MySQLAB的最新的消息。MySQL是一個(gè)數(shù)據(jù)庫管理系統(tǒng)一個(gè)數(shù)據(jù)庫是一個(gè)結(jié)構(gòu)化的數(shù)據(jù)集合。它可以是從一個(gè)簡(jiǎn)單的銷售表到一個(gè)美術(shù)館、或者一個(gè)社團(tuán)網(wǎng)絡(luò)的龐大的信息集合。如果要添加、訪問和處理存儲(chǔ)在一個(gè)計(jì)算機(jī)數(shù)據(jù)庫中的數(shù)據(jù),你就需要一個(gè)像MySQL這樣的數(shù)據(jù)庫管理系統(tǒng)。2.2.3HTML5HTML5,即JavaServerPages,它是一種基于Java的語言技術(shù),用于生成動(dòng)態(tài)網(wǎng)頁,支持跨平臺(tái)、跨Web服務(wù)器。眾所周知,當(dāng)今網(wǎng)絡(luò)開發(fā)的三大主流技術(shù),有Sun公司的HTML5,微軟的ASP以及開源的JAVA。其中HTML5憑借J2EE平臺(tái),有跨平臺(tái)使用優(yōu)勢(shì),能夠輕松地運(yùn)行與微軟的視窗系統(tǒng)、服務(wù)器通UNIX系統(tǒng)和開源的Linux系統(tǒng),這項(xiàng)優(yōu)勢(shì)是其它語言難以匹敵的。HTML5擁有Java(加哇)語言“Writeonce,runeverywhere(一次編碼,遍地運(yùn)行)”的特性。鑒于HTML5的眾多優(yōu)勢(shì),其必將成為未來發(fā)展的趨勢(shì)。HTML5技術(shù)所開發(fā)的web應(yīng)用程序是基于Java的,它擁有Java跨平臺(tái)的特性,以及業(yè)務(wù)代碼分離,組建重用,基礎(chǔ)Javaservlet功能和預(yù)編譯功能。

3軟件需求分析3.1需求分析根據(jù)用戶方的需求,要求企業(yè)進(jìn)銷存管理系統(tǒng)具有以下功能:(1)界面設(shè)計(jì)美觀大方,操作方便、快捷、靈活。(2)實(shí)現(xiàn)強(qiáng)大的進(jìn)銷存管理,包括基本信息、進(jìn)貨、銷售和庫存管理。(3)提供數(shù)據(jù)庫備份與恢復(fù)功能。(4)提供庫存盤點(diǎn)功能。(5)提供技術(shù)支持的聯(lián)系方式,可以使用郵件進(jìn)行溝通,或者直接連接到技術(shù)網(wǎng)站。3.2可行性分析企業(yè)進(jìn)銷存管理系統(tǒng)必須提供商品信息、供應(yīng)商信息和客戶信息的基礎(chǔ)設(shè)置;提供強(qiáng)大的搜索功能和商品的進(jìn)貨、銷售和庫存管理功能。系統(tǒng)還必須保證數(shù)據(jù)的安全性、完整性和準(zhǔn)確性。項(xiàng)目主要以企業(yè)的進(jìn)貨、銷售和查詢統(tǒng)計(jì)功能為主,對(duì)于庫存、銷售和進(jìn)貨的記錄信息應(yīng)該及時(shí)、準(zhǔn)確的保存,并提供想要的查詢和統(tǒng)計(jì)。由于庫存商品數(shù)量太多,不易盤點(diǎn),傳統(tǒng)的盤點(diǎn)方式容易出錯(cuò),系統(tǒng)中的庫存盤點(diǎn)功能要準(zhǔn)確的計(jì)算出各種商品的損益數(shù)量,減少企業(yè)的不必要的損失。3.3系統(tǒng)功能結(jié)構(gòu)企業(yè)進(jìn)銷存管理系統(tǒng)功能結(jié)構(gòu)圖如圖2.1所示。圖2.1企業(yè)進(jìn)銷存管理系統(tǒng)功能結(jié)構(gòu)圖3.4系統(tǒng)業(yè)務(wù)流圖企業(yè)進(jìn)銷存管理系統(tǒng)業(yè)務(wù)流程圖如圖2.2所示。圖2.2企業(yè)進(jìn)銷存管理系統(tǒng)業(yè)務(wù)流程圖

4系統(tǒng)設(shè)計(jì)4.1數(shù)據(jù)庫與數(shù)據(jù)庫表設(shè)計(jì)4.1.1數(shù)據(jù)庫介紹所謂數(shù)據(jù)庫(Database)就是按一定組織方式存儲(chǔ)在一起,相互相關(guān)的若干數(shù)據(jù)的結(jié)合,數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem)就是一種操作和管理數(shù)據(jù)庫的大型軟件,簡(jiǎn)稱DBMS,他們建立在操作系統(tǒng)的基礎(chǔ)上,對(duì)數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理和控制,其功能包括數(shù)據(jù)庫定義,數(shù)據(jù)庫管理,數(shù)據(jù)庫的建立和維護(hù),與操作系統(tǒng)通信等。4.1.2E-R圖購銷存系統(tǒng)主要實(shí)現(xiàn)從購銷、庫存到銷售的一體化管理,設(shè)計(jì)了商品信息、商品供應(yīng)商、購貨客戶等多個(gè)實(shí)體。下面列舉了關(guān)鍵的實(shí)體和系統(tǒng)的綜合E-R圖。供應(yīng)商實(shí)體屬性圖供應(yīng)商實(shí)體包括:編號(hào)、名稱、簡(jiǎn)稱、地址、電話、郵政編碼、傳真、聯(lián)系人、聯(lián)系人電話、開戶行和E-mail屬性,如圖4.1所示。圖4.1供貨商實(shí)體屬性圖商品實(shí)體屬性圖商品實(shí)體包括:編號(hào)、商品名稱、商品簡(jiǎn)稱、產(chǎn)地、單位、規(guī)格、包裝、批號(hào)、批準(zhǔn)文號(hào)、商品簡(jiǎn)介和供應(yīng)商屬性。如圖4.2所示。圖4.2商品實(shí)體屬性圖客戶實(shí)體屬性圖客戶實(shí)體包括:客戶編號(hào)、客戶名稱、簡(jiǎn)稱、地址、電話、郵政編碼、聯(lián)系人電話、傳真、開戶行和賬號(hào)屬性。如圖4.3所示。圖4.3客戶實(shí)體屬性圖銷售實(shí)體屬性圖銷售實(shí)體分為銷售主表和銷售明細(xì)表兩個(gè)實(shí)體,它們是一對(duì)多的關(guān)系。其中銷售主表包括:銷售票號(hào)、品種數(shù)、金額、驗(yàn)收結(jié)論、客戶名稱、經(jīng)手人、結(jié)算方式、操作員和銷售日期屬性。銷售明細(xì)表包括:編號(hào)、銷售票號(hào)、商品編號(hào)、數(shù)量和單價(jià)屬性。如圖4.4所示。圖4.4銷售實(shí)體屬性圖4.1.3數(shù)據(jù)庫表設(shè)計(jì)數(shù)據(jù)庫在整個(gè)管理系統(tǒng)中占據(jù)非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)的好壞直接影響著系統(tǒng)的效率和實(shí)現(xiàn)效果。進(jìn)銷存管理系統(tǒng)采用MySQLSP4版本的數(shù)據(jù)庫,數(shù)據(jù)庫名稱為db_JXC,因篇幅所限,本論文只給出幾個(gè)重要數(shù)據(jù)表的表結(jié)構(gòu)。供應(yīng)商信息表供應(yīng)商信息表的名稱為tb_gysinfo,主要用于存儲(chǔ)供應(yīng)商的詳細(xì)信息,結(jié)構(gòu)如表3.1所示。表3.1供應(yīng)商信息表字段名稱數(shù)據(jù)類型字段大小是否主鍵說明idvarchar32主鍵供貨商編號(hào)namevarchar50供貨商名稱jcvarchar20供貨商簡(jiǎn)稱addressvarchar100供貨商地址bianmavarchar10郵政編碼telvarchar15電話faxvarchar15傳真lianvarchar8聯(lián)系人ltelvarchar15聯(lián)系電話yhvarchar50開戶銀行mailvarchar30電子郵箱商品信息表商品信息表的名稱為tb_spinfo,主要用于存儲(chǔ)商品的詳細(xì)信息,結(jié)構(gòu)如表3.2所示。表3.2商品信息表字段名稱數(shù)據(jù)類型字段大小是否主鍵說明idvarchar32主鍵商品編號(hào)spnamevarchar50商品名稱jcvarchar30商品簡(jiǎn)稱cdvarchar50產(chǎn)地dwvarchar10商品計(jì)量單位ggvarchar10商品規(guī)格bzvarchar20包裝phvarchar32批號(hào)pzwhvarchar50批準(zhǔn)文號(hào)memovarchar100備注gysnamevarchar50供應(yīng)商名稱入庫主表入庫主表的名稱為tb_ru_main,主要用于存儲(chǔ)入庫單據(jù)信息,其結(jié)構(gòu)如表3.3所示。表3.3入庫主表字段名稱數(shù)據(jù)類型字段大小是否主鍵說明rkIDvarchar32主鍵入庫編號(hào)pzsfloat8品種數(shù)量jemoney8總計(jì)金額ysjlvarchar50驗(yàn)收結(jié)論gysnamevarchar100供貨商名稱rkdatedatetime8入庫時(shí)間czyvarchar30操作員jsrvarchar30經(jīng)手人jsfsvarchar10結(jié)算方式入庫明細(xì)表入庫明細(xì)表的名稱為tb_ruku_detail,主要用于存儲(chǔ)入庫的詳細(xì)信息,結(jié)構(gòu)如表3.4所示。表3.4入庫明細(xì)表字段名稱數(shù)據(jù)類型字段大小是否主鍵說明idvarchar50主鍵流水號(hào)rkIDvarchar0入庫編號(hào)spidvarchar50商品編號(hào)djvarchar8單價(jià)s1float8數(shù)量銷售主表銷售主表的名稱為tb_sell_main,主要用于存儲(chǔ)銷售單據(jù)的信息,結(jié)構(gòu)如表3.5所示。表3.5銷售主表字段名稱數(shù)據(jù)類型字段大小是否主鍵說明sellIDvarchar30主鍵銷售編號(hào)pzsfloat8銷售品種數(shù)jemoney8總計(jì)金額ysjlvarchar50驗(yàn)收結(jié)論khnamevarchar100客戶名稱xsdatedatetime8銷售日期czyvarchar30操作員jsrvarchar30經(jīng)手人jsfsvarchar10結(jié)算方式銷售明細(xì)表銷售明細(xì)表的名稱為tb_sell_detail,主要用于存儲(chǔ)銷售的詳細(xì)信息,結(jié)構(gòu)如表3.6所示。表3.6銷售明細(xì)表字段名稱數(shù)據(jù)類型字段大小是否主鍵說明idvarchar50主鍵流水號(hào)sellIDvarchar50銷售編號(hào)spidvarchar50產(chǎn)品編號(hào)djmoney8銷售單價(jià)slfloat8銷售數(shù)量客戶信息表客戶信息表的名稱為tb_khinfo,主要用于存儲(chǔ)客戶的信息,結(jié)構(gòu)如表3.7所示。表3.7客戶信息表字段名稱數(shù)據(jù)類型長度是否主鍵說明idvarchar50主鍵客戶編號(hào)khnamevarchar50客戶名稱jianvarchar50客戶簡(jiǎn)稱addressvarchar100客戶地址bianmavarchar50郵政編碼telvarchar50客戶電話faxvarchar50客戶傳真lianvarchar50聯(lián)系人ltelvarchar50聯(lián)系人電話mailvarchar50E-mail地址xinhangvarchar60開戶行haovarchar60賬號(hào)4.2系統(tǒng)功能模塊設(shè)計(jì)4.2.1公共類設(shè)計(jì)(1)Item公共類Item公共類是對(duì)數(shù)據(jù)表最常用的id和name屬性的封裝,用于Swing列表、表格、下拉列表框等組件的復(fù)制,該類重寫了toString()方法,在該類方法中只輸出那么屬性,所以Item類在Swing組件現(xiàn)實(shí)文本時(shí)只包含名稱信息,不會(huì)連帶著id屬性。但是在獲取組件的內(nèi)容時(shí),獲取的是Item類的對(duì)象,從該對(duì)象中可以很容易的獲取id屬性,然后通過該屬性到數(shù)據(jù)庫中獲取唯一的數(shù)據(jù)。(2)數(shù)據(jù)模型公共類數(shù)據(jù)模型公共類對(duì)應(yīng)于數(shù)據(jù)庫中的不同數(shù)據(jù)表,將被訪問數(shù)據(jù)庫的dao類以及程序中的每個(gè)模塊甚至組件使用。與使用項(xiàng)公共類類似,數(shù)據(jù)模型封裝數(shù)據(jù)表中的所有字段(屬性),但數(shù)據(jù)類型是純模型。它不但需要重寫父類的toString()方法,還要重寫hashCode()方法和equals()方法(這兩個(gè)方法分別用于生成模型對(duì)象的哈希代碼和判斷模型對(duì)象是否相同)。模型類主要用于存儲(chǔ)數(shù)據(jù),并通過想要的getXXX()方法和setXXX()實(shí)現(xiàn)不同屬性的訪問原則。(3)Dao類Dao的全稱是DataAccessObject,即數(shù)據(jù)庫訪問對(duì)象。在此項(xiàng)目中,將應(yīng)用數(shù)據(jù)庫訪問類的名稱。在這個(gè)類中,實(shí)現(xiàn)了驅(qū)動(dòng)、連接、關(guān)閉數(shù)據(jù)庫和操作多個(gè)數(shù)據(jù)庫的方法。這些方法包括不同數(shù)據(jù)表的操作方法。其關(guān)鍵代碼如下:packagecom.lzw.dao;importJAVA.sql.*;importJAVA.sql.Date;importJAVA.util.*;importJAVAx.swing.JOptionPane;importcom.lzw.Item;importcom.lzw.dao.model.*;publicclassDao{ protectedstaticStringdbClassName="net.sourceforge.jtds.jdbc.Driver"; protectedstaticStringdbUrl="jdbc:jtds:sqlserver://localhost:1433/" +"db_database28;SelectMethod=Cursor"; protectedstaticStringdbUser="sa"; protectedstaticStringdbPwd=""; protectedstaticStringsecond=null; publicstaticConnectionconn=null; static{ try{ if(conn==null){ Class.forName(dbClassName).newInstance(); conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd); } }catch(ClassNotFoundExceptione){ e.printStackTrace(); JOptionPane.showMessageDialog(null, "請(qǐng)將MySQL的JDBC驅(qū)動(dòng)包復(fù)制到lib文件夾中。"); System.exit(-1); }catch(Exceptione){ e.printStackTrace(); } }4.2.2系統(tǒng)登錄模塊設(shè)計(jì)系統(tǒng)登錄也是項(xiàng)目必須開發(fā)的模塊,主要由兩部分組成,一部分是登錄窗體,另一部分是窗體中帶背景圖片的內(nèi)容面板。它是系統(tǒng)的安全門,只有提供正確的用戶名和登錄口令之后,才能進(jìn)入企業(yè)進(jìn)銷存管理系統(tǒng)進(jìn)行進(jìn)銷存管理工作。系統(tǒng)登錄模塊如圖4.5所示。圖4.5系統(tǒng)登錄界面創(chuàng)建內(nèi)容面板所有組件都要布置在窗體的內(nèi)容面板上,而登陸模塊的內(nèi)容使用了背景圖片來美化窗體界面,這就需要繼承Swing的Jpanel類編寫自己的面板類,然后將面板類作為窗體的內(nèi)容面板。創(chuàng)建登錄窗體創(chuàng)建LoginDialog類,該類繼承Jframe類,成為一個(gè)窗體。設(shè)置窗體的標(biāo)題為“系統(tǒng)登錄”,設(shè)置內(nèi)容面板為LoginPanel類的對(duì)象。該窗體用于不知各種組件,來實(shí)現(xiàn)系統(tǒng)登錄的界面。“密碼”文本框的回車事件一個(gè)擊鍵事件監(jiān)聽器被添加到系統(tǒng)登錄表單的“密碼”文本框中。當(dāng)它獲得在“密碼”文本框中輸入的返回字符時(shí),它將執(zhí)行登錄事件。也就是說,在“password”文本框中輸入密碼后,按enter鍵將執(zhí)行與單個(gè)“l(fā)ogin”按鈕相同的業(yè)務(wù)邏輯?!暗卿洝卑粹o的事件“登錄”按鈕用于執(zhí)行用戶名和密碼的驗(yàn)證工作,如果驗(yàn)證用戶名和密碼有效,則啟動(dòng)系統(tǒng),否則禁止進(jìn)入系統(tǒng)。在“登錄”按鈕的動(dòng)作事件監(jiān)聽器種,首先獲取用戶輸入的用戶名與密碼信息,然后調(diào)用Dao類的checkLogin()方法,如果該方法返回true則登陸成功,否則禁止用戶登錄,并提示輸入的用戶名與密碼無法登錄系統(tǒng)。4.2.3系統(tǒng)主窗體設(shè)計(jì)主窗體是人際交互的本體,用戶通過主窗體中提供的各種菜單、表格、文本框、子窗體等組件進(jìn)行管理操作。本系統(tǒng)主界面采用的是MID(即“多文檔界面”),類似于Word的應(yīng)用程序,可以同時(shí)打開多個(gè)子窗體,并對(duì)打開的功能窗體進(jìn)行各種操作。系統(tǒng)主窗體界面如圖4.6所示。圖4.6系統(tǒng)主窗體界面4.2.4進(jìn)貨單模塊設(shè)計(jì)進(jìn)貨單模塊負(fù)責(zé)添加企業(yè)的進(jìn)貨信息,他根據(jù)進(jìn)貨人員提供的單據(jù),將采購商品的名稱、編號(hào)、產(chǎn)地、規(guī)格、單價(jià)和數(shù)量等信息記錄到數(shù)據(jù)的庫存表中。進(jìn)貨單模塊窗體界面如圖4.9所示。圖4.9進(jìn)貨單窗體界面設(shè)計(jì)進(jìn)貨單窗體在Eclipse中選擇“文件”/“新建”/VisualClass命令,在彈出的NewJAVAVisualClass對(duì)話框中創(chuàng)建InternalFrame內(nèi)部窗體類,命名為JinHuoDan_Iframe。添加進(jìn)貨商品在進(jìn)貨單船體點(diǎn)擊“添加”按鈕,會(huì)在表格中添加一個(gè)空行可以再該空行的第一個(gè)字段選擇商品名稱,其他的字段信息會(huì)根據(jù)選擇的商品自動(dòng)填充。這就需要為“添加”按鈕編寫ActionListener動(dòng)作監(jiān)聽器,在該監(jiān)聽器中實(shí)現(xiàn)相應(yīng)的操作?!疤砑印卑粹o的初始化由getTiButton()方法完成,該方法在初始化“添加”按鈕時(shí),為按鈕添加了動(dòng)作事件監(jiān)聽器。其關(guān)鍵代碼如下: privateJButtongetTjButton(){ if(tjButton==null){ tjButton=newJButton(); tjButton.setText("添加"); tjButton.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ //初始化票號(hào) JAVA.sql.Datedate=newJAVA.sql.Date(jhsjDate.getTime()); jhsjField.setText(date.toString()); StringmaxId=Dao.getRuKuMainMaxId(date); idField.setText(maxId); //結(jié)束表格中沒有編寫的單元 stopTableCellEditing(); //如果表格中不包含空行,就添加新行 for(inti=0;i<=table.getRowCount()-1;i++){ if(table.getValueAt(i,0)==null) return; } DefaultTableModelmodel=(DefaultTableModel)table .getModel(); model.addRow(newVector()); } }); } returntjButton; }進(jìn)貨統(tǒng)計(jì)在bottomPanel面板中布置了多個(gè)文本框,用于統(tǒng)計(jì)品種數(shù)量、貨品總數(shù)、合計(jì)金額等商品信息,在添加貨品之后,要實(shí)現(xiàn)商品信息的自動(dòng)統(tǒng)計(jì),既要在table表格的PropertyChangeListener事件監(jiān)聽器編寫統(tǒng)計(jì)代碼。這里將統(tǒng)計(jì)代碼編寫在ComputeInfo()方法,然后在事件監(jiān)聽器中調(diào)用。當(dāng)table表格發(fā)生屬性改變事件是,事件監(jiān)聽器首先會(huì)檢測(cè)發(fā)生的事件類型,也就是判斷發(fā)生了那種更改屬性的事件,如果事件類型是tableCellEditor則說明術(shù)語表格編輯事件,這時(shí)應(yīng)該針對(duì)表格的修改事件去調(diào)用ComputeInfo()方法執(zhí)行產(chǎn)品進(jìn)貨的統(tǒng)計(jì)業(yè)務(wù)并將結(jié)果顯示在相應(yīng)的組件上。商品入庫再添加了進(jìn)貨單中的所有商品后,單機(jī)“入庫”按鈕可以將這些商品添加到數(shù)據(jù)庫中。這需要在“入庫”按鈕的初始化方法中,為按鈕添加ActionListener動(dòng)作監(jiān)聽器,在監(jiān)聽器中實(shí)現(xiàn)商品入庫的業(yè)務(wù)邏輯。getRukuButton()方法是“入庫”按鈕的初始化方法,該方法將判斷“入庫”按鈕對(duì)象是否初始化,如果已經(jīng)初始化就直接將按鈕對(duì)象返回給方法調(diào)用者,否者現(xiàn)對(duì)按鈕進(jìn)行初始胡,然后返回該按鈕對(duì)象。在初始化“入庫”按鈕的過程中為按鈕添加了事件監(jiān)聽器,在該事件監(jiān)聽器中首先調(diào)用stopTableCellEditing()方法停止正在編輯的表格單元,然后獲取進(jìn)貨單的品種數(shù)量,結(jié)算方式、合計(jì)金額、經(jīng)手人、操作員、進(jìn)票號(hào)、驗(yàn)證結(jié)論等信息,并對(duì)關(guān)鍵信息進(jìn)行判斷,防止用戶忘記填寫這些關(guān)鍵信息。最后,創(chuàng)建進(jìn)貨主表的模型對(duì)象、進(jìn)貨詳細(xì)表的模型對(duì)象和庫存表的模型對(duì)象,使用進(jìn)貨單窗體中的信息初始化這些模型對(duì)象,并把他們通過Dao公共類的insertRukuInfo()方法保存到數(shù)據(jù)庫中。其關(guān)鍵代碼如下:privateJButtongetRukuButton(){ if(rukuButton==null){ rukuButton=newJButton(); rukuButton.setText("入庫"); rukuButton.addActionListener(newJAVA.awt.event.ActionListener(){ publicvoidactionPerformed(JAVA.awt.event.ActionEvente){ stopTableCellEditing();//結(jié)束表格中沒有編寫的單元 StringpzsStr=pzslField.getText();//品種數(shù) StringjeStr=hjjeField.getText();//合計(jì)金額 StringjsfsStr=jsfsComboBox.getSelectedItem().toString();//結(jié)算方式 StringjsrStr=jsrComboBox.getSelectedItem()+"";//經(jīng)手人 StringczyStr=jsrComboBox.getSelectedItem()+"";//操作員 StringrkDate=jhsjField.getText();//入庫時(shí)間 StringysjlStr=ysjlField.getText().trim();//驗(yàn)收結(jié)論 Stringid=idField.getText();//票號(hào) StringgysName=gysComboBox.getSelectedItem()+"";//供應(yīng)商名字 if(jsrStr==null||jsrStr.isEmpty()){ JOptionPane.showMessageDialog(JinHuoDan_IFrame.this, "請(qǐng)?zhí)顚懡?jīng)手人"); return; } if(ysjlStr==null||ysjlStr.isEmpty()){ JOptionPane.showMessageDialog(JinHuoDan_IFrame.this, "填寫驗(yàn)收結(jié)論"); return; } if(table.getRowCount()<=0){ JOptionPane.showMessageDialog(JinHuoDan_IFrame.this, "填加入庫商品"); return; } TbRukuMainruMain=newTbRukuMain(id,pzsStr,jeStr, ysjlStr,gysName,rkDate,czyStr,jsrStr,jsfsStr); Set<TbRukuDetail>set=ruMain.getTabRukuDetails(); introws=table.getRowCount(); for(inti=0;i<rows;i++){ TbSpinfospinfo=(TbSpinfo)table.getValueAt(i,0); if(spinfo==null||spinfo.getId()==null ||spinfo.getId().isEmpty()) continue; StringdjStr=(String)table.getValueAt(i,6); StringslStr=(String)table.getValueAt(i,7); Doubledj=Double.valueOf(djStr); Integersl=Integer.valueOf(slStr); TbRukuDetaildetail=newTbRukuDetail(); detail.setTabSpinfo(spinfo.getId()); detail.setTabRukuMain(ruMain.getRkId()); detail.setDj(dj); detail.setSl(sl); set.add(detail); } booleanrs=Dao.insertRukuInfo(ruMain); if(rs){ JOptionPane.showMessageDialog(JinHuoDan_IFrame.this, "入庫完成"); DefaultTableModeldftm=newDefaultTableModel(); table.setModel(dftm); pzslField.setText("0"); hpzsField.setText("0"); hjjeField.setText("0"); } } }); } returnrukuButton; }4.2.5銷售單模塊設(shè)計(jì)商品銷售時(shí)進(jìn)銷存管理中的重要環(huán)節(jié)之一,進(jìn)貨商在入庫之后就可以開始銷售。銷售單模塊主要負(fù)責(zé)根據(jù)經(jīng)手人的銷售單據(jù),操作進(jìn)銷存管理系統(tǒng)的庫存商品和記錄銷售信息,方便以后查詢和統(tǒng)計(jì)。其窗體界面如圖4.10所示。圖4.10銷售單窗體界面設(shè)計(jì)銷售單窗體創(chuàng)建Internalframe內(nèi)部窗體類,命名為XiaoShouDan。該窗體主要用于處理商品銷售的業(yè)務(wù)邏輯添加銷售商品在銷售單窗體中單擊“添加”,將向table表格中添加新的空行,操作員可以在空行的第一列字段的商品下來列表中選擇銷售的商品,這兒下拉列表框和進(jìn)貨單窗體的不同,它不是根據(jù)供貨商字段確定選擇框內(nèi)容,而是包含了數(shù)據(jù)庫中所欲可以銷售的商品。要實(shí)現(xiàn)添加商品的功能,需要為“添加”按鈕添加動(dòng)作監(jiān)聽器,在監(jiān)聽器種實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)邏輯。在該監(jiān)聽器中調(diào)用了initPiaoHao()方法初始化銷售票號(hào),該票號(hào)就是銷售單在數(shù)據(jù)庫中的id編號(hào)。initPiaoHao()方法首先創(chuàng)建JAVA.sql包中Date類的對(duì)象,該對(duì)象包含當(dāng)前日期;然后調(diào)用Dao累的getSellMainMaxId()方法獲取數(shù)據(jù)庫銷售主表中的最大ID號(hào);最后,將該ID編號(hào)更新到piaoHao文本框中。銷售統(tǒng)計(jì)和進(jìn)貨單的統(tǒng)計(jì)功能類似,銷售單也需要統(tǒng)計(jì)功能,統(tǒng)計(jì)的內(nèi)容包括貨品數(shù)量、品種數(shù)量、合計(jì)金額等信息,實(shí)現(xiàn)方式也是通過table表格的事件監(jiān)聽器來處理相應(yīng)的統(tǒng)計(jì)業(yè)務(wù),但是銷售但船體使用不是PropertyChangeListener屬性改變事件監(jiān)聽器,而是使用ContainerListener容器監(jiān)聽器。商品銷售在銷售單窗體中添加完銷售商品之后,單擊“銷售”按鈕,將完成本次銷售單的銷售業(yè)務(wù)。系統(tǒng)會(huì)記錄本次銷售信息,并從庫存表中扣除銷售的商品數(shù)量。這些業(yè)務(wù)處理都是在“銷售”按鈕的動(dòng)作監(jiān)聽器中完成,該監(jiān)聽器需要獲取銷售單窗體中所有銷售信息和商品信息,將所有商品信息封裝為銷售明細(xì)表的模型對(duì)象,并將這些模型對(duì)象放到一個(gè)集合中,然后調(diào)用Dao公共類的insertSellInfo()方法將集合與銷售主表的模型對(duì)象保存到數(shù)據(jù)庫中。其關(guān)鍵代碼如下: //單擊銷售按鈕保存進(jìn)貨信息 JButtonsellButton=newJButton("銷售"); sellButton.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ stopTableCellEditing();//結(jié)束表格中沒有編寫的單元 clearEmptyRow();//清除空行 StringhpzsStr=hpzs.getText();//貨品總數(shù) StringpzsStr=pzs.getText();//品種數(shù) StringjeStr=hjje.getText();//合計(jì)金額 StringjsfsStr=jsfs.getSelectedItem().toString();//結(jié)算方式 StringjsrStr=jsr.getSelectedItem()+"";//經(jīng)手人 StringczyStr=czy.getText();//操作員 StringrkDate=jhsjDate.toLocaleString();//銷售時(shí)間 StringysjlStr=ysjl.getText().trim();//驗(yàn)收結(jié)論 Stringid=piaoHao.getText();//票號(hào) StringkehuName=kehu.getSelectedItem().toString();//供應(yīng)商名字 if(jsrStr==null||jsrStr.isEmpty()){ JOptionPane.showMessageDialog(XiaoShouDan.this,"請(qǐng)?zhí)顚懡?jīng)手人"); return; } if(ysjlStr==null||ysjlStr.isEmpty()){ JOptionPane.showMessageDialog(XiaoShouDan.this,"填寫驗(yàn)收結(jié)論"); return; } if(table.getRowCount()<=0){ JOptionPane.showMessageDialog(XiaoShouDan.this,"填加銷售商品"); return; } TbSellMainsellMain=newTbSellMain(id,pzsStr,jeStr, ysjlStr,kehuName,rkDate,czyStr,jsrStr,jsfsStr); Set<TbSellDetail>set=sellMain.getTbSellDetails(); introws=table.getRowCount(); for(inti=0;i<rows;i++){ TbSpinfospinfo=(TbSpinfo)table.getValueAt(i,0); StringdjStr=(String)table.getValueAt(i,6); StringslStr=(String)table.getValueAt(i,7); Doubledj=Double.valueOf(djStr); Integersl=Integer.valueOf(slStr); TbSellDetaildetail=newTbSellDetail(); detail.setSpid(spinfo.getId()); detail.setTbSellMain(sellMain.getSellId()); detail.setDj(dj); detail.setSl(sl); set.add(detail); } booleanrs=Dao.insertSellInfo(sellMain); if(rs){ JOptionPane.showMessageDialog(XiaoShouDan.this,"銷售完成"); DefaultTableModeldftm=newDefaultTableModel(); table.setModel(dftm); initTable(); pzs.setText("0"); hpzs.setText("0"); hjje.setText("0"); } } });4.2.6庫存盤點(diǎn)模塊設(shè)計(jì)庫存庫存模塊主要負(fù)責(zé)計(jì)算倉庫管理人員的庫存數(shù)量和庫存數(shù)量的盈虧。程序界面提示當(dāng)前日期的庫存產(chǎn)品數(shù)量,并在表中顯示所有庫存產(chǎn)品。在表的“庫存編號(hào)”列中輸入庫存產(chǎn)品的數(shù)量?!皳p益數(shù)量”字段將自動(dòng)計(jì)算產(chǎn)品的剩余產(chǎn)品數(shù)量。如果數(shù)字是整數(shù),則會(huì)顯示庫存數(shù)量。數(shù)量大于計(jì)數(shù)的數(shù)量。庫存盤點(diǎn)窗體界面如圖4.11所示。圖4.11庫存盤點(diǎn)窗體界面設(shè)計(jì)庫存盤點(diǎn)窗體創(chuàng)建InternalFrame內(nèi)部窗體類,命名為KuCunPanDian。該窗體主要用于計(jì)算庫存管理中的損益結(jié)果。讀取庫存商品本模塊窗體的商品表格table組件用于顯示庫存中的所有商品信息,這需要在initTable()方法中初始化表格字段名,并調(diào)用Dao類的getKucunInfos()方法讀取庫存數(shù)據(jù)總的所有商品列表,添加到table商品表格組件中。統(tǒng)計(jì)損益數(shù)量商品表格組件需要在用戶輸入盤點(diǎn)數(shù)量時(shí),自動(dòng)計(jì)算并更新?lián)p益單元的內(nèi)容,也就是使用庫存商品實(shí)際數(shù)量減去商品輸入的盤點(diǎn)數(shù)量,實(shí)現(xiàn)自動(dòng)計(jì)算功能的最好方式,就是為表格組件的“盤點(diǎn)數(shù)量”編輯器的編輯組添加按鍵監(jiān)聽器,使用該按鍵監(jiān)聽器可以限制用戶只能輸入數(shù)字信息同時(shí)還可以在按鍵事件發(fā)生時(shí)進(jìn)行損益統(tǒng)計(jì)。其關(guān)鍵代碼如下: //盤點(diǎn)字段的按鍵監(jiān)聽器 privateclassPanDianKeyAdapterextendsKeyAdapter{ privatefinalJTextFieldfield; privatePanDianKeyAdapter(JTextFieldfield){ this.field=field; } publicvoidkeyTyped(KeyEvente){ if(("0123456789"+(char)8).indexOf(e.getKeyChar()+"")<0){ e.consume(); } field.setEditable(true); } publicvoidkeyReleased(KeyEvente){ StringpdStr=field.getText(); StringkcStr="0"; introw=table.getSelectedRow(); if(row>=0){ kcStr=(String)table.getValueAt(row,7); } try{ intpdNum=Integer.parseInt(pdStr); intkcNum=Integer.parseInt(kcStr); if(row>=0){ table.setValueAt(kcNum-pdNum,row,10); } if(e.getKeyChar()!=8) field.setEditable(false); }catch(NumberFormatExceptione1){ field.setText("0"); } } }4.2.7數(shù)據(jù)庫備份與恢復(fù)模塊設(shè)計(jì)數(shù)據(jù)庫備份與恢復(fù)模塊可以增強(qiáng)系統(tǒng)安全性。及時(shí)備份數(shù)據(jù),如果發(fā)生意外可以恢復(fù)最近時(shí)間段的數(shù)據(jù)庫內(nèi)容,將損失降低到最小程度。數(shù)據(jù)庫備份與恢復(fù)窗體界面如圖4.12所示。圖4.12數(shù)據(jù)庫備份與恢復(fù)窗體設(shè)計(jì)窗體創(chuàng)建InternalFrame內(nèi)部窗體類,命名為BackupAndRestore,該窗體主要用于備份和恢復(fù)系統(tǒng)的數(shù)據(jù)庫文件文件瀏覽數(shù)據(jù)的備份和恢復(fù)功能都需要使用“瀏覽”按鈕選擇數(shù)據(jù)庫文件的位置。本模塊的窗體界面中,有兩個(gè)“瀏覽”按鈕,分別用于選擇數(shù)據(jù)庫備份文件和數(shù)據(jù)庫恢復(fù)文件的位置。這兩個(gè)“瀏覽”按鈕的ActionListener動(dòng)作監(jiān)聽器實(shí)現(xiàn)方法是相同的,監(jiān)聽器中通過JfileChooser文件選擇器組件打開文件選擇對(duì)話框,選擇數(shù)據(jù)庫備份文件額位置。備份數(shù)據(jù)庫選擇“瀏覽”按鈕或直接在文本框中輸入數(shù)據(jù)庫備份文件的路徑,然后單擊“備份”按鈕,將系統(tǒng)當(dāng)前數(shù)據(jù)庫內(nèi)容備份到文件中,并為數(shù)據(jù)庫保留多個(gè)備份?!皞浞荨卑粹o的動(dòng)作監(jiān)聽器將通過Dao類的RestoreOrBackup()方法執(zhí)行備份數(shù)據(jù)庫的SQL語句。

5系統(tǒng)測(cè)試5.1系統(tǒng)軟件測(cè)試軟件測(cè)試是保證軟件正確性及可靠性的重要環(huán)節(jié)。測(cè)試工作涉及到軟件工程的各個(gè)開發(fā)階段。5.1.1測(cè)試的原則在測(cè)試中我們遵守以下各項(xiàng)原則:(1)預(yù)先估計(jì)輸出結(jié)果(2)編程人員不測(cè)試本人程序。(3)測(cè)試?yán)}的設(shè)計(jì)兼顧有效與無效輸入,正確與錯(cuò)誤輸入。(4)檢查一個(gè)程序是否完成了所有的工作只是測(cè)試工作的一半,另一半是要檢查程序是否還有預(yù)料之外的副作用。(5)在假設(shè)系統(tǒng)有錯(cuò)的情況下進(jìn)行測(cè)試。5.1.2模塊測(cè)試模塊測(cè)試主要對(duì)軟件產(chǎn)品的每個(gè)模塊單獨(dú)的進(jìn)行測(cè)試。登錄測(cè)試,如表5.1所示。表5.1登陸測(cè)試測(cè)試測(cè)試用例期望結(jié)果實(shí)際結(jié)果登錄模塊用戶名:tsoft密碼:111能以此賬戶登陸,并具有帳戶所應(yīng)有的權(quán)限能以此賬戶登陸,并進(jìn)行相關(guān)操做進(jìn)貨單測(cè)試,如表5.2進(jìn)貨測(cè)試表所示。表5.2進(jìn)貨測(cè)試測(cè)試測(cè)試用例期望結(jié)果實(shí)際結(jié)果進(jìn)貨單模塊測(cè)試添加商品名為:長亮臺(tái)燈,數(shù)量:100,單價(jià):50的進(jìn)貨信息并入庫能使用上述能編輯信息進(jìn)貨單模塊可以完成進(jìn)貨信息的添加銷售單測(cè)試,如表5.3所示。表5.3銷售單測(cè)試測(cè)試測(cè)試用例期望結(jié)果實(shí)際結(jié)果銷售單模塊測(cè)試向明日科技公司銷售商品長亮臺(tái)燈50臺(tái)完成金額的核算,并完成相關(guān)信息的變動(dòng)完成期望結(jié)果庫存盤點(diǎn)測(cè)試,如表5.4所示。表5.4庫存盤點(diǎn)測(cè)試測(cè)試測(cè)試用例期望結(jié)果實(shí)際結(jié)果庫存盤點(diǎn)模塊測(cè)試查看長亮臺(tái)燈的庫存信息長亮臺(tái)燈庫存50臺(tái)與期望結(jié)果一致5.1.3集成測(cè)試集成測(cè)試即整體測(cè)試。在完成各模塊測(cè)試的基礎(chǔ)上,連接各模塊進(jìn)行測(cè)試,試圖在設(shè)計(jì)階段發(fā)現(xiàn)隱患,完成以下任務(wù):將系統(tǒng)的所有功能和特性納入測(cè)試計(jì)劃并進(jìn)行測(cè)試;數(shù)據(jù)庫的裝載等方面的測(cè)試;系統(tǒng)接口,包括內(nèi)部接口與外部接口的測(cè)試;錯(cuò)誤狀態(tài)處理的測(cè)試;與特定資源分布的一致性測(cè)試;完全裝載的系統(tǒng)的實(shí)際和模擬測(cè)試;檢查系統(tǒng)安全性的測(cè)試。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論