版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
/畢業(yè)設(shè)計(jì)(論文)題目:基于JavaEE的倉庫管理系統(tǒng)成都電子機(jī)械高等專科學(xué)校二〇〇八年六月論文摘要隨著經(jīng)濟(jì)的不斷繁榮以與加入WTO后市場環(huán)境的變化,對企業(yè)的生產(chǎn)經(jīng)營提出了更高的要求,企業(yè)必須綜合利用各種先進(jìn)制造技術(shù),在網(wǎng)絡(luò)與信息技術(shù)的支持下,改進(jìn)現(xiàn)在的生產(chǎn)經(jīng)營模式和組織結(jié)構(gòu),才能在市場競爭中贏得更多的份額。隨著企業(yè)規(guī)模的擴(kuò)大,倉庫管理系統(tǒng)將發(fā)揮越來越重要的作用。高效方便的倉庫管理系統(tǒng),可以為生產(chǎn)經(jīng)營提供堅(jiān)強(qiáng)的后盾和有力的支持。倉庫管理系統(tǒng)主要提供一個倉庫業(yè)務(wù)與其作業(yè)管理的信息存儲和檢索系統(tǒng)。通過入庫管理、出庫管理、報表生成管理、倉庫人員管理、倉庫位置信息管理等功能模塊來實(shí)現(xiàn)倉庫的綜合管理。本論文以標(biāo)準(zhǔn)的倉庫管理模式為藍(lán)本,基于JavaEE開發(fā)出一個可以用于一般單位的倉庫管理系統(tǒng),實(shí)現(xiàn)了倉庫管理的高效性與安全性。本系統(tǒng)可以方便快捷地實(shí)現(xiàn)庫管理中的貨物登記、出庫入庫、庫房管理等操作,使企業(yè)的倉庫管理井井有條,為企業(yè)的健康發(fā)展創(chuàng)造良好的條件。關(guān)鍵詞:倉庫管理系統(tǒng),JavaEE,模塊化設(shè)計(jì),軟件工程AbstractWiththecontinuouseconomicprosperityandaccessiontotheWTOafterthemarketenvironmentchanges,theproductionandoperationofenterpriseshavesethigherrequirements,enterprisesmustcomprehensiveutilizationofadvancedmanufacturingtechnology,theInternetandinformationtechnology,improvingtheexistingproductionBusinessmodelandorganizationalstructure,inordertowinmoremarketcompetitionintheshare.Withtheexpansionofbusinessscale,warehousemanagementsystemwillplayanincreasinglyimportantrole.Facilitatetheefficientwarehousemanagementsystem,canprovideastrongproductionandmanagementbackingandstrongsupport.Warehousemanagementsystemtoprovideamajorwarehouseoperationsanditsoperationsmanagementinformationstorageandretrievalsystem.Throughstoragemanagement,tothemanagement,reportgenerationmanagement,storagemanagement,storagelocationinformationmanagementmoduletoachieveintegratedmanagementofthewarehouse.Thispapertothewarehousemanagementstandardsbasedonthemodel,basedontheJavaEEcanbeusedtodevelopaunitofGeneralwarehousemanagementsystem,warehousemanagementtoachievetheefficiencyandsecurity.Thissystemcanquicklyandeasilyachievethemanagementofgoodsregisteredtothestockandthetreasurymanagementoperation,theenterprisestoragemanagementorderly,forthehealthydevelopmentofenterprisestocreategoodconditions.KeyWords:Warehousemanagementsystem,JavaEE,modulardesign,softwareengineering目錄論文摘要目錄一、引言………………………1.1倉庫管理系統(tǒng)的背景與意義…………1.2JavaEE簡介…………1.3本文的主要工作………二、相關(guān)技術(shù)介紹…………2.1JavaEE相頭原理與技術(shù)簡介………2.1.1Servlet…………2.1.2JSP簡介…………2.1.3EJB………………2.2Struts…………………2.2.1STRUTS的由來和發(fā)展…………2.2.2MVC簡介…………2.2.3Struts優(yōu)缺點(diǎn)…………………2.2.4Struts的工程流程……………2.3Hibernate……………三、系統(tǒng)分析與設(shè)計(jì)…………3.1引言……………………3.2系統(tǒng)分析………………3.2.1系統(tǒng)可行性研究…………………3.2.2系統(tǒng)使用環(huán)境……………………3.2.3系統(tǒng)需求分析……………………1.系統(tǒng)功能概述……………………2.貨物入庫和出庫的管理…………3.出庫入庫記錄的查詢與報表……4.貨物信息的管理…………………5.其它信息的管理…………………3.3系統(tǒng)功能設(shè)計(jì)…………四、數(shù)據(jù)庫設(shè)計(jì)………………4.1引言……………………4.2E-R圖…………………4.3數(shù)據(jù)表…………………五、系統(tǒng)界面與功能實(shí)現(xiàn)……………………5.1頁面流程圖……………5.2創(chuàng)建系統(tǒng)登陸模塊……………………5.2.1系統(tǒng)登陸模塊的功能……………5.2.2設(shè)計(jì)登陸窗口……………………5.3創(chuàng)建主窗口模塊………5.3.1主窗口模塊的功能………………5.3.2主窗口的設(shè)計(jì)………5.4倉庫人員管理模塊……………………5.4.1倉庫人員管理模塊的功能………5.5入庫模塊的實(shí)現(xiàn)………5.5.1入庫模塊的功能…………………5.6出庫模塊的實(shí)現(xiàn)……………………5.6.1出庫模塊的功能…………………5.7移庫模塊的實(shí)現(xiàn)……………………5.7.1移庫模塊的功能…………………5.8盤點(diǎn)模塊的實(shí)現(xiàn)……………………5.8.1盤點(diǎn)模塊的功能…………………5.9倉庫設(shè)置模塊的實(shí)現(xiàn)………………5.9.1倉庫設(shè)置模塊的功能……………5.10計(jì)量單位設(shè)置模塊的實(shí)現(xiàn)…………5.10.1計(jì)量單位設(shè)置模塊的功能……5.11部門信息設(shè)置模塊的實(shí)現(xiàn)…………5.11.1部門信息設(shè)置模塊的功能……5.12操作類型設(shè)置模塊的實(shí)現(xiàn)…………5.12.1操作類型設(shè)置模塊的功能……5.13期初設(shè)置模塊的實(shí)現(xiàn)………………5.13.1期初設(shè)置模塊的功能…………5.14貨物存儲信息查詢模塊的實(shí)現(xiàn)……5.14.1貨物存儲信息查詢模塊的功能與布局………5.15幫助模塊的實(shí)現(xiàn)5.15.1幫助模塊的功能與布局………六、Hibernate設(shè)計(jì)…………6.1Hibernate簡介……………………6.2Hibernate生成…………………… 6.6.3Hibernate的映射文件和類的生成………………… 6. 6.七、總結(jié)………………………參考文獻(xiàn)………………………一、引言1.1倉庫管理系統(tǒng)的背景與意義隨著企業(yè)規(guī)模的擴(kuò)大,管理信息系統(tǒng)也發(fā)揮越來越重要的作用。作為企業(yè)管理信息系統(tǒng)關(guān)鍵組成部分的倉庫管理系統(tǒng)的應(yīng)用給企業(yè)帶來巨大的效益。采用倉庫管理系統(tǒng)將使企業(yè)改變其傳統(tǒng)的手工記錄模式,應(yīng)用數(shù)據(jù)庫技術(shù)使海量數(shù)據(jù)的存儲與處理成為很方便的事情,這樣可大幅縮短主要業(yè)務(wù)流程的處理時間,提高對市場的響應(yīng)能力?!拔锪鞣?wù)最初起源于軍事上的運(yùn)用”,“物流”這一概念起源于二戰(zhàn)期間的美國,英文稱之為Logistics或者PhysicalDistribution,前者的使用率更高一些。物流一詞最早被描述為泛指軍隊(duì)運(yùn)輸、補(bǔ)給和屯駐,后來被廣泛用來描述商品實(shí)體的物理性流通活動,成為流通經(jīng)濟(jì)學(xué)中的術(shù)語。物流(Logistic)到目前還沒有一個統(tǒng)一的定義,綜合各種物流的定義可以得出,物流是有形物品從出發(fā)點(diǎn)到最終消費(fèi)點(diǎn)的流動存儲活動,具體包括運(yùn)輸、保管、包裝、裝卸、搬運(yùn)、流通加工與信息處理,從職能上可以分為:供應(yīng)物流、生成物流、銷售物流、回收物流和廢棄物流五個職能。從70年代開始,計(jì)算機(jī)技術(shù)開始應(yīng)用到物流領(lǐng)域。隨著物流市場和物流信息化的發(fā)展,物流軟件市場也應(yīng)運(yùn)而生并迅速發(fā)展起來,國內(nèi)外出現(xiàn)了一大批物流軟件供應(yīng)商和物流軟件?!拔锪鬈浖鳛楣芾碥浖?,較其它應(yīng)用軟件呈現(xiàn)先進(jìn)性、高效性、可靠性和安全性等特點(diǎn);較其它管理軟件,如ERP(EnterpriseResourcePlanning),具有以下特點(diǎn):實(shí)施風(fēng)險小,實(shí)施迅速;效益顯著、見效快。根據(jù)物流軟件結(jié)構(gòu)分類,就目前物流軟件所使用的應(yīng)用范圍來說,物流軟件包括如下幾個子系統(tǒng):WMS(WarehouseManagementSystem,倉庫管理系統(tǒng))、TMS(TransportationManagementSystem,運(yùn)輸管理系統(tǒng)。OMS(OrderManagementSystem,定單管理系統(tǒng))、SMS(ServiceManagementSystem,服務(wù)管理系統(tǒng))。其中,WMS主要提供了一整套倉庫業(yè)務(wù)以與作業(yè)管理系統(tǒng)。通過倉庫管理系統(tǒng)可以實(shí)現(xiàn)庫位分配自動化和智能化;提高倉庫作業(yè)效率和速度,提供準(zhǔn)確的庫存信息,并使之與實(shí)際庫存變化同步。根據(jù)中國物流與采購聯(lián)合會統(tǒng)計(jì),2001年,中國與物流相關(guān)的年總支出為19000億元人民幣,物流成本占GDP的比重為20%左右。我國企業(yè)的物流支出成本約占總成本的30%,而國外企業(yè)的物流支出成本僅為7%。物流成本的巨大差距,抵消了我國企業(yè)在原材料和人工上的成本優(yōu)勢,降低了我國企業(yè)的競爭力。國內(nèi)的很多企業(yè),由于信息的記錄、收集、匯總、處理分析還處于比較低的水平,記錄中信息分散、格式隨意、應(yīng)用單一,收集中不與時、不全面、不完善、保留不科學(xué),匯總時口徑不一、主題多元、結(jié)果不一,處理分析方法落后、效率低下、只有短期,難以支持趨勢等。倉庫管理系統(tǒng)是通過入庫業(yè)務(wù)、出庫業(yè)務(wù)、庫存調(diào)撥、庫存調(diào)整,結(jié)合批次管理、物料對應(yīng)、庫存盤點(diǎn)、質(zhì)檢管理、實(shí)時庫存管理等功能綜合運(yùn)用的管理系統(tǒng),對庫存業(yè)務(wù)的物流和成本管理全過程進(jìn)行有效控制和跟蹤,實(shí)現(xiàn)完善的企業(yè)倉庫信息管理。倉庫管理系統(tǒng)的投入,將使倉庫的管理更加正規(guī)化,為產(chǎn)品的出入庫管理部門和銷售部門提供了方便,降低了倉庫的損耗。企業(yè)可以對售出的產(chǎn)品進(jìn)行跟蹤服務(wù),同時也免去了銷售人員按以往慣例親自前往用戶處去核實(shí)貨物情況的麻煩,提高了辦事效率,節(jié)省了費(fèi)用,而且還避免了不必要的業(yè)務(wù)糾紛,維護(hù)了企業(yè)長期與用戶建立的良好信譽(yù)。1.2JavaEE簡介企業(yè)級多層應(yīng)用系統(tǒng)的開發(fā)一直面臨著重大挑戰(zhàn)。開發(fā)商和廣大程序員一直在努力推動和殷切期待一個成熟的、標(biāo)準(zhǔn)的企業(yè)級應(yīng)用平臺來簡化和規(guī)范企業(yè)級應(yīng)用系統(tǒng)的開發(fā)和部署。Java技術(shù)的出現(xiàn),尤其是J2EE(Java2PlatformEnterpriseEdition)平臺的推出正是這種努力的結(jié)果,也使得企業(yè)級應(yīng)用系統(tǒng)的開發(fā)由此變得更加快速和方便。需要指出的是,J2EE本身是一個標(biāo)準(zhǔn),它為不同廠商創(chuàng)建平臺產(chǎn)品提供了標(biāo)準(zhǔn),使不同J2EE平臺產(chǎn)品之間的交互成為可能。SUN與其合作方將J2EE1.5改名為JavaEE5,但是其架構(gòu)跟改名前的J2EE沒有區(qū)別。只是通過增強(qiáng)一些技術(shù)使得我們更快、更容易、更簡單地開發(fā)企業(yè)應(yīng)用程序1.3本文的主要工作本論文以標(biāo)準(zhǔn)的倉庫管理模式為藍(lán)本,根據(jù)軟件工程的理論,開發(fā)出基于JavaEE的適用于中小單的位倉庫管理系統(tǒng)。論文首先研究了系統(tǒng)開發(fā)的可行性,然后進(jìn)行了需求分析,并將需求分析以文檔的形式反饋給用戶,并和用戶進(jìn)行交流進(jìn)一步確認(rèn)需求,然后根據(jù)需求分析采用了結(jié)構(gòu)化分析方法進(jìn)行了系統(tǒng)分析設(shè)計(jì),并進(jìn)行了數(shù)據(jù)庫的建模工作,根據(jù)模型構(gòu)建了數(shù)據(jù)庫。后臺數(shù)據(jù)庫采用MYSQL完成?;陂_放的開發(fā)架構(gòu)JavaEE,實(shí)現(xiàn)了系統(tǒng)登錄模塊、主窗口模塊、倉庫人員管理模塊、入庫模塊、出庫模塊、入庫報表生成模塊、出庫報表生成模塊等。最后對全文進(jìn)行了總結(jié),對今后的工作提出了展望。二、相關(guān)技術(shù)介紹2.1JavaEE相關(guān)原理與技術(shù)簡介JavaEE規(guī)范定義了一個完善的應(yīng)用組件技術(shù)框架,作為企業(yè)級應(yīng)用系統(tǒng)基本構(gòu)造模塊的組件就是建立在這個框架之上。從簡單的Web應(yīng)用到復(fù)雜的分布式企業(yè)級應(yīng)用,幾乎所有的業(yè)務(wù)應(yīng)用,都可以在此技術(shù)框架基礎(chǔ)上構(gòu)造。本文中使用的組件技術(shù)主要有三種類型:JSP網(wǎng)頁、servlet和EnterpriseJavaBean。ServletServlet是一些用來擴(kuò)展Web服務(wù)器功能的Web組件,它基于請求/響應(yīng)機(jī)制。Servlet從客戶端(例如Web瀏覽器)獲得請求,然后,將響應(yīng)結(jié)果返回客戶端。Servlet的這種特點(diǎn)使它非常適合于Web應(yīng)用。Servlet和EJB組件的區(qū)別在于EJB組件所提供的服務(wù)器端組件特性并不能全部適用于Servlet,Servlet更適合于處理簡單的請求/響應(yīng)任務(wù),而且它不需要應(yīng)用服務(wù)器所提供的復(fù)雜服務(wù)的支持。2.1.JSP(JavaServerPages)是由SunMicrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn),JSP技術(shù)在Servlet技術(shù)基礎(chǔ)上發(fā)展起來的,它正在飛速發(fā)展中,現(xiàn)已成為Java服務(wù)器編程的重要組成部分。它雖然還未成型,但是它必將和J2EE(Java2EnterpriseEdition)一起發(fā)展。JSP是結(jié)合markup(HTML和XML)和Java代碼來處理一種動態(tài)頁面。每一頁第一次被調(diào)用時,通過JSP引擎自動被編譯成Servlet,然后被執(zhí)行,以后每次調(diào)用時,執(zhí)行編譯過的Servlet。JSP提供了多種方式訪問Javaclass、Servlet、Applets和WebServer,因此,Web應(yīng)用的功能可以分成多個明確定義公用接口的組件,通過JSP將它們結(jié)合在一起.2.1.3EJB(EnterpriseJavaBeans)是J2EE平臺的核心,也是J2EE得到業(yè)界廣泛關(guān)注和支持的主要原因。我們知道,J2EE的一個主要目標(biāo)就是簡化企業(yè)級多層應(yīng)用系統(tǒng)的開發(fā),使得程序員將主要精力放在業(yè)務(wù)邏輯的開發(fā)上。EJB正是基于這種思想的服務(wù)器端技術(shù),它本身也是一種規(guī)范,該規(guī)范定義了一個可重用的組件框架來實(shí)現(xiàn)分布式的、面向?qū)ο蟮臉I(yè)務(wù)邏輯。EJB的核心思想是將業(yè)務(wù)邏輯與底層的系統(tǒng)邏輯分開,使開發(fā)者只需關(guān)心業(yè)務(wù)邏輯,而由EJB容器實(shí)現(xiàn)目錄服務(wù)、事務(wù)處理、持久性、安全性等底層系統(tǒng)邏輯。根據(jù)功能不同,規(guī)范中定義了三種EnterpriseJvavaBean:會話Bean(SessionBean)、實(shí)體Bean(EntityBean)和消息驅(qū)動Bean(Message-DrivenBean)。會話Bean分為無狀態(tài)和有狀態(tài)兩種。一般無狀態(tài)的會話Bean模擬商業(yè)邏輯,比如計(jì)算價格等。有狀態(tài)的會話Bean通常模擬一個客戶會話,它會臨時保存客戶信息,根據(jù)客戶要求調(diào)用其它Bean來存取數(shù)據(jù)。兩種會話Bean都不保存狀態(tài)信息或者數(shù)據(jù),當(dāng)客戶斷開連接或者服務(wù)器關(guān)閉時,會話Bean也就隨之消失。一個會話Bean的典型例子是網(wǎng)站上的購物車。實(shí)體Bean模擬業(yè)務(wù)數(shù)據(jù),它表示一個數(shù)據(jù)存儲,可以是狀態(tài)信息或者數(shù)據(jù)庫中的一條記錄。實(shí)體Bean在客戶斷開連接或者服務(wù)器關(guān)閉后,仍有服務(wù)保證其數(shù)據(jù)得以保存。消息驅(qū)動Bean在行為上很象會話Bean。不同的就是僅在需要向這些Bean發(fā)送消息時才調(diào)用消息驅(qū)動Bean,比如在需要的時候發(fā)送用戶確認(rèn)信息等。2.2Struts2.2Struts框架工具是Apache基金會Jakarta項(xiàng)目中推出的一個子項(xiàng)目。Struts在英文中是支架、支撐的意思,這也體現(xiàn)出Struts在開發(fā)Web應(yīng)用程序過程所起到的重要作用,Struts為Web應(yīng)用提供了通用的框架,讓開發(fā)人員可以把主要精力集中在如何解決實(shí)際業(yè)務(wù)問題上,與此同時Struts框架也允許開發(fā)人員根據(jù)實(shí)際需要進(jìn)行擴(kuò)展和定制,從而可以更好的適應(yīng)用戶的需求。采用Struts可以簡化遵循MVC設(shè)計(jì)模式的Web應(yīng)用的開發(fā)工作,很好地實(shí)現(xiàn)代碼重用,使開發(fā)人員從一些繁瑣的工作中解脫出來,快速開發(fā)能夠充分發(fā)揮JSP/Servlet優(yōu)點(diǎn)、并具有強(qiáng)可擴(kuò)展性的Web應(yīng)用。總之,Struts的出現(xiàn)使得Web應(yīng)用的開發(fā)過程大大簡化,從而能夠縮短開發(fā)周期、提高開發(fā)效率。Struts架構(gòu)一經(jīng)推出,即受到Java開發(fā)群體的廣泛重視,從2004年開始逐漸升溫,并日漸成為Java創(chuàng)建Web應(yīng)用開發(fā)的最流行的框架工具,在目前JavaWeb程序員的招聘要求中,幾乎都提出了對Struts的要求,精通Struts架構(gòu)已經(jīng)成為JavaWeb程序員必備的技能。2.2模型-視圖-控制器(MVC)是80年代Smalltalk-80出現(xiàn)的一種軟件設(shè)計(jì)模式,現(xiàn)在已經(jīng)被廣泛的使用。1、模型(Model)模型是應(yīng)用程序的主體部分。模型表示業(yè)務(wù)數(shù)據(jù),或者業(yè)務(wù)邏輯.2、視圖(View)視圖是應(yīng)用程序中用戶界面相關(guān)的部分,是用戶看到并與之交互的界面。3、控制器(controller)控制器工作就是根據(jù)用戶的輸入,控制用戶界面數(shù)據(jù)顯示和更新model對象狀態(tài)。MVC式的出現(xiàn)不僅實(shí)現(xiàn)了功能模塊和顯示模塊的分離,同時它還提高了應(yīng)用系統(tǒng)的可維護(hù)性、可擴(kuò)展性、可移植性和組件的可復(fù)用性早期的程序中,如果不注意對數(shù)功能和顯示的解耦合,常常會導(dǎo)致程序的復(fù)雜與難以維護(hù)。很多VB,Delphi等RAD程序都有這種問題。甚至現(xiàn)在的C#,Java有時候也會出現(xiàn)把業(yè)務(wù)邏輯寫在顯示模塊中的現(xiàn)象管MVC設(shè)計(jì)模式很早就提出,但在Web項(xiàng)目的開發(fā)中引入MVC卻是步履維艱。主要原因:一是在早期的Web項(xiàng)目的開發(fā)中,程序語言和HTML的分離一直難以實(shí)現(xiàn)。CGI程序以字符串輸出的形式動態(tài)地生成HTML內(nèi)容。后來隨著腳本語言的出現(xiàn),前面的方式又被倒了過來,改成將腳本語言書寫的程序嵌入在HTML內(nèi)容中。這兩種方式有一個相同的不足之處即它們總是無法將程序語言和HTML分離。二是腳本語言的功能相對較弱,缺乏支持MVC設(shè)計(jì)模式的一些必要的技術(shù)基礎(chǔ)。直到基于J2EE的JSPModel2問世時才得以改觀。它用JSP技術(shù)實(shí)現(xiàn)視圖的功能,用Servlet技術(shù)實(shí)現(xiàn)控制器的功能,用JavaBean技術(shù)實(shí)現(xiàn)模型的功能JSPModel1與JSPModel2圖1-3-1圖1-3-2圖1-3-3JSPModel2SUN在JSP出現(xiàn)早期制定了兩種規(guī)范,稱為Model1和Model2。雖然Model2在一定程度上實(shí)現(xiàn)了MVC,但是它的應(yīng)用用并不盡如人意model2容易使系統(tǒng)出現(xiàn)多個Controller,并且對頁面導(dǎo)航的處理比較復(fù)雜,有些人覺得model2仍不夠好,于是CraigR.McClanahan2000年5月提交了一個WEBframework給JavaCommunity.這就是后來的Struts。2001年7月,Struts1.0,正式發(fā)布。該項(xiàng)目也成為了ApacheJakarta的子項(xiàng)目之一Struts實(shí)質(zhì)上就是在Model2的基礎(chǔ)上實(shí)現(xiàn)的一個MVC架構(gòu)。它只有一個中心控制器,他采用XML定制轉(zhuǎn)向的URL。采用Action來處理邏輯2.2.優(yōu)點(diǎn):Struts跟Tomcat、Turbine等諸多Apache項(xiàng)目一樣,是開源軟件,這是它的一大優(yōu)點(diǎn)。使開發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。除此之外,Struts的優(yōu)點(diǎn)主要集中體現(xiàn)在兩個方面:Taglib和頁面導(dǎo)航。Taglib是Struts的標(biāo)記庫,靈活動用,能大大提高開發(fā)效率。另外,就目前國內(nèi)的JSP開發(fā)者而言,除了使用JSP自帶的常用標(biāo)記外,很少開發(fā)自己的標(biāo)記,或許Struts是一個很好的起點(diǎn)。關(guān)于頁面導(dǎo)航,我認(rèn)為那將是今后的一個發(fā)展方向,事實(shí)上,這樣做,使系統(tǒng)的脈絡(luò)更加清晰。通過一個配置文件,即可把握整個系統(tǒng)各部分之間的聯(lián)系,這對于后期的維護(hù)有著莫大的好處。尤其是當(dāng)另一批開發(fā)者接手這個項(xiàng)目時,這種優(yōu)勢體現(xiàn)得更加明顯。缺點(diǎn):Taglib是Struts的一大優(yōu)勢,但對于初學(xué)者而言,卻需要一個持續(xù)學(xué)習(xí)的過程,甚至還會打亂你網(wǎng)頁編寫的習(xí)慣,但是,當(dāng)你習(xí)慣了它時,你會覺得它真的很棒。Struts將MVC的Controller一分為三,在獲得結(jié)構(gòu)更加清晰的同時,也增加了系統(tǒng)的復(fù)雜度。Struts從產(chǎn)生到現(xiàn)在還不到半年,但已逐步越來越多運(yùn)用于商業(yè)軟件。雖然它現(xiàn)在還有不少缺點(diǎn),但它是一種非常優(yōu)秀的J2EEMVC實(shí)現(xiàn)方式。2.2下圖是Struts的工作流程,所有的請求都提交給ActionServlet來處理。圖1-3-ActionServlet是一個FrontController,它是一個標(biāo)準(zhǔn)的Servlet,它將request轉(zhuǎn)發(fā)給RequestProcessor來處理,ActionMapping是ActionConfig的子類,實(shí)質(zhì)上是對struts-config.xml的一個映射,從中可以取得所有的配置信息RequestProcessor根據(jù)提交過來的url,如*.do,從ActionMapping中得到相應(yīng)的ActionForn和Action。然后將request的參數(shù)對應(yīng)到ActionForm中,進(jìn)行form驗(yàn)證。如果驗(yàn)證通過則調(diào)用Action的execute()方法來執(zhí)行Action,最終返回ActionFoward。ActionFoward是對mapping中一個foward的包裝,對應(yīng)于一個urlActionForm使用了ViewHelper模式,是對HTML中form的一個封裝。其中包含有validate方法,用于驗(yàn)證form數(shù)據(jù)的有效性。ActionForm是一個符合JavaBean規(guī)范的類,所有的屬性都應(yīng)滿足get和set對應(yīng)。對于一些復(fù)雜的系統(tǒng),還可以采用DynaActionForm來構(gòu)造動態(tài)的Form,即通過預(yù)制參數(shù)來生成Form。這樣可以更靈活的擴(kuò)展程序。ActionErrors是對錯誤信息的包裝,一旦在執(zhí)行action或者form.validate中出現(xiàn)異常,即可產(chǎn)生一個ActionError并最終加入到ActionErrors。在Form驗(yàn)證的過程中,如果有Error發(fā)生,則會將頁面重新導(dǎo)向至輸入頁,并提示錯誤。Action是用于執(zhí)行業(yè)務(wù)邏輯的RequsestHandler。每個Action都只建立一個instance。Action不是線程安全的,所以不應(yīng)該在Action中訪問特定資源。一般來說,應(yīng)改使用BusinessDelegate模式來對Businesstier進(jìn)行訪問以解除耦合。Struts提供了多種Action供選擇使用。普通的Action只能通過調(diào)用execute執(zhí)行一項(xiàng)任務(wù),而DispatchAction可以根據(jù)配置參數(shù)執(zhí)行,而不是僅進(jìn)入execute()函數(shù),這樣可以執(zhí)行多種任務(wù)。如insert,update等。LookupDispatchAction可以根據(jù)提交表單按鈕的名稱來執(zhí)行函數(shù)。2.3HibernateHibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。Hibernate的核心接口一共有5個,分別為:Session、SessionFactory、Transaction、Query和Configuration。這5個核心接口在任何開發(fā)中都會用到。通過這些接口,不僅可以對持久化對象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制。三、系統(tǒng)分析與設(shè)計(jì)3.1引言在設(shè)計(jì)軟件系統(tǒng)之前,首先必須確定用戶究竟要求軟件系統(tǒng)完成什么任務(wù),所以分析階段的基本任務(wù)是了解用戶的需求,并將用戶的需求用書面形式表達(dá)出來。這個階段還不是確定系統(tǒng)怎樣完成它的工作,而僅僅是確定系統(tǒng)必須完成哪些工作,也就是對目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。系統(tǒng)分析的結(jié)果是系統(tǒng)開發(fā)的基礎(chǔ),關(guān)系到工程的成敗和軟件產(chǎn)品的質(zhì)量。在全面客觀的系統(tǒng)分析的基礎(chǔ)上,根據(jù)用戶提出的系統(tǒng)功能進(jìn)行相應(yīng)的功能設(shè)計(jì)。3.2系統(tǒng)分析3.2.1系統(tǒng)可行性研究1.技術(shù)可行性
根據(jù)客戶提出的系統(tǒng)功能、性能與實(shí)現(xiàn)系統(tǒng)的各項(xiàng)約束條件,根據(jù)新系統(tǒng)目標(biāo)來衡量所需的技術(shù)是否具備,本系統(tǒng)是一個數(shù)據(jù)庫管理和查詢的系統(tǒng),現(xiàn)有的技術(shù)以較為成熟,硬件、軟件的性能要求、環(huán)境條件等各項(xiàng)條件良好,估計(jì)利用現(xiàn)有技術(shù)條件應(yīng)完全可以達(dá)到該系統(tǒng)的功能目標(biāo)。同時考慮給予的開發(fā)期限也較為充裕,預(yù)計(jì)系統(tǒng)是可以在規(guī)定期限內(nèi)完成開發(fā)。本系統(tǒng)基于JavaEE架構(gòu),采用了較為成熟的開發(fā)模式。前端用Struts1.2,業(yè)務(wù)邏輯采用EJB3.0的無狀態(tài)會話Bean,持久映像層采用hibernate1.3模式,應(yīng)用服務(wù)器使用了使用最廣泛的BEAWeblogicServer。
2.經(jīng)濟(jì)可行性
估算新系統(tǒng)的成本效益分析,其中包括估計(jì)項(xiàng)目開發(fā)的成本,開發(fā)費(fèi)用和今后的運(yùn)行、維護(hù)費(fèi)用,估計(jì)新系統(tǒng)將獲得的效益,估算開發(fā)成本是否回高于項(xiàng)目預(yù)期的全部經(jīng)費(fèi)。并且,分析系統(tǒng)開發(fā)是否會對其它產(chǎn)品或利潤帶來一定影響。
(1)支出:
·基礎(chǔ)投資:
硬件設(shè)備:PC機(jī)
軟件設(shè)備:WINDOWS2000、BEAWeblogicServer10
·其它一次性支出:軟件設(shè)計(jì)和開發(fā)費(fèi)用
·經(jīng)常性支出:軟件維護(hù)費(fèi)用、軟件使用費(fèi)用。
(2)效益:
系統(tǒng)的效益可以從經(jīng)濟(jì)效益和社會效益兩方面考慮。對于倉庫管理系統(tǒng)則應(yīng)著重分析其社會效益。例如,系統(tǒng)投入運(yùn)行后可以使倉庫管理實(shí)現(xiàn)科學(xué)化、規(guī)范化。曾強(qiáng)了工作人員對倉庫管理能力、提高了工作效率。
3.運(yùn)行可行性
新系統(tǒng)的研制和開發(fā)是充分得考慮工作人員對倉庫的易于管理,管理者方便查詢設(shè)備信息效率。從而能完全滿足使用者的要求。
4.法律可行性
新系統(tǒng)的研制和開發(fā),將不會侵犯他人、集體和國家的利益,不會違反國家政策和法律。3.2.2系統(tǒng)使用環(huán)境本系統(tǒng)的使用的最低配置要求:硬件環(huán)境:服務(wù)器:CPU:2.4G或以上;內(nèi)存:1GRAM或以上;硬盤:80G或以上;客戶端:CPU:1G;內(nèi)存:64MB以上內(nèi)存或更高;硬盤:20G或以上軟件開發(fā)環(huán)境:操作系統(tǒng):WindowsXPorWindows2000server;所用工具:MyEclipse6.0,BEAWeblogicServer10;數(shù)據(jù)庫:MYSQL;軟件運(yùn)行環(huán)境:操作系統(tǒng):WindowsXPorWindows2000server;應(yīng)用服務(wù)器:BEAWeblogicServer10;數(shù)據(jù)庫:MYSQL。3.2.3系統(tǒng)需求分析1.系統(tǒng)功能概述庫存管理貨物管理員工管理倉庫管理系統(tǒng)編碼設(shè)置出庫操作移庫操作盤點(diǎn)信息錄入入庫操作期初設(shè)置計(jì)量單位設(shè)置部門設(shè)置操作類型設(shè)置倉庫設(shè)置貨物信息查詢貨物信息查詢貨物信息錄入刪除用戶查詢用戶添加用戶基礎(chǔ)數(shù)據(jù)庫存管理貨物管理員工管理倉庫管理系統(tǒng)編碼設(shè)置出庫操作移庫操作盤點(diǎn)信息錄入入庫操作期初設(shè)置計(jì)量單位設(shè)置部門設(shè)置操作類型設(shè)置倉庫設(shè)置貨物信息查詢貨物信息查詢貨物信息錄入刪除用戶查詢用戶添加用戶基礎(chǔ)數(shù)據(jù)2.貨物入庫和出庫的管理倉庫是用來存放貨物的,貨物進(jìn)入倉庫要進(jìn)行登記記錄,貨物從倉庫出庫也要進(jìn)行登記記錄,這是倉庫管理的主要內(nèi)容。貨物進(jìn)入倉庫,從入庫申請的人員向執(zhí)行貨物入庫的倉庫保管員提交貨物開始。入庫申請人向倉庫管理員提交貨物和入庫申請單,入庫申請單記錄本次入庫的貨物名稱、數(shù)量、提交貨物的單位、執(zhí)行提交貨物的人員以與貨物注意事項(xiàng)等信息。庫管依據(jù)送貨人員提供的入庫申請單對待入庫貨物進(jìn)行檢查。若待入庫貨物與入庫申請單信息一致,則允許入庫;若不一致,則禁止入庫,請?zhí)峤回浳锏膯挝恢匦鲁鼍呷霂焐暾垎巍υ试S入庫的貨物,執(zhí)行庫管要對貨物的信息進(jìn)行登記,這些信息包括入庫貨物名稱、入庫數(shù)量、入庫時間、送貨入庫人員的信息、執(zhí)行貨物入庫的執(zhí)行人。進(jìn)行登記后,將貨物存入倉庫。貨物存入倉庫后,執(zhí)行入庫操作的庫管給提出入庫申請的入庫人員開具入庫單,入庫流程結(jié)束。貨物從倉庫中出庫,是從需求貨物的出庫單位出庫人員向執(zhí)行出庫操作的庫管提交出庫申請開始的。首先,出庫人員向庫管提交出庫申請單。出庫申請記錄申請出庫的貨物名稱、申請出庫的數(shù)量、申請出庫的單位、執(zhí)行出庫申請的人員等信息。執(zhí)行出庫的庫管首先對出庫單的真?zhèn)芜M(jìn)行檢驗(yàn)。對有效的出庫單,依據(jù)其要求出庫的貨物名稱查找倉庫庫存貨物的信息和此貨物的庫存數(shù)量。如果有此貨物,并且其庫存數(shù)量滿足出庫申請單的數(shù)量,則執(zhí)行出庫操作的庫管保存出庫申請單并進(jìn)行出庫登記。在出庫登記中,執(zhí)行庫管要記錄出庫貨物的名稱、出庫數(shù)量、出庫后剩余數(shù)量、出庫時間、貨物去向、出庫的倉庫、執(zhí)行出庫的庫管名稱等信息。進(jìn)行出庫登記后,將貨物出庫。出庫結(jié)束后,執(zhí)行庫管給提出出庫申請的出庫人員開具出庫單,出庫流程結(jié)束。3.出庫入庫記錄的查詢與報表倉庫的管理人員要對倉庫存儲的貨物信息、入庫記錄和出庫記錄等與時掌握,這樣才能與時了解倉庫的運(yùn)行現(xiàn)狀,才有可能會使倉庫處在良好的運(yùn)行狀態(tài)。所以,一般倉庫管理過程中要能提供倉庫的入庫、出庫記錄的查詢功能,并且能夠?qū)⒊鰩?、入庫記錄生成報表,供管理人員使用,所以,對入庫、出庫記錄的查詢并將這些信息生成報表是倉庫管理系統(tǒng)的重要功能之一。4.貨物信息的管理倉庫要存放貨物,關(guān)于這些貨物本身的信息,對貨物的正常存儲是非常重要的,例如,哪些貨物需要防潮,哪些貨物需要輕搬輕放等,所以,對貨物本身的信息的登記、管理是倉庫管理的重要內(nèi)容。5.其他信息的管理除了以上提到的一些功能外,倉庫管理系統(tǒng)還應(yīng)該能對一些其他的信息進(jìn)行管理。例如,對每個倉庫來說,都有一些存儲位置用來存放貨物,倉庫管理過程中包括對這些存儲位置進(jìn)行的管理;每個倉庫都有一些倉庫管理員,對這些倉庫管理員的管理也是倉庫管理系統(tǒng)的功能之一。3.3系統(tǒng)功能設(shè)計(jì)根據(jù)倉庫管理系統(tǒng)的一般需求,設(shè)計(jì)了如下一些功能模塊:1.倉庫管理人員的管理模塊此功能模塊方便對人員的管理以與數(shù)據(jù)安全性,如(新增員工)。2.貨物信息管理模塊此模塊提供了貨物基礎(chǔ)數(shù)據(jù)的錄入、貨物信息查詢等功能,方便與時了解庫存信息。3.入庫功能模塊入庫功能是倉庫管理系統(tǒng)的基本功能之一。入庫功能主要是實(shí)現(xiàn)登記入庫記錄的功能。這些信息應(yīng)包括入庫單據(jù)信息、入庫數(shù)量和入庫時間信息、執(zhí)行入庫操作的操作員信息和貨物存放倉庫的信息等。入庫登記功能產(chǎn)生貨物的入庫記錄,為以后進(jìn)行入庫貨物的查詢和生成報表以與出庫操作產(chǎn)生操作數(shù)據(jù),供管理人員掌握倉庫內(nèi)存儲的貨物情況。4.出庫功能模塊出庫功能是倉庫管理系統(tǒng)的基本功能之二。出庫功能主要是實(shí)現(xiàn)登記出庫貨物信息的功能。這些出庫記錄包括出庫申請單據(jù)信息、出庫數(shù)量和出庫時間信息、執(zhí)行出庫操作的庫管信息和貨物剩余信息等。出庫功能依據(jù)入庫登記功能產(chǎn)生的入庫記錄產(chǎn)生貨物的出庫記錄,將出庫記錄存入系統(tǒng),為以后的出庫記錄查詢以與掌握倉庫貨物存儲情況作基礎(chǔ)。5.盤點(diǎn)功能模塊此模塊通過定期對倉庫信息做清點(diǎn),有效的了解了貨物的流通情況和倉庫貨物的損耗情況。方便對貨物信息的管理。6.移庫功能模塊此模塊是針對貨物在內(nèi)部進(jìn)行調(diào)動的詳細(xì)記載,從而對庫存信息達(dá)到更方便的管理。四、數(shù)據(jù)庫設(shè)計(jì)4.1引言數(shù)據(jù)庫是一種存儲數(shù)據(jù)并對數(shù)據(jù)進(jìn)行操作的工具。數(shù)據(jù)庫的作用在于組織和表達(dá)信息,即數(shù)據(jù)庫就是相關(guān)信息的集合。本章從E-R模型的分析設(shè)計(jì)為切入點(diǎn),重點(diǎn)介紹了數(shù)據(jù)庫的設(shè)計(jì)。根據(jù)倉庫管理系統(tǒng)的功能,將其E-R圖轉(zhuǎn)化為個數(shù)據(jù)庫表,為系統(tǒng)的實(shí)現(xiàn)奠定了基礎(chǔ)。4.2E-R圖實(shí)體聯(lián)系圖1:實(shí)體聯(lián)系圖2:實(shí)體聯(lián)系圖3:實(shí)體聯(lián)系圖4:4.3數(shù)據(jù)表1.倉庫表(WH)列名數(shù)據(jù)類型長度允許空默認(rèn)值說明whIDchar4倉庫編號Namevarchar20倉庫名whPersonvarchar10負(fù)責(zé)人whAddrvarchar100倉庫地址2.貨物信息表(GDMESS)列名數(shù)據(jù)類型長度允許空默認(rèn)值說明goodsIDchar8貨物編號goodsNamevarchar30貨物名稱shortNamevarchar20NULL貨物簡稱goodsClassvarchar10貨物種類goodsStdvarchar20貨物規(guī)格型號Pricedouble8貨物單價Weightdouble8NULL單位重量Volumedouble8NULL單位體積unitIDchar8計(jì)量單位Vendorvarchar20默任供應(yīng)商lowQuantityint8最低庫存量highQuantityint8最高庫存量safeQuantityint8安全庫存whIDchar8倉庫編號highPricedouble8最高進(jìn)價lowPricedouble8最低售價Buildervarchar10建檔人modiPersonvarchar10NULL更改人modiTimedatetime8NULL更改時間nowQuantityint8當(dāng)前數(shù)量checkCycleint8盤點(diǎn)周期lastCleckTimedatetime8NULL上次盤點(diǎn)時間3.貨物存儲表GDST列名數(shù)據(jù)類型長度允許空默認(rèn)值說明goodsIDchar8貨物編號whIDcahr8倉庫編號Quantityint8數(shù)量4.操作類型表OPST列名數(shù)據(jù)類型長度允許空默認(rèn)值說明opeTypeIDchar8操作類型編碼opeTypeNavarchar20操作類型名稱5.庫存記錄主表MSTOCK列名數(shù)據(jù)類型長度允許空默認(rèn)值說明Codechar8單據(jù)號opeTypeIDchar8操作類型vouchTypechar8單據(jù)類型whIDchar8倉庫編號Departchar20所屬部門Clerkvarchar20NULL業(yè)務(wù)員Operatorvarchar20操作員opTimedatetime8時間Vendorvarchar20NULL供應(yīng)商Customervarchar20NULL客戶Summdouble10合計(jì)金額orderCodechar8NULL定貨單號receiveCodechar8NULL收貨單號invoiceCodechar8發(fā)票號dispatchCodechar8NULL發(fā)貨單號Memovarchar100NULL備注6.庫存記錄明細(xì)表STOCK列名數(shù)據(jù)類型長度允許空默認(rèn)值說明Codechar8單據(jù)號goodsIDchar8貨物編號Unitchar8計(jì)量單位Pricedouble8貨物單價Quantityint8貨物數(shù)量7.盤點(diǎn)表MCHECK列名數(shù)據(jù)類型長度允許空默認(rèn)值說明CVCodechar8盤點(diǎn)單號CheckDatedatetime8盤點(diǎn)日期checkPersonvarchar20盤點(diǎn)人whIDchar8倉庫編號Opprovervarchar20批準(zhǔn)人Makervarchar20制單人8.盤點(diǎn)明細(xì)表CHECKVOUCHS列名數(shù)據(jù)類型長度允許空默認(rèn)值說明CVCodechar8盤點(diǎn)單號goodsIDchar8貨物編號bookQuantityint8帳面數(shù)量actQuantityint8實(shí)際數(shù)量checkDatedatetime8盤點(diǎn)日期adjQuantityint8調(diào)整數(shù)量actualWastedouble8實(shí)際損耗率allowWastedouble8合理損耗率Reasonvarchar100NULL損耗原因9.計(jì)量單位表UNIT列名數(shù)量類型長度允許空默認(rèn)值說明unitIDchar8計(jì)量單位編號unitNamevarchar8計(jì)量單位名稱10.部門表DEPT列名數(shù)量類型長度允許空默認(rèn)值說明deptCodechar8部門編號deptNamevarchar20部門名稱Depacint8NULL總?cè)藬?shù)11.員工表EMP列名數(shù)量類型長度允許空默認(rèn)值說明empCodechar8員工號empNamevarchar20員工姓名empSexchar2NULL性別Passwordvarchar20‘123密碼empTelvarchar15聯(lián)系方式Memovarchar100NULL備注12.移庫表MOVESTOCK列名數(shù)量類型長度允許空默認(rèn)值說明autoidint8記錄號goodesidvarchar20貨物編號sourcechar20源倉庫targetchar20目的倉庫unitchar20計(jì)量單位quantityint8數(shù)量opDatedatetime8NULL移庫時間operatorvarchar20NULL操作員五、系統(tǒng)界面與功能實(shí)現(xiàn)此系統(tǒng)是基于JAVAEE的庫存管理系統(tǒng)。它主要包括三大模塊,基礎(chǔ)數(shù)據(jù)、庫存操作還有幫助?;A(chǔ)數(shù)據(jù)用于設(shè)計(jì)一些基礎(chǔ)項(xiàng)目,庫存操作是對應(yīng)的入庫出庫一類對庫存所作的操作,幫助是對整個系統(tǒng)的簡單介紹。此系統(tǒng)是以MyEclipse6.0為平臺,在Struts1.2框架上用JSP頁面來實(shí)現(xiàn)的一個庫存管理。5.1頁面流程圖圖(一)圖(二)圖(三)5.2創(chuàng)建系統(tǒng)登陸模塊5.2用戶通過此登陸模塊,可登陸到系統(tǒng)的內(nèi)部,從而進(jìn)行所需的操作。同時,它能用來校驗(yàn)用戶是否屬于該部門,是即應(yīng)有對應(yīng)的工號跟密碼,不是便不能登陸進(jìn)入。設(shè)計(jì)登陸窗口userLogin.jsp:實(shí)現(xiàn)用戶登陸在struts-config.xml中新建此頁面后,建form跟action,同時建立轉(zhuǎn)向,便會在它的source里建對應(yīng)的form跟forward以與action:<form-beanname="userLoginForm"type="edu.cec.web.struts.form.UserLoginForm"/><forwardname="userLogin"path="/userLogin.jsp"/><actionattribute="userLoginForm"input="/userLogin.jsp"name="userLoginForm"path="/userLogin"scope="request"type="edu.cec.web.struts.action.UserLoginAction"><forwardname="failed"path="/userLogin.jsp"/><forwardname="success"path="/index.jsp"/></action>5.3創(chuàng)建主窗口模塊5.3.1主窗口模塊,是一個容器式的窗體,它包容了系統(tǒng)的所有分模塊,系統(tǒng)運(yùn)行時,在里面操作。5.4倉庫人員管理模塊5.4.此模塊是用于管理此部門人員的,由增加用戶跟查詢用戶構(gòu)成。增加的是此部門新進(jìn)人員的資料,查詢是用來顯示他們的最基本信息的。5.5入庫模塊的實(shí)現(xiàn)5.5.當(dāng)某種已有物品進(jìn)貨后,就需要在此輸入庫存記錄信息,并同時輸入相應(yīng)貨物入庫信息,并加入到庫存中。5.6出庫模塊的實(shí)現(xiàn)5.6.1當(dāng)庫存中某種需要出庫的時候,就需要在此輸入庫存記錄信息,并同時輸入相應(yīng)貨物出庫信息,并保存到相應(yīng)數(shù)據(jù)表中。5.7移庫模塊的實(shí)現(xiàn)5.7.1當(dāng)某個倉庫內(nèi)在不足,或者兩個庫存均有某一商品,并且其中一個倉庫有足夠空間存儲所有的時候,便要進(jìn)行移庫操作。并將操作的過程放置到對應(yīng)的數(shù)據(jù)表中。5.8盤點(diǎn)模塊的實(shí)現(xiàn)5.8.1當(dāng)每個月的盤點(diǎn)時間到后,需要對數(shù)據(jù)庫中的貨物數(shù)量跟實(shí)際的相比對,如果數(shù)量不對就要查清原因,并進(jìn)行相應(yīng)處理。以使貨物信息明了。5.9倉庫設(shè)置模塊的實(shí)現(xiàn)5.9.當(dāng)新增加倉庫時,在這里輸入即可將新增的倉庫信息保存到數(shù)據(jù)庫。5.10計(jì)量單位設(shè)置模塊的實(shí)現(xiàn)5.10.1當(dāng)新增加計(jì)量單位時,在這里輸入即可將新增的計(jì)量單位信息保存到數(shù)據(jù)庫。5.11部門信息設(shè)置模塊的實(shí)現(xiàn)5.11.1當(dāng)新增加部門時,在這里輸入即可將新增的部門信息保存到數(shù)據(jù)庫。5.12操作類型設(shè)置模塊的實(shí)現(xiàn)5.12.1當(dāng)新增加操作類型時,在這里輸入即可將新增的部門信息保存到數(shù)據(jù)庫。5.13期初設(shè)置模塊的實(shí)現(xiàn)5.13.1用于設(shè)置貨物存儲的一些信息的。與入出庫等操作均有關(guān)。5.14貨物存儲信息查詢模塊的實(shí)現(xiàn)5.14.1用于查詢貨物存儲表里的信息,即在入出庫后對應(yīng)的操作的部分展示。如果某貨物在此表中不存在,也就不存在其它對此貨物的庫存操作。5.15幫助模塊的實(shí)現(xiàn)5.15.是對系統(tǒng)內(nèi)各個模塊的功能與操作流程的描述。讓剛進(jìn)入的用戶能很快掌握此系統(tǒng)。六、Hibernate的設(shè)計(jì) 6.1Hibernate簡介 Hibernate是非常優(yōu)秀、成熟的ORMapping框架,它提供了強(qiáng)大的對象和關(guān)系數(shù)據(jù)庫映射以與查詢功能。它的主要功能就是操作數(shù)據(jù)庫(以對象的形式操作數(shù)據(jù)庫)。操作數(shù)據(jù)庫使用SQL語句。通過一個類的操作來代表數(shù)據(jù)庫中的操作,就是用類的方法來代替SQL語句。只注重類的設(shè)計(jì),把SQL語句隱藏起來。映射關(guān)系: 數(shù)據(jù)庫定義HBM映射POJO類數(shù)據(jù)庫定義HBM映射POJO類 POJO類:POJO在Hibernate語義中理解為數(shù)據(jù)庫表所對應(yīng)的DomainObject。這里的POJO就是所謂的“PlainOrdinaryJavaObject”,字面上來講就是無格式普通Java對象,簡單的可以理解為一個不包含邏輯代碼的值對象(ValueObject簡稱VO)。POJO類中只包含setter和getter方法類。 HBM映射:描述類和表之間的關(guān)系。6.2Hibernate生成 6. 6.3Hibernate的映射文件和類的生成6. 以cangkums數(shù)據(jù)庫中的表為checkvouchs列子 在連接好的窗口中找到cangkums中的表checkvouchs。把表checkvouchs拖到Hibernate.cfg.xml頁面的Mappings窗口中, NEXT——》NEXT——》 主鍵選擇assigned,assignde的意思是由用戶自行管理。注意:就是類名一般和表名一致,但是類名第一個字母要大寫,好區(qū)分類名和表名。Hibernate.cfg.xml對Hibernate環(huán)境配置的,包括使用數(shù)據(jù)庫式數(shù)據(jù)源。<hibernate-configuration> <session-factory> <propertyname="connection.username">root</property> <propertyname="connection.url"> jdbc:mysql://localhost:3306/cangkums?useUnicode=true&characterEncoding=GBK </property> <propertyname="dialect"> org.hibernate.dialect.MySQLDialect </property> <propertyname="file"> local_mysql </property> <propertyname="connection.driver_class"> com.mysql.jdbc.Driver </property> <propertyname="connection.password"></property> <mappingresource="Dept.hbm.xml"/> <mappingresource="EMP.hbm.xml"/> <mappingresource="Gdmess.hbm.xml"/> <mappingresource="Gdst.hbm.xml"/> <mappingresource="Mcheck.hbm.xml"/> <mappingresource="Mstock.hbm.xml"/> <mappingresource="Opst.hbm.xml"/> <mappingresource="Stock.hbm.xml"/> <mappingresource="WH.hbm.xml"/> <mappingresource="Checkvouchs.hbm.xml"/> <mappingresource="Unit.hbm.xml"/> <mappingresource="Movestock.hbm.xml"/> </session-factory></hibernate-configuration>最后生成checkvouchs.hbm.xml、checkvouchs.java、checkvouchsDAO.java、checkvouchsID.java、AbstractCheckvouchs.java、AbstractCheckvouchsId.java文件。checkvouchs.hbm.xml是描述類和表之間關(guān)系的文件<hibernate-mapping><classname="edu.cec.hibernate.Checkvouchs"table="checkvouchs"catalog="cangkums"><composite-idname="id"class="edu.cec.hibernate.CheckvouchsId"><key-propertyname="cvCode"type="java.lang.String"><columnname="cvCode"length="8"/></key-property><key-propertyname="goodsId"type="java.lang.String"><columnname="goodsID"length="8"/></key-property></composite-id><propertyname="bookQuantity"type="java.lang.Integer"><columnname="bookQuantity"not-null="true"/></property><propertyname="actQuantity"type="java.lang.Integer"><columnname="actQuantity"not-null="true"/></property><propertyname="checkDate"type="java.util.Date"><columnname="checkDate"length="19"not-null="true"/></property><propertyname="adjQuantity"type="java.lang.Integer"><columnname="adjQuantity"/></property><propertyname="actuallWaste"type="java.lang.Double"><columnname="actuallWaste"precision="22"scale="0"/></property><propertyname="allowWaste"type="java.lang.Double"><columnname="allowWaste"precision="22"scale="0"/></property><propertyname="reason"type="java.lang.String"><columnname="reason"length="100"/></property></class></hibernate-mapping>6.3AbstractCheckvouchs.java生成的POJO類。publicabstractclassAbstractCheckvouchsimplementsjava.io.Serializable{ //Fields privateCheckvouchsIdid; privateIntegerbookQuantity; privateIntegeractQuantity; privateDatecheckDate; privateIntegeradjQuantity; privateDoubleactuallWaste; privateDoubleallowWaste; privateStringreason; //Constructors /**defaultconstructor*/ publicAbstractCheckvouchs(){ } /**minimalconstructor*/ publicAbstractCheckvouchs(CheckvouchsIdid,IntegerbookQuantity, IntegeractQuantity,DatecheckDate){ this.id=id; this.bookQuantity=bookQuantity; this.actQuantity=actQuantity; this.checkDate=checkDate; } /**fullconstructor*/ publicAbstractCheckvouchs(CheckvouchsIdid,IntegerbookQuantity, IntegeractQuantity,DatecheckDate,IntegeradjQuantity, DoubleactuallWaste,DoubleallowWaste,Stringreason){ this.id=id; this.bookQuantity=bookQuantity; this.actQuantity=actQuantity; this.checkDate=checkDate; this.adjQuantity=adjQuantity; this.actuallWaste=actuallWaste; this.allowWaste=allowWaste; this.reason=reason; } //Propertyaccessors publicCheckvouchsIdgetId(){ returnthis.id; } publicvoidsetId(CheckvouchsIdid){ this.id=id; } publicIntegergetBookQuantity(){ returnthis.bookQuantity; } publicvoidsetBookQuantity(IntegerbookQuantity){ this.bookQuantity=bookQuantity; } publicIntegergetActQuantity(){ returnthis.actQuantity; } publicvoidsetActQuantity(IntegeractQuantity){ this.actQuantity=actQuantity; } publicDategetCheckDate(){ returnthis.checkDate; } publicvoidsetCheckDate(DatecheckDate){ this.checkDate=checkDate; } publicIntegergetAdjQuantity(){ returnthis.adjQuantity; } publicvoidsetAdjQuantity(IntegeradjQuantity){ this.adjQuantity=adjQuantity; } publicDoublegetActuallWaste(){ returnthis.actuallWaste; } publicvoidsetActuallWaste(DoubleactuallWaste){ this.actuallWaste=actuallWaste; } publicDoublegetAllowWaste(){ returnthis.allowWaste; } publicvoidsetAllowWaste(DoubleallowWaste){ this.allowWaste=allowWaste; } publicStringgetReason(){ returnthis.reason; } publicvoidsetReason(Stringreason){ this.reason=reason; }}AbstractCheckvouchsId.javapublicabstractclassAbstractCheckvouchsIdimplementsjava.io.Serializable{ //Fields privateStringcvCode; privateStringgoodsId; //Constructors /**defaultconstructor*/ publicAbstractCheckvouchsId(){ } /**fullconstructor*/ publicAbstractCheckvouchsId(StringcvCode,StringgoodsId){ this.cvCode=cvCode; this.goodsId=goodsId; } //Propertyaccessors publicStringgetCvCode(){ returnthis.cvCode; } publicvoidsetCvCode(StringcvCode){ this.cvCode=cvCode; } publicStringgetGoodsId(){ returnthis.goodsId; } publicvoidsetGoodsId(StringgoodsId){ this.goodsId=goodsId; } publicbooleanequals(Objectother){ if((this==other)) returntrue; if((other==null)) returnfalse; if(!(otherinstanceofAbstractCheckvouchsId)) returnfalse; AbstractCheckvouchsIdcastOther=(AbstractCheckvouchsId)other; return((this.getCvCode()==castOther.getCvCode())||(this .getCvCode()!=null &&castOther.getCvCode()!=null&&this.getCvCode().equals( castOther.getCvCode()))) &&(this.getGoodsId()==castOther.getGoodsId())||(this.getGoodsId()!=null&castOther.getGoodsId()!=null&&this.getGoodsId() .equals(castOther.getGoodsId()))); } publicinthashCode(){ intresult=17; result=37*result +(getCvCode()==null?0:this.getCvCode().hashCode()); result=37*result +(getGoodsId()==null?0:this.getGoodsId().hashCode()); returnresult; }}checkvouchs.javapackageedu.cec.hibernate;importjava.util.Date;/***Checkvouchsentity.**@authorMyEclipsePersistenceTools*/publicclassCheckvouchsextendsAbstractCheckvouchsimplements java.io.Serializable{ //Constructors /**defaultconstructor*/ publicCheckvouchs(){ } /**minimalconstructor*/ publicCheckvouchs(CheckvouchsIdid,IntegerbookQuantity,IntegeractQuantity,DatecheckDate){ super(id,bookQuantity,actQuantity,checkDate); } /**fullconstructor*/ publicCheckvouchs(CheckvouchsIdid,IntegerbookQuantity,IntegeractQuantity,DatecheckDate,IntegeradjQuantity,DoubleactuallWaste,DoubleallowWaste,Stringreason){ super(id,bookQuantity,actQuantity,checkDate,adjQuantity,actuallWaste,allowWaste,reason); }}checkvouchsDAO.java生成了一些方法如:publicclassCheckvouchsDAOextendsBaseHibernateDAO{privatestaticfinalLoglog=LogFactory.getLog(CheckvouchsDAO.class); publicvoidsave(CheckvouchstransientInstance){ log.debug("savingCheckvouchsinstance"); try{ getSession().save(transientInstance); log.debug("savesuccessful"); }catch(RuntimeExceptionre){ log.error("savefailed",re); throwre; } } publicvoiddelete(CheckvouchspersistentInstance){ log.debug("deletingCheckvouchsinstance"); try{ getSession().delete(persistentInstance); log.debug("deletesuccessful"); }catch(RuntimeExceptionre){ log.error("deletefailed",re); throwre; } } publi
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地面輻射供暖系統(tǒng)地面磚面層施工技術(shù)探討
- 初一理化生神經(jīng)系統(tǒng)組成
- 語法練習(xí)和答案-定語從句練習(xí)
- 高中語文專題3文明的對話第12課傳統(tǒng)文化與文化傳統(tǒng)課件蘇教版必修
- 2024-2025學(xué)年八年級上學(xué)期英語期中復(fù)習(xí)之Unit1~unit4語法復(fù)習(xí)及練習(xí)(譯林版)
- 專業(yè)技術(shù)人員繼續(xù)教育答案職業(yè)生涯規(guī)劃與管理滿分
- 六年級心理健康教育教案參考修改版
- 匯率制與匯率政策
- Unit 5 A healthy lifestyle Reading2課時練(無答案)
- 部編版二上語文識字4田家四季歌圖文
- 《山東省職業(yè)院校技能大賽中職組“護(hù)理技能”賽項(xiàng)規(guī)程》
- 高中語法-獨(dú)立主格結(jié)構(gòu) 課件
- 《食品添加劑應(yīng)用技術(shù)》第二版 課件 任務(wù)5.4 增味劑的使用
- 《法國飲食文化》課件
- RBA管理體系程序文件(系列)
- (學(xué)校)教育領(lǐng)域群眾身邊不正之風(fēng)和腐敗問題集中整治問題自查報告及整改措施
- 江蘇省常州市金壇區(qū)2023-2024學(xué)年高二上學(xué)期期中質(zhì)量調(diào)研語文試卷(含答案)
- 醫(yī)院醫(yī)療廢物處置及分類測試題及答案
- 模擬電子技術(shù)智慧樹知到期末考試答案章節(jié)答案2024年溫州醫(yī)科大學(xué)
- 24春國家開放大學(xué)《現(xiàn)代教育原理》期末大作業(yè)參考答案
- 個人與村集體合作協(xié)議書
評論
0/150
提交評論