版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
畢業(yè)論文基于Java的企業(yè)進銷存治理系統(tǒng)TheEnterprisePurchase-sell-stockManagementSystemBasedonJava系(院)名稱:專業(yè)班級:學(xué)生姓名:學(xué)生學(xué)號:指導(dǎo)教師姓名:指導(dǎo)教師職稱:2012年5月畢業(yè)設(shè)計(論文)原創(chuàng)性聲明和使用授權(quán)講明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設(shè)計(論文),是我個人在指導(dǎo)教師的指導(dǎo)下進行的研究工作及取得的成果。盡我所知,除文中特不加以標注和致謝的地點外,不包含其他人或組織差不多發(fā)表或公布過的研究成果,也不包含我為獲得安陽工學(xué)院及其它教育機構(gòu)的學(xué)位或?qū)W歷而使用過的材料。對本研究提供過關(guān)心和做出過貢獻的個人或集體,均已在文中作了明確的講明并表示了謝意。作者簽名:日期:指導(dǎo)教師簽名:日期:使用授權(quán)講明本人完全了解安陽工學(xué)院關(guān)于收集、保存、使用畢業(yè)設(shè)計(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)校能夠采納影印、縮印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)校能夠公布論文的部分或全部內(nèi)容。作者簽名:日期:基于Java的企業(yè)進銷存治理系統(tǒng)摘要:在市場經(jīng)濟中,銷售是企業(yè)運作的重要環(huán)節(jié)。為了更好地推動銷售,許多企業(yè)建立分公司或代理制,通過分公司或代理把產(chǎn)品推向最終用戶。這些分公司或代理商大部分分布在不同的地理位置,跨空間、跨時刻的頻繁業(yè)務(wù)信息交流是這些企業(yè)業(yè)務(wù)活動的要緊特點。在這種形勢下,傳統(tǒng)的依靠治理人員人工工作傳遞信息和數(shù)據(jù)的治理方式就無法滿足企業(yè)日益增長的業(yè)務(wù)需求了。本系統(tǒng)即為一個差不多的進銷存治理系統(tǒng),確實是利用信息化手段把先進的企業(yè)治理方法引入企業(yè)的實踐,為企業(yè)的治理改革提供切實易行的途徑。系統(tǒng)對企業(yè)中常見的采購、庫存、銷售等商業(yè)活動以及相關(guān)的供應(yīng)商和客戶等差不多信息進行治理。本論文以商品進銷存治理系統(tǒng)的分析和設(shè)計為動身點,詳細介紹了開發(fā)本系統(tǒng)的各個步驟:系統(tǒng)分析、系統(tǒng)設(shè)計、系統(tǒng)實現(xiàn)、系統(tǒng)維護。本系統(tǒng)要緊介紹了在基礎(chǔ)信息模塊的功能,彌補了在其他系統(tǒng)中難以對客戶信息、供應(yīng)商信息和商品信息的修改及刪除。在系統(tǒng)的實現(xiàn)中,給出了實現(xiàn)窗體中相應(yīng)功能控件的示例和源代碼,以及菜單實現(xiàn)的方法。論文中列出了本系統(tǒng)的要緊功能運行界面圖。本系統(tǒng)采納目前流行的JavaSwing進行開發(fā),后臺數(shù)據(jù)庫使用功能更強大操作便捷的Oracle數(shù)據(jù)庫。關(guān)鍵詞:進銷存治理系統(tǒng);JavaSwing;Oracle;數(shù)據(jù)庫TheEnterprisePurchase-sell-stockManagementSystemBasedonJavaAbstract:Sailingisanimportantpartofenterprisemanagementinmarketeconomy.Inordertopromotesale,manyofthemsetupsub-companyoragentsystem.Theypromoteproducttocustomersthroughthosesub-companiesoragents.Mostofthemlieindifferentplaces.Thefrequentcommunicationofinformationbeyondspaceandtimeisthemajorfeature.Inthiscase,thetraditionalmanagementconveyinginformationanddatabymanagementpersonnelscan’tsatisfytheneedofincreasingbusiness.Thesystemisabasicinsailingandaccountingmanagement.Itintroducesadvancedmanagementbyutilizinginformationmethod.Itofferspracticalaccesstothereformofenterprise’smanagement.Thissystemmanagebusinessactivities,suchasbuying,storingandsailing,andthebasicinformationofsuppliersandcustomers.Itusevisualbasicwhichisverypopularcurrentlytodevelop.BackgrounddatabasemakesuseofOracle10g,havingstrongfunctionandconvenientoperation.Thisthesiswithcommoditypurchase-sell-stockmanagementsystemanalysisanddesignisintroduced,thesystemofexploitationofeachstep:systemanalysis,systemdesign,systemachieve,systemmaintenance.Thissystemmainlyintroducesthebasicinformationofthemodule,tomakeupfortheothersystemswhichisdifficulttomodificationanddeletioncustomerinformation,supplierinformationandcommodityinformation.Intherealizationofthesystem,therealizationformareappropriatefunctionsofcontrolandsourcecodeexamples,andthemethodtorealizethemenu.Thispaperliststhemainfunctionsofthesystemoperationinterfacediagram.ThissystemusescurrentlypopularJavaSwingdevelopment,backeddatabaseusingmorepowerfulconvenientoperationoftheOracledatabase。Keyword:SailingandaccountingManageSystem;JavaSwing;Oracle;database目錄16735引言 128297第1章概述 2192591.1研究課題的背景 2132501.2研究課題的目的和意義 2155581.3本課題的要緊內(nèi)容及組織結(jié)構(gòu) 3242221.3.1要緊內(nèi)容 3297881.3.2組織結(jié)構(gòu) 327523第2章系統(tǒng)開發(fā)環(huán)境的選擇與配置 477682.1硬件環(huán)境 4145042.2系統(tǒng)開發(fā)工具的選擇 477422.2.1使用Java+Oracle10g進行程序設(shè)計和數(shù)據(jù)庫設(shè)計 4105252.2.2Java環(huán)境的配置 52569第3章需求分析與系統(tǒng)設(shè)計 613713.1需求分析 643733.2概要設(shè)計 6115273.3詳細設(shè)計 7131233.4本章小結(jié) 93079第4章數(shù)據(jù)庫的設(shè)計 1046764.1數(shù)據(jù)庫介紹 1054124.2E-R圖 10138694.3數(shù)據(jù)表概要講明 12222154.4要緊數(shù)據(jù)表的結(jié)構(gòu) 1310182第5章要緊模塊設(shè)計與實現(xiàn) 1788555.1系統(tǒng)登錄模塊設(shè)計與實現(xiàn) 1756775.2基礎(chǔ)信息模塊設(shè)計與實現(xiàn) 23181725.3銷售單功能設(shè)計與實現(xiàn) 25109565.4銷售退貨治理模塊設(shè)計與實現(xiàn) 2845685.5查詢統(tǒng)計模塊設(shè)計與實現(xiàn) 2914525.6庫存治理模塊的設(shè)計與實現(xiàn) 30199615.7本章小結(jié) 3228071第6章系統(tǒng)測試 33145996.1系統(tǒng)軟件測試 33233216.1.1測試的原則 3376806.1.2單元測試 33309536.1.3集成測試 33247056.2測試總結(jié) 34223206.3系統(tǒng)實施與維護 3426478結(jié)論 359159致謝 362482參考文獻 37引言在信息技術(shù)的催化之下,世界經(jīng)濟的變革差不多進入了加速狀態(tài)。世界經(jīng)濟一體化,企業(yè)經(jīng)營全球化,以及高度競爭造成的高度個性化與迅速改變的客戶需求,令企業(yè)與顧客、企業(yè)與供方的關(guān)系變得更加緊密和復(fù)雜。強化治理、規(guī)范業(yè)務(wù)流程、提高透明度、加快商品資金周轉(zhuǎn),以及為流通領(lǐng)域信息治理全面網(wǎng)絡(luò)化打下基礎(chǔ),是銷售公司乃至眾多商業(yè)企業(yè)夢寐以求的愿望。進銷存軟件概念起源于上世紀80年代,由于電算化的普及,計算機治理的推廣,許多企業(yè)關(guān)于倉庫貨品的進貨、存貨、銷售治理有了強烈的需求,進銷存軟件的進展從此開始。進入90年代以后,隨著進銷存軟件的應(yīng)用面越來越廣,出現(xiàn)了許多從功能上、從用途上更為全面的進銷存系統(tǒng),從單純的貨品數(shù)量治理,擴展為貨品的流程治理,進銷存軟件對每一批貨品的來源、存放、去向,都作認確實記錄,隨后并延伸為財務(wù)進銷存一體化的治理模式。進入21世紀以后,各種各樣的進銷存軟件產(chǎn)品應(yīng)運而生,在倉庫進銷存治理的基礎(chǔ)上,集合了財務(wù)治理、客戶治理、業(yè)務(wù)治理等相關(guān)內(nèi)容,成為進銷存財一體化的治理系統(tǒng)。企業(yè)進銷存治理系統(tǒng)的不斷完善,為企業(yè)治理現(xiàn)代化和運營信息化提供了有力的支持。第1章概述1.1研究課題的背景在全球經(jīng)濟趨向信息化的時代背景下,從我國企業(yè)信息化的意義、內(nèi)容及目前進展狀況,深入分析現(xiàn)時期我國企業(yè)信息化建設(shè)中存在問題,進而提出解決問題的對策。政府和企業(yè)合力,以達到加快我國企業(yè)信息化建設(shè)進展的步伐。信息化革命正在打破并重組現(xiàn)存的國際經(jīng)濟秩序和結(jié)構(gòu),并促使其由物質(zhì)型向信息型經(jīng)濟轉(zhuǎn)變。同時隨著經(jīng)濟的全球化趨勢,假如沒有信息化,企業(yè)的改造、重構(gòu)、工業(yè)化的進程就會怠慢,企業(yè)的生存和進展就會成為大問題。從當前來講,先行一步的企業(yè)常會成為贏家,而那些不能及時做出應(yīng)對的企業(yè),即使幸免被淘汰,也只能被擠到低增長的經(jīng)營領(lǐng)域中分得殘羹冷炙。企業(yè)信息化包括銷售、生產(chǎn)、服務(wù)等方面內(nèi)容,而實質(zhì)是企業(yè)治理的信息化,是企業(yè)將融合世界先進治理思想的信息技術(shù)進一步應(yīng)用于治理,提高企業(yè)治理的效率和效益。企業(yè)治理的信息化在某種意義上意味著企業(yè)的全面信息化。它包括著企業(yè)內(nèi)部治理信息化和企業(yè)的外部溝通信息化。1.2研究課題的目的和意義進銷存治理系統(tǒng)要緊是充分發(fā)揮信息技術(shù)的優(yōu)勢,通過集中式的信息數(shù)據(jù)庫,將企業(yè)的進、銷、存等經(jīng)營業(yè)務(wù)有機地結(jié)合起來,達到數(shù)據(jù)共享、降低成本、提高效率、改進服務(wù)的目的,進而提供企業(yè)的生產(chǎn)效率和治理水平。隨著因特網(wǎng)技術(shù)的飛速進展,網(wǎng)上商品網(wǎng)上交易日益普及,企業(yè)進銷存治理系統(tǒng)是目前公司或是其企業(yè)對進銷存治理系統(tǒng)的中的典型代表,涉及到了商品或物資治理中要緊的幾個方面,即進貨治理、銷售治理、庫存治理、信息查詢、基礎(chǔ)信息、系統(tǒng)治理等不管公司依舊企業(yè)關(guān)于物資都實行了信息化治理,以提高治理水平額工作效率,同時也最大限度的減少手工操作帶來的失誤。因此進銷存治理系統(tǒng)便應(yīng)運而生。在工廠中,產(chǎn)品的進銷存涉及原料的采購、庫存、投入生產(chǎn),甚至有時涉及到出庫,關(guān)于產(chǎn)品也有相應(yīng)的生產(chǎn)、庫存和統(tǒng)計等類似環(huán)節(jié)。在其它非生產(chǎn)性單位,如超市、商店等,則要緊涉及到入庫、庫存、出庫統(tǒng)計等方面。進銷存治理系統(tǒng)具有寬敞的開發(fā)前景。針對我的實際情況,結(jié)合我對計算機軟件的熟練程度以及對數(shù)據(jù)庫的了解,通過與指導(dǎo)老師馬老師的協(xié)商,我選擇了《基于Java的企業(yè)進銷存治理系統(tǒng)》那個課題。本系統(tǒng)界面設(shè)計美觀、大方、方便、快捷、操作靈活。實現(xiàn)強大的進銷存治理,包括基礎(chǔ)信息、進貨、銷售和庫存治理等。能夠在不同的操作系統(tǒng)下運行,不局限于特定的平臺,并提供庫存盤點等。1.3本課題的要緊內(nèi)容及組織結(jié)構(gòu)1.3.1要緊內(nèi)容在那個進銷存治理系統(tǒng)中,介紹了如何開發(fā)系統(tǒng)的過程以及要緊模塊的設(shè)計與實現(xiàn)步驟,其中要緊包含了以下幾個功能:(1)進貨單的生成;(2)銷售單的生成;(3)依照進貨信息和銷售信息對庫存定期進行盤點;(4)歷史進貨和銷售記錄的查詢;(5)商品信息、客戶信息和供應(yīng)商信息的維護。通過發(fā)上幾個功能的實現(xiàn),差不多能夠滿足一般企業(yè)的進銷存治理需要,為企業(yè)的治理現(xiàn)代化和運營信息化提供繢有力的支持。1.3.2組織結(jié)構(gòu)本課題的組織框架結(jié)構(gòu)如下:前兩章要緊講述了本課題的前景、目的及開發(fā)的環(huán)境配置等問題;簡要講明了本課題的需求分析以及概要設(shè)計;要緊講明了數(shù)據(jù)庫的設(shè)計;講解了系統(tǒng)要緊模塊的設(shè)計與實現(xiàn);為系統(tǒng)測試;為本課題的結(jié)論。第2章系統(tǒng)開發(fā)環(huán)境的選擇與配置2.1硬件環(huán)境開發(fā)本系統(tǒng)對硬件的要求不是專門高,隨著科技的飛速進展,現(xiàn)在一般機器的配置都能達到開發(fā)本系統(tǒng)的要求。具體開發(fā)環(huán)境如下:顯示器:液晶19英寸分辨率:1024*768像素CPU:AMDAthlon2.91GHz內(nèi)存:1024MB以上硬盤空間:320G光驅(qū):DVD16X鼠標:光電鼠標鍵盤:防水鍵盤2.2系統(tǒng)開發(fā)工具的選擇2.2.1使用Java+Oracle10g進行程序設(shè)計和數(shù)據(jù)庫設(shè)計Java是一種簡單、面向?qū)ο?、分布式、解釋型、健壯安全、結(jié)構(gòu)中立、可移植、性能優(yōu)異、多線程的動態(tài)語言。Java語言的優(yōu)良特性使得Java應(yīng)用具有無比的健壯性和可靠性,這也減少了應(yīng)用系統(tǒng)的維護費用。Java對對象技術(shù)的全面支持和Java平臺內(nèi)嵌的API能縮短應(yīng)用系統(tǒng)的開發(fā)時刻并降低成本。Java的編譯一次,到處可運行的特性使得它能夠提供一個隨處可用的開放結(jié)構(gòu)和在多平臺之間傳遞信息的低成本方式。特不是Java企業(yè)應(yīng)用編程接口(JavaEnterpriseAPI)為企業(yè)計算及電子商務(wù)應(yīng)用系統(tǒng)提供了有關(guān)技術(shù)和豐富的類庫。Oracle在其技術(shù)白皮書上闡明,Oracle10g數(shù)據(jù)庫關(guān)鍵目標有二:1降低治理開銷,2提高性能。Oracle10g的增強有對高可用性的增強、新的Flashback能力、支持回滾更新操作;對安全性的增強,便于治理大量的用戶;BI方面的增強,包括改進的SQL能力、分析功能、OLAP、數(shù)據(jù)挖掘的能力等;對非關(guān)系型數(shù)據(jù)存儲的能力得到了改進;XML的能力;對開發(fā)能力支持的加強,對生物信息學(xué)(Bioinformatics)的支持。2.2.2Java環(huán)境的配置一臺計算機上安裝了JVM,該臺機器就可運行Java程序;而要開發(fā)Java程序,計算機上僅僅有JVM依舊不夠的,需要建立Java開發(fā)環(huán)境才行。本系統(tǒng)使用J2SE來進行Java程序設(shè)計,因此需要下載和安裝JavaSE開發(fā)包。JavaSE是一個包含Java開發(fā)環(huán)境和運行環(huán)境的套件該套件由如下三項集成:(1)JavaDevelopmentKit(JDK),Java程序開發(fā)環(huán)境。(2)JavaRuntimeEnvironment(JRE),Java應(yīng)用程序運行環(huán)境。(3)JavaPlug-in,使JavaApplet可在網(wǎng)頁中運行的插件。有關(guān)Java平臺方面的軟件差不多上免費開放的,可直接從Sun公司的Java技術(shù)支持網(wǎng)站()上下載,網(wǎng)站上提供了眾多不同標準和版本的Java/javase/downloads/index.jsp亦可。安裝完畢需要設(shè)置path和classpath兩個環(huán)境變量,這關(guān)于以后程序能否編譯,編譯成功的程序能否運行差不多上專門關(guān)鍵的一個環(huán)節(jié)。這在WindowsXP下可通過右擊桌面中的“我的電腦”,在彈出的快捷菜單中選擇“屬性”命令即可,再單擊左欄任務(wù)下的最后一項“高級系統(tǒng)設(shè)置”即彈出屬性窗口。然后在屬性窗口的“高級”選項卡下,單擊“環(huán)境變量”按鈕就會彈出“環(huán)境變量”設(shè)置窗口。path用于設(shè)置Java編譯、解釋等工具的路徑,這些工具文件在Java安裝目錄下的bin目錄中。classpath用于設(shè)置應(yīng)用程序類路徑和擴展的應(yīng)用程序類路徑,通常需要指定兩項Java安裝目錄下的lib目錄和當前運行的class所在目錄(用·指定)。第3章需求分析與系統(tǒng)設(shè)計3.1需求分析需求分析的過程能夠講是一個對具體問題的反復(fù)理解和抽象的過程。理解確實是對現(xiàn)實問題的理解,要弄清晰究竟需要解決什么問題。抽象確實是除去問題的表面,提取問題的本質(zhì),建立問題的邏輯模型,以便于以后時期的系統(tǒng)的設(shè)計實現(xiàn)。需求分析時期是軟件產(chǎn)品生存命期中的一個重要時期,其全然任務(wù)是確定用戶對軟件系統(tǒng)的需求。所謂需求是指用戶對軟件的功能和性能的要求,確實是用戶希望軟件能什么情況,完成什么樣的功能,達到什么性能。通常需求分為兩種類型:一種是功能性需求,一種是非功能性需求,這一點也需要有一種清晰的認識。功能性需求是指需要計算機系統(tǒng)解決的問題,也確實是對數(shù)據(jù)的處理要求,這是一類最要緊的需求。非功能性需求是指實際使用環(huán)境所要求的需求,往往是一些限制要求,例如:性能要求,可靠性要求,安全保密要求,等等。依照市場的需求,要求系統(tǒng)具有以下功能:(1)系統(tǒng)操作簡單,界面友好;(2)規(guī)范、完善的基礎(chǔ)信息設(shè)置;(3)支持多人操作,要求有權(quán)限分配功能;(4)為了方便用戶,要求系統(tǒng)支持多條件查詢;(5)對銷售信息提供銷售排行;(6)支持銷售退貨和入庫退貨功能;(7)支持庫存價格調(diào)整功能等。3.2概要設(shè)計企業(yè)進銷存治理系統(tǒng)必須提供商品信息、供應(yīng)商信息和客戶信息的基礎(chǔ)設(shè)置;提供強大的多條件搜索功能和商品的進貨、銷售和庫存治理功能;能夠分不同權(quán)限、不同用戶對該系統(tǒng)進行操作。另外,該系統(tǒng)還必須保證數(shù)據(jù)的安全性、完整性和準確性。企業(yè)進銷存治理系統(tǒng)的目標是實現(xiàn)企業(yè)的信息化治理,減少盲目采購、降低采購成本、合理操縱庫存、減少資金占用并提升企業(yè)市場競爭力。項目要緊以企業(yè)的進貨、銷售和查詢統(tǒng)計功能為主,關(guān)于庫存、銷售和進貨的記錄信息應(yīng)該及時、準確的保存,并提供相應(yīng)的查詢和統(tǒng)計。由于庫存商品數(shù)量太多,不易盤點,傳統(tǒng)的盤點方式容易出錯,系統(tǒng)中的庫存盤點功能要準確的計算出每種商品的損益數(shù)量,減少企業(yè)不必要的損失。依照需求分析,設(shè)計的進銷存治理系統(tǒng)的模塊組織結(jié)構(gòu)如圖3-1所示。圖3-1進銷存治理系統(tǒng)模塊組織結(jié)構(gòu)圖3.3詳細設(shè)計下面對各模塊的設(shè)計功能進行詳細講明。進貨單:日常業(yè)務(wù)中需要頻繁使用的功能,要緊是對每筆采購入庫業(yè)務(wù)進行記錄,自動生成對應(yīng)的采購憑證。進貨單中的商品名稱、供應(yīng)商和經(jīng)手人字段分不對應(yīng)tb_spinfo數(shù)據(jù)表、tb_gysinfo數(shù)據(jù)表和tb_userlist數(shù)據(jù)表中的相關(guān)字段,因此那個地點需要檢驗用戶輸入的合法性。為了治理的方便的規(guī)范。每筆采購單對應(yīng)唯一進貨單票號。銷售單:日常業(yè)務(wù)中需要頻繁使用的功能,要緊是對每筆銷售出庫業(yè)務(wù)進行記錄,自動生成對應(yīng)的銷售憑證。銷售單中的商品名稱、客戶和經(jīng)手人字段分不對應(yīng)tb_spinfo數(shù)據(jù)表、tb_khinfo數(shù)據(jù)表和tb_userlist數(shù)據(jù)表中的相關(guān)字段,因此那個地點需要檢測用戶輸入的合法性。為了治理的方便和規(guī)范,每筆銷售單對應(yīng)一個唯一銷售單票號。庫存盤點:庫存治理中的重要業(yè)務(wù)活動,要緊是依照采購記錄和銷售記錄對庫存商品盤點,更新每種商品的庫存量,為制定采購打算提供依據(jù)。計算庫存時需要檢索每一種商品的采購記錄,匯總得到此種商品總共的采購數(shù)量,然后檢索這種商品的銷售記錄,匯總得到此種商品總的銷售數(shù)量,最后用總采購數(shù)量和總銷售數(shù)量相減即可。產(chǎn)品治理:庫存治理中的輔助業(yè)務(wù),要緊是當有產(chǎn)品或者商品的屬性數(shù)據(jù)改變時,需要在那個地點進行更新。庫存查詢:統(tǒng)計查詢功能中的一個模塊,提供了對庫存商品按照多種字段模糊查詢的功能。采購查詢:統(tǒng)計查詢功能中的一個模塊,提供了對采購記錄的多種字段的復(fù)合式查詢功能。銷售查詢:統(tǒng)計查詢功能中的一個模塊,提供了對銷售記錄的多種字段的復(fù)合式查詢功能。供應(yīng)商治理:基礎(chǔ)信息維護中的一個模塊,要緊用于對供應(yīng)商信息進行查詢和維護。為了方便對多個供應(yīng)商的治理和比較,本系統(tǒng)中將此功能用Tab頁的形式實現(xiàn),既方便對單個供應(yīng)商信息的查看和編輯,又利于對供應(yīng)商總體的評價和比較??蛻糁卫恚夯A(chǔ)信息維護中的一個模塊,要緊用于對企業(yè)客戶信息的查詢和維護。為了方便對多個客戶的治理和比較,本系統(tǒng)中也將此功能用Tab頁的形式實現(xiàn),既方便對單個供應(yīng)商信息的查看和編輯,又利于對供應(yīng)商總體的評價和比較。密碼設(shè)置:系統(tǒng)設(shè)置中的一個模塊,要緊用于為系統(tǒng)中現(xiàn)有的用戶提供密碼更改功能。退出系統(tǒng):用于退出本系統(tǒng)。為了防止用戶的誤操作,退出系統(tǒng)之前需要用戶確認退出的操作。整個系統(tǒng)從運行開始,治理員或者操作員登錄。操作員能夠?qū)崿F(xiàn)基礎(chǔ)信息治理、進貨治理、銷售治理、查詢統(tǒng)計、庫存治理的所有操作。治理員能夠擁有操作員的所有操作,同時其具有系統(tǒng)治理的功能,以實現(xiàn)對操作員的權(quán)限等的治理。整個系統(tǒng)運行的業(yè)務(wù)流程圖大致如圖3-2所示。圖3-2系統(tǒng)流程圖3.4本章小結(jié)本章要緊介紹了該進銷存治理系統(tǒng)中的需求分析、概要設(shè)計以及詳細設(shè)計的內(nèi)容,通過本章讓我們更了解企業(yè)進銷存系統(tǒng)的核心所在,該系統(tǒng)的關(guān)鍵在于數(shù)據(jù)庫的治理和操作,因此本論文的重點也在第四章的數(shù)據(jù)庫設(shè)計,讓我們更加清晰的學(xué)習(xí)該系統(tǒng)表與表之間是如何操作的。第4章數(shù)據(jù)庫的設(shè)計4.1數(shù)據(jù)庫介紹所謂數(shù)據(jù)庫(Database)確實是指按一定組織方式存儲在一起的,相互有關(guān)的若干個數(shù)據(jù)的結(jié)合,數(shù)據(jù)庫治理系統(tǒng)(DatabaseManagementSystem)確實是一種操縱和治理數(shù)據(jù)庫的大型軟件,簡稱DBMS,他們建立在操作系統(tǒng)的基礎(chǔ)上,對數(shù)據(jù)庫進行統(tǒng)一的治理和操縱,其功能包括數(shù)據(jù)庫定義,數(shù)據(jù)庫治理,數(shù)據(jù)庫建立和維護,于操作系統(tǒng)通信等。DBMS通常由數(shù)據(jù)字典,數(shù)據(jù)描述語言及其編譯程序,數(shù)據(jù)操縱(查詢)語言及其編譯程序,數(shù)據(jù)庫治理例行程序等部分組成。關(guān)系數(shù)據(jù)庫是以關(guān)系模型為基礎(chǔ)的數(shù)據(jù)庫,是依照表、記錄和字段之間的關(guān)系進行組織和訪問的一種數(shù)據(jù)庫,它通過若干個表(Table)來存取數(shù)據(jù),同時通過關(guān)系(Relation)將這些表聯(lián)系在一起,關(guān)系數(shù)據(jù)庫提供了成為機構(gòu)化查詢語言(SQL)標準接口,該接口同意使用多種數(shù)據(jù)庫工具和產(chǎn)品,關(guān)系數(shù)據(jù)庫是目前最廣泛應(yīng)用的數(shù)據(jù)庫。數(shù)據(jù)庫是一個邏輯上的概念,通過一組系統(tǒng)文件將相互關(guān)聯(lián)的數(shù)據(jù)表及其數(shù)據(jù)庫對象組織起來,成為擴展名為.dbf的數(shù)據(jù)庫文件、擴展名為.bkp的數(shù)據(jù)庫備注文件和擴展名為.inx的數(shù)據(jù)庫索引文件,三個文件一般不能直接使用。4.2E-R圖進銷存系統(tǒng)的E-R圖,進銷存系統(tǒng)要緊實現(xiàn)從進貨、庫存到銷售的一體化治理,涉及商品信息、商品的供應(yīng)商、購買商品的客戶等多個實體。下面簡單介紹幾個關(guān)鍵的實體和系統(tǒng)的綜合E-R圖。1.供應(yīng)商實體屬性圖供應(yīng)商實體包括:編號、名稱、簡稱、地址、電話、郵政編碼、傳真、聯(lián)系人、聯(lián)系人電話、開戶行和E-mail屬性,如圖4-1所示。圖4-1供應(yīng)商實體屬性圖2.商品實體屬性圖商品實體包括:編號、商品名稱、商品簡稱、產(chǎn)地、單位、規(guī)格、包裝、批號、批準文號、商品簡介和供應(yīng)商屬性。如圖4-2所示。圖4-2商品實體屬性圖3.客戶實體屬性圖客戶實體包括:客戶編號、客戶名稱、簡稱、地址、電話、郵政編碼、聯(lián)系人電話、傳真、開戶行和賬號屬性。如圖4-3所示。圖4-3客戶實體屬性圖4.銷售實體屬性圖銷售實體分為銷售主表和銷售明細表兩個實體,它們是一對多的關(guān)系。其中銷售主表包括:銷售票號、品種數(shù)、金額、驗收結(jié)論、客戶名稱、經(jīng)手人、結(jié)算方式、操作員和銷售日期屬性。銷售明細表包括:編號、銷售票號、商品編號、數(shù)量和單價屬性。如圖4-4所示。圖4-4銷售實體屬性圖4.3數(shù)據(jù)表概要講明要緊數(shù)據(jù)庫表的概要講明及各個表的生成圖,如圖4-5所示。圖4-5數(shù)據(jù)庫表概要講明要緊數(shù)據(jù)庫中表之間的關(guān)聯(lián)圖,如圖4-6所示。圖4-6數(shù)據(jù)庫表之間關(guān)聯(lián)圖4.4要緊數(shù)據(jù)表的結(jié)構(gòu)數(shù)據(jù)庫在整個治理系統(tǒng)中占據(jù)特不重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞直接阻礙著系統(tǒng)的效率和實現(xiàn)效果。進銷存治理系統(tǒng)采納Oracle10g版本的數(shù)據(jù)庫,數(shù)據(jù)庫名稱為ORACLE,因篇幅所限,本論文只給出幾個重要數(shù)據(jù)表的表結(jié)構(gòu)。1.供應(yīng)商信息表供應(yīng)商信息表的名稱為tb_gysinfo,要緊用于存儲供應(yīng)商的詳細信息,結(jié)構(gòu)如表4-1所示。表4-1供應(yīng)商信息表字段名稱數(shù)據(jù)類型字段大小是否主鍵idvarchar10主鍵namevarchar10jcvarchar10addressvarchar10bianmavarchar10telvarchar20faxvarchar20lianvarchar10ltelvarchar20yhvarchar10mailvarchar202.入庫主表入庫主表的名稱為tb_ruku_main,要緊用于存儲入庫的單據(jù)信息,結(jié)構(gòu)如表4-2所示。表4-2入庫主表字段名稱數(shù)據(jù)類型字段大小是否主鍵rkIDvarchar20主鍵pzsnumberjenumberysjlvarchar30gysnamevarchar20rkdatevarchar20czyvarchar10jsrvarchar10jsfsvarchar103.入庫明細表入庫明細表的名稱為tb_ruku_detail,要緊用于存儲入庫的詳細信息,結(jié)構(gòu)如表4-3所示。表4-3入庫明細表字段名稱數(shù)據(jù)類型字段大小是否主鍵idvarchar10主鍵rkidvarchar20spidvarchar10djnumberslnumber4.銷售主表銷售主表的名稱為tb_sell_main,要緊用于存儲銷售單據(jù)的信息,結(jié)構(gòu)如表4-4所示。表4-4銷售主表字段名稱數(shù)據(jù)類型字段大小是否主鍵sellidvarchar20主鍵pzsnumberjenumberysjlvarchar30khnamevarchar20xsdatevarchar20czyvarchar10jsrvarchar10jsfsvarchar105.客戶信息表客戶信息表的名稱為tb_khinfo,要緊用于存儲客戶的信息,結(jié)構(gòu)如表4-5所示。表4-5客戶信息表字段名稱數(shù)據(jù)類型字段大小是否主鍵idvarchar10主鍵khnamevarchar20jianvarchar10addressvarchar20bianmavarchar10telvarchar20faxvarchar20lianvarchar10ltelvarchar20mailvarchar20xinhangvarchar10haovarchar186.庫存表庫存表的名稱為tb_kucun,要緊用于存儲庫存信息,結(jié)構(gòu)如表4-6所示。表4-6庫存表字段名稱數(shù)據(jù)類型字段大小是否主鍵idvarchar10主鍵spnamevarchar10cdvarchar10ggvarchar10bzvarchar10dwvarchar20djnumberkcslnumberjcvarchar10第5章要緊模塊設(shè)計與實現(xiàn)5.1系統(tǒng)登錄模塊設(shè)計與實現(xiàn)圖5-1登錄界面下面介紹登錄界面的開發(fā)步驟。1.創(chuàng)建LoginPanel類,該類繼承JPanel類并覆蓋該類的paintComponent()方法,重新繪制自己的外觀,實現(xiàn)帶背景圖片的面板容器。關(guān)鍵代碼如下:publicclassLoginPanelextendsJPanel{protectedImageIconicon=newImageIcon("res/login.jpg");publicintwidth=icon.getIconWidth(),height=icon.getIconHeight();publicLoginPanel(){super();setSize(width,height);}protectedvoidpaintComponent(Graphicsg){super.paintComponent(g);Imageimg=icon.getImage();g.drawImage(img,0,0,getParent());}2.創(chuàng)建Login類,該類繼承JFrame類實現(xiàn)一個窗口界面,同時將步驟(1)所創(chuàng)建的面板容器添加到窗口中,然后初始化窗口中的各個組件大小、位置、窗口標題等差不多屬性。關(guān)鍵代碼如下:publicclassLoginextendsJFrame{privateJLabeluserLabel;privateJLabelpassLabel;privateJButtonexit;privateJButtonlogin;privateMainwindow;privatestaticTbUserlistuser; //將當前用戶對象定義為類屬性publicLogin(){setIconImage(newImageIcon("res/main1.gif").getImage());setTitle("登錄企業(yè)進銷存治理系統(tǒng)");finalJPanelpanel=newLoginPanel();panel.setLayout(null);getContentPane().add(panel);setBounds(300,200,panel.getWidth(),panel.getHeight());userLabel=newJLabel();userLabel.setText("用戶名:");userLabel.setBounds(100,110,200,18);panel.add(userLabel);finalJTextFielduserName=newJTextField();userName.setBounds(150,110,200,18);panel.add(userName);passLabel=newJLabel();passLabel.setText("密碼:");passLabel.setBounds(100,140,200,18);panel.add(passLabel);3.在輸入密碼的文本框中添加一個按鍵監(jiān)聽器,假如用戶在密碼框中按下回車鍵,該按鍵監(jiān)聽器將攔截該按鍵事件,并執(zhí)行“登錄”按鈕的單擊事件去完成系統(tǒng)登錄。finalJPasswordFielduserPassword=newJPasswordField();userPassword.addKeyListener(newKeyAdapter(){publicvoidkeyPressed(finalKeyEvente){if(e.getKeyCode()==10)login.doClick();}userPassword.setBounds(150,140,200,18);panel.add(userPassword);}4.為“登錄”按鈕添加動作監(jiān)聽器,當用戶單擊該按鈕或者在按鈕上按下回車鍵時,監(jiān)聽器將攔截該事件并執(zhí)行actionPerformed()方法,在該方法中通過調(diào)用Dao數(shù)據(jù)庫操作類的getUser()方法獵取用戶信息,并完成用戶驗證和主窗體顯示。login=newJButton();login.addActionListener(newActionListener(){publicvoidactionPerformed(finalActionEvente){user=Dao.getUser(userName.getText(),userPassword.getText());if(user.getUsername()==null||user.getName()==null){userName.setText(null);userPassword.setText(null);return;}setVisible(false);window=newMain();window.frame.setVisible(true);}}login.setText("登錄");login.setBounds(180,170,60,18);panel.add(login);其中,數(shù)據(jù)庫連接的關(guān)鍵函數(shù)代碼如下所示。protectedstaticStringdbClassName="oracle.jdbc.driver.OracleDriver";protectedstaticStringdbUrl="jdbc:oracle:thin:@localhost:1521:ORACLE";protectedstaticStringdbUser="jxc";protectedstaticStringdbPwd="jxc";publicstaticConnectionconn=null;static{ try{ if(conn==null){ Class.forName(dbClassName).newInstance(); System.out.println("registsuccess!"); conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd); System.out.println("connectionsuccess!"); } }catch(Exceptionee){ ee.printStackTrace(); }}數(shù)據(jù)庫用戶登錄驗證Dao.getUser函數(shù)的實現(xiàn)如下。publicstaticTbUserlistgetUser(Stringname,Stringpassword){ TbUserlistuser=newTbUserlist(); ResultSetrs=findForResultSet("select*fromtb_userlistwhereusername='" +name+"'"); try{ if(rs.next()){ user.setUsername(name); user.setPass(rs.getString("pass")); if(user.getPass().equals(password)){ user.setName(rs.getString("name")); user.setQuan(rs.getString("quan")); } } }catch(SQLExceptione){ e.printStackTrace(); } returnuser; }5.在用戶單擊“退出”按鈕時,該按鈕的監(jiān)聽器會執(zhí)行System.exit(0)命令去終止整個Java虛擬機,從而關(guān)閉進銷存治理系統(tǒng)。exit=newJButton();exit.addActionListener(newActionListener(){publicvoidactionPerformed(finalActionEvente){System.exit(0);}};exit.setText("退出");exit.setBounds(260,170,60,18);panel.add(exit);setVisible(true);setResizable(false);setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);}6.編寫封裝和訪問當前用戶對象的方法,同時將這些方法聲明為類的靜態(tài)方法,如此其他窗口對象能夠隨時獵取當前登錄的用戶信息。publicstaticTbUserlistgetUser(){returnuser;}publicstaticvoidsetUser(TbUserlistuser){Login.user=user;}}主窗口界面包括菜單欄、工具欄、窗口界面。其中每個菜單對應(yīng)著系統(tǒng)的各個功能模塊。進銷存治理系統(tǒng)程序主界面的運行效果如所示。圖5-2主窗口界面程序主界面的開發(fā)首先要創(chuàng)建Main類,在類中定義各個差不多組件(包括標簽、窗體、文本框等)、窗體的集合對象、動作集合對象和當前登錄的用戶對象,然后調(diào)用initialize()方法初始化窗口和所有差不多組件,并調(diào)用登錄窗口啟動并運行程序。初始化程序主界面的initialize()方法,該方法要緊實現(xiàn)進銷存治理系統(tǒng)主界面的初始化,初始化的界面組件包括:菜單、工具欄、窗體以及它們的布局治理等。窗體的初始化包括窗體標題、圖標、布局治理器、窗體的關(guān)閉方式、位置、大小等屬性和窗體事件監(jiān)聽器。其中窗體的ComponentListener事件監(jiān)聽器在用戶改變窗體大小時改變背景圖片的大小,背景圖片是本實例提供的800×600和1024×768兩種大小的背景圖片。菜單欄中分不由不同的方法創(chuàng)建各個模塊的菜單和菜單項。工具欄由defineToolBar()方法添加工具按鈕。initialize()方法的關(guān)鍵代碼如下:frame=newJFrame("企業(yè)進銷存治理系統(tǒng)");frame.addComponentListener(newComponentAdapter(){publicvoidcomponentResized(finalComponentEvente){if(backLabel!=null){intbackw=((JFrame)e.getSource()).getWidth();ImageIconicon=backw<=800?newImageIcon("res/welcome.jpg"):newImageIcon("res/welcomeB.jpg");backLabel.setIcon(icon);backLabel.setSize(backw,frame.getWidth());}}}frame.setIconImage(newImageIcon("res/main1.gif").getImage());frame.getContentPane().setLayout(newBorderLayout());frame.setBounds(100,100,800,600); //設(shè)置窗體位置和大小frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //窗體的關(guān)閉方式desktopPane=newJDesktopPane();desktopPane.setBackground(Color.WHITE); //白色背景frame.getContentPane().add(desktopPane);backLabel=newJLabel();backLabel.setVerticalAlignment(SwingConstants.TOP);backLabel.setHorizontalAlignment(SwingConstants.CENTER);desktopPane.add(backLabel,newInteger(Integer.MIN_VALUE));menuBar=newJMenuBar();menuBar.setBounds(0,0,792,66);menuBar.setBorder(newLineBorder(Color.BLACK));frame.setJMenuBar(menuBar);menuBar.add(getBasicMenu()); //添加基礎(chǔ)信息菜單的方法menuBar.add(getJinHuoMenu()); //添加進貨治理菜單的方法menuBar.add(getSellMenu()); //添加銷售治理菜單的方法menuBar.add(getKuCunMenu()); //添加庫存治理菜單的方法menuBar.add(getCxtjMenu()); //添加查詢統(tǒng)計菜單的方法menuBar.add(getSysMenu()); //添加系統(tǒng)治理菜單的方法finalJToolBartoolBar=newJToolBar("工具欄");frame.getContentPane().add(toolBar,BorderLayout.NORTH);toolBar.setRollover(true);defineToolBar(toolBar); //添加工具欄按鈕的方法5.2基礎(chǔ)信息模塊設(shè)計與實現(xiàn)基礎(chǔ)信息模塊用于治理系統(tǒng)中的客戶、商品和供應(yīng)商信息。基礎(chǔ)信息模塊的運行效果如圖5-3所示。圖5-3基礎(chǔ)信息界面基礎(chǔ)信息模塊用到的關(guān)鍵組件圖5-4關(guān)鍵組件關(guān)鍵代碼:publicclassJinHuoDanextendsJInternalFrame{privatefinalJTabletable;privateTbUserlistuser=Login.getUser(); //登錄用戶信息privatefinalJTextFieldjhsj=newJTextField(); //進貨時刻privatefinalJTextFieldjsr=newJTextField(); //經(jīng)手人privatefinalJComboBoxjsfs=newJComboBox(); //計算方式privatefinalJTextFieldlian=newJTextField(); //聯(lián)系人privatefinalJComboBoxgys=newJComboBox(); //供應(yīng)商privatefinalJTextFieldpiaoHao=newJTextField(); //票號privatefinalJTextFieldpzs=newJTextField("0"); //品種數(shù)量privatefinalJTextFieldhpzs=newJTextField("0"); //貨品總數(shù)privatefinalJTextFieldhjje=newJTextField("0"); //合計金額privatefinalJTextFieldysjl=newJTextField(); //驗收結(jié)論privatefinalJTextFieldczy=newJTextField(user.getName());//操作員privateDatejhsjDate;privateJComboBoxsp;1.在構(gòu)造方法中對這些組件初始化,并調(diào)用setupComponet()方法設(shè)置組件的布局位置。2.為供應(yīng)商下拉選擇框添加事件監(jiān)聽器,當用戶單擊并改變選擇的內(nèi)容時,調(diào)用doGysSelectAction()方法依照改變的下拉選擇框內(nèi)容更新供應(yīng)商和聯(lián)系人信息。3.為商品下拉選擇框添加事件監(jiān)聽器,當用戶單擊并改變商品下拉選擇框的內(nèi)容時,調(diào)用updateTable()方法依照下拉選擇框的內(nèi)容填充表格內(nèi)的商品信息。4.為“添加”按鈕添加事件監(jiān)聽器,當用戶單擊該按鈕時,調(diào)用initPiaoHao()方法依照當前數(shù)據(jù)庫中的入庫信息,初始化新入庫的票號文本框。同時調(diào)用initSpBox()方法初始化商品下拉選擇框的內(nèi)容,并清除表格內(nèi)的空行。5.添加“入庫”按鈕的事件監(jiān)聽器,那個監(jiān)聽器在用戶添加了進貨的商品信息并單擊“入庫”按鈕時,收集進貨信息同時通過調(diào)用Dao數(shù)據(jù)庫操作類的insertRukuInfo()方法在事務(wù)中完成入庫主表、入庫明細表和庫存表的添加與更新。6.供應(yīng)商添加實現(xiàn)過程(1)創(chuàng)建GysTiaJiaPanle類,用于實現(xiàn)本系統(tǒng)的供應(yīng)商添加功能。該類將在界面中顯示用于輸入供應(yīng)商信息的文本框。(2)創(chuàng)建RestActionListner類,該類是重填按鈕的事件監(jiān)聽器,它必須實現(xiàn)ActionListener接口,并在actionPerformed()方法中清除界面中的所有文本框內(nèi)容。(3)創(chuàng)建TjActionLister類,該類是添加按鈕的事件監(jiān)聽器,它必須實現(xiàn)AtionListener接口并在actionPerfirmed()方法中實現(xiàn)用戶輸入的驗證和供應(yīng)商信息的保存。5.3銷售單功能設(shè)計與實現(xiàn)銷售單的實現(xiàn)界面如圖5-5所示。圖5-5銷售單接界面銷售單功能的實現(xiàn)步驟如下。1.創(chuàng)建XiaoShouDan類,該類繼承JInternalFrame類實現(xiàn)窗體界面,在類中定義窗體界面中的各個組件和當前登錄的用戶對象,由于設(shè)置組件的布局定位方法與進貨單和其他功能模塊所使用的方法相同,那個地點將省略該部分的代碼介紹。關(guān)鍵代碼如下:publicclassXiaoShouDanextendsJInternalFrame{privatefinalJTabletable;privateTbUserlistuser=Login.getUser();//登錄用戶信息privatefinalJTextFieldjhsj=newJTextField();//進貨時刻privatefinalJTextFieldjsr=newJTextField();//經(jīng)手人privatefinalJComboBoxjsfs=newJComboBox();//計算方式privatefinalJTextFieldlian=newJTextField();//聯(lián)系人privatefinalJComboBoxkehu=newJComboBox();//客戶privatefinalJTextFieldpiaoHao=newJTextField();//票號privatefinalJTextFieldpzs=newJTextField("0");//品種數(shù)量privatefinalJTextFieldhpzs=newJTextField("0");//貨品總數(shù)privatefinalJTextFieldhjje=newJTextField("0");//合計金額privatefinalJTextFieldysjl=newJTextField();//驗收結(jié)論privatefinalJTextFieldczy=newJTextField(user.getName());//操作員privateJComboBoxsp;}添加“銷售”按鈕的事件監(jiān)聽器,在添加了銷售的商品并單擊“銷售”按鈕時,該事件監(jiān)聽器的actionPerformed()方法將收集銷售的商品信息,通過Dao數(shù)據(jù)庫操作類的insertSellInfo()方法在事務(wù)中完成商品銷售主表、銷售詳細表、庫存表的添加與更新任務(wù)。關(guān)鍵代碼如下:booleanautoCommit=conn.getAutoCommit(); conn.setAutoCommit(false); //添加銷售主表記錄 intpzs=Integer.parseInt(sellMain.getPzs()); doubleje=newDouble(sellMain.getJe().substring(0,sellMain.getJe().length()-2)); insert("insertintotb_sell_mainvalues('"+sellMain.getSellId() +"','"+pzs+"',"+je +",'"+sellMain.getYsjl()+"','"+sellMain.getKhname() +"','"+sellMain.getXsdate()+"','"+sellMain.getCzy() +"','"+sellMain.getJsr()+"','"+sellMain.getJsfs() +"')"); Set<TbSellDetail>rkDetails=sellMain.getTbSellDetails(); for(Iterator<TbSellDetail>iter=rkDetails.iterator();iter .hasNext();){ TbSellDetaildetails=iter.next(); //添加銷售詳細表記錄 ResultSetset=Dao.query("selectmax(id)fromtb_sell_detail"); Stringid=null; try{ if(set!=null&&set.next()){ Stringsid=set.getString(1); if(sid==null) id="xsD1001"; else{ Stringstr=sid.substring(3); id="xsD"+(Integer.parseInt(str)+1); } } }catch(SQLExceptione1){ e1.printStackTrace(); } insert("insertintotb_sell_detailvalues('"+id+"','" +sellMain.getSellId()+"','"+details.getSpid() +"',"+details.getDj()+","+details.getSl()+")"); //修改庫存表記錄 Itemitem=newItem(); item.setId(details.getSpid()); TbSpinfospInfo=getSpInfo(item); if(spInfo.getId()!=null&&!spInfo.getId().isEmpty()){ TbKucunkucun=getKucun(item); if(kucun.getId()!=null&&!kucun.getId().isEmpty()){ intsl=kucun.getKcsl()-details.getSl(); update("updatetb_kucunsetkcsl="+sl+"whereid='" +kucun.getId()+"'"); } } } mit(); conn.setAutoCommit(autoCommit);初始化銷售單窗體的initTasks類,5.4銷售退貨治理模塊設(shè)計與實現(xiàn)銷售退貨治理模塊要緊用于銷售貨的退貨信息。如所示。圖5-6銷售退貨治理界面在選擇了退貨商品之后,單擊“退貨”按鈕把表格中的商品退貨信息更新到數(shù)據(jù)庫中。5.5查詢統(tǒng)計模塊設(shè)計與實現(xiàn)查詢統(tǒng)計模塊是進銷存治理系統(tǒng)中不可缺少的重要組成部分,它要緊包括基礎(chǔ)信息、進貨信息、銷售信息、退貨信息的查詢和銷售排行。程序界面如圖5-7所示。圖5-7查詢統(tǒng)計模塊界面銷售查詢實現(xiàn)過程1.創(chuàng)建XiaoShouChaXun類,用于實現(xiàn)本系統(tǒng)的查詢銷售功能界面和業(yè)務(wù)邏輯。2.編寫updataTable()方法,用于更新表格數(shù)據(jù)。該方法必須接收一個Iterator迭代器對象,通過遍歷迭代器中的數(shù)據(jù)來初始化界面中的表格。關(guān)鍵代碼如下:privatevoidupdateTable(Iteratoriterator){ //更新表格數(shù)據(jù) introwCount=dftm.getRowCount(); for(inti=0;i<rowCount;i++){ dftm.removeRow(0); } while(iterator.hasNext()){ Vectorvector=newVector(); Listview=(List)iterator.next(); vector.addAll(view); dftm.addRow(vector); }}3.創(chuàng)建ShouAllactoinListener類,使該類實現(xiàn)ActionLister接口,實現(xiàn)該接口的actionPerformed()方法。改方法在用戶單擊“顯示全部數(shù)據(jù)”按鈕時,執(zhí)行無條件的數(shù)據(jù)查詢,也確實是講,該按鈕將讀數(shù)據(jù)庫中所有的銷售信息,并顯示到表格中,關(guān)鍵代碼如下:classShowAllActoinListenerimplementsActionListener{ //顯示全部按鈕的動作監(jiān)聽器 publicvoidactionPerformed(finalActionEvente){ content.setText(""); Listlist=Dao.findForList("select*fromv_sellView"); Iteratoriterator=list.iterator(); updateTable(iterator); } }4.創(chuàng)建“查詢”按鈕的事件監(jiān)聽器QueryActionListener類,該類必須實現(xiàn)ActionListener接口,并實現(xiàn)該接口的actionPerformed()方法。5.6庫存治理模塊的設(shè)計與實現(xiàn)進銷存治理系統(tǒng)中的庫存治理模塊包括庫存盤點和價格調(diào)整兩個功能。程序界面如圖5-8所示。圖5-8庫存治理界面關(guān)鍵代碼如下:publicclassKuCunPanDianextendsJInternalFrame{ privatefinalJTabletable; privateTbUserlistuser=Login.getUser();//登錄用戶信息 privatefinalJTextFieldpdsj=newJTextField();//進貨時刻 privatefinalJTextFieldpzs=newJTextField("0");//品種數(shù)量 privatefinalJTextFieldhpzs=newJTextField("0");//貨品總數(shù) privatefinalJTextFieldkcje=newJTextField("0");//庫存金額 privateDatepdDate=newDate(); privateJTextFieldpdy=newJTextField(user.getUsername());//盤點員 publicKuCunPanDian(){ super(); setMaximizable(true); setIconifiable(true); setClosable(true); getContentPane().setLayout(newGridBagLayout()); setTitle("庫存盤點"); setBounds(50,50,750,400); setupComponet(newJLabel("盤點員:"),0,0,1,0,false); pdy.setFocusable(false); pdy.setPreferredSize(newDimension(120,21)); setupComponet(pdy,1,0,1,0,true); setupComponet(newJLabel("盤點時刻:"),2,0,1,0,false); pdsj.setFocusable(false); pdsj.setText(pdDate.toLocaleString()); pdsj.setPreferredSize(newDimension(180,21)); setupComponet(pdsj,3,0,1,1,true); setupComponet(newJLabel("品種數(shù):"),4,0,1,0,false); pzs.setFocusable(false); pzs.setPreferredSize(newDimension(80,21)); set
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度餐飲廚房能源消耗分析與節(jié)能減排承包合同3篇
- 2025年度區(qū)塊鏈技術(shù)研究人員保密協(xié)議及項目合作條款3篇
- 2025年度時尚服飾品牌代理供貨合作協(xié)議4篇
- 2025年度二零二五年度生態(tài)旅游區(qū)場攤位租賃管理協(xié)議4篇
- 2025年度企業(yè)年會策劃與演出服務(wù)合同4篇
- 2025年度服裝服飾貨款抵押銷售合同范本4篇
- 2024石材石材石材運輸保險服務(wù)合作協(xié)議3篇
- 2025年度柴油發(fā)動機技術(shù)培訓(xùn)合同4篇
- 2025年度體育賽事場地冠名權(quán)及推廣合作合同4篇
- 二零二五年度防盜門行業(yè)展會贊助合作合同3篇
- 2024版《53天天練單元歸類復(fù)習(xí)》3年級語文下冊(統(tǒng)編RJ)附參考答案
- 2025企業(yè)年會盛典
- 215kWh工商業(yè)液冷儲能電池一體柜用戶手冊
- 場地平整施工組織設(shè)計-(3)模板
- 交通設(shè)施設(shè)備供貨及技術(shù)支持方案
- 美容美發(fā)店火災(zāi)應(yīng)急預(yù)案
- 餐車移動食材配送方案
- 項目工程師年終總結(jié)課件
- 一年級口算練習(xí)題大全(可直接打印A4)
- 電動車棚消防應(yīng)急預(yù)案
- 人力資源戰(zhàn)略規(guī)劃地圖
評論
0/150
提交評論