

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 本科生畢業(yè)論文</b></p><p><b> 目 錄</b></p><p><b> 摘 要1</b></p><p> ABSTRACT2</p><p><b> 第一章 緒論3</b></p&g
2、t;<p> 1.1倉(cāng)庫(kù)管理信息系統(tǒng)開(kāi)發(fā)的背景3</p><p> 1.2倉(cāng)庫(kù)管理信息系統(tǒng)開(kāi)發(fā)的意義3</p><p> 1.3論文的內(nèi)容和結(jié)構(gòu)4</p><p> 第二章 相關(guān)技術(shù)6</p><p> 2.1 J2EE平臺(tái)6</p><p> 2.1.1 J2EE平臺(tái)簡(jiǎn)介6<
3、;/p><p> 2.1.2 MVC組件簡(jiǎn)介7</p><p> 2.1.3 持久層組件簡(jiǎn)介9</p><p> 2.2 MVC模式11</p><p> 2.2.1 MVC概述11</p><p> 2.2.2為什么選擇MVC12</p><p> 第三章 系統(tǒng)總體分析與設(shè)計(jì)
4、13</p><p> 3.1 需求分析13</p><p> 3.1.1 系統(tǒng)概述與目標(biāo)13</p><p> 3.1.2 系統(tǒng)功能性需求14</p><p> 3.1.3 系統(tǒng)非功能性需求16</p><p> 3.2 系統(tǒng)功能分析16</p><p> 3.2.1
5、系統(tǒng)功能結(jié)構(gòu)16</p><p> 3.2.2 系統(tǒng)功能流程17</p><p> 3.3 數(shù)據(jù)庫(kù)設(shè)計(jì)18</p><p> 3.3.1 數(shù)據(jù)庫(kù)需求分析18</p><p> 3.3.2 數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)18</p><p> 3.4 系統(tǒng)技術(shù)架構(gòu)設(shè)計(jì)21</p><p>
6、 3.4.1 系統(tǒng)邏輯結(jié)構(gòu)設(shè)計(jì)21</p><p> 3.4.2 技術(shù)方案實(shí)現(xiàn)22</p><p> 第四章 系統(tǒng)功能模塊的具體實(shí)現(xiàn)24</p><p> 4.1 數(shù)據(jù)持久化層24</p><p> 4.1.1 持久化層的工作流程24</p><p> 4.1.2 透過(guò)實(shí)例來(lái)看持久化層24<
7、/p><p> 4.2 業(yè)務(wù)邏輯層28</p><p> 4.2.1 業(yè)務(wù)邏輯層的工作流程28</p><p> 4.2.2 透過(guò)實(shí)例來(lái)看業(yè)務(wù)邏輯層30</p><p> 第五章 結(jié)束語(yǔ)34</p><p><b> 5.1總結(jié)34</b></p><p>
8、<b> 5.2展望35</b></p><p><b> 參考文獻(xiàn)36</b></p><p><b> 附錄37</b></p><p><b> 摘 要</b></p><p> 倉(cāng)庫(kù)管理在企業(yè)的整個(gè)供應(yīng)鏈中起著至關(guān)重要的作用,如果不
9、能保證正確的進(jìn)貨和庫(kù)存控制及發(fā)貨,將會(huì)導(dǎo)致管理費(fèi)用的增加,服務(wù)質(zhì)量難以得到保證,從而影響企業(yè)的競(jìng)爭(zhēng)力。傳統(tǒng)簡(jiǎn)單、靜態(tài)的倉(cāng)儲(chǔ)管理已無(wú)法保證企業(yè)各種資源的高效利用。如今的倉(cāng)庫(kù)作業(yè)和庫(kù)存控制作業(yè)已十分復(fù)雜化多樣化,僅靠人工記憶和手工錄入,不但費(fèi)時(shí)費(fèi)力,而且容易出錯(cuò),給企業(yè)帶來(lái)巨大損失。有鑒于此,需要為倉(cāng)庫(kù)管理活動(dòng)實(shí)現(xiàn)系統(tǒng)管理化。J2EE(Java 2 Platform,Enterprise Edition)技術(shù)作為一種建立企業(yè)跨平臺(tái)應(yīng)用的標(biāo)準(zhǔn)
10、技術(shù)平臺(tái),得到了極其廣泛的應(yīng)用。同時(shí)它也是一個(gè)很優(yōu)秀的企業(yè)應(yīng)用解決方案,它能讓開(kāi)發(fā)人員開(kāi)發(fā)出非常穩(wěn)定、健壯的企業(yè)級(jí)應(yīng)用系統(tǒng)。在開(kāi)發(fā)的過(guò)程中,MVC模式的應(yīng)用同樣具有非常重要的意義,因?yàn)樵跇?gòu)建一個(gè)成功的企業(yè)應(yīng)用的時(shí)候,良好的模式運(yùn)用是系統(tǒng)成功的關(guān)鍵所在。MVC(Model/View/Controller)模式是軟件工程學(xué)中一個(gè)非常重要的設(shè)計(jì)模式,它為交互式系統(tǒng)提供了一個(gè)十分優(yōu)秀的開(kāi)發(fā)模型,它對(duì)類和對(duì)象依據(jù)功能的不同的分離分層使系統(tǒng)開(kāi)發(fā)變得
11、很靈活,同時(shí)又提升了系統(tǒng)設(shè)計(jì)的可重用性。該倉(cāng)庫(kù)管理信息系統(tǒng)是一個(gè)小</p><p> 關(guān)鍵詞:倉(cāng)庫(kù)管理;J2EE;MVC</p><p><b> ABSTRACT</b></p><p> Warehouse management plays a vital role in the enterprise's entire sup
12、ply chain, if you can not guarantee the right to purchase and inventory control and shipping, will lead to the increase in management fees, service quality is difficult to be guaranteed, thus affecting the competitivenes
13、s of enterprises. Traditional simple static storage management has been unable to guarantee the efficient use of resources. Today's warehouse operations and inventory control operations have been very complicat</p
14、><p> Keywords:warehouse management;J2EE;MVC</p><p><b> 第一章 緒論</b></p><p> 1.1倉(cāng)庫(kù)管理信息系統(tǒng)開(kāi)發(fā)的背景</p><p> 傳統(tǒng)的倉(cāng)庫(kù)管理(Warehouse Management)大部分工作以手工為主,增值業(yè)務(wù)少有開(kāi)展。為了進(jìn)一步提
15、升公司的管理水平,完成在全公司范圍內(nèi)的全面實(shí)施信息化管理,實(shí)現(xiàn)整個(gè)公司內(nèi)部信息共享的目標(biāo)[1]。目前面臨的困難就是:缺乏信息化的服務(wù)手段,那樣就會(huì)丟失客戶、丟失市場(chǎng)。因此,在目前所有的改造中,信息化改造首要先行。從目前的情況來(lái)看世界經(jīng)濟(jì)正處于變革的重大轉(zhuǎn)折時(shí)期,在全球范圍內(nèi)進(jìn)行著一場(chǎng)經(jīng)濟(jì)結(jié)構(gòu)調(diào)整的潮流[2]。在這其中,出現(xiàn)了與IT技術(shù)相結(jié)合的,實(shí)行現(xiàn)代管理的企業(yè)。倉(cāng)庫(kù)管理作為一種先進(jìn)的組織方式,被世界各國(guó)所廣泛采用,并且形成了一種新興的
16、產(chǎn)業(yè),在國(guó)民經(jīng)濟(jì)發(fā)展的步伐中扮演著重要的角色。每筆成功的交易都須具備了三個(gè)基本要素:即倉(cāng)庫(kù)管理、信息流及資金流。其中,倉(cāng)庫(kù)管理是基礎(chǔ),在信息化高度發(fā)展的網(wǎng)絡(luò)營(yíng)銷年代,倉(cāng)庫(kù)管理與信息技術(shù)的配合變得越來(lái)越重要了[3]。于是,在供應(yīng)鏈管理中必然要用到越來(lái)越多的倉(cāng)庫(kù)管理結(jié)合了信息管理的技術(shù)。只有商品真正轉(zhuǎn)移到消費(fèi)者手中,即:只有通過(guò)倉(cāng)庫(kù)管理的過(guò)程,商務(wù)活動(dòng)才能夠得以發(fā)展。網(wǎng)絡(luò)營(yíng)銷的核心是信息化,這個(gè)信息化不僅體現(xiàn)在選擇商品的支付上,也充分體現(xiàn)在
17、倉(cāng)庫(kù)管理的</p><p> 倉(cāng)庫(kù)管理是供應(yīng)鏈管理中的重要環(huán)節(jié),并且被作為現(xiàn)代經(jīng)濟(jì)的重要組成部分及最為經(jīng)濟(jì)合理的綜合服務(wù)模式,正在迅速的發(fā)展[4]。要成為具有競(jìng)爭(zhēng)力的市場(chǎng)主力,就必須用信息技術(shù)塑造先進(jìn)的倉(cāng)庫(kù)管理服務(wù)。</p><p> 1.2倉(cāng)庫(kù)管理信息系統(tǒng)開(kāi)發(fā)的意義</p><p> 倉(cāng)庫(kù)管理信息系統(tǒng)不但能使倉(cāng)庫(kù)管理企業(yè)走上科學(xué)化、網(wǎng)絡(luò)化管理的道路,而且能夠
18、為企業(yè)帶來(lái)巨大的經(jīng)濟(jì)效益及管理方式上的發(fā)展。</p><p> 從管理方式上講,系統(tǒng)采用B/S模式部署,用現(xiàn)代化的管理方法,倉(cāng)庫(kù)管理人員在操作過(guò)程中能夠快捷地查找貨物信息、客戶訂單以及客戶信息;能夠?qū)ω浳镞M(jìn)行全程跟蹤,了解貨物的托運(yùn)細(xì)節(jié)情況,從而使企業(yè)能夠根據(jù)實(shí)際的情況,做好運(yùn)營(yíng)過(guò)程中的各項(xiàng)準(zhǔn)備工作,并對(duì)突發(fā)事件做出及時(shí)和準(zhǔn)確的調(diào)整;能夠確保托運(yùn)人以及收貨人對(duì)貨物進(jìn)行及時(shí)處理[5]。</p>&l
19、t;p> 從經(jīng)濟(jì)性上講,該倉(cāng)庫(kù)管理信息系統(tǒng)的業(yè)務(wù)流程規(guī)范、科學(xué),界面友好,操作環(huán)境便捷,將為企業(yè)帶來(lái)更多的客戶資源,樹(shù)立企業(yè)的品牌形象,提升企業(yè)的經(jīng)濟(jì)效益[6]。</p><p> 1.3論文的內(nèi)容和結(jié)構(gòu)</p><p> 首先在緒論里,介紹倉(cāng)庫(kù)管理信息系統(tǒng)開(kāi)發(fā)的背景及國(guó)內(nèi)外開(kāi)發(fā)應(yīng)用的現(xiàn)狀,闡明倉(cāng)庫(kù)管理信息系統(tǒng)對(duì)于企業(yè)的重要性。</p><p> 其次
20、,對(duì)實(shí)現(xiàn)此系統(tǒng)用到的技術(shù)進(jìn)行簡(jiǎn)介。第一,介紹了J2EE平臺(tái)。對(duì)于J2EE平臺(tái),從J2EE平臺(tái)的概念及J2EE平臺(tái)的體系架構(gòu)兩方面,進(jìn)行了概述;對(duì)于MVC組件及ORM組件,則從他們的實(shí)現(xiàn)、工作流程及機(jī)制、優(yōu)缺點(diǎn)及為什么要使用他們進(jìn)行了闡述。第二,從軟件開(kāi)發(fā)模式、MVC模式概述、MVC模式在Web上的應(yīng)用情況及MVC模式的好處等幾方面[7],簡(jiǎn)述了MVC模式。</p><p> 再次,根據(jù)系統(tǒng)需求分析及功能分析,進(jìn)
21、行數(shù)據(jù)庫(kù)設(shè)計(jì)及系統(tǒng)技術(shù)架構(gòu)設(shè)計(jì)。第一,從系統(tǒng)概述與目標(biāo)、系統(tǒng)功能性需求、系統(tǒng)非功能性需求共三方面,進(jìn)行了系統(tǒng)的需求分析,并從系統(tǒng)功能模塊劃分以及系統(tǒng)流程等兩方面,進(jìn)行了系統(tǒng)功能的分析。第二,結(jié)合系統(tǒng)需求分析及系統(tǒng)功能分析,從數(shù)據(jù)庫(kù)需求分析、數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)等兩方面,進(jìn)行了數(shù)據(jù)庫(kù)設(shè)計(jì)。第四,從邏輯結(jié)構(gòu)設(shè)計(jì)、技術(shù)方案實(shí)現(xiàn)等方面,進(jìn)行系統(tǒng)技術(shù)架構(gòu)設(shè)計(jì)。在進(jìn)行系統(tǒng)邏輯結(jié)構(gòu)設(shè)計(jì)時(shí),從邏輯結(jié)構(gòu)分析、表示層設(shè)計(jì)、控制層設(shè)計(jì)、業(yè)務(wù)邏輯層設(shè)計(jì)、持久層設(shè)計(jì)等
22、五個(gè)方面,進(jìn)行了探討;在闡述技術(shù)方案時(shí),從配置web.xml文件、配置mvc.xml文件、c3p0數(shù)據(jù)池的配置文件、Action的編寫過(guò)程、業(yè)務(wù)邏輯編寫過(guò)程、持久層設(shè)計(jì)以及視圖層開(kāi)發(fā)技術(shù)等七個(gè)方面,進(jìn)行了介紹。</p><p> 進(jìn)行模塊設(shè)計(jì)時(shí),采用J2EE開(kāi)發(fā)規(guī)范以及MVC框架,分為Controller(控制器)、Model(模型)、View(視圖)三層[8]。其中,Controller的作用是從客戶端接受請(qǐng)
23、求,并且選擇執(zhí)行相應(yīng)的業(yè)務(wù)邏輯,然后把響應(yīng)結(jié)果送回到客戶端;Model層實(shí)現(xiàn)業(yè)務(wù)邏輯;View層是應(yīng)用程序中用戶界面相關(guān)的部分,負(fù)責(zé)向用戶顯示數(shù)據(jù),并且能接收用戶的輸入數(shù)據(jù)。</p><p> 最后,對(duì)該倉(cāng)庫(kù)管理信息系統(tǒng)設(shè)計(jì)進(jìn)行了總結(jié),并對(duì)該倉(cāng)庫(kù)管理信息系統(tǒng)應(yīng)用前景進(jìn)行了展望。</p><p> 論文的總體結(jié)構(gòu)如下:</p><p> 第一章簡(jiǎn)述論文背景以及論
24、文的內(nèi)容及意義。</p><p> 第二章闡述開(kāi)發(fā)該倉(cāng)庫(kù)管理信息系統(tǒng)的平臺(tái)和用到的技術(shù)。</p><p> 第三章內(nèi)容為該倉(cāng)庫(kù)管理信息系統(tǒng)需求分析和系統(tǒng)總體設(shè)計(jì),數(shù)據(jù)庫(kù)設(shè)計(jì)。</p><p> 第四章對(duì)該倉(cāng)庫(kù)管理信息系統(tǒng)的各個(gè)模塊的實(shí)現(xiàn)進(jìn)行了詳述。</p><p> 第五章對(duì)該倉(cāng)庫(kù)管理信息系統(tǒng)設(shè)計(jì)進(jìn)行了總結(jié),并對(duì)該系統(tǒng)應(yīng)用前景進(jìn)行了展
25、望。</p><p><b> 第二章 相關(guān)技術(shù)</b></p><p> 2.1 J2EE平臺(tái)</p><p> 2.1.1 J2EE平臺(tái)簡(jiǎn)介</p><p> J2EE可以說(shuō)指Java在數(shù)據(jù)庫(kù)信息系統(tǒng)上實(shí)現(xiàn),數(shù)據(jù)庫(kù)信息系統(tǒng)從早期的dBase、到Delphi/VB等C/S結(jié)構(gòu),發(fā)展到B/S(Browser瀏覽器
26、/Server服務(wù)器)結(jié)構(gòu),而J2EE主要是指B/S結(jié)構(gòu)的實(shí)現(xiàn)。</p><p> J2EE主要是為企業(yè)級(jí)開(kāi)發(fā)提供了一種設(shè)計(jì)模式,sun在每個(gè)領(lǐng)域給了一個(gè)設(shè)計(jì)模式,象嵌入式平臺(tái)的J2ME,桌面平臺(tái)的J2SE。在一個(gè)規(guī)范的J2EE架構(gòu)中,不同層的數(shù)據(jù)表示應(yīng)該被限制在層內(nèi),而不應(yīng)該擴(kuò)散到其它層,這樣可以降低層間的耦合性,提高J2EE架構(gòu)整體的可維護(hù)性和可擴(kuò)展性。比如說(shuō)Web層的邏輯進(jìn)行了修改,那么只需要修改Form
27、Bean的結(jié)構(gòu),而不需要觸動(dòng)業(yè)務(wù)層和持久層的代碼修改。同樣的,當(dāng)數(shù)據(jù)庫(kù)表進(jìn)行了小的調(diào)整,那么也只需要修改持久層數(shù)據(jù)表示,而不需要觸動(dòng)業(yè)務(wù)層代碼和Web層代碼。</p><p> J2EE技術(shù)在應(yīng)用時(shí)都涉及兩個(gè)部分:容器部分和應(yīng)用部分,Web容器也是指Jsp/Servlet容器,你如果要開(kāi)發(fā)一個(gè)Web應(yīng)用,無(wú)論是編譯或運(yùn)行,都必須要有Jsp/Servlet庫(kù)或API支持(除了JDK/J2SE以外)。在許多企業(yè)級(jí)應(yīng)
28、用中,例如數(shù)據(jù)庫(kù)連接、郵件服務(wù)、事務(wù)處理等都是一些通用企業(yè)需求模塊,這些模塊如果每次再開(kāi)發(fā)中都由開(kāi)發(fā)人員來(lái)完成的話,將會(huì)造成開(kāi)發(fā)周期長(zhǎng)和代碼可靠性差等問(wèn)題。于是許多大公司開(kāi)發(fā)了自己的通用模塊服務(wù)。這些服務(wù)性的軟件系列統(tǒng)稱為中間件。為了通用必須要提出規(guī)范,不然無(wú)法達(dá)到通用在上面的需求基礎(chǔ)之上,許多公司都開(kāi)發(fā)了自己的中間件,但其與用戶的溝通都各有不同,從而導(dǎo)致用戶無(wú)法將各個(gè)公司不同的中間件組裝在一塊為自己服務(wù)。從而產(chǎn)生瓶頸。于是提出標(biāo)準(zhǔn)的概
29、念。所以說(shuō),J2EE就是基于JAVA技術(shù)的一系列標(biāo)準(zhǔn)。</p><p> 2.1.2 MVC組件簡(jiǎn)介</p><p> 為什么我們?cè)贘2EE開(kāi)發(fā)中需要框架?</p><p> JSP、Servlet和JavaBean技術(shù)的出現(xiàn)給我們構(gòu)建強(qiáng)大的企業(yè)應(yīng)用系統(tǒng)提供了可能。在此之上,我們還需要一個(gè)規(guī)則,一個(gè)把這些技術(shù)有效的組織起來(lái),讓系統(tǒng)繁而不亂的規(guī)則,這就是框架。S
30、truts應(yīng)運(yùn)而生,是最早的開(kāi)源框架之一,而且很快成為實(shí)際標(biāo)準(zhǔn)。</p><p> 在J2EE平臺(tái)下,Struts是比較流行的MVC框架,但是本著DIY動(dòng)手能力及探索的精神,這一次沒(méi)有用到成熟的Struts來(lái)作為MVC框架,而是自己編寫簡(jiǎn)單的MVC組件來(lái)解決問(wèn)題[13]。</p><p> “麻雀雖小五臟俱全”,這次絕不是“重復(fù)的造輪子”的過(guò)程,吸收了前輩Struts2的優(yōu)秀特性,結(jié)合
31、了其他MVC框架:尤其是“rails”的“約定優(yōu)于配置”的理念,讓這個(gè)DIY的MVC組件有著小巧,簡(jiǎn)潔,方便使用的特性。</p><p> 在現(xiàn)如今大量的MVC框架里面,xml配置文件是很重要的,特別常見(jiàn)的,他們定義了一個(gè)請(qǐng)求的URL及處理該請(qǐng)求的對(duì)應(yīng)的Action的地址。但是,這也帶來(lái)了一些問(wèn)題,很多時(shí)候這些繁雜的xml配置文件會(huì)讓人感到厭倦 。</p><p> 于是,我嘗試用其他
32、方法來(lái)替代這個(gè)方案:“利用約定來(lái)免除大量的配置文件”。先讓我們來(lái)看看這個(gè)MVC組件的工作機(jī)制[15]。</p><p> 在此組件中,控制器由MVCFilter及Controller來(lái)實(shí)現(xiàn),視圖由一組JSP文件與JSTL標(biāo)簽庫(kù)構(gòu)成。</p><p> 此MVC組件包含了以下重要部分:</p><p><b> ?。?)視圖</b></
33、p><p> 視圖部分可以采用JSP來(lái)實(shí)現(xiàn)。在這些JSP文件中沒(méi)有業(yè)務(wù)邏輯,也沒(méi)有模型信息,只有標(biāo)簽,這些標(biāo)簽可以是標(biāo)準(zhǔn)的JSP標(biāo)簽或自定義的標(biāo)簽,如JSTL標(biāo)簽庫(kù)。</p><p><b> ?。?)控制器</b></p><p><b> 其工作流程如下——</b></p><p><b&
34、gt; 第一步:</b></p><p> 當(dāng)用戶通過(guò)視圖向服務(wù)器發(fā)送請(qǐng)求時(shí),請(qǐng)求URI會(huì)被一個(gè)Filter(servlet規(guī)范里的攔截器)攔截,這個(gè)Filter將攔截的URI進(jìn)行處理,根據(jù)從mvc.xml配置文件讀取的映射信息及已經(jīng)定義好的約定,就可以實(shí)現(xiàn)從URI到Action的映射。</p><p><b> 第二步:</b></p>
35、<p> 控制器找到了處理該請(qǐng)求的Action包路徑以后,運(yùn)用反射實(shí)例化之,并調(diào)用execute(來(lái)自于Action接口)方法來(lái)獲得返回視圖的地址。最后,控制器負(fù)責(zé)轉(zhuǎn)發(fā)視圖資源請(qǐng)求。</p><p> (3)區(qū)別于Struts2的地方</p><p> 在Struts2里面,用戶請(qǐng)求是通過(guò)核心攔截器來(lái)處理及轉(zhuǎn)發(fā)的。這需要一些描述用戶請(qǐng)求路徑及Action映射關(guān)系的配置信
36、息。這些配置映射信息都存儲(chǔ)在特定的XML文件Struts-config.xml中[16]。在該配置文件中,每一個(gè)Action的映射信息都通過(guò)一個(gè)<action>元素來(lái)配置。</p><p> 這些配置信息在系統(tǒng)啟動(dòng)的時(shí)候,被讀入內(nèi)存,供Struts在運(yùn)行期間使用。在內(nèi)存中,每一個(gè)<action>元素都對(duì)應(yīng)一個(gè)ActionMapping類的實(shí)例。</p><p>
37、 現(xiàn)在,只要根據(jù)既定的約定(URI路徑對(duì)應(yīng)這相應(yīng)的Action包路徑),讀取存儲(chǔ)在mvc.xml文件里面的信息,就可以根據(jù)請(qǐng)求的URI映射到對(duì)應(yīng)的Action包路徑。從而免去了繁瑣的配置文件,集中精力負(fù)責(zé)其他的設(shè)計(jì)。</p><p> 這就是:“約定優(yōu)于配置”原則下的設(shè)計(jì)。</p><p> MVC的優(yōu)缺點(diǎn),可以簡(jiǎn)單總結(jié)如下:</p><p><b>
38、 (1)優(yōu)點(diǎn) </b></p><p> 衡量J2EE應(yīng)用系統(tǒng)設(shè)計(jì)開(kāi)發(fā)水平高低的標(biāo)準(zhǔn)就是:解耦性;你的應(yīng)用系統(tǒng)各個(gè)功能是否能夠徹底脫離?是否不相互依賴,也只有這樣,才能體現(xiàn)可維護(hù)性、可拓展性的軟件設(shè)計(jì)目標(biāo)。為了達(dá)到這個(gè)目的,誕生各種框架概念,J2EE框架標(biāo)準(zhǔn)將一個(gè)系統(tǒng)劃分為WEB和EJB主要部分,當(dāng)然我們有時(shí)不是以這個(gè)具體技術(shù)區(qū)分,而是從設(shè)計(jì)上抽象為表現(xiàn)層、服務(wù)層和持久層,這三個(gè)層次從一個(gè)高度將J
39、2EE分離開(kāi)來(lái),實(shí)現(xiàn)解耦目的。應(yīng)用數(shù)據(jù)的表示應(yīng)該被限制在相應(yīng)的層內(nèi),而不擴(kuò)散到其它層,這樣可以降低數(shù)據(jù)在應(yīng)用層之間的耦合性,提升J2EE整體架構(gòu)的可維護(hù)性及可擴(kuò)展性。</p><p> 同時(shí),得益于JSTL標(biāo)簽庫(kù)的使用,拋棄了傳統(tǒng)的jsp標(biāo)簽(事實(shí)上,幾乎沒(méi)有正規(guī)的開(kāi)發(fā)會(huì)用到j(luò)sp原始的標(biāo)簽了),能大大提升開(kāi)發(fā)效率。</p><p> 約定優(yōu)于配置,通過(guò)一個(gè)配置文件里面的1行信息,即可
40、把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,同時(shí)又避免了復(fù)雜的xml配置文件。這對(duì)于后期的維護(hù)有著莫大的好處,對(duì)團(tuán)隊(duì)合作開(kāi)發(fā),這種優(yōu)勢(shì)體現(xiàn)得很突出。</p><p><b> ?。?)缺點(diǎn) </b></p><p> JSTL標(biāo)簽庫(kù)的一大優(yōu)勢(shì)是使得jsp頁(yè)面的開(kāi)發(fā)更加簡(jiǎn)單,但需要一個(gè)持續(xù)學(xué)習(xí)的過(guò)程,學(xué)習(xí)成本顯而易見(jiàn)。</p><p> 比起強(qiáng)大的Stru
41、ts2把視圖資源放置在xml文件里的特性,這個(gè)組件盡可能不使用配置文件,直接把視圖資源硬編碼到Action里面,這樣做的一個(gè)壞處是:每次要改變視圖資源的時(shí)候,必修重修修改Action的代碼,然后重新編譯。</p><p> 2.1.3 持久層組件簡(jiǎn)介</p><p> 在Java中將對(duì)象自動(dòng)持久化到數(shù)據(jù)庫(kù)中,我們需要了解兩個(gè)概念。持久化:就是對(duì)數(shù)據(jù)和程序狀態(tài)的保持。大多數(shù)情況下特別是企
42、業(yè)級(jí)開(kāi)發(fā)應(yīng)用時(shí),數(shù)據(jù)持久化往往也就意味著將內(nèi)存中的數(shù)據(jù)保存到磁盤上,就是把數(shù)據(jù)保存到可掉電式存儲(chǔ)設(shè)備中供之后使用。大多數(shù)情況下特別是企業(yè)級(jí)應(yīng)用,數(shù)據(jù)持久化往往也就意味著將內(nèi)存中的數(shù)據(jù)保存到磁盤上加以固化,而持久化的實(shí)現(xiàn)過(guò)程則大多通過(guò)各種關(guān)系數(shù)據(jù)庫(kù)來(lái)完成。那么持久層呢?延續(xù)思路,所謂“持久層”,也就是在系統(tǒng)邏輯層面上,專著于實(shí)現(xiàn)數(shù)據(jù)持久化的一個(gè)相對(duì)獨(dú)立的領(lǐng)域(Domain)。持久層是負(fù)責(zé)向(或者從)一個(gè)或者多個(gè)數(shù)據(jù)存儲(chǔ)器中存儲(chǔ)(或者獲取)
43、數(shù)據(jù)的一組類和組件。這個(gè)層必須包括一個(gè)業(yè)務(wù)領(lǐng)域?qū)嶓w的模型(即使只是一個(gè)元數(shù)據(jù)模型)。不過(guò)這里有一個(gè)字需要特別強(qiáng)調(diào),也就是所謂的“層”。對(duì)于應(yīng)用系統(tǒng)而言,數(shù)據(jù)持久功能大多是必不可少的組成部分。之所以要獨(dú)立出一個(gè)“持久層”的概念,而不是“持久模塊”,“持久單元”,也就意味著,我們的系統(tǒng)架構(gòu)中,應(yīng)該有一個(gè)相對(duì)獨(dú)立的邏輯層面,專著于數(shù)據(jù)持久化邏輯的實(shí)現(xiàn).與系統(tǒng)其他部分相對(duì)而言,這個(gè)層面應(yīng)該具有一個(gè)較為清晰和嚴(yán)格的邏輯邊界。</p>
44、<p> 對(duì)于一個(gè)框架,僅僅掌握它的使用方法還遠(yuǎn)沒(méi)達(dá)到目的,最重要的是:你是否能夠了解它的原理。基于這點(diǎn),我想很有必要親自模擬并且實(shí)現(xiàn)ORM(持久層的組件,也就是所謂的:對(duì)象關(guān)系映射組件)框架最基本的,也是最核心的功能。</p><p> 先來(lái)看一下這個(gè)自行設(shè)計(jì)的ORM組件的簡(jiǎn)單工作流程:</p><p> 在Service包(或者DAO組件里面)里,可以調(diào)用BaseDA
45、O來(lái)完成數(shù)據(jù)操作。而B(niǎo)aseDAO調(diào)用到了模版DAO(SuperDAO),在模版DAO里面,完成了以下功能:</p><p> ?。?)根據(jù)DAO方法生成對(duì)應(yīng)的SQL語(yǔ)句。</p><p> ORM組件的特點(diǎn)可以簡(jiǎn)單總結(jié)如下:</p><p><b> 1.易用性</b></p><p> O/R映射及數(shù)據(jù)的持久化
46、,更改維護(hù)在這里僅僅通過(guò)調(diào)用BaseDAO的各個(gè)方法就可以完成簡(jiǎn)單的操作。大部分時(shí)候,都無(wú)需自己編寫SQL語(yǔ)句。</p><p><b> 2.開(kāi)發(fā)靈活性</b></p><p> 開(kāi)發(fā)靈活性高,例如,提供了查詢集合與對(duì)象的映射關(guān)系,具體操作數(shù)據(jù)庫(kù)全開(kāi)放。</p><p><b> 3.系統(tǒng)運(yùn)行速度</b></
47、p><p> 在一個(gè)web系統(tǒng)里面常常會(huì)出現(xiàn)數(shù)據(jù)庫(kù)的訪問(wèn)成為了整個(gè)系統(tǒng)的性能瓶頸。為了優(yōu)化性能,用到了c3p0數(shù)據(jù)池。這樣可以提升數(shù)據(jù)庫(kù)連接速度,另一方面,數(shù)據(jù)池的sql語(yǔ)句緩存,查詢statement緩存也成為了提升性能的途徑。</p><p><b> 2.2 MVC模式</b></p><p> 2.2.1 MVC概述</p>
48、;<p> MVC是一種目前廣泛流行的軟件設(shè)計(jì)模式, M代表模型(Model),V代表視圖(View),C代表控制器(Controller)。MVC設(shè)計(jì)模型即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照M-V-C的方式進(jìn)行分離。</p><p> 為什么需要MVC模式?</p><p> 大多數(shù)復(fù)雜應(yīng)用需要使用幾種不同的方式查看和操作數(shù)據(jù):對(duì)數(shù)據(jù)顯示所作的任何修改,都需要在所有
49、相關(guān)位置進(jìn)行當(dāng)數(shù)據(jù)操作邏輯、格式化和顯示代碼同用戶事件處理混雜在一起的時(shí)候,應(yīng)用維護(hù)變得非常困難,特別是在時(shí)間跨度非常大的情況下的副作用如果應(yīng)用邏輯已經(jīng)同現(xiàn)有界面的代碼混合在一起,用戶界面就不能被重新利用增加功能要求對(duì)現(xiàn)有的代碼進(jìn)行多處修改,而這些需要修改的位置很難發(fā)現(xiàn)對(duì)單獨(dú)一段代碼進(jìn)行修改會(huì)造成深遠(yuǎn)的副作用。</p><p> MVC模式把多個(gè)組件集成到一起,相互合作,協(xié)調(diào)一致的進(jìn)行工作。</p>
50、<p> 模型:封裝應(yīng)用數(shù)據(jù)(關(guān)系數(shù)據(jù)庫(kù)或EJB),處理商業(yè)邏輯</p><p> 視圖:呈現(xiàn)給用戶的界面(JSP或應(yīng)用GUI)</p><p> 控制器:接受用戶動(dòng)作,并對(duì)應(yīng)用數(shù)據(jù)進(jìn)行適當(dāng)?shù)奶幚恚⊿ervlet)</p><p> MVC的目的是增加代碼的重用率,減少數(shù)據(jù)表達(dá)、數(shù)據(jù)描述及應(yīng)用操作的耦合度。同時(shí),也使得軟件的可維護(hù)性、可修復(fù)性、
51、可擴(kuò)展性、靈活性以及封裝性大大提升。</p><p> 當(dāng)前國(guó)內(nèi)的主流建站程序都是采用了MVC三層架構(gòu)來(lái)開(kāi)發(fā),對(duì)于網(wǎng)站的后期維護(hù)與應(yīng)用過(guò)程,都有很大的裨益。由于MVC開(kāi)發(fā)模式將前端設(shè)計(jì)、程序開(kāi)發(fā)進(jìn)行了明確的定義與分工,</p><p> MVC模式的結(jié)構(gòu)如下圖所示:</p><p> 2.2.2為什么選擇MVC</p><p> 1.
52、各施其職,互不干涉</p><p> 在MVC模式中,三個(gè)層各施其職,一旦哪一層的需求發(fā)生了變化,只需要更改相應(yīng)層中的代碼而不會(huì)影響到其它層中的代碼。</p><p> 2.有利于開(kāi)發(fā)中的分工</p><p> 在MVC模式中,由于按層把系統(tǒng)分開(kāi),那么就能更好地實(shí)現(xiàn)開(kāi)發(fā)中的分工。網(wǎng)頁(yè)設(shè)計(jì)人員可以開(kāi)發(fā)視圖層中的JSP頁(yè)面,對(duì)業(yè)務(wù)熟悉的人員可以開(kāi)發(fā)業(yè)務(wù)層,而其他開(kāi)
53、發(fā)人員可以開(kāi)發(fā)控制層[19]。</p><p> 3.有利于組件的重用</p><p> 分層后有利于組件的重用。例如控制層可獨(dú)立成一個(gè)通用的組件,視圖層也可做成通用的操作界面。</p><p> 第三章 系統(tǒng)總體分析與設(shè)計(jì)</p><p><b> 3.1 需求分析</b></p><p&g
54、t; 3.1.1 系統(tǒng)概述與目標(biāo)</p><p> 系統(tǒng)需求分析是整個(gè)設(shè)計(jì)過(guò)程的基礎(chǔ),是系統(tǒng)設(shè)計(jì)的起點(diǎn)。系統(tǒng)建設(shè)前首先必須準(zhǔn)確了解與分析用戶的知識(shí)需求。需求分析是否準(zhǔn)確反映了用戶的實(shí)際要求,將直接影響到后面各個(gè)階段的設(shè)計(jì),并影響到交付的產(chǎn)品是否合理和實(shí)用。需求分析如果做得不好,甚至?xí)?dǎo)致整個(gè)系統(tǒng)設(shè)計(jì)的返工重做。</p><p> 需求分析的重點(diǎn)是調(diào)查、收集與分析用戶在知識(shí)管理中的知識(shí)
55、要求、處理要求、安全性與完整性要求。知識(shí)要求是指用戶需要從系統(tǒng)中獲得知識(shí)的內(nèi)容與性質(zhì),根據(jù)用戶的知識(shí)需求就可以確定在系統(tǒng)中要存儲(chǔ)哪些知識(shí);處理要求是指用戶要求完成什么處理功能,還有對(duì)處理時(shí)間和處理方式的要求。系統(tǒng)必須能夠滿足用戶的各類需求,需求分析的重點(diǎn)是明確系統(tǒng)的應(yīng)用場(chǎng)景和環(huán)境。</p><p> 通過(guò)對(duì)一些典型的倉(cāng)庫(kù)管理管理系統(tǒng)的使用考察和分析,要求本系統(tǒng)具有以下特點(diǎn)。</p><p&g
56、t; ?。?)采用B/S架構(gòu),基于瀏覽器的管理界面,無(wú)需安裝,更新客戶端;</p><p> ?。?)功能符合倉(cāng)庫(kù)管理管理實(shí)際要求,操作簡(jiǎn)單,擴(kuò)展性強(qiáng),穩(wěn)定性高;</p><p> (3)系統(tǒng)無(wú)操作系統(tǒng)限制,方便不同平臺(tái)之間的移植。</p><p> 通過(guò)對(duì)倉(cāng)庫(kù)管理企業(yè)及相關(guān)行業(yè)信息的調(diào)查,該倉(cāng)庫(kù)管理信息系統(tǒng)具有以下功能:</p><p>
57、; ?。?)通過(guò)系統(tǒng)流程圖,全面展示企業(yè)的形象,全面介紹企業(yè)的服務(wù)項(xiàng)目;</p><p> ?。?)實(shí)現(xiàn)對(duì)貨物信息的管理;</p><p> ?。?)實(shí)現(xiàn)對(duì)貨物供應(yīng)商信息的管理;</p><p> ?。?)實(shí)現(xiàn)對(duì)發(fā)貨客戶信息的管理;</p><p> (5)實(shí)現(xiàn)對(duì)單據(jù)的管理,包括入庫(kù)單,出庫(kù)單;</p><p>
58、(6)實(shí)現(xiàn)對(duì)財(cái)務(wù)的管理;</p><p> (7)具備易的操作界面;</p><p> (8)每個(gè)角色職位有不同的權(quán)限,管理員可以配置這些信息和對(duì)不同的人員授權(quán)操作。</p><p> 一個(gè)易于維護(hù)的系統(tǒng),就是可復(fù)用率較高的系統(tǒng);而一個(gè)可復(fù)用較好的系統(tǒng),就是一個(gè)易于維護(hù)的系統(tǒng)。也就是說(shuō)這個(gè)系統(tǒng)的設(shè)計(jì)目標(biāo)應(yīng)該具有擴(kuò)展性、靈活性。</p><p
59、> 開(kāi)發(fā)該系統(tǒng)的最終目的是為管理員管理訂單提供方便,得到客戶的及時(shí)反饋,從而提升公司的整體水平,提升公司效率。為了滿足客戶需要,本系統(tǒng)在設(shè)計(jì)時(shí)應(yīng)實(shí)現(xiàn)以下幾個(gè)目標(biāo):</p><p> ?。?)系統(tǒng)界面力求簡(jiǎn)單,人性化;</p><p> ?。?)能夠滿足倉(cāng)庫(kù)管理的需求,能夠?qū)蛻簦?yīng)商及貨物信息進(jìn)行管理;</p><p> ?。?)能夠根據(jù)不斷變化的需求進(jìn)行
60、功能上的擴(kuò)充。</p><p> 3.1.2 系統(tǒng)功能性需求 </p><p><b> (1)供應(yīng)商管理</b></p><p> 該部分包括供應(yīng)商信息的增加、編輯、刪除及查詢的功能。</p><p><b> ?。?)客戶管理</b></p><p> 該部分包
61、括客戶信息的增加、編輯、刪除及查詢的功能。</p><p> (3)入庫(kù)出庫(kù)單據(jù)管理</p><p> 該部分包括單據(jù)(包括入庫(kù)單,出庫(kù)單)信息的增加、編輯、刪除及查詢的功能。</p><p><b> ?。?)庫(kù)存貨物管理</b></p><p> 該部分包括貨物信息的增加、編輯、刪除及查詢的功能。</p&
62、gt;<p><b> (5)財(cái)務(wù)管理</b></p><p> 能夠準(zhǔn)確查看單據(jù)收支情況,貨物情況,實(shí)現(xiàn)對(duì)普通的發(fā)貨單及根據(jù)固定貨物生成的發(fā)貨單進(jìn)行進(jìn)行填寫,以及查看財(cái)務(wù)報(bào)表的功能。</p><p> (6)用戶和角色管理</p><p> 管理員可以對(duì)用戶授權(quán),可以增加,刪除用戶。</p><p&g
63、t; 具體的用例圖如圖3-1:</p><p> 3.1.3 系統(tǒng)非功能性需求</p><p> 結(jié)合目前網(wǎng)絡(luò)上倉(cāng)庫(kù)管理配送系統(tǒng)的設(shè)計(jì)方案,對(duì)客戶做的調(diào)查結(jié)果以及企業(yè)的實(shí)際需求,本項(xiàng)目在設(shè)計(jì)時(shí)應(yīng)該滿足以下目標(biāo):</p><p> ?。?)界面設(shè)計(jì)美觀大方、操作簡(jiǎn)單;</p><p> ?。?)功能完善、結(jié)構(gòu)清晰;</p>
64、<p> ?。?)能夠及時(shí)、準(zhǔn)確地對(duì)系統(tǒng)進(jìn)行維護(hù)及更新;</p><p> ?。?)良好的數(shù)據(jù)庫(kù)系統(tǒng)支持;</p><p> ?。?)最大限度地實(shí)現(xiàn)易安裝性、易維護(hù)性及易操作性;</p><p> (6)系統(tǒng)運(yùn)行穩(wěn)定,具備良好的安全措施。</p><p> 3.2 系統(tǒng)功能分析 </p><p> 3
65、.2.1 系統(tǒng)功能結(jié)構(gòu)</p><p> 該倉(cāng)庫(kù)管理信息系統(tǒng)功能包括管理員登錄、管理員編輯密碼、瀏覽貨物信息、編輯貨物信息、刪除貨物信息、增加貨物信息、建立發(fā)貨單(或是采購(gòu)單)、回執(zhí)發(fā)貨單(或是采購(gòu)單)確認(rèn)、瀏覽發(fā)貨單(或是采購(gòu)單)、刪除發(fā)貨單(或是采購(gòu)單)、查詢發(fā)貨客戶(或是貨物供應(yīng)商)、增加發(fā)貨客戶(或是貨物供應(yīng)商)、刪除發(fā)貨客戶(或是貨物供應(yīng)商)。</p><p> 圖3-2為系
66、統(tǒng)功能結(jié)構(gòu)圖:</p><p> 3.2.2 系統(tǒng)功能流程</p><p> 該倉(cāng)庫(kù)管理信息系統(tǒng)的貨物入庫(kù)出庫(kù)是核心功能,可以分成2塊來(lái)分析,即:向供應(yīng)商購(gòu)買貨物——入庫(kù);向客戶提供他們想要的貨物——出庫(kù)。</p><p> (1)貨物出庫(kù)流程:客戶通過(guò)通訊等輔助手段,向倉(cāng)庫(kù)管理公司提交訂單;管理員登錄系統(tǒng)后,根據(jù)客戶提交的訂單要求,進(jìn)行貨物查詢、貨物確認(rèn)、填
67、寫發(fā)貨單;管理員安排貨物發(fā)出后,進(jìn)行電話跟蹤,貨物到達(dá)后,收貨人進(jìn)行到達(dá)確認(rèn),管理員進(jìn)行回執(zhí)單確認(rèn)。</p><p> (2)貨物入庫(kù)流程:管理員登錄系統(tǒng)后,根據(jù)已經(jīng)對(duì)供應(yīng)商下的訂單,填寫貨物入庫(kù)清單;管理員待貨物達(dá)到后,收貨人進(jìn)行到達(dá)確認(rèn),管理員進(jìn)行入庫(kù)清單確認(rèn)。</p><p><b> 3.3 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p>
68、3.3.1 數(shù)據(jù)庫(kù)需求分析</p><p> 由于此系統(tǒng)是一個(gè)小型管理系統(tǒng),所以采用了開(kāi)源小巧的MySQL數(shù)據(jù)庫(kù)。它是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開(kāi)發(fā)者為瑞典MySQL AB公司。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi)。這樣就增加了速度并提升了靈活性。MySQL的SQL“結(jié)構(gòu)化查詢語(yǔ)言”。SQL是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。由于其體積小、速
69、度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。</p><p> 根據(jù)系統(tǒng)需求分析,系統(tǒng)有用戶及權(quán)限控制,供應(yīng)商,客戶,入庫(kù)單據(jù),出庫(kù)單據(jù),庫(kù)存貨物表,各表的關(guān)系如下圖所示:</p><p> 3.3.2 數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)</p><p> 客戶信息表:customer</p>
70、<p> 訂單明細(xì)表:order_detail</p><p> 訂單表:orders</p><p> 產(chǎn)品表:product</p><p> 貨物類別表:product-type</p><p> 供應(yīng)商表:provider</p><p> 采購(gòu)單表:stock</p>&
71、lt;p> 采購(gòu)單明細(xì)表:stock-detail</p><p><b> 用戶表:user</b></p><p> 商品視圖:product-view</p><p> 3.4 系統(tǒng)技術(shù)架構(gòu)設(shè)計(jì)</p><p> 3.4.1 系統(tǒng)邏輯結(jié)構(gòu)設(shè)計(jì)</p><p> 系統(tǒng)邏輯結(jié)構(gòu)
72、設(shè)計(jì)關(guān)系到整個(gè)軟件的質(zhì)量及開(kāi)發(fā)進(jìn)度,因此,工作重點(diǎn)是進(jìn)行該系統(tǒng)邏輯結(jié)構(gòu)設(shè)計(jì)。下面分為五點(diǎn)進(jìn)行闡述。</p><p><b> 1.邏輯結(jié)構(gòu)分析</b></p><p> 該倉(cāng)庫(kù)管理信息系統(tǒng)表示層負(fù)責(zé)提供訪問(wèn)者數(shù)據(jù)的展示以及操作接口;控制層負(fù)責(zé)接收來(lái)自表示層提交的訪問(wèn)者請(qǐng)求,調(diào)用業(yè)務(wù)層處理業(yè)務(wù)邏輯;業(yè)務(wù)層接受來(lái)自控制層的調(diào)用,調(diào)用數(shù)據(jù)邏輯層操作數(shù)據(jù)庫(kù);數(shù)據(jù)邏輯層負(fù)責(zé)
73、接受業(yè)務(wù)層的調(diào)用,完成具體的數(shù)據(jù)存取操作,在這里就是指持久層(Persistence)。系統(tǒng)采用MVC組件來(lái)進(jìn)行開(kāi)發(fā),系統(tǒng)被劃分為四層,即Persistence層、Business Runic層、Controller層、View層。</p><p><b> 2.表示層設(shè)計(jì)</b></p><p> 表示層(View層)大部分負(fù)責(zé)為用戶提供應(yīng)用服務(wù)的圖形界面,當(dāng)用
74、戶發(fā)出請(qǐng)求后調(diào)用相應(yīng)的業(yè)務(wù)邏輯處理,并選擇下一個(gè)頁(yè)面為用戶響應(yīng)。</p><p> 表示層是根據(jù)風(fēng)格定義設(shè)計(jì)相應(yīng)的顯示,并把用戶的交互信息傳遞給業(yè)務(wù)邏輯層,負(fù)責(zé)提供訪問(wèn)者數(shù)據(jù)的展示以及操作接口,此層與Controller層結(jié)合比較緊密,需要二者結(jié)合起來(lái)協(xié)同開(kāi)發(fā)。</p><p><b> 3.控制層設(shè)計(jì)</b></p><p> 控制層(
75、Controller層)負(fù)責(zé)接收來(lái)自表示層提交的訪問(wèn)者請(qǐng)求,調(diào)用業(yè)務(wù)層處理業(yè)務(wù)邏輯。針對(duì)具體的業(yè)務(wù)流程,會(huì)有不同的控制器。</p><p><b> 4.業(yè)務(wù)層設(shè)計(jì)</b></p><p> 業(yè)務(wù)邏輯層(Business Logic層)接受來(lái)自控制層的調(diào)用,調(diào)用持久層操作數(shù)據(jù)庫(kù)。業(yè)務(wù)邏輯層通過(guò)數(shù)據(jù)持久層與數(shù)據(jù)庫(kù)交互,它封裝了所有的業(yè)務(wù)邏輯處理。</p>
76、<p><b> 5.持久層設(shè)計(jì)</b></p><p> 持久層(Persistence層),負(fù)責(zé)接受業(yè)務(wù)層的調(diào)用,完成具體數(shù)據(jù)存取操作。該層實(shí)現(xiàn)方案采用DIY ORM組件,其核心組件是SuperDAO(DAO操作通用的模板)。此組件相對(duì)于Ibatis、Hibernate等持久化實(shí)現(xiàn)方案,這是最簡(jiǎn)潔的,但是核心功能都具備。由于數(shù)據(jù)源是多樣化的,可能是XML或者是關(guān)系數(shù)據(jù)庫(kù)
77、,而且關(guān)系數(shù)據(jù)庫(kù)又有不同的產(chǎn)品,如SQL Server、MySQL或者Oracle。通過(guò)開(kāi)發(fā)核心組件SuperDAO來(lái)連接業(yè)務(wù)方法及數(shù)據(jù)源,業(yè)務(wù)核心部分就不用關(guān)心數(shù)據(jù)層是如何數(shù)據(jù)庫(kù)操作的,實(shí)現(xiàn)了兩者的解藕。另外,數(shù)據(jù)源可以隨意調(diào)換。如圖3-3為系統(tǒng)持久層實(shí)現(xiàn)示意圖[20]:</p><p> 3.4.2 技術(shù)方案實(shí)現(xiàn)</p><p> 本系統(tǒng)采用的是MVC + ORM組件方案來(lái)實(shí)現(xiàn)的,
78、數(shù)據(jù)庫(kù)使用的mysql。下面簡(jiǎn)要介紹一下MVC + ORM組件的配置以及系統(tǒng)的開(kāi)發(fā)過(guò)程。</p><p> 1.配置mvc.xml</p><p> 根據(jù)既定的約定(URI路徑對(duì)應(yīng)這相應(yīng)的Action包路徑),讀取存儲(chǔ)在mvc.xml文件里面的信息,就可以根據(jù)請(qǐng)求的URI映射到對(duì)應(yīng)的Action包路徑。</p><p> 2.配置c3p0-config.xml
79、</p><p> c3p0數(shù)據(jù)池通過(guò)c3p0-config.xml文件的配置信息,這樣就可以提升數(shù)據(jù)庫(kù)訪問(wèn)的速度。</p><p> 3.Action的編寫過(guò)程</p><p> 編寫的Action實(shí)現(xiàn)了Action接口。實(shí)現(xiàn)execute方法,該方法返回的是導(dǎo)向頁(yè)面的地址。</p><p> Action的作用:通常是發(fā)送到服務(wù)器
80、端的一個(gè)請(qǐng)求,能夠集中控制及處理一些與用戶交互的操作。</p><p> 4.業(yè)務(wù)邏輯編寫過(guò)程</p><p> 編寫AdminService.java、ProductService.java、CustomerService.java、等業(yè)務(wù)邏輯,其中大部分是數(shù)據(jù)操作,包括調(diào)用數(shù)據(jù)庫(kù)連接操作文件DBConnection.java。</p><p> 其中,Ad
81、minService類用來(lái)對(duì)管理員基本情況的各個(gè)屬性執(zhí)行各種SQL語(yǔ)句的方法,執(zhí)行SQL查詢、編輯、刪除以及增加的語(yǔ)句;ProductService類用來(lái)對(duì)貨物基本情況的各個(gè)屬性執(zhí)行各種SQL語(yǔ)句的方法,執(zhí)行SQL查詢、編輯、刪除以及增加的語(yǔ)句;CustomerService類用來(lái)對(duì)發(fā)貨客戶基本情況的各個(gè)屬性執(zhí)行各種SQL語(yǔ)句的方法,執(zhí)行SQL查詢、編輯、刪除以及增加的語(yǔ)句。</p><p> 5.持久類編寫過(guò)
82、程.</p><p> 持久類編寫過(guò)程包括創(chuàng)建POJO(POJO,Plain Ordinary Java Object,即普通的JavaBean)、創(chuàng)建映射文件、創(chuàng)建DAO實(shí)現(xiàn)數(shù)據(jù)操作。其中,創(chuàng)建DAO實(shí)現(xiàn)數(shù)據(jù)操作步驟實(shí)現(xiàn)核心組件SuperDAO的數(shù)據(jù)的增加、編輯、修改、刪除、查詢等操作。</p><p><b> 6.視圖層</b></p><
83、;p> 視圖層大部分是利用JSP頁(yè)面開(kāi)發(fā)技術(shù)。</p><p> 第四章 系統(tǒng)功能模塊的具體實(shí)現(xiàn)</p><p> 4.1 數(shù)據(jù)持久化層</p><p> 4.1.1 持久化層的工作流程</p><p> 持久化層是實(shí)現(xiàn)和數(shù)據(jù)庫(kù)讀取功能相關(guān)的層,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)里數(shù)據(jù)的增刪改查等操作,先來(lái)看看該系統(tǒng)的數(shù)據(jù)持久層是如何工作的。<
84、;/p><p> 4.1.2 透過(guò)實(shí)例來(lái)看持久化層</p><p> 實(shí)現(xiàn)數(shù)據(jù)持久化過(guò)程要經(jīng)過(guò)如下步驟:創(chuàng)建數(shù)據(jù)表、創(chuàng)建POJO、編寫配置文件mvc.xml和數(shù)據(jù)庫(kù)連接池配置文件c3p0.config.xml、編寫Service層以供調(diào)用。下面分別一一闡述。</p><p><b> (1)創(chuàng)建表:</b></p><p&
85、gt; 根據(jù)3.3的數(shù)據(jù)庫(kù)表的設(shè)計(jì),分別創(chuàng)建9個(gè)表和1個(gè)視圖。</p><p> (2)編寫VO包的POJO:</p><p> 每一個(gè)POJO都是標(biāo)準(zhǔn)的java bean。</p><p> ?。?)編寫配置文件:</p><p> 首先編寫的是mvc.xml的配置。</p><p> 該系統(tǒng)使用的是自定義
86、的ORM組件, showSQL屬性可以控制是否在控制臺(tái)顯示SQL語(yǔ)句,在調(diào)試程序的時(shí)候,這樣會(huì)很有用。根據(jù)SQL語(yǔ)句可以找到一些提示信息,以便于改正代碼的錯(cuò)誤。</p><p> 接下來(lái)是數(shù)據(jù)連接池c3p0-config.xml的配置(只顯示了部分,附帶注釋)。</p><p> c3p0數(shù)據(jù)池可以緩存數(shù)據(jù)庫(kù)的連接,緩存查詢結(jié)果,避免每次都重新創(chuàng)建復(fù)雜的一些對(duì)象和過(guò)程,這樣就可以提升數(shù)
87、據(jù)庫(kù)訪問(wèn)的速度。因?yàn)閺膶?shí)踐情況來(lái)看,系統(tǒng)的性能瓶頸出現(xiàn)在數(shù)據(jù)庫(kù)的訪問(wèn)上,所有很有必要提升數(shù)據(jù)庫(kù)的訪問(wèn)速度,現(xiàn)如今,不使用數(shù)據(jù)庫(kù)連接池的系統(tǒng)已經(jīng)很少見(jiàn)了。</p><p> (4)編寫service層</p><p> 所有和數(shù)據(jù)庫(kù)的操作相關(guān)的都放到了service層,這樣做的好處很明顯,可以讓系統(tǒng)各個(gè)部件分工明確,責(zé)任清晰,使得整個(gè)系統(tǒng)更加具有可擴(kuò)展性和可維護(hù)性。</p>
88、<p> 在編寫service層里,大量用到了利用java反射實(shí)現(xiàn)的ORM組件。提升了編碼效率。</p><p> 下面給出一個(gè)例子:(查詢所有貨物的Service包里的一個(gè)類)</p><p> 按照MVC的慣例和構(gòu)架,將由業(yè)務(wù)邏輯層調(diào)用。實(shí)現(xiàn)了業(yè)務(wù)邏輯和底層的數(shù)據(jù)持久相分離。下面將要展示的是業(yè)務(wù)邏輯層。</p><p><b> 4
89、.2 業(yè)務(wù)邏輯層</b></p><p> 4.2.1 業(yè)務(wù)邏輯層的工作流程</p><p> 此系統(tǒng)用到了自己模仿Struts2的一個(gè)MVC組件,之前有過(guò)詳細(xì)介紹。該組件實(shí)現(xiàn)業(yè)務(wù)邏輯的核心是一個(gè)個(gè)的實(shí)現(xiàn)了Action接口的類。</p><p> 實(shí)現(xiàn)了Action接口的類是用戶請(qǐng)求和業(yè)務(wù)邏輯之間的橋梁,每個(gè)Action充當(dāng)客戶的一項(xiàng)業(yè)務(wù)邏輯處理。
90、</p><p> 圖4-3為邏輯層的處理流程圖:</p><p> 在Action接口里,定義了一個(gè)方法:execute,這個(gè)方法用來(lái)實(shí)現(xiàn)邏輯處理,而該方法返回的一個(gè)String字符串就成了邏輯處理完畢之后將要導(dǎo)航到的視圖地址。</p><p> 具體的工作流程如下:</p><p> ?。?)服務(wù)器收到客戶端瀏覽器的發(fā)送請(qǐng)求時(shí),請(qǐng)求
91、URI會(huì)被一個(gè)Filter,即:MVCFilter(servlet規(guī)范里的攔截器)攔截,這個(gè)Filter將攔截的URI進(jìn)行處理,根據(jù)從mvc.xml配置文件讀取的映射信息及已經(jīng)定義好的約定,就可以實(shí)現(xiàn)從URI到Action的映射。</p><p> ?。?)控制器找到了處理該請(qǐng)求的Action包路徑(根據(jù)定義好的約定,可以實(shí)現(xiàn)從URI到Action包路徑的映射)以后,運(yùn)用反射實(shí)例化之,并調(diào)用execute(來(lái)自于
92、Action接口)方法來(lái)獲得返回視圖的地址。最后,控制器負(fù)責(zé)轉(zhuǎn)發(fā)視圖資源請(qǐng)求,由此,將導(dǎo)航到視圖資源地址。</p><p> 什么是既定的,實(shí)現(xiàn)從URI路徑到包路徑映射的約定?</p><p> 這里用一個(gè)例子來(lái)說(shuō)明:</p><p> 首先看一看保存在mvc.xml文件里面的關(guān)于約定的信息。</p><p> 根據(jù)上述配置及約定:一
93、個(gè)“/csu/finance/showStock.do”的URI請(qǐng)求地址對(duì)應(yīng)著的Action是:“csu.action.finance.showStockAction”。</p><p> 這就是既定的約定。這讓我的此次開(kāi)發(fā)避免了很多繁雜的xml配置文件的編寫,因?yàn)橹暗膕truts是每一個(gè)Action都要明確有對(duì)應(yīng)的xml映射才能工作的。(在struts里,如果不明確聲明映射Action的路徑,將采取默認(rèn)的路
94、徑。)</p><p> 4.2.2 透過(guò)實(shí)例來(lái)看業(yè)務(wù)邏輯層</p><p> 以貨物入庫(kù)為例,用具體的流程和代碼來(lái)展示邏輯層是如何工作的。</p><p><b> 具體步驟如下:</b></p><p> ?。?)編寫貨物入庫(kù)頁(yè)面:管理員登陸系統(tǒng)之后,點(diǎn)擊頁(yè)面左側(cè)導(dǎo)航欄的“貨物入庫(kù)”鏈接,進(jìn)入到查詢?nèi)霂?kù)單頁(yè)面。
95、</p><p> 該鏈接的地址是:/csu/storage/showStock.do,根據(jù)我們的約定規(guī)則,此地址即將調(diào)用的Action是csu.action.storage.ShowStockAction。</p><p> 在MVC組件里,利用java的一大動(dòng)態(tài)特性:反射,實(shí)例化該Action,并利用反射調(diào)用ShowStockAction的execute方法。</p>
96、<p> 接下來(lái)是編寫該Action的時(shí)候了。</p><p> (2)編寫ShowStockAction:這是一個(gè)標(biāo)準(zhǔn)的實(shí)現(xiàn)了Action接口的邏輯Action,可以用來(lái)處理我們所需要的邏輯,這是其代碼實(shí)現(xiàn):</p><p> 可以清楚的看到,該Action實(shí)現(xiàn)了mvc.action.Action接口,并且,在execute方法里面,實(shí)現(xiàn)了對(duì)邏輯的處理。在execute
97、方法里,掉用到了Service包,這正是之前的持久化層的一個(gè)重要組成部分。該service類是:csu.service.query.QueryStockService。從命名上,可以看得出來(lái),這個(gè)service的作用是查詢所有采購(gòu)單,也就是入庫(kù)單的。</p><p> (3)編寫對(duì)應(yīng)的Service處理類:該service類的作用就在于對(duì)單表:stock(入庫(kù)單)進(jìn)行查詢操作,在不同的查詢條件下,需要編寫不同的
98、方法。如代碼所示:</p><p> 可以看到,目前的需求來(lái)看,一共有2個(gè)方法。對(duì)于“queryAll”是查詢所有的入庫(kù)單,對(duì)于“queryByStorage_state”,則是根據(jù)是否入庫(kù)這一條件來(lái)查詢的。</p><p> 到這里就結(jié)束了邏輯處理,接下來(lái),只要根據(jù)Action里execute方法返回的值,就可以確定最終的視圖資源。</p><p> 在之前
99、的execute方法里,返回的String是:“"fd-->/storage/storage.jsp"”,這意味著將要由服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)到“/csu/storage/storage.jsp”。</p><p> ?。?)編寫視圖資源:storage.jsp</p><p> Storage.jsp用來(lái)顯示倉(cāng)庫(kù)里貨物入庫(kù)出庫(kù)操作。該頁(yè)面用到了JSTL標(biāo)準(zhǔn)標(biāo)簽庫(kù),使
100、得使用起來(lái),比起古老的jsp腳本要舒適的多。等到服務(wù)器完成了編譯工作,就可以在瀏覽器看到頁(yè)面效果了。這些效果附圖,將在附錄里展示給出來(lái)。</p><p><b> 第五章 結(jié)束語(yǔ)</b></p><p><b> 5.1總結(jié)</b></p><p> 該倉(cāng)庫(kù)信息系統(tǒng)功能切合現(xiàn)代倉(cāng)庫(kù)管理步驟,大部分功能包括管理員登錄驗(yàn)
101、證、貨物信息管理、倉(cāng)庫(kù)配貨過(guò)程管理、發(fā)貨單管理以及發(fā)貨客戶信息管理。系統(tǒng)采用MVC模式設(shè)計(jì),被劃分為持久層(Persistence層)、業(yè)務(wù)邏輯層(Business Runic層)、控制層(Controller層)、表示層(View層)等四層,相應(yīng)的應(yīng)用程序被分成三個(gè)核心模塊:模型(Model)、控制器(Controller)、視圖(View),它們各自處理自己的任務(wù)。其中,表示層負(fù)責(zé)提供訪問(wèn)者數(shù)據(jù)的展示以及操作接口,并把用戶的交互信息
102、傳遞給業(yè)務(wù)邏輯層;控制層負(fù)責(zé)接收來(lái)自表示層提交的訪問(wèn)者請(qǐng)求,調(diào)用業(yè)務(wù)層處理業(yè)務(wù)邏輯,并選擇下一個(gè)頁(yè)面響應(yīng)用戶的請(qǐng)求;業(yè)務(wù)邏輯層接受來(lái)自控制層的調(diào)用,調(diào)用持久層與數(shù)據(jù)庫(kù)進(jìn)行交互;持久層負(fù)責(zé)接受業(yè)務(wù)層的調(diào)用,完成具體的數(shù)據(jù)存取操作。</p><p><b> 本系統(tǒng)的特色在于:</b></p><p> ?。?)分層設(shè)計(jì),系統(tǒng)層次結(jié)構(gòu)清晰。系統(tǒng)采用MVC框架,分層設(shè)計(jì),
103、系統(tǒng)的整體層次性好,開(kāi)發(fā)采用模塊化管理,有利于團(tuán)隊(duì)合作、分工,也有利于運(yùn)行期的維護(hù)。</p><p> (2)采用ORM技術(shù)進(jìn)行持久層設(shè)計(jì)。利用ORM技術(shù)設(shè)計(jì)持久層,系統(tǒng)結(jié)構(gòu)清晰,數(shù)據(jù)庫(kù)操作與業(yè)務(wù)邏輯各自獨(dú)立,有利于系統(tǒng)功能的擴(kuò)展,也有利于提升系統(tǒng)運(yùn)行性能。</p><p> ?。?)通用模塊的設(shè)計(jì)。在處理系統(tǒng)中某些類似問(wèn)題的時(shí)候,通過(guò)抽象其中的相同點(diǎn),區(qū)分出不同點(diǎn),設(shè)計(jì)出獲取系統(tǒng)時(shí)間操
104、作類、數(shù)據(jù)庫(kù)持久化類、分頁(yè)Bean等通用的業(yè)務(wù)模塊。這種處理方法使開(kāi)發(fā)效率有很大的提升。</p><p> ?。?)業(yè)務(wù)流程清晰。通過(guò)詳細(xì)的需求分析,設(shè)計(jì)出清晰的業(yè)務(wù)流程。這不僅使系統(tǒng)的功能與現(xiàn)代倉(cāng)庫(kù)管理的實(shí)際步驟吻合,更使系統(tǒng)的開(kāi)發(fā)變得有序。</p><p><b> 5.2展望</b></p><p> 該倉(cāng)庫(kù)信息系統(tǒng)不但能夠促進(jìn)倉(cāng)庫(kù)企
105、業(yè)規(guī)范管理,提升市場(chǎng)競(jìng)爭(zhēng)力,而且能夠?yàn)閭}(cāng)庫(kù)企業(yè)帶來(lái)巨大的經(jīng)濟(jì)效益。</p><p> 從管理層次上講,由于系統(tǒng)采用B/S模式部署,倉(cāng)庫(kù)管理人員無(wú)論在何時(shí)何地,都能夠訪問(wèn)系統(tǒng),完成倉(cāng)庫(kù)全過(guò)程的協(xié)調(diào)、控制,實(shí)現(xiàn)從網(wǎng)絡(luò)前端到終端客戶的托運(yùn)過(guò)程服務(wù);能夠加快訂單處理速度,縮短貨倉(cāng)庫(kù)轉(zhuǎn)時(shí)間,實(shí)現(xiàn)貨物的快速交付,提升顧客滿意度;也便于加強(qiáng)對(duì)在途貨物的監(jiān)控,及時(shí)發(fā)現(xiàn)、處理配送過(guò)程中的意外事件,確保貨物及時(shí)、安全送達(dá)到目的地。
106、</p><p> 從經(jīng)濟(jì)性上講,該倉(cāng)庫(kù)信息系統(tǒng)的流程規(guī)范、科學(xué),界面友好,易于操作,將為倉(cāng)庫(kù)企業(yè)贏得更多商機(jī),帶來(lái)更多的客戶資源,提升企業(yè)的經(jīng)濟(jì)效益。</p><p> 從系統(tǒng)研發(fā)技術(shù)上講,該倉(cāng)庫(kù)信息系統(tǒng)采用MVC框架,提升了系統(tǒng)的運(yùn)行性能及安全性能,改善了軟件的易管理性,便于系統(tǒng)升級(jí)、跨平臺(tái)移植,其功能切合倉(cāng)庫(kù)管理流程的特征及分層設(shè)計(jì)的理念,可供相關(guān)行業(yè)借鑒,具有較好的研究、推廣價(jià)
107、值。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 萬(wàn)曉,周寧;我國(guó)商業(yè)連鎖企業(yè)的物流系統(tǒng)配送分析[J];北方交通大學(xué)學(xué)報(bào)(社科版);2003年02期 </p><p> [2] 文龍光,單山鳴;倉(cāng)庫(kù)管理與物流配送[J];經(jīng)濟(jì)師;2003年02期 </p><p> [3] 梁紅巖;論物流
108、配送是連鎖經(jīng)營(yíng)成功的關(guān)鍵環(huán)節(jié)[J];生產(chǎn)力研究;2002年04期 </p><p> [4] 李云,王平;共同配送體系結(jié)構(gòu)[J];重慶郵電學(xué)院學(xué)報(bào)(自然科學(xué)版);2002年02期 </p><p> [5] 劉大風(fēng),施放;電子商務(wù)與倉(cāng)庫(kù)管理協(xié)同運(yùn)行模式探索[J];商業(yè)研究;2002年02期 </p><p> [6] 李慎恒;我國(guó)第三方物流企業(yè)的現(xiàn)狀及發(fā)展對(duì)策
109、[J];經(jīng)濟(jì)體制改革;2003年02期 </p><p> [7] 徐同連;共同配送合并策略的仿真研究與系統(tǒng)實(shí)現(xiàn)[D];吉林大學(xué);2007年 </p><p> [8] 王雪峰;連鎖經(jīng)營(yíng)企業(yè)物流配送系統(tǒng)集成規(guī)劃模型及算法研究[D];上海交通大學(xué);2008年 </p><p> [9] 寧方華,陳子辰,熊勵(lì),梅益;電子商務(wù)中制造業(yè)的物流策略[J];制造業(yè)自動(dòng)化;
110、2004年05期 </p><p> [10] 江瑋璠;何建民;金琳;;基于AHP的模糊綜合評(píng)價(jià)法在倉(cāng)庫(kù)管理伙伴選擇中的應(yīng)用[J];價(jià)值工程;2005年12期 </p><p> [11] 王焰;中國(guó)連鎖經(jīng)營(yíng)商業(yè)企業(yè)發(fā)展戰(zhàn)略研究[D];西北農(nóng)林科技大學(xué);2001年 </p><p> [12] 彭海珍;中國(guó)連鎖經(jīng)營(yíng)發(fā)展戰(zhàn)略研究[D];河海大學(xué);2002年 &l
111、t;/p><p> [13] 馬麗;對(duì)中國(guó)大型零售企業(yè)存在問(wèn)題的分析[D];哈爾濱工程大學(xué);2002年 </p><p> [14] 陳業(yè)瑋;我國(guó)經(jīng)濟(jì)型飯店連鎖化擴(kuò)張路徑研究[D];浙江大學(xué);2002年 </p><p> [15] 吉文;廣西柳州商控物流中心的建設(shè)研究[D];南京理工大學(xué);2002年 </p><p> [16] 許道濤
112、;多時(shí)期多配送中心選址點(diǎn)的最優(yōu)變化軌跡問(wèn)題研究[D];浙江大學(xué);2004年 </p><p> [17] 杜亮;連鎖經(jīng)營(yíng)企業(yè)物流配送的研究[D];武漢理工大學(xué);2004年 </p><p> [18] 嚴(yán)峻;基于XML的連鎖企業(yè)物流配送信息系統(tǒng)研究與實(shí)現(xiàn)[D];西安理工大學(xué);2004年 </p><p> [19] 張玉剛;論我國(guó)零售業(yè)物流的發(fā)展[D];中央民
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于J2EE開(kāi)發(fā)公共資產(chǎn)管理信息系統(tǒng).pdf
- 基于J2EE架構(gòu)的管理信息系統(tǒng)的研究.pdf
- 基于J2EE的稅務(wù)管理信息系統(tǒng)研究.pdf
- 基于J2EE架構(gòu)的超市綜合管理信息系統(tǒng).pdf
- 基于J2EE的干部教育培訓(xùn)管理信息系統(tǒng).pdf
- 基于J2EE技術(shù)的管理信息系統(tǒng)設(shè)計(jì)與開(kāi)發(fā).pdf
- 基于J2EE的成績(jī)管理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于J2EE架構(gòu)的企業(yè)管理信息系統(tǒng)設(shè)計(jì).pdf
- 基于J2EE的管理信息系統(tǒng)的開(kāi)發(fā)與研究.pdf
- 基于J2EE的教務(wù)管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于J2EE房產(chǎn)管理信息系統(tǒng)的研究與實(shí)現(xiàn).pdf
- 基于J2EE的基站管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于J2EE的辦公管理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于J2EE和Web Services的電廠檢修管理信息系統(tǒng).pdf
- 基于J2EE高校學(xué)籍管理信息系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn).pdf
- 基于J2EE的房屋租賃管理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于J2EE架構(gòu)燃料管理信息系統(tǒng)的研究與實(shí)現(xiàn).pdf
- 基于J2EE的油庫(kù)管理信息系統(tǒng)集成與設(shè)計(jì).pdf
- 基于J2EE架構(gòu)的銷售管理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于J2EE技術(shù)的船員管理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論