外賣訂餐系統(tǒng)的設(shè)計與實現(xiàn)論文_第1頁
外賣訂餐系統(tǒng)的設(shè)計與實現(xiàn)論文_第2頁
外賣訂餐系統(tǒng)的設(shè)計與實現(xiàn)論文_第3頁
外賣訂餐系統(tǒng)的設(shè)計與實現(xiàn)論文_第4頁
外賣訂餐系統(tǒng)的設(shè)計與實現(xiàn)論文_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、北京師范大學(xué)珠海分校本科生畢業(yè)論文論文題目:外賣訂餐管理系統(tǒng)的設(shè)計與實現(xiàn)2010年4月30日北京師范大學(xué)珠海分校學(xué)位論文寫作聲明和使用授權(quán)說明學(xué)位論文寫作聲明本人鄭重聲明:所呈交的學(xué)位論文,是本人在導(dǎo)師的指導(dǎo)下,獨立進行研究工作所取得的成果。除文中己經(jīng)注明引用的內(nèi)容外,本論文不含任何其他個人或集體已經(jīng)發(fā)表或撰寫過的作品或成果。對本文的研究做出重要貢獻的個人和集體,均已在文中以明確方式標(biāo)明。本聲明的法律結(jié)果由本人承擔(dān)。論文作者簽名:日期:年月日學(xué)位論文使用授權(quán)說明本人完全了解北京師范大學(xué)珠海分校關(guān)于收集、保存、使用學(xué)位論文的規(guī)定,即:按照學(xué)校要求提交學(xué)位論文的印刷本和電子版本;學(xué)校有權(quán)保存學(xué)位論

2、文的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)校可以采用影印、縮印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的的前提下,學(xué)??梢詫W(xué)位論文編入有關(guān)數(shù)據(jù)庫,提供網(wǎng)上服務(wù)。(保密論文在解密后遵守此規(guī)定)導(dǎo)師簽名:論文作者簽名:口期:北京師范大學(xué)珠海分校信息技術(shù)學(xué)院北京師范大學(xué)珠海分校信息技術(shù)學(xué)院 隨著外賣訂餐在高校越來越普及,傳統(tǒng)的電話訂餐給顧客跟外賣店帶來不方便,如何使訂餐更快速,更方便已成為眾多高校學(xué)生關(guān)注的問題了。本外賣訂餐管理系統(tǒng)是針對高校外賣店進行具體的需求分析,釆用00A(面向?qū)ο蠓治?和采用UML工具輔助開發(fā)分析,基于S2SH(Struts2+Spring+Hibernate)

3、架構(gòu)進行設(shè)計和開發(fā)。論文主要描述外賣訂餐管理系統(tǒng)的開發(fā)流程,分別從需求分析和系統(tǒng)設(shè)計、詳細設(shè)計與系統(tǒng)實現(xiàn)這幾個階段進行描述。關(guān)鍵詞:訂餐管理系統(tǒng)S2SH00AABSTRACTWithmoreandmorepopularinuniversitiesordertake-out,duetothetraditionaltelephonereservationforcustomerstobringinconveniencetake-awaymeal,howtomakemorequickly,moreconvenienthasbecometheconcernofthestudents.Thetake-aw

4、aymealmanagementsystemincollegesanduniversitiesistheconcretetake-awaydemandanalysis,usingobject-orientedanalysis(00A)andusingUMLtoolstoassistinthedevelopment,usingStruts2Spring-Hibernateframeworktodesignanddevelopment.Thesismainlydescribestake-awaymealmanagementsystemprocess,separatelyfromthedemanda

5、nalysisandsystemdesign,detaileddesignandrealizationofthissystemaredescribedseveralstagesKeywords:mealmanagementsystemS2SH00A目錄TOC o 1-5 h z HYPERLINK l bookmark10 一、緒論11.1背景1 HYPERLINK l bookmark12 1.2北師大珠海分校外賣訂餐的現(xiàn)狀分析1 HYPERLINK l bookmark14 1.3外賣訂餐管理系統(tǒng)的可行性分析與作用1 HYPERLINK l bookmark16 1.4系統(tǒng)簡介2 HYPE

6、RLINK l bookmark18 二、相關(guān)技術(shù)的介紹31STRUTS2技術(shù)介紹32.2Hibernate技術(shù)介紹43spring技術(shù)介紹52.4dwr技術(shù)介紹6三、系統(tǒng)需求81UML7 HYPERLINK l bookmark22 3.2需求分析8 HYPERLINK l bookmark24 3.3系統(tǒng)功能8四、系統(tǒng)設(shè)計11 HYPERLINK l bookmark28 1系統(tǒng)總體結(jié)構(gòu)11 HYPERLINK l bookmark30 4.2系統(tǒng)架構(gòu)方式113HIBERNATE自動建表11 HYPERLINK l bookmark42 4.4詳細設(shè)計174.4.1類設(shè)計174.4.2流程

7、分析194.4.3時序圖分析20 HYPERLINK l bookmark66 4.4主要界面設(shè)計26 HYPERLINK l bookmark104 五、系統(tǒng)實現(xiàn)30 HYPERLINK l bookmark106 開發(fā)工具與環(huán)境30 HYPERLINK l bookmark108 環(huán)境搭配30 HYPERLINK l bookmark110 編碼實現(xiàn)323.1DA0層的編寫335.3.2Service層的編寫345.3.3WEB層的編寫355.3.4DWR應(yīng)用38結(jié)論42 HYPERLINK l bookmark172 參考文獻43致謝44北京師范大學(xué)珠海分校信息技術(shù)學(xué)院北京師范大學(xué)珠海分

8、校信息技術(shù)學(xué)院第 頁共44頁第 頁共44頁一、緒論1.1背景進入21世紀以來,餐飲行業(yè)以年均20%的增長速度,成為國民經(jīng)濟中的發(fā)展最快的行業(yè)之一。隨著人們生活水平的不斷提高,人們其至想要不出門就能吃到可口的飯菜一一這就是外賣。在我國高校內(nèi)餐飲行業(yè)外賣行業(yè)更是發(fā)展最快的一個行業(yè),在北師大珠海分校每年都有兒間新的外賣店的產(chǎn)生。外賣訂餐已經(jīng)成為北師大珠海分校學(xué)生生活中不可缺的一部分,而訂餐的方式也隨著學(xué)生們的要求提高,不斷的多樣化和成熟化。12北師大珠海分校外賣訂餐行業(yè)的現(xiàn)狀分析依靠電話訂餐是北師大目前最主要的訂餐方式,如比較大的外賣店關(guān)東、喜苑、紅夢緣都是使用電話訂餐方式,此種訂餐方式有不少的缺陷

9、,比如:時效問題、打電話的成本等等。目前北師大外賣訂餐行業(yè)的現(xiàn)狀分析如下:(1)外賣店數(shù)量眾多,各店競爭較大。(2)外賣店多數(shù)實行人工方式訂餐,即打電話訂餐登記。這種訂餐方式造成訂餐很不方便特別在訂餐高峰期,經(jīng)常出現(xiàn)打電話打不通的現(xiàn)象。(3)外賣店多數(shù)沒有實行市場分析,一些菜式在頂峰期出現(xiàn)缺菜現(xiàn)象,而一些菜式卻出現(xiàn)積累現(xiàn)象,造成了資源的浪費和經(jīng)濟損失。(4)外賣店沒有對外賣進行財務(wù)管理,造成對店內(nèi)資金管理不明確和店員濫用資金的可能。(5)無法為店內(nèi)管理層提供準(zhǔn)確的決策信息,掌握及時的市場消息。通過分析北師大的外賣行業(yè)的現(xiàn)狀,不難發(fā)現(xiàn)國內(nèi)高校的外賣店大多數(shù)都是依靠手工的管理方式,沒有實行外賣訂餐

10、管理的信息化,所以造成了不少問題。1.3外賣訂餐管理系統(tǒng)的可行性分析及其作用依靠傳統(tǒng)的電話訂餐實行外賣訂餐不僅造成學(xué)生的方便,也對外賣店的經(jīng)營產(chǎn)生了不良影響。實行電話訂餐有以下幾個缺點:一、在訂餐高峰期,一架電話根本那么多的訂餐顧客,有時候要多次撥打才能接通,這種情況下有時也造成雙方語氣匆忙,態(tài)度暴躁,給訂餐帶來極大的不便;二、點菜不方便,學(xué)生如果沒有點菜單,很難點菜,另外外賣店得每棟宿舍每間地派傳單,無疑乂是一筆不小的開資了;三、學(xué)生必須支付打電話的成本,雖然有些外賣店有校園短號但對于一些沒開通校園短號的學(xué)生也不是很方便。通過上面分析,電話訂餐己成為一種阻礙外賣行業(yè)發(fā)展的落后方式了,實行訂餐

11、管理的信息化迫在眉睫,利用外賣訂餐管理系統(tǒng)對外賣流程實行信息化,不僅給訂餐顧客帶來了方便更給外賣店帶來了經(jīng)濟利益。外賣訂餐管理給顧客和外賣店帶來了雙贏。對于顧客,不用再擔(dān)心高峰期打電話訂餐失敗了,顧客可以在網(wǎng)站瀏覽相關(guān)菜式,添加喜歡的菜式,解決了以前的那種電話訂餐造成訂錯菜式的現(xiàn)象。對于外賣店更是帶來了長遠的利益,減少外賣店的人力和財力,通過訂餐管理系統(tǒng)使外賣店能夠及時掌握市場信息,推銷新菜式和實行更有效的經(jīng)營策略。1-4系統(tǒng)簡介本系統(tǒng)主要針對高校的外賣訂餐流程和對訂單處理實行信息化而構(gòu)建出來的B/S平臺,學(xué)生通過瀏覽器上網(wǎng)訪問訂餐網(wǎng)站可以實現(xiàn)網(wǎng)上瀏覽菜式和訂餐功能,店員通過后臺管理登陸實現(xiàn)對

12、訂單的處理,通過信息化處理給學(xué)生訂餐帶來方便更給外賣店管理人員帶來了長遠利益。二、相關(guān)技術(shù)介紹本外賣訂餐管理系統(tǒng)選取S2SH架構(gòu)來設(shè)計和開發(fā),S2SH是SSH升級版,以前的SSH架構(gòu)中的用到的MVC框架是struts,而S2SH中的MVC框架用到的是struts2,struts2與struts有很大的區(qū)別,配置更靈活,開發(fā)更方便,利用其開發(fā)的插件與hibernate,spring能達到無縫集成,本系統(tǒng)采用三層架構(gòu),用struts2處理前端,hibernate封裝對數(shù)據(jù)庫的訪問,spring對struts2、hibernate和業(yè)務(wù)邏輯層中進行對象的管理,三個框架各司其職,有利于項目開發(fā)的分工,

13、使項目開發(fā)達到更靈活性和可維護性。S2SH三層架構(gòu)如圖1所示:Spring圖1:S2SH三層架構(gòu)2.1struts2技術(shù)介紹Struts2是目前比較成熟的Web開發(fā)框架,Struts2框架是Struts1.X的替代版本,Struts2框架整合了Struts1.X框架和WebWork框架的優(yōu)點。相對Struts1.X,Struts2已經(jīng)有了非常大的改變,去掉了ActionForm,降低了框架組件之間的耦合性,Struts2的Action只是普通的Java類(POJO),給模塊測試工作帶來了極大的方便。Struts2提供了強大的整合能力,支持多種返回結(jié)果類型,改進了Struts1.X的標(biāo)簽庫,引入

14、0GNL表達式和值棧的概念,給開發(fā)者帶來了更好的體驗工。從全局的角度來看,Struts2是一個pull(拉)類型的MVC(或者MVC2)框架,它與傳統(tǒng)類型的MVC框架的不同之處就在于在Struts2中,Action擔(dān)任的是模型的角色,而非控制器的角色,雖然它的角色仍然有些重疊?!皃ull”的動作由視圖發(fā)起,它直接從Action里拉取所需的數(shù)據(jù),而不是另外還需要一個單獨的模型對象存在。匸9edsQsetXxx()execute()getXxx()圖2:MVC/Struts2架構(gòu)ActionModelController圖2描述了Struts2架構(gòu)中的模型、視圖和控制器??刂破魍ㄟ^Struts2分

15、發(fā)Servlet濾器(也就是人們常說的攔截器)來實現(xiàn),模型通過Action實現(xiàn),視圖則通過結(jié)果類型和結(jié)果組合實現(xiàn)。值棧和OGNL提供了公共的線程和鏈接,并使得不同組件可以相互集成。Struts2設(shè)計的精巧之處就是使用了Action代理,Action代理可以根據(jù)系統(tǒng)的配置,加載一系列的攔截器,由攔截器將HttpServletRequest參數(shù)解析出來,傳入Actiono同樣,Action處理的結(jié)果也是通過攔截器傳入HttpServletResponse,然后由HttpServletRequest傳給用戶。其實,該處理過程是典型的A0P(面向切面編程)的方式,Struts2處理過程模型如圖3所示:

16、用門請戎圖3:Struts2處理過程模型2.2hibernate技術(shù)介紹Hibernate是一個優(yōu)秀的ORM框架,通過使用Hibernate框架,允許開發(fā)人員使用面向?qū)ο蟮姆绞綄?shù)據(jù)庫進行訪問,避免釆用JDBC訪問,造成面向?qū)ο缶幊膛c面向過程編程的沖突。在這種方式下,企業(yè)應(yīng)用的面向?qū)ο蠓治?、面向?qū)ο笤O(shè)計和面向?qū)ο缶幊桃幻}相承,讓系統(tǒng)分析、設(shè)計更加簡潔。Hibernate作為JavaEE持久化的標(biāo)準(zhǔn)方案,使用傳統(tǒng)的POJO作為系統(tǒng)的持久化類,具有低侵入式設(shè)計,不會造成代碼污染。系統(tǒng)的持久化類無需繼承任何Hibernate基類,或者實現(xiàn)任何Hibernate接口,提供了極好的代碼復(fù)用。Hibern

17、ate與數(shù)據(jù)庫、應(yīng)用程序關(guān)聯(lián)關(guān)系如圖4所示:應(yīng)用程序(Application)PPO映射框架(PPOMappingFramework)Hibernate數(shù)二聒持久層Hibernate配宣文件XML映射(XIvILMapping)數(shù)據(jù)庫層(Database)iiumsIriET.圖4:Hibernate關(guān)聯(lián)關(guān)系圖雖然Hibernate這個框架問世的時間不長,但己經(jīng)成為目前最流行的持久層解決方案,較之另一個持久層框架iBATIS,Hibernate更具有面向?qū)ο蟮奶卣鳎惠^之傳統(tǒng)的EntityEJB的持久層解決方案,Hibernate則采用低侵入式的設(shè)計,即完全釆用普通的Java對象(POJO),而

18、不必繼承Hibernate的某個超類或?qū)崿F(xiàn)Hibernate的某個接口。Hibernate是面向?qū)ο蟮某绦蛟O(shè)計語言和關(guān)系數(shù)據(jù)庫之間的橋梁,Hibernate允許程序開發(fā)者釆用面向?qū)ο蟮姆绞絹聿僮鲾?shù)據(jù)庫。2.3spring技術(shù)介紹Spring是一個優(yōu)秀的Web開發(fā)框架。它是一個分層的架構(gòu),由7個模塊組成,如圖5所示。其中比較重要的是核心容器模塊,其他模塊構(gòu)建在這個核心容器之上,核心容器定義創(chuàng)建、配置和管理Bean的方式,它提供Spring框架的基本功能。其主要組件是BeanFactory,它是工廠模式的實現(xiàn)。BeanFactory通過使用反轉(zhuǎn)控制(I0C)模式,將應(yīng)用程序的配置和依賴性規(guī)范與實際

19、的應(yīng)用程序代碼分開SpringAOPSource-levelmetadataAOPinfrastructureSpringORMHibernatesupportiBatssupportJDOsupportSpringWebWebA)pllcabonContextMutlpartresolverWebunitiesSpringDAOTransactioninfTasIructureJOBCsupportDAOsupportSpringContextApplicationcontextUlsupportWlkh伽JNDLEJBsupportandremodelingMailSpringWebMVC

20、WeOMVCFramewoirkWebViewsJSPA/elocityPDF,Exp城SpringCoreSupportinguUitiBSBeancortaine圖5spring七大模塊組成Spring框架的每個模塊(或組件)都可以單獨存在,或者與其他一個或多個模塊聯(lián)合實現(xiàn)。每個模塊的功能如下:核心容器:核心容器提供Spring框架的基本功能。核心容器的主要組件是BeanFactory,它是工廠模式的實現(xiàn)。BeanFactory使用控制反轉(zhuǎn)(I0C)模式將應(yīng)用程序的配置和依賴性規(guī)范與實際的應(yīng)用程序代碼分開。Spring上下文:Spring上下文是一個配置文件,向Spring框架提供上下文信

21、息。Spring上下文包括企業(yè)服務(wù),例如JNDIEJB、電子郵件、國際化、校驗和調(diào)度功能。SpringAOP:通過配置管理特性,SpringAOP模塊直接將面向方面的編程功能集成到了Spring框架中。所以,可以很容易地使Spring框架管理的任何對象支持A0PoSpringAOP模塊為基于Spring的應(yīng)用程序中的對象提供了事務(wù)管理服務(wù)。通過使用SpringAOP,不用依賴EJB組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中。SpringDAO:JDBCDA0抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來管理異常處理和不同數(shù)據(jù)庫供應(yīng)商拋出的錯誤消息。異常層次結(jié)構(gòu)簡化了錯誤處理,并且極大地降低了

22、需要編寫的異常代碼數(shù)量(例如打開和關(guān)閉連接)。SpringDAO的面向JDBC的異常遵從通用的DA0異常層次結(jié)構(gòu)。SpringORM:Spring框架插入了若干個0RM框架,從而提供了0RH的對象關(guān)系工具,其中包括JDO、Hibernate和iBatisSQLMapo所有這些都遵從Spring的通用事務(wù)和DA0異常層次結(jié)構(gòu)。SpringWeb模塊:Web上下文模塊建立在應(yīng)用程序上下文模塊之上,為基于Web的應(yīng)用程序提供了上下文。所以,Spring框架支持與JakartaStruts的集成。Web模塊還簡化了處理多部分請求以及將請求參數(shù)綁定到域?qū)ο蟮墓ぷ鳌pringMVC框架:MVC框架是一個

23、全功能的構(gòu)建Web應(yīng)用程序的MVC實現(xiàn)。通過策略接口,MVC框架變成為高度可配置的,MVC容納了大量視圖技術(shù),其中包括JSP、Velocity、Tiles、iText和POI。C5:2.4DWR技術(shù)介紹DWR是一種AJAX解決方案。DWR包括一個java庫,以及一套javascript,使得我們可以用一種非常簡單的方式,在頁面上使用javascript直接調(diào)用后臺的java對象。DWR的javascript庫包括兒個部分:dwr的javascript引擎(即對AJAX調(diào)用的封裝)、dwr提供的一些非常有用的輔助javascript函數(shù)庫、以及dwr自動幫我們生成的專門用于調(diào)用后臺JavaBea

24、n方法的javascript庫。DWR在運行的時候,動態(tài)生成一個javascript庫,這個庫是對后臺javabean調(diào)用的封裝,我們可以直接使用這個庫來實現(xiàn)直接調(diào)用JavaBean的目的6,其流程圖6所示:圖6:DWR調(diào)用過程本系統(tǒng)采用00A(面向?qū)ο蠓治?和UML(UnifiedModelingLanguage)工具為指導(dǎo),本章主要對系統(tǒng)的需求以及系統(tǒng)功能進行分析描述。3.1UMLUML(UnifiedModelingLanguage)是一種用來創(chuàng)建程序模型的圖形語言(即帶有語意的一種圖形記號)常用的UML圖有類圖、時序圖、用例圖、活動圖和狀態(tài)圖。3.2需求分析本外賣訂餐管理系統(tǒng)包括兩個子

25、系統(tǒng),前臺訂餐和后臺管理,前臺訂餐是供用戶瀏覽菜式和提交訂單進行訂餐;后臺管理是供餐廳管理人員進行外賣訂單管理、菜式管理、統(tǒng)計報表管理、系統(tǒng)管理。3.3系統(tǒng)功能本系統(tǒng)采用面向?qū)ο蠓治龇椒ǎ旅媸菍Ρ鞠到y(tǒng)的兩個子系統(tǒng)進行分析說明。(1)前臺管理系統(tǒng)前臺管理系統(tǒng)供用戶瀏覽菜式,進行菜式添加到購菜車,用戶可以對購菜車進行更新、清除,用戶提交訂單后可以在訂單列表查看外賣狀態(tài),用例如圖7所示:圖7:用戶用例圖(2)后臺管理系統(tǒng)后臺管理系統(tǒng)有菜式管理、外賣訂單管理、統(tǒng)計報表管理和系統(tǒng)管理四大模塊。頂層用例:后臺管理有兩大角色即店長跟店員,店長擁有系統(tǒng)全部權(quán)限,店員只能操作菜式管理跟外賣訂單管理兩大模塊。其

26、頂層用例如圖8:菜式管理:店員店長圖&:可以對菜式進行查看、添加、修改和刪除。用例如圖9所示。店員圖9菜式管理用例圖北京師范大學(xué)珠海分校信息技術(shù)學(xué)院北京師范大學(xué)珠海分校信息技術(shù)學(xué)院外賣訂單管理:可以對外賣訂單的狀態(tài)進行查看,改變。用例如圖10所示:店員圖10外賣訂單管理用例圖(3)統(tǒng)計報表管理菜式統(tǒng)計報表:對每月的菜式進行統(tǒng)計,可以查看哪些菜式在本月份銷量比較好。用戶統(tǒng)計報表:對用戶進行統(tǒng)計,可以對其經(jīng)常訂餐的用戶實行優(yōu)惠政策。(4)系統(tǒng)管理用戶維護:可以查看所有己注冊的用戶,查看該用戶的所有訂單列表,和刪除該用戶。店員維護:可以對店員進行添加、刪除、更新。修改密碼:輸入舊密碼,如果舊密碼輸入

27、不正確會進行提示叫你重新輸入,輸入正確后再輸入新密碼和確認新密碼可進行修改。用例圖如圖11所示:圖門系統(tǒng)管理用例第10頁共44頁北京師范大學(xué)珠海分校信息技術(shù)學(xué)院北京師范大學(xué)珠海分校信息技術(shù)學(xué)院第 頁共44頁第 頁共44頁v系統(tǒng)設(shè)計本系統(tǒng)的設(shè)計采用00A(面向?qū)ο蠓治觯┖屠肬ML工具輔助開發(fā)設(shè)計。4.1系統(tǒng)總體結(jié)構(gòu)通過前一章的需求分析跟功能分析可以得出本系統(tǒng)總體結(jié)構(gòu)如圖12所示:圖12系統(tǒng)總體框架圖4.2系統(tǒng)架構(gòu)方式本系統(tǒng)采用三層架構(gòu)模式,即展現(xiàn)層,業(yè)務(wù)邏輯層,數(shù)據(jù)訪問層,各層之間都獨立,展現(xiàn)層與業(yè)務(wù)邏輯層接口通信,業(yè)務(wù)邏輯層與數(shù)據(jù)訪問層接口通信,數(shù)據(jù)訪問層直接跟數(shù)據(jù)庫打交道,這樣具有很好的解

28、耦性,每一層邏輯改變不會影響到另一層,對項目以后的可維護性及團隊開發(fā)具有很大的作用,三層架構(gòu)流程如圖13所示:圖13三層架構(gòu)4.3Hibernate自動建表傳統(tǒng)的數(shù)據(jù)庫設(shè)計都是先經(jīng)過建立E-R圖,然后通過E-R圖生成數(shù)據(jù)表。而Hibernate開發(fā)團隊提倡我們用另外一種開發(fā)模式,就是先建立實體類和編寫實體類映射文件,然后通過實體類和映射文件自動生成數(shù)據(jù)表。這種開發(fā)模式也是體現(xiàn)出來00D思想,數(shù)據(jù)的持久化這些都是非常機械的,基本沒有變動的,hibernate就是把這些行為抽取出來自動完成并在效率上做一優(yōu)化等,讓我們輕松實現(xiàn)數(shù)據(jù)庫的移植。這樣我們在開發(fā)中更關(guān)注于類中的設(shè)計而不必受到數(shù)據(jù)庫的牽制,因

29、為數(shù)據(jù)庫本身就跟面向?qū)ο蟠嬖谧杩?。國?nèi)有位領(lǐng)域驅(qū)動設(shè)計(DDD)專家曾經(jīng)發(fā)表了一遍文章數(shù)據(jù)庫己死,在文章中他闡述了數(shù)據(jù)庫成為了大多數(shù)企業(yè)應(yīng)用的主要瓶頸,也成為了運行環(huán)境中最不具伸縮性的一層,他認為軟件開發(fā)應(yīng)集中在領(lǐng)域分析,數(shù)據(jù)庫應(yīng)該是為領(lǐng)域服務(wù)而不能讓我們的領(lǐng)域?qū)邮軤恐朴跀?shù)據(jù)庫。本系統(tǒng)是釆用建立實體類和編寫映射文件來生成數(shù)據(jù)表的開發(fā)模式。(1)實體類POJO設(shè)計類名功能說明User用戶Admin管理員Item訂單項Menu菜式Order訂單實體類User屈性類型屈性說明idIntegerusernameSuing姓名passwordSuing密碼ordersList訂單列表實體類Admin屈性

30、類型屈性說明idIntegerusernameSuing姓名passwordSuing密碼typeInteger管理員類型實體類Item屈性類型屈性說明idIntegeritemNameSuing訂單項名稱itemPiicedouble訂單項價格itemNumberInteger訂單項數(shù)呈itemTypeInteger訂單項類型ltemhitroductionStrmg訂單項描述orderOrder所屈訂單實體類Menu屈性類型屈性說明idIntegernameStrmg菜式名稱pricedouble菜式價格typeInteger菜式類型stateInteger菜式狀態(tài)ltemhitroduc

31、tionStrmg菜式簡介實體類Order屈性類型屈性說明idIntegerphoneStrmg電話號碼addressStrmg宿舍地址totaldouble總價stateInteger訂單狀態(tài)dateDate訂單日期barcodeOrder訂單流水號userUser所屈用戶itemsList所有訂單項(2)hibernate映射文件編寫User.hbm.xml!DOCTYPEhibernate-mappmgPUBLIC-/Hibernate/HibernateMappingDTD3.0/7ENnhttpV/liibernate.soiucefbrge.nevhibeniate-mapping

32、-S.O.dtdpropeiTyname=npasswordntype=Hjavaang.SuingJAdmin,hbm.xmlItenLhbm.xmlMenu.hbm.xmlOrder,hbm.xmlJJ4.4詳細設(shè)計本節(jié)闡述了如何對本系統(tǒng)的對象類進行分析設(shè)計、系統(tǒng)流程分析以及如何用時序圖對系統(tǒng)中的對象交互進行描述。4.4.1類設(shè)計(1)類關(guān)系通過面向?qū)ο蠓治龅贸鲈诒鞠到y(tǒng)中用戶跟訂單、訂單項,訂單跟訂單項,購菜車跟訂單項都是一對多關(guān)系,用戶跟購菜車,訂單跟購菜車都是一對一關(guān)系。其關(guān)聯(lián)關(guān)系如圖14所示:圖14類關(guān)聯(lián)(2)DAO與業(yè)務(wù)邏輯類設(shè)計AdminDao與AdminService類設(shè)計0I

33、terfaceAJminDaoIAdminSerMcelmpIadninD3O:AdminDaoGqtAdminDac():AdnirDaoOsetAdmnDac(inadmrDao:AdnirDao):vadaddftdmin():vadQcFeckLogin(iniserncme:9ring,inpassword:Stiing.in:rter)QgdAdmnById(inadminld:Irteger)lislAdmirvO;LbIGu43ateAdmir():voidQcFeclAdmnExi$t(inusemame:Sbing):bodean0cbQckAnothQrAdninExis

34、t(inkypo!Irt09Qrinu&amrna!Sbng)!bodcarUserDao與UserService類設(shè)計GUsrService4UserServicelmpluserDao:UserDaoOgetUserDoO:LkerDaoOsetUserDao(inuseiDao:UseiOao):void0addJseiO:vddGcheckUseiEnst(inuseiname:9ling):bodeanGcheckLogin(inusername:Stling,inpasswad:String)OupdateUsei():voidGgetUserByldAncPassvkord(in

35、userid:Integer,inpassword:String):bodeanlistUse15():ListMenuDao與MenuService類設(shè)計MenuDaoImpIMenuServicelmplGadcMeni/);vcidGdeleteMeru();voidGgetMeniByldtinmeruId;Integer)令lislMenus();List&upd-ateMenuO;vddOlistCriM&nusQ!ListOlistMenusByType(int!Irtegr)!ListmenuDao;MencDao0gelMencDao():MenuDaosetMencDaoC

36、innoencDo:fvbnuDao):vcid&adcMeni();void&deleteMenu();gidgetMenuById(inmnuld;Inieger)OlistMenus();ListupdateMnuO:voidQilistOnMenusQ!ListlistMenusByType(intypeInteger)ListOrderDaoImpI0addOi*dei(inorder!Oder)voidOrderServicelmpIOrderDao與OrderService類設(shè)計adeiDo!OiderDaoQgetQ-cbi8yldinorderld!Inter)!Oder.l

37、istOdeiO:ListQupdateOrdei(inorder:Oder):void&listQdeiByUserld(inuserid:Int電孚r):ListQlistQdBySate(instate:Inter):ListQg就Or&iDaoO!CrcteiQaoQsetOicfeiOao(inoi-derDo!Q-cfeiDao)!voidQadcfc*dGi(inorder!Oder)!voidQgetQdeiById(inorderld:Integer)!OnderQlistddeiO!ListQupdateOiderQnonderOlder)!voidQlistOdeiByL

38、fcerd(inuserfcl!Inter)!ListQlistOdei8ySlate(instate:Integer):List4.4.2流程分析1.前臺用戶訂購?fù)赓u流程:2.后臺管理員訂單處理流程:4.4.3時序圖分析用戶登錄用例實現(xiàn)A、時序圖B、描述1)輸入信息輸入用戶和密碼,提交表單2)表單驗證LoginUserAction會調(diào)用validate方法進行表單驗證,女口果用戶輸入不合法就會轉(zhuǎn)向login,jsp提示用戶輸入不合法3)進入業(yè)務(wù)方法LoginUserAction進入execute方法進行登錄驗證4)獲取userService接口LoginiUserAction類獲取UserS

39、ervice接口,以便調(diào)用UserServcie關(guān)于登錄checkLogin的方法。5)登錄調(diào)用userDao的checkLogin方法進行登錄驗證。6)返回結(jié)果如果用戶需和密碼輸入正確進入系統(tǒng)主頁面,否則提示用戶名或密碼輸入錯誤。用戶修改密碼用例實現(xiàn)A、時序圖1)輸入信息輸入原密碼、新密碼和確認新密碼,都不能為空,新密碼與確認新密碼要一致。2)表單驗證updatePasswordAction會調(diào)用validate方法進行表單驗證,如果用戶輸入不合法就會轉(zhuǎn)向updatePassword.jsp提示用戶輸入不合法,如果用戶原密碼輸入錯誤或新密碼與確認新密碼不一致也會轉(zhuǎn)向updatePasswor

40、d.jsp并進彳亍提示。3)進入業(yè)務(wù)方法UpdatePasswordAction調(diào)用業(yè)務(wù)方法execute()進彳亍修改密碼。4)獲取userService接口UpdatePasswordAction類獲取UserService接口,以便調(diào)用UserServcie關(guān)于修改密碼updateUser的方法。5)保存到數(shù)據(jù)庫調(diào)用userDa。將用戶數(shù)據(jù)更新到數(shù)據(jù)庫。6)返回結(jié)果修改成功后,返回到系統(tǒng)主頁面。注冊用戶用例實現(xiàn)A、時序圖1)輸入用戶信息輸入用戶名,用戶密碼,確認密碼。2)表單驗證RegisterUserAction會調(diào)用validate方法進行表單驗證,如果用戶輸入不合法就會轉(zhuǎn)向regi

41、ster,jsp提示用戶輸入不合法,如果輸入用戶名已存在也會轉(zhuǎn)向register,jsp并進行提示。3)進入業(yè)務(wù)方法RegisterUserAction調(diào)用業(yè)務(wù)方法execute()進行添加用戶。4)獲取userService接口RegisterUserAction類獲取UserService接口,以便調(diào)用UserServcie關(guān)于修改密碼addUser(User)的方法。5)保存到數(shù)據(jù)庫調(diào)用userDa。的addUser方法將用戶數(shù)據(jù)保存到數(shù)據(jù)庫。6)返回結(jié)果注冊成功后,返回到主頁面。添加菜式到購菜車并提交訂單用例實現(xiàn)A、時序圖B、描述1)選擇菜式選擇要添加的菜式,可以多選。2)表單驗證Co

42、mmonMenuAction會調(diào)用validate方法進行表單驗證,如果用戶沒選擇菜式或還沒登陸就提交就會提示用戶輸入還沒選擇菜式或還沒登陸。3)進入業(yè)務(wù)方法CommonMenuAction進入業(yè)務(wù)方法execute進行添加菜式到購菜車,在execute方法中調(diào)用showMenuCatr方法進行菜式添加到購物車。4)轉(zhuǎn)向CommonMenuCartCommonMenuCart是一個通用的購菜車,將數(shù)據(jù)進行更新。5)返回到購菜車界面調(diào)用CommonMenuCart的execute方法將數(shù)據(jù)顯示給用戶。6)提交訂單用戶輸入電話號碼,宿舍地址進行提交訂單。7)進入數(shù)據(jù)驗證AddOrderAction

43、調(diào)用validate。方法進行驗證,如果用戶輸入不合法會進行提示。8)獲取OrderService接口調(diào)用OrderService的addOrder(Order)方法進彳亍訂單的添加。9)添加到數(shù)據(jù)庫調(diào)用OrderDao的addOrder(Order)方法將訂單數(shù)據(jù)添加到數(shù)據(jù)庫。10)返回結(jié)果返回到訂單界面,供用戶查看。管理人員處理訂單用例實現(xiàn)A、時序圖B、描述1)訪問訂單列表管理人員訪問訂單列表,對訂單的狀態(tài)進行改變2)進行業(yè)務(wù)方法ChangeStateActon會進入自己的業(yè)務(wù)方法execute()進彳亍狀態(tài)的改變3)獲取OrderService接口ChangeStateAction類獲取

44、OrderService接口,以便調(diào)用OrderServcie關(guān)于更改訂單狀態(tài)的方法。更新到數(shù)據(jù)庫調(diào)用OrderDao的update(Order)方法訂單數(shù)據(jù)更新到數(shù)據(jù)庫。返回結(jié)果更改狀態(tài)后,返回到訂單列表界面。4.4.4系統(tǒng)主要界面設(shè)計管理人員登陸界面:管理人員輸入用戶名、密碼很選擇管理員類型進行登錄,如下圖所示:址村http:/localhost:8080/order/Adjriin/logiaAdnirLjsp珠海外賣網(wǎng)序管理人員登陸用戶名:密碼:管理員類型:登陸S1添加菜式界面:管理人員輸入菜式名、價錢、類型、狀態(tài)和菜式簡介進行添加菜式,如下圖所示:t*毎hlip:/Iccalkc51

45、:80EO/dor/Or3r/proparcMaM.cct:r萊式名價錢類型添加菜式(價錢單位:元)炒飯類套鎖類r而粉類c前臺可見r前臺不可見菜式簡齊式簡介不能趨過如個字符)珠海外賣網(wǎng)三狀態(tài)提交用戶注冊界面:用戶輸入用戶名、密碼和確認密碼進行注冊,如下圖所示:http:/Iocalhost:E080/order/Order/preRegisterVser.action用戶注冊用尸名用戶名長皮必須至少為5)密碼他碼長度必須在&12之間)確認密碼曾碼長度必須在&12之間)提交前臺訂餐主界面:用戶將要訂購的菜式進行選中并點擊放入到餐盒按鈕,如下圖所示:珠海外賣網(wǎng)我的餐盒妙飯類套省類面粉類菜式列表舉加

46、序號萊式名徐價鐵類理簡介ftftL118.0套轡類好吃實惠查看n2蛋炒飯3.0炒飯類潸蛋好吃芟老3沼蛋又燒飯11.0會圾類潸蛋好吃芟老4牛肺直9.0而粉類牛肉好吃5生炒牛肉飯10.0炒飯類牛肉好吃612.0套糅類好吃實惠710.0好吃賣惠,t!查看你好,他“門訂單列蔻更改密訶社瑟渥岀放入到錢盒重新選擇餐盒界面:用戶可以對外賣數(shù)量進行更改和刪除,也可以清空餐盒,輸入送餐電話跟宿舍地址提交訂購賬單就可以進行訂餐,如下圖所示:wa.26zhcc珠海外賣網(wǎng)餐盒列表活空省金荒式裘表眇飯裘廷奢尖面稅類外賣訂單界面:供用戶查看訂單詳細信息,如下圖所示:訂單流水號20100424121711訂單日期10-4-

47、24電話號含地址燕華7棟蕖式名稱單價類型簡介腿蛋面8.0套脣類好吃實惠1番費外送費合計80元1元9.0訂單列表查看界面:供用戶查看訂單狀態(tài),如下圖所示:珠海外賣網(wǎng)你好)feiren賬單列表序號訂單克水號訂單日期電話號碼宿舍地址訂單總離訂單狀態(tài)12010042412171110-4-2412:17:11.00013798971893燕華了棟g.o外賣未派送查看22010042318123210-4-2318:12:32.00013798971893海華m47.0外賣訂購成功查看我的輕盒茨式類表炒飯類套霜類面紛類注冊訂單列表退出五、系統(tǒng)實現(xiàn)采用S2SH架構(gòu)最大益處就是就是

48、使我們的代碼具良好的可維護性與可擴展性,項目中許多邏輯可以編寫在配置文件中而不用硬編碼在代碼中。本章介紹了如何構(gòu)建自己的S2SH環(huán)境以及如何編碼實現(xiàn)功能。因為本文篇幅有限,下面以用戶注冊功能為例,描述T如何通過struts2+spring+hibernate實現(xiàn)出來,其它功能實現(xiàn)原理基本一樣。5.1開發(fā)工具和環(huán)境本系統(tǒng)釆用MyEclipse6.5為開發(fā)工具,以JAVAEE5.0為開發(fā)平臺,釆用MySQLS.0數(shù)據(jù)庫,應(yīng)用服務(wù)器釆用tomcat6.Oo5.2環(huán)境搭配在編碼實現(xiàn)之前要先把S2SH環(huán)境先搭配好,搭配S2SH環(huán)境有以下兒個步驟:要將必須的jar包放在工程路徑下WEB-INF/lib文件

49、夾下;編寫web.xml,包括對struts2過濾器、spring監(jiān)聽器與字符過濾器配置,如下所示:contextConfigLocationclasspath:applicationContext.xiiilorg.sprmgfiamewoik.web.context.ContextLoaderListenerstmts2oig.apache.stmts2.dispatcher.FilterDispatcherstnits2/*encodmgFiltercom.order.util.EncodmgFilterencodingFilter/*(3)對app1icationContext配置文件

50、的編寫,配置dbcp數(shù)據(jù)池、sessionFactory和hibernate實體映射文件的管理,女口下所示:Jlubernate.dialect=org.hibeniate.dialect.MySQLDialectliibernate.hbni2ddl.auto=updateliibemate.show_sql=tnielubernate.fbrmatsql=falseliibernate.cache.usesecondJeveLcachemelubernate.cache.use_query_cache=videi_class=org.liibeinate.cache.EhCacheProv

51、idercom/ordei7beaivMenu.hbm.xiiilcoin/ordei7beaii/Oider.hbm.xiiilcoin/oidebeaii/l2mhbmxmlcoin/oidebeaiiqjs:hbmxnilconi/ordei7bean/AdnmiJibm.xiiil(4)添加struts,xml到類路徑下,放到項目的src文件夾下,如下所示:(5)啟動tomcat服務(wù)器如果后臺沒有打印異常信息,就證明環(huán)境搭配正確,服務(wù)器啟動完畢后通過hibernate的自動建表方式能自動給我們生成數(shù)據(jù)表。5.3編碼實現(xiàn)本系統(tǒng)代碼的編寫順序是先編寫持久層(DA0),再編寫業(yè)務(wù)邏輯層(Se

52、rvice),最后編寫表現(xiàn)層(Web)o持久層包括實體類的編寫、DA0的編寫與配置文件的編寫;業(yè)務(wù)邏輯層包括業(yè)務(wù)接口與業(yè)務(wù)實現(xiàn)類的編寫,配置文件的編寫;web層包括Action的編寫,jsp的編寫,配置文件的編寫。本系統(tǒng)的代碼分配情況如下圖所示:-匚戈order!白甥沁let田曲com.order,action,admin由曲order,action,rriercu.II宙曲com.order,action,order由田cmrdern.userO田com.order,bean國田com.rderdao(+)5。阮order,dao.impl(1com.order,iriterceptor斗田

53、comorder,service(1田com.order,serviceimplgjfflcom.order,utilapplicationContext.xmlgLob=1)return(User)ul.get(O);returnnull;/根據(jù)輸入的用戶名查詢用戶publicbooleangetUserByUseniame(Stringusername)Listul=tliis.getHibernateTemplateQ.fiiid(nfiomUseruserwhereuser.username=?,newStriiigfusername);if(null!=ul&ul.size()=1)

54、returntine;elsereturnfalse;更新用戶publicvoidupdateUser(Useruser)this.getHibernateTemplateQ.update(user);/根據(jù)userid查詢用戶publicUsergetUseiBvId(Iiitegeiuserid)return(User)this.getHibeniateTemplate().get(User.class,userid);/得到用戶列表publicListlistUsersQreturn(List)tliis.getHibernateTemplate().find(HfiomUseruser

55、orderbyuser.iddescM);編寫完畢后在applicationContext.Xml進行配置,利用spring的ioc注入sessionFactory實例,配置如下所示:beanid=nuserDaoMclass=Hcom.oidecdao.impl.UseiDaoImpl”5.3.2Service層的編寫前面業(yè)務(wù)邏輯接口方法已經(jīng)設(shè)計好,下面是對UserServicelmpl類進行編寫,其關(guān)鍵代碼說明如下:publicclassUserServicelmplimplementsUserServiceprivateUserDaouserDao;publicUserDaogetUse

56、rDao()returnuserDao;/利用spring的ioc功能注入userDao實例publicvoidsetUserDao(UserDaouserDao)thisuserDao=userDao;注冊用戶方法publicvoidaddUser(Useruser)thisuserDaoaddUser(user);查看用戶是否己經(jīng)存在publicbooleancheckUserExist(Stringusername)returnthisuserDaogetUserByUsername(username);進行用戶登錄驗證publicUsercheckLogin(Stringusernam

57、e,Stringpassword)returnthisuserDaocheckLogin(username,password);對用戶進行更新信息publicvoidupdateUser(Useruser)thisuserDao.updateUser(user);publicbooleangetUserByIdAndPassword(Integeruserid,Stringpassword)Useruser=thisuserDao.getUserByld(userid);if(passwordequals(usergetPassword()returntrue;returnfalse;編寫完畢

58、后,在applicationContext.xml進行配置,利用spring的ioc注入userDao實例,具體配置女口下所示:5.3.3Web層的編寫(1)注冊頁面registerUser.jsp頁面的編寫,其關(guān)鍵代碼如下:用戶名(用戶名長度必須至少為5)bgcolor=K#E6ECF9Mwidth=”20$”密碼Ctdbgcolor=H#E6ECF9M(密碼長/變,必須在612之間)/spanbgcolor=K#E6ECF9Mwidth=”20$”確認密碼Ctdbgcolor=H#E6ECF9M(密碼長/變,必須在612之間)/span其頁面效果如下圖所示:止)actionwae26zhe

59、cn珠海外賣網(wǎng)用戶注冊用戶名(用戶名検度必須至少為5)密碼能碼長度亦須在6-1及間確認密碼能碼長度亦須在6-1及間重置(2)RegisterUserAction的編寫,其關(guān)鍵代碼與說明如下:publieclassRegisterUserActionextendsActionSupportprivateStringusername;privateStringpassword;privateStringpassword?;privateUserServiceuserService;privateStringflag;/.以卜省略相應(yīng)的setXxx0/getXxx()方法;/action的業(yè)務(wù)方法O

60、verridepublicStringexecute()throwsExceptionAutionContextcontext=ActionContextgetContext();Mapsession=(Map)context.get(session);Useruser=newUser();usersetUsername(username);usersetPassword(password);thisuserServiueaddUser(user);/注HO新用戶user=thisuserServicecheckLogin(username,password);session.put(user

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論