




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于Structs框架的甘記訂單管理系統(tǒng)設(shè)計與實(shí)現(xiàn)摘要:隨著社會經(jīng)濟(jì)的發(fā)展,各行各業(yè)在進(jìn)行商品交易過程中會產(chǎn)生大量的訂單信息,科學(xué)有效地管理訂單信息對企業(yè)經(jīng)營至關(guān)重要,基于計算機(jī)技術(shù)的軟件系統(tǒng)可以有效地應(yīng)用于訂單管理業(yè)務(wù)中。因此,本文是基于Structs框架設(shè)計并實(shí)現(xiàn)了一款甘記訂單管理系統(tǒng),開發(fā)工具:MyEclipse,開發(fā)語言:java,數(shù)據(jù)庫:MySQL,采用B/S結(jié)構(gòu)的web應(yīng)用程序(Browser/server)實(shí)現(xiàn)系統(tǒng)的各項功能。設(shè)計過程采用MVC設(shè)計模式,struts框架實(shí)現(xiàn)表示層,hibernate實(shí)現(xiàn)持久層,spring向上集成struts的MVC框架,向下集成ORM框架,IOC(inversionofcontrol)容器用于管理各個組件之間的依賴關(guān)系。最終實(shí)現(xiàn)了訂單管理系統(tǒng)的登錄模塊、前臺客戶端模塊和后臺管理端模型的各項功能,并能過系統(tǒng)測試驗證了系統(tǒng)可以穩(wěn)定運(yùn)行,系統(tǒng)各項功能均可正常執(zhí)行,本文設(shè)計的訂單管理系統(tǒng)具有一定的實(shí)用價值。關(guān)鍵詞:訂單管理系統(tǒng),Structs框架,MVC設(shè)計模式,JAVA開發(fā)
DesignandImplementationofaStrutsFrame-BasedGanjiordermanagementSystemAbstract:\o"清空"Scientificandefficientmanagementoforderinformationisveryimportantforbusinessactivities.procurement.Therefore,thispaperdesignsandimplementsastructuredprocurementmanagementsystem,MyEclipseisusedasadevelopmenttool,Javaisusedasadevelopmentlanguage,MySQLisusedasadatabase,andvarioussystemfunctionsareimplementedbyaWWWapplicationprogrambasedonthestructureB/S(browser/server).Inthedesignprocess,theMVCmodelisadopted,inwhichthestructuralframesareusedtoimplementthepresentationlayer,thehibernationisusedtoimplementthesustainabilitylayer,thespringintegratestheMVCsupportframeupandtheORMframedown,andusestheIOC(InversionOfControl)containertomanagetheinterdependencebetweenthedifferentcomponents.Finally,thefunctionsoftheloginmodule,thefrontclientmoduleandtheordermanagementbackgroundmoduleareimplemented.目錄TOC\o"1-3"\h\u第1章緒論 第1章緒論1.1系統(tǒng)開發(fā)背景隨著經(jīng)濟(jì)全球化的飛速發(fā)展,公司的業(yè)務(wù)量的提升,尤其是電商行業(yè),每天都會產(chǎn)生大量的訂單信息,通過人工地管理訂單信息,顯得十分繁瑣,而且容易出錯,因此基于計算技術(shù)、信息技術(shù)開發(fā)一款智能化,自動化的訂單管理系統(tǒng),提高企業(yè)訂單管理的科學(xué)化、高效化,具有十分重要的意義。客戶訂單管理系統(tǒng)的主要功能包括了訂單信息、商品信息、用戶信息以及對業(yè)務(wù)的規(guī)范管理,通過構(gòu)建系統(tǒng),可以獲得更加標(biāo)準(zhǔn)化和系統(tǒng)的客戶訂單管理和管理以及更便捷的查詢方法。同時,客戶訂單管理系統(tǒng)對于客戶訂單管理的現(xiàn)代化和信息化必不可少[1]。近年來,隨著客戶訂單的大小逐漸增加和客戶訂單的數(shù)量增加,程序員手動寫入數(shù)據(jù)無法處理如此龐大的訂單交易數(shù)據(jù),然而通過訂單管理系統(tǒng)可以解決這一問題。由此可以發(fā)現(xiàn),客戶訂單管理系統(tǒng)旨在管理客戶訂單管理,以便可以在最短的時間內(nèi)有效,準(zhǔn)確地完成客戶訂單管理過程[2]。基于上述知識,我收集了相關(guān)的材料和數(shù)據(jù),參考了相關(guān)的文獻(xiàn)和技術(shù)參數(shù),調(diào)查了客戶訂單管理的實(shí)際需求,發(fā)現(xiàn)目前正在使用以下管理方法存在很多弊端:(1)類型很多,很難存儲數(shù)據(jù)。填充數(shù)據(jù)和填充內(nèi)容非常復(fù)雜,并且會迭代大量數(shù)據(jù)。(2)歸檔并不容易,并且有很多信息和文檔。這需要很多文書工作。由于上述原因,客戶訂單管理迫切需要軟件來代替手動任務(wù)來管理數(shù)據(jù)[3]。隨著計算機(jī)計算機(jī)技術(shù)、應(yīng)用軟件的開發(fā)越來越成熟,通過訂單管理系統(tǒng),不僅為企業(yè)和其用戶建立一個良好的下單平臺,而且管理員可以在需要解決特定問題時查詢信息材料,了解整個客戶訂單管理系統(tǒng)的動態(tài),能夠更加有效地完成任務(wù)。1.2系統(tǒng)開發(fā)意義利用先進(jìn)的計算機(jī)技術(shù)和軟件技術(shù)的手段進(jìn)行客戶對訂單設(shè)計和管理信息系統(tǒng)的設(shè)計和開發(fā),其目的主要是為了使得客戶對訂單的管理模式從我們?nèi)斯さ挠涗涋D(zhuǎn)變成我們電子信息系統(tǒng)的管理,為客戶對訂單設(shè)計和管理人員培訓(xùn)提供方便的條件。在結(jié)合客戶對訂單設(shè)計和管理的實(shí)際工作情況進(jìn)行了調(diào)研之后,結(jié)合手上的材料,進(jìn)行了詳細(xì)的客戶需求設(shè)計和分析,然后目標(biāo)任務(wù)就是進(jìn)一步開發(fā)和設(shè)計出一套新型的客戶訂單設(shè)計和管理信息系統(tǒng),并且從中進(jìn)一步領(lǐng)悟訂單管理系統(tǒng)設(shè)計和開發(fā)的基本思想,還有進(jìn)一步掌握訂單管理系統(tǒng)設(shè)計和開發(fā)的基本流程和操作方法。隨著客戶對訂單管理信息系統(tǒng)的不斷完善,手工的記錄已經(jīng)不能幫助客戶解決大量的訂單信息量,并且其效率非常低。由此可見,客戶對訂單的實(shí)際管理將越來越多地依賴于客戶訂單信息化的設(shè)計和管理。所以電子信息系統(tǒng)的開發(fā)將主要圍繞著了解客戶對訂單設(shè)計和管理工作的實(shí)際和情況,使之能迅速準(zhǔn)確適應(yīng)我們管理客戶訂單的實(shí)際需要。客戶訂單管理系統(tǒng)的實(shí)施的現(xiàn)實(shí)意義:(1)減少客戶訂單管理的工作人員;開發(fā)出一套方便快捷的訂單管理系統(tǒng),可以使所需要工作人員的數(shù)量減少。管理人員可以隨時更加直觀地瀏覽查看,操作方便。系統(tǒng)改變了以前管理工資需要手工自動記錄的那種傳統(tǒng)電腦操作管理方式,電腦操作人員進(jìn)行工資自動錄入更加方便快捷。實(shí)現(xiàn)了客戶訂單管理的計算機(jī)化。1.3本文內(nèi)容介紹本文著重研究了Java編程技術(shù),Structs開發(fā)框架,Web應(yīng)用程序開發(fā)和數(shù)據(jù)庫設(shè)計技術(shù)等相關(guān)理論,提出并設(shè)計了基于structs框架的甘記訂單管理系統(tǒng),論文分別為六個章節(jié),分別如下:第一章為緒論,介紹了本文訂單管理系統(tǒng)項目開發(fā)的背景、重要性和內(nèi)容結(jié)構(gòu)。第二章是基本的開發(fā)環(huán)境和相關(guān)技術(shù),MVC設(shè)計模式,Structs開發(fā)框架,Spring開發(fā)框架,Hibernate開發(fā)框架和MySQL數(shù)據(jù)庫,它們?yōu)楸疚牡捻椖块_發(fā)提供了原理和技術(shù)支持。第三章為系統(tǒng)設(shè)計,主要包括了功能結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫設(shè)計和WEB應(yīng)用程序開發(fā)框架設(shè)計,為本文項目開發(fā)實(shí)現(xiàn)提供了設(shè)計思路。第四章為系統(tǒng)實(shí)現(xiàn),主要介紹了本文設(shè)計的甘記訂單管理系統(tǒng)的工程目錄、登錄模塊實(shí)現(xiàn)、后臺管理端模塊實(shí)現(xiàn)和前臺客戶端模塊的實(shí)現(xiàn),展示了本文系統(tǒng)各項功能的實(shí)現(xiàn)效果。第五章通過遵循使用黑匣子測試方法進(jìn)行的系統(tǒng)測試,測試用例設(shè)計和測試用例的步驟來驗證本白皮書中開發(fā)的漢字訂單管理系統(tǒng)的模塊和功能。第六章為結(jié)束語,對本文項目的開發(fā)過程進(jìn)和地總結(jié),以及對項目的不中和功能完善進(jìn)行了展望。
第2章基本開發(fā)環(huán)境和相關(guān)技術(shù)2.1MVC設(shè)計模式MVC框架是軟件工程中的軟件結(jié)構(gòu)模式的一種。它把系統(tǒng)分成了三個部分,第一部分是模型層,第二部分是視圖層,第三部分是控制器層[4]。視圖層是用戶可以看到并直接與之交互的操作界面,它是程序的外殼。不同的視圖通過不同的顯示反映模型數(shù)據(jù)和狀態(tài)信息,MVC設(shè)計模式的結(jié)構(gòu)如圖2-1所示。圖2-1MVC設(shè)計模式結(jié)構(gòu)模型層負(fù)責(zé)需要操作的數(shù)據(jù)或信息。它由應(yīng)用程序的核心數(shù)據(jù),邏輯關(guān)系和計算功能組成。并封裝數(shù)據(jù),提供處理問題的操作過程??刂破鲗佑糜诮邮沼脩糨斎氩⑼ㄟ^調(diào)用模型和視圖來完成用戶需求。它是由時間觸發(fā)的??刂破魇褂貌僮髌脚_的界面來獲取事件??刂破魍ㄟ^事件處理程序處理輸入事件,并為每個輸入事件提供操作服務(wù)。2.2Structs開發(fā)框架Struts這個開發(fā)的框架很容易地實(shí)現(xiàn)了視圖、模型和控制器的MVC設(shè)計模式。這個開發(fā)的框架也被認(rèn)為是最早和實(shí)際上使用最廣泛的一個MVC開發(fā)框架[5]。Struts開發(fā)框架的其中一個核心處理技術(shù)是基于靈活的視圖和控制層,如視圖的Javaservlet和表示層的Javabeans。Struts由一組類(視圖組件)、Servlet和一組帶有jsp標(biāo)記的數(shù)據(jù)庫組成。Struts這個開發(fā)框架的訪問處理機(jī)制主要分為視圖、控制器和視圖模型三個組成部分。Struts有自己的視圖和控制器,并在視圖上集成了其他的技術(shù)來很容易地實(shí)現(xiàn)自己的模型控制層和自己的視圖數(shù)據(jù)層。在模型層,Struts開發(fā)框架可以很容易地與視圖和數(shù)據(jù)層的訪問處理技術(shù)(其中包括視圖層的jdbc和wevejb)和視圖對象的關(guān)系框架橋相結(jié)合。在視圖和數(shù)據(jù)層,Struts開發(fā)框架結(jié)合了層的webejb和表示層的xsl和層的jsp數(shù)據(jù)訪問技術(shù)。Structs開發(fā)框架的結(jié)構(gòu):圖2-2Structs開發(fā)框架結(jié)構(gòu)在Structs開發(fā)框架中,視圖層由一系列JSP文檔組成,這些文檔沒有業(yè)務(wù)邏輯代碼。我們可以從標(biāo)簽訪問模型信息。Struts框架中的ActionFormBean是視圖的一部分,封裝表單信息并在視圖和控制器之間發(fā)送。在Structs開發(fā)框架中,控制器是由ActionServlet(Struts框架中的中央控制器)和Action類實(shí)現(xiàn)。ActionServlet根據(jù)配置文件struts-config.xml處理請求并傳輸?shù)较鄳?yīng)的Action組件。動作是用戶請求和業(yè)務(wù)邏輯之間的適配器,負(fù)責(zé)方法,調(diào)用模型和更新模型狀態(tài)之間的明顯指示,并幫助控制應(yīng)用程序過程。在Structs開發(fā)框架里面,這個模型表示應(yīng)用程序的業(yè)務(wù)邏輯和狀態(tài),負(fù)責(zé)更新和數(shù)據(jù)訪問。不過,Struts框架中沒有用于設(shè)計的方法或者組件。在現(xiàn)實(shí)的應(yīng)用程序當(dāng)中,這些模型是通過JavaBean,EJB或Web服務(wù)實(shí)現(xiàn)的。2.3Spring開發(fā)框架Spring是一個輕量級的框架,旨在通過使用分層結(jié)構(gòu)來解決復(fù)雜的企業(yè)應(yīng)用程序[6]。它是一個完整的Java企業(yè)應(yīng)用程序平臺,其中包含七個專門定義的模塊,如圖2-3所示??傮w而言,這些模塊為開發(fā)企業(yè)Web應(yīng)用程序提供了一切。但是開發(fā)人員可以根據(jù)需要選擇將其中一些模塊與其他適當(dāng)?shù)目蚣芤黄鹗褂茫驗檫@些模塊并不完全相關(guān)。圖2-3Spring開發(fā)框架結(jié)構(gòu)SpringCore模塊是BeanFactory作為其核心組件的Spring框架的最基本部分。BeanFactory基于控制反轉(zhuǎn)(IoC)的特性。它使用依賴注入來管理組件之間的關(guān)系,而該關(guān)系不再由復(fù)雜的代碼執(zhí)行,從而改善了系統(tǒng)的松散耦合。此外,Spring還支持面向方面的編程(AOP),它將業(yè)務(wù)邏輯與系統(tǒng)級服務(wù)(如日志記錄和事務(wù)管理)分開。允許開發(fā)人員關(guān)注業(yè)務(wù)邏輯本身。在Spring框架中,可以輕松地在XML文件中配置組件以形成復(fù)雜的應(yīng)用程序。2.4Hibernate開發(fā)框架Hibernate是一種完全具有基于dao編程語言設(shè)計模式的輕量級開源數(shù)據(jù)庫框架,有利于保留關(guān)系數(shù)據(jù)持久性的基本特點(diǎn),用于在關(guān)系數(shù)據(jù)庫與對象之間直接實(shí)現(xiàn)數(shù)據(jù)映射。它以輕量級的方式封裝了現(xiàn)有的jdbc,從而可以使得Java程序員和用戶可以直接使用面向?qū)ο蟮某志脤泳幊陶Z言設(shè)計思想模式來構(gòu)建和操作關(guān)系數(shù)據(jù)庫。它也是持久層編程語言中的一種有利于實(shí)現(xiàn)映射的技術(shù),與jdbc,ejb,jdo等其他持久層編程語言技術(shù)設(shè)計思想相比,Hinbernate是一種易于理解和掌握并且更好地符合面向?qū)ο蟮某志脤泳幊陶Z言設(shè)計思想。Hibernate擁有一種完全面向?qū)ο蟮牟樵冋Z言(HQL)[7]。如圖2-4所示:圖2-4Hibernate開發(fā)框架結(jié)構(gòu)Hibernate通常被廣泛地認(rèn)為應(yīng)用程序是連接Java應(yīng)用程序和關(guān)系數(shù)據(jù)庫之間的一個重要橋梁,由于一個應(yīng)用程序可以提供持久的關(guān)系數(shù)據(jù)服務(wù),并且它允許應(yīng)用程序開發(fā)者可以使用面向?qū)ο蟮臄?shù)據(jù)庫方法和工具來進(jìn)行管理和分析如何處理關(guān)系數(shù)據(jù)庫。Hibernate不僅很好地支持從處理Java數(shù)據(jù)類型表到關(guān)系數(shù)據(jù)庫表的查詢和映射(其中包括從處理Java數(shù)據(jù)類型表的映射到處理sql數(shù)據(jù)類型的映射),而且還很好地提供了面向?qū)ο蟮臄?shù)據(jù)庫進(jìn)行查詢和檢索的機(jī)制,從而大大縮短了用于處理對象的sql和處理jdbc的應(yīng)用程序開發(fā)時間。Hibernate需要創(chuàng)建和處理三種類型的文件,以提供Java的主要文件類別和關(guān)系數(shù)據(jù)庫之間的連接和映射。配置文件hibernate.cfg.xml配置文件用于創(chuàng)建和配置關(guān)系數(shù)據(jù)庫驅(qū)動程序,數(shù)據(jù)庫表之間的連接,數(shù)據(jù)庫表之間的方言和Hibernate的其他文件屬性。從一個實(shí)體對象文件到類別和關(guān)系數(shù)據(jù)庫表的配置映射由一個作為Hiorm配置文件的pojo.hbm.xml配置文件執(zhí)行。最后一個配置文件是為了提供實(shí)體類別和對象表示的持久類。2.5MySQL數(shù)據(jù)庫MySQL數(shù)據(jù)庫是一個關(guān)系數(shù)據(jù)庫管理系統(tǒng),在云服務(wù)系統(tǒng)中又被用作軟件即服務(wù)(Software-as-a-Service,SaaS)。MySQL于1995年發(fā)布,現(xiàn)在由OracleCorporation公司提供技術(shù)支持。MySQL是用于托管服務(wù)提供商(例如Rackspace,GoDaddy,Bluehost和WHM等)的最流行的數(shù)據(jù)庫管理系統(tǒng)。此外,F(xiàn)acebook,Twitter,Yahoo,Wikipedia,YouTube都在使用MySQL。同樣,亞馬遜網(wǎng)站通過在MySQL的云服務(wù)系統(tǒng)中托管數(shù)據(jù)庫來為其客戶提供服務(wù)。MySQL數(shù)據(jù)庫管理系統(tǒng)在安全性,可靠性,性能和可用性方面具有優(yōu)勢。市場上有許多由云中的服務(wù)器支持的數(shù)據(jù)庫管理系統(tǒng),其中某些只能用于特定目的的私有組織中使用。根據(jù)一項調(diào)查,在云上最受歡迎的關(guān)系數(shù)據(jù)庫管理系統(tǒng)是MySQL,它具有超過一千萬的安裝,其中最重要的原因就是它具有完全的開源功能,并且可以基于其他軟件進(jìn)行開發(fā),大大降低了開發(fā)成本,MySQL以其優(yōu)越的性能和開源和特點(diǎn)從其他的數(shù)據(jù)庫管理系統(tǒng)中脫穎而出,越來越成為許多網(wǎng)站用戶的首選[8]。
第3章系統(tǒng)設(shè)計3.1系統(tǒng)功能設(shè)計根據(jù)這個項目的設(shè)計目標(biāo)以及開發(fā)需要,設(shè)計系統(tǒng)是各個模塊的功能。是系統(tǒng)開發(fā)過程中一個重要的流程,本文基于structs框架的甘記訂單管理系統(tǒng)的功能主要包括兩個方面,一個是客戶訂單管理系統(tǒng)的前臺用戶端的功能,一個是訂單管理系統(tǒng)的后臺管理端的功能,其中前臺客戶端的功能結(jié)構(gòu)如圖3-1所示,主要包括了商品信息瀏覽模塊、我要在線下單模塊、我的訂單列表模塊。圖3-1前臺客戶端功能結(jié)構(gòu)甘記訂單管理系統(tǒng)的后臺管理端的功能結(jié)構(gòu)如圖3-2所示,主要包括個人密碼修改功能模塊,注冊客戶管理功能模塊,產(chǎn)品類別管理功能模塊,產(chǎn)品類別添加功能模塊,產(chǎn)品信息管理功能模塊,產(chǎn)品信息添加功能模塊和訂單信息管理功能模塊。圖3-2后臺管理端功能結(jié)構(gòu)3.2系統(tǒng)數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫是本文開發(fā)的甘記管理系統(tǒng)的主要核心和基本組成部分,數(shù)據(jù)庫設(shè)計的質(zhì)量會直接影響系統(tǒng)的功能實(shí)現(xiàn)和用戶體驗,數(shù)據(jù)庫基本上就是一個系統(tǒng)的主心骨,沒有數(shù)據(jù)庫,就沒有應(yīng)用系統(tǒng)。在系統(tǒng)的開發(fā)過程中,數(shù)據(jù)庫是一個非常重要的部分。本文主要根據(jù)項目開發(fā)需求設(shè)計了數(shù)據(jù)庫,包括設(shè)計數(shù)據(jù)庫概念結(jié)構(gòu)和設(shè)計數(shù)據(jù)庫表。3.2.1概念結(jié)構(gòu)的設(shè)計根據(jù)數(shù)據(jù)需求分析,數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計主要包括了實(shí)體屬性圖,實(shí)體-聯(lián)系圖模型。其中實(shí)體屬性圖主要包括了管理員實(shí)體屬性圖,客戶實(shí)體屬性圖,訂單實(shí)體屬性圖,商品實(shí)體屬性圖,商品類別實(shí)體屬性圖。以下是具體圖例:圖3-3管理員實(shí)體屬性圖圖3-4客戶實(shí)體屬性圖圖3-5訂單實(shí)體屬性圖圖3-6商品實(shí)體屬性圖圖3-7商品類別實(shí)體屬性圖實(shí)體連接圖由三個組成部分:屬性,實(shí)體和連接。實(shí)體是系統(tǒng)運(yùn)行中所涉及的具體對象,屬性是對對象屬性的具體描述,聯(lián)系是對象之間的相關(guān)操作。本文甘記訂單管理系統(tǒng)的E-R模型圖的設(shè)計如圖3-8所示。圖3-8E-R模型圖3.2.2數(shù)據(jù)庫表設(shè)計根據(jù)本文甘記訂單管理系統(tǒng)的業(yè)務(wù)需求,對于數(shù)據(jù)庫中的表進(jìn)行了設(shè)計。管理信息表,用于存放管理員的相關(guān)信息;商品類別信息表,用于描述商品類別的基本信息;商品信息表,用于描述商品的基本信息;訂單信息表,用來描述訂單的基本信息;客戶信息表,用來描述客戶的基本信息。表3-1管理信息表字段名類型長度說明idInt4管理員編號(主鍵)namevarchar30用戶名pwdvarchar20用戶密碼表3-2商品類別信息表字段名類型長度說明idInt4編號(主鍵)namevarchar20名稱jieshaovarchar1000介紹Beizhuvarchar50備注表3-3商品信息表字段名類型長度說明idInt4編號(主鍵)leib_idInt4類別編號(外鍵)Mingchengvarchar20名稱Chandivarchar20產(chǎn)地Danweivarchar20單位Guigevarchar20規(guī)格Beizhuvarchar50備注表3-4訂單信息表字段名數(shù)據(jù)類型長度功能描述idInt4編號(主鍵)kehu-idInt4客戶編號(外鍵)Good-idInt4商品編號(外鍵)PriceMoney8價錢TimeDatetime8時間表3-5客戶信息表字段名數(shù)據(jù)類型長度功能描述idInt4編號(主鍵)namevarchar20登錄名AgeInt4年齡truenamevarchar8姓名sexvarchar2性別Liveint4居住地Passwordvarchar30密碼Addvarchar20出生地Telvarchar20電話Leixingvarchar20類型3.3WEB應(yīng)用程序開發(fā)框架設(shè)計本文設(shè)計的甘記訂單管理系統(tǒng)開發(fā)工具采用的是MyEclipse,開發(fā)語言采用的是JAVA,系統(tǒng)各項功能通過基于B/S結(jié)構(gòu)(Browser/Server,瀏覽器/服務(wù)器)的WEB應(yīng)用程序?qū)崿F(xiàn)[9],其中Struts框架用于實(shí)現(xiàn)表示層,Hibernate用于持久層,而Spring是系統(tǒng)的核心。Spring向上集成了Struts的MVC框架,向下集成了ORM框架,并使用IOC(InversionofControl,控制反轉(zhuǎn))容器管理各個組件之間的依賴關(guān)系。這三種技術(shù)的組合開發(fā)模式實(shí)現(xiàn)了應(yīng)用系統(tǒng)的五層結(jié)構(gòu),并構(gòu)建了Web應(yīng)用開發(fā)框架,如圖4-9所示。圖4-9WEB應(yīng)用程序框架結(jié)構(gòu)Struts設(shè)計框架在本次的微控制器系統(tǒng)開發(fā)測試過程設(shè)計中的主要功能作用在一個設(shè)計表示層中它實(shí)現(xiàn)了MVC的兩種設(shè)計模式。在這個設(shè)計表示層,控制器的所有設(shè)計功能和控制操作都可以是由兩個控制客戶端使用actionmapping和控制客戶端使用actionservlet來進(jìn)行設(shè)計和控制實(shí)現(xiàn)的。例如當(dāng)一個面對客戶端向一個控制器中的actionservlet用戶發(fā)出請求時,actionservlet而當(dāng)請求被用戶接受之后,每個面向客戶端中的actionmapping將被配置用來自動實(shí)現(xiàn)面向控制器收發(fā)請求與特定面向控制器請求操作之間的相互映射。然后視圖層的轉(zhuǎn)換是由顯示在jsp頁面的actaglib和視圖來實(shí)現(xiàn)。組件模型由視圖actionform和視圖由action來分別實(shí)現(xiàn)。action組件對象調(diào)用視圖業(yè)務(wù)層提供了邏輯的視圖和模塊接口并將業(yè)務(wù)響應(yīng)信息提交給正確的業(yè)務(wù)視圖和組件。actionform視圖組件和對象業(yè)務(wù)層實(shí)現(xiàn)了對于客戶端和表單的良好處理和數(shù)據(jù)庫的封裝,并在業(yè)務(wù)視圖和組件模型之間相互支持。業(yè)務(wù)層由基于javabean類的業(yè)務(wù)層實(shí)現(xiàn),包括了用于客戶端和操作系統(tǒng)調(diào)用的業(yè)務(wù)層接口。這些業(yè)務(wù)層和javabean還分別封裝了業(yè)務(wù)層和Hibernate的關(guān)系。視圖和業(yè)務(wù)層轉(zhuǎn)換通過關(guān)系數(shù)據(jù)庫業(yè)務(wù)層轉(zhuǎn)換和持久層轉(zhuǎn)換實(shí)現(xiàn)與關(guān)系數(shù)據(jù)庫和資源的交互。持久層由Hibernate關(guān)系實(shí)現(xiàn)。Hibernate將業(yè)務(wù)層的javabean類視圖中的hql視圖和語句轉(zhuǎn)換成業(yè)務(wù)層的sql語句,并通過使用業(yè)務(wù)層的jdbc驅(qū)動程序操作業(yè)務(wù)層的數(shù)據(jù)源,從而使業(yè)務(wù)層完成了添加、刪除、修改等的數(shù)據(jù)轉(zhuǎn)換操作,底層是關(guān)系數(shù)據(jù)庫。
第4章甘記訂單管理系統(tǒng)實(shí)現(xiàn)本文設(shè)計的甘記訂單管理系統(tǒng)的工程目錄如圖4-1所示,其中src目錄下是系統(tǒng)相關(guān)業(yè)務(wù)邏輯的代碼實(shí)現(xiàn),WebRoot目錄下是系統(tǒng)相關(guān)功能界面的代碼實(shí)現(xiàn)。圖4-1甘記訂單管理系統(tǒng)工程目錄4.1登錄模塊實(shí)現(xiàn)甘記訂單管理系統(tǒng)的登錄模塊實(shí)現(xiàn)界面如圖4-2所示,通過登錄身份的下接列表可以選擇是管理員登陸或者用戶登錄,然后正確輸入用戶名和密碼就可以登錄到系統(tǒng)。系統(tǒng)登錄模塊相關(guān)代碼在下面(代碼4-1)圖4-2系統(tǒng)登錄模塊界面代碼4-1系統(tǒng)登錄模塊代碼publicclassloginService{ publicStringlogin(StringuserName,StringuserPw,intuserType) { System.out.println("userType"+userType); try { Thread.sleep(700); }catch(InterruptedExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); } Stringresult="no"; if(userType==0)//系統(tǒng)管理員登陸 { Stringsql="select*fromt_adminwhereuserName=?anduserPw=?"; Object[]params={userName,userPw}; DBmydb=newDB(); mydb.doPstm(sql,params); try { ResultSetrs=mydb.getRs(); booleanmark=(rs==null||!rs.next()?false:true); if(mark==false) { result="no"; } else { result="yes"; TAdminadmin=newTAdmin(); admin.setUserId(rs.getInt("userId")); admin.setUserName(rs.getString("userName")); admin.setUserPw(rs.getString("userPw")); WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); session.setAttribute("userType",0); session.setAttribute("admin",admin); } rs.close(); } catch(SQLExceptione) { System.out.println("登錄失敗!"); e.printStackTrace(); } finally { mydb.closed(); } } if(userType==1) { Stringsql="select*fromt_userwheredel='no'andloginname=?andloginpw=?"; Object[]params={userName,userPw}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); booleanmark=(rs==null||!rs.next()?false:true); if(mark==false) { result="no"; } if(mark==true) { Tuseruser=newTuser(); user.setId(rs.getString("id")); user.setLoginname(rs.getString("loginname")); user.setLoginpw(rs.getString("loginpw")); user.setLoginpw(rs.getString("loginpw")); user.setName(rs.getString("name")); user.setSex(rs.getString("sex")); user.setAge(rs.getString("age")); user.setAddress(rs.getString("address")); user.setTel(rs.getString("tel")); user.setEmail(rs.getString("email")); user.setQq(rs.getString("qq")); result="yes"; WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); session.setAttribute("userType",1); session.setAttribute("user",user); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); } if(userType==2) { } returnresult; }如果是新用戶,可以點(diǎn)擊客戶注冊進(jìn)行注冊一個用戶賬戶,注冊界面如圖4-3所示,在用戶注冊界面中填入用戶名,密碼,真實(shí)姓名,性別,年齡,住址,聯(lián)系方式,E-mail和QQ相關(guān)信息后,點(diǎn)擊確定就可以成功注冊一個用戶賬戶。用戶注冊功能主要代碼實(shí)現(xiàn)在下面(代碼4-2)。圖4-3用戶注冊界面代碼4-2用戶注冊代碼publicvoiduserReg(HttpServletRequestreq,HttpServletResponseres) { Stringid=String.valueOf(newDate().getTime()); Stringloginname=req.getParameter("loginname"); Stringloginpw=req.getParameter("loginpw"); Stringname=req.getParameter("name"); Stringsex=req.getParameter("sex"); Stringage=req.getParameter("age"); Stringaddress=req.getParameter("address"); Stringtel=req.getParameter("tel"); Stringemail=req.getParameter("email"); Stringqq=req.getParameter("qq"); Stringdel="no"; Stringsql="insertintot_uservalues(?,?,?,?,?,?,?,?,?,?,?)"; Object[]params={id,loginname,loginpw,name,sex,age,address,tel,email,qq,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","注冊成功");StringtargetURL="/common/add_success.jsp"; dispatch(targetURL,req,res); }4.2后臺管理端模塊實(shí)現(xiàn)管理員登錄系統(tǒng)后會進(jìn)入到后臺管理模塊,如圖4-4所示,功能菜單具有7個功能模塊:(1)修改個人密碼功能模塊管理注冊客戶功能模塊商品類別管理功能模塊商品類別添加功能模塊商品信息管理功能模塊商品信息添加功能模塊訂單信息管理功能模塊PS:另外還顯示當(dāng)前系統(tǒng)時間,通過點(diǎn)擊注銷系統(tǒng)按鈕可以退出系統(tǒng)。圖4-4后臺管理端模塊主界面點(diǎn)擊功能菜單欄中的修改個人密碼,進(jìn)入修改個人密碼的界面,管理員可以修改自己的密碼,這里會顯示當(dāng)前登錄的管理員賬戶名,然后輸入原密碼和新密碼點(diǎn)擊修改按鈕,就可以成功修改管理員賬戶密碼。管理員修改密碼功能實(shí)現(xiàn)代碼在下面(代碼4-3)圖4-5修改個人密碼界面代碼4-3管理員修改密碼代碼publicStringadminPwEdit(StringuserPwNew){ System.out.println("DDDD"); try { Thread.sleep(700); } catch(InterruptedExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); } WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); TAdminadmin=(TAdmin)session.getAttribute("admin"); Stringsql="updatet_adminsetuserPw=?whereuserId=?"; Object[]params={userPwNew,admin.getUserId()}; DBmydb=newDB(); mydb.doPstm(sql,params); return"yes";}我們點(diǎn)擊功能菜單欄里面的客戶注冊按鈕,就可以進(jìn)入到客戶管理界面,如圖4-6所示,在這里顯示了已經(jīng)成功在該系統(tǒng)中注冊客戶的信息,包括登錄賬號、密碼、姓名、性別、年齡、住址、聯(lián)系方式、E-mail和QQ。在操作欄中,管理員可以點(diǎn)擊刪除按鈕來刪除該注冊客戶的賬號(不要亂刪除別人..)。注冊用戶管理功能相關(guān)代碼在下面.(代碼4-4)圖4-6注冊客戶管理界面代碼4-4注冊客戶管理功能代碼publicvoiduserMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListuserList=newArrayList(); Stringsql="select*fromt_userwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tuseruser=newTuser(); user.setId(rs.getString("id")); user.setLoginname(rs.getString("loginname")); user.setLoginpw(rs.getString("loginpw")); user.setLoginpw(rs.getString("loginpw")); user.setName(rs.getString("name")); user.setSex(rs.getString("sex")); user.setAge(rs.getString("age")); user.setAddress(rs.getString("address")); user.setTel(rs.getString("tel")); user.setEmail(rs.getString("email")); user.setQq(rs.getString("qq")); userList.add(user); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("userList",userList); req.getRequestDispatcher("admin/user/userMana.jsp").forward(req,res); }點(diǎn)擊功能菜單欄里面的商品類別管理按鈕,管理員就可以進(jìn)入到商品類別管理界面,跳轉(zhuǎn)成功后會顯示系統(tǒng)中的商品類別信息,主要包括了商品的名稱和介紹,在操作欄中點(diǎn)擊刪除按鈕就可以刪除啦。商品類別管理功能實(shí)現(xiàn)代碼在下面(代碼4-5)。圖4-7商品類別管理界面代碼4-5商品類別管理代碼publicvoidcatelogMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListcatelogList=newArrayList(); Stringsql="select*fromt_catelogwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tcatelogcatelog=newTcatelog(); catelog.setId(rs.getInt("id")); catelog.setName(rs.getString("name")); catelog.setJieshao(rs.getString("jieshao")); catelogList.add(catelog); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("catelogList",catelogList); req.getRequestDispatcher("admin/catelog/catelogMana.jsp").forward(req,res); }管理員點(diǎn)擊“產(chǎn)品類別管理”界面中的“添加”按鈕,或在功能菜單欄上單擊“添加產(chǎn)品類別”,進(jìn)入“添加產(chǎn)品類別”界面,輸入商品的名稱和介紹,然后點(diǎn)擊“提交”按鈕,就會添加成功了。商品類別添加功能代碼在下面(代碼4-6)。圖4-8商品類別添加界面代碼4-6商品類別添加功能代碼publicvoidcatelogAdd(HttpServletRequestreq,HttpServletResponseres) { Stringname=req.getParameter("name"); Stringjieshao=req.getParameter("jieshao"); Stringdel="no"; Stringsql="insertintot_catelogvalues(?,?,?)"; Object[]params={name,jieshao,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","catelog?type=catelogMana"); StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res); }在功能菜單中點(diǎn)擊商品信息管理按鈕,就可以進(jìn)入到商品信息管理界面,界面會顯示商品的相關(guān)信息,主要包括類別、名稱、產(chǎn)地、單位、規(guī)格、備注,在操作欄中,我們管理員也可以通過點(diǎn)擊刪除按鈕刪除相應(yīng)的商品。商品信息管理功能實(shí)現(xiàn)代碼在下面(代碼4-7)。圖4-9商品信息管理界面代碼4-7商品信息管理功能代碼publicvoidgoodsMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListgoodsList=newArrayList(); Stringsql="select*fromt_goodswheredel='no'orderbycatelog_id"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tgoodsgoods=newTgoods(); goods.setId(rs.getInt("id")); goods.setCatelog_id(rs.getInt("catelog_id")); goods.setName(rs.getString("name")); goods.setBeizhu(rs.getString("beizhu")); goods.setChandi(rs.getString("chandi")); goods.setDanwei(rs.getString("danwei")); goods.setGuige(rs.getString("guige")); goods.setCatelog_name(liuService.getCatelogName(rs.getInt("catelog_id"))); goodsList.add(goods); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("goodsList",goodsList); req.getRequestDispatcher("admin/goods/goodsMana.jsp").forward(req,res); } 單擊商品信息管理按鈕,就會進(jìn)入“添加產(chǎn)品信息”界面。然后管理員選擇要添加到類別的商品類別,然后輸入商品的名稱,產(chǎn)地,單位,規(guī)格,備注等信息后,點(diǎn)擊“提交”按鈕,商品的信息就會成功添加到系統(tǒng)啦,填錯了可按重置按鈕重置。商品信息添加代碼功能實(shí)現(xiàn)在下面(代碼4-8)。圖4-10商品信息添加界面代碼4-8商品信息添加功能代碼publicvoidgoodsAdd(HttpServletRequestreq,HttpServletResponseres) { intcatelog_id=Integer.parseInt(req.getParameter("catelog_id")); Stringname=req.getParameter("name"); Stringchandi=req.getParameter("chandi"); Stringdanwei=req.getParameter("danwei"); Stringguige=req.getParameter("guige"); Stringbeizhu=req.getParameter("beizhu"); Stringdel="no"; Stringsql="insertintot_goodsvalues(?,?,?,?,?,?,?)"; Object[]params={catelog_id,name,chandi,danwei,guige,beizhu,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功"); req.setAttribute("path","goods?type=goodsMana"); StringtargetURL="/common/success.jsp"; dispatch(targetURL,req,res);管理員在功能菜單里面點(diǎn)擊訂單信息管理按鈕,就可以進(jìn)入訂單信息管理界面,然后會顯示訂單相關(guān)信息,包括訂單編號,訂單時間,備注信息和訂單狀態(tài),在狀態(tài)欄中可以看到訂單的狀態(tài),在客戶欄中點(diǎn)擊客戶信息就可以查看訂單的客戶的信息,在訂單明細(xì)欄中點(diǎn)擊訂單明細(xì)可以查看訂單明細(xì),點(diǎn)擊刪除按鈕可以刪除相關(guān)訂單。訂單信息管理代碼功能實(shí)現(xiàn)在下面(代碼4-9)圖4-11訂單信息管理界面代碼4-9訂單信息管理功能代碼publicvoidorderMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListorderList=newArrayList(); Stringsql="select*fromt_orderwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) {Torderorder=newTorder(); order.setId(rs.getInt("id")); order.setDanjuhao(rs.getString("danjuhao")); order.setShijian(rs.getString("shijian")); order.setBeizhu(rs.getString("beizhu")); order.setUser_id(rs.getString("user_id")); order.setZhuangtai(rs.getString("zhuangtai")); order.setDel(rs.getString("del")); orderList.add(order); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("orderList",orderList); req.getRequestDispatcher("admin/order/orderMana.jsp").forward(req,res); }4.3前臺客戶端模塊實(shí)現(xiàn)客戶登錄系統(tǒng)后可以進(jìn)入前臺客戶端界面,在功能菜單中有三個功能模塊:商品信息瀏覽功能模塊我要在線下單功能模塊我的訂單列表功能模塊PS:在界面上方還是會顯示你登錄成功后的客戶名還有當(dāng)前的系統(tǒng)時間,點(diǎn)擊注銷系統(tǒng)可以退出登錄。圖4-12前臺客戶端主界面客戶在功能菜單中點(diǎn)擊商品信息瀏覽按鈕,會進(jìn)入到商品的展示界面,在這里你可以看到商品的類別、商品名稱、產(chǎn)地、單位、規(guī)格還有備注信息。商品信息瀏覽代碼功能實(shí)現(xiàn)在下面(代碼4-10)圖4-13商品信息瀏覽界面代碼4-10商品信息瀏覽功能代碼publicvoidgoodsAll(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { ListgoodsList=newArrayList(); Stringsql="select*fromt_goodswheredel='no'orderbycatelog_id"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tgoodsgoods=newTgoods(); goods.setId(rs.getInt("id")); goods.setCatelog_id(rs.getInt("catelog_id")); goods.setName(rs.getString("name")); goods.setBeizhu(rs.getString("beizhu")); goods.setChandi(rs.getString("chandi")); goods.setDanwei(rs.getString("danwei")); goods.setGuige(rs.getString("guige")); goods.setCatelog_name(liuService.getCatelogName(rs.getInt("catelog_id"))); goodsList.add(goods); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); req.setAttribute("goodsList",goodsList); req.getRequestDispatcher("auser/goods/goodsAll.jsp").forward(req,res); }在功能菜單中點(diǎn)擊我要在線下單按鈕,就會進(jìn)入下單界面,系統(tǒng)自動生成了訂單編號和訂單時間,用戶輸入備注信息后,點(diǎn)擊提交,就會向系統(tǒng)成功提交訂單。用戶下單代碼功能實(shí)現(xiàn)在下面(代碼4-11)。圖4-14在線下單界面代碼4-11在線下單功能代碼publicvoidorderAddMy(HttpServletRequestreq,HttpServletResponseres) { intid=0; Stringdanjuhao=req.getParameter("danjuhao"); Stringshijian=req.getParameter("shijian"); Stringbeizhu=req.getParameter("beizhu"); Stringuser_id=req.getParameter("user_id"); Stringzhuangtai="審核中"; Stringdel="no"; Stringsql="insertintot_ordervalues(?,?,?,?,?,?)"; Object[]params={danjuhao,shijian,beizhu,user_id,zhuangtai,del}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("message","操作成功");StringtargetURL="/common/add_success.jsp"; dispatch(targetURL,req,res); }在功能菜單中點(diǎn)擊我的訂單列表按鈕,可以進(jìn)入訂單列表界面,如圖4-15所示,在我的訂單列表中,顯示了訂單的訂單編號,訂單時間,備注和狀態(tài),在訂單明細(xì)欄中點(diǎn)擊訂單明細(xì),可以查看訂單詳情。如圖4-16所示,顯示了訂單中商品的名稱、數(shù)量、備注,并且在操作欄中點(diǎn)擊刪除按鈕可以從訂單中刪除相應(yīng)的商品。在訂單明細(xì)欄中點(diǎn)擊添加訂單明細(xì),可以向訂單中繼續(xù)添加商品,如圖4-17所示,選擇分類和商品,輸入數(shù)量和備注,就可以向訂單中添加商品。訂單明細(xì)代碼功能實(shí)現(xiàn)在下面(代碼4-12)。圖4-15我的訂單列表界面圖4-16訂單明細(xì)圖4-17添加訂單明細(xì)代碼4-12訂單明細(xì)管理代碼publicvoidorderMingxiAdd(HttpServletRequestreq,HttpServletResponseres) { intorder_id=Integer.parseInt(req.getParameter("order_id")); intgoods_id=Integer.parseInt(req.getParameter("goods_id")); intshuliang=Integer.parseInt(req.getParameter("shuliang")); Stringbeizhu=req.getParameter("beizhu"); Stringsql="insertintot_orderMingxivalues(?,?,?,?)"; Object[]params={order_id,goods_id,shuliang,beizhu}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("msg","操作成功");StringtargetURL="/common/msg.jsp"; dispatch(targetURL,req,res); } publicvoidorderMingxiMana(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException { intorder_id=Integer.parseInt(req.getParameter("order_id")); ListorderMingxiList=newArrayList(); Stringsql="select*fromt_orderMingxiwhereorder_id="+order_id; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { TorderMingxiorderMingxi=newTorderMingxi(); orderMingxi.setId(rs.getInt("id")); orderMingxi.setorder_id(rs.getInt("order_id")); orderMingxi.setGoods_id(rs.getInt("goods_id")); orderMingxi.setShuliang(rs.getInt("shuliang")); orderMingxi.setBeizhu(rs.getString("beizhu")); orderMingxi.setGoods_name(liuService.getGoodsName(rs.getInt("goods_id"))); orderMingxiList.add(orderMingxi); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); System.out.println(orderMingxiList.size()); req.setAttribute("orderMingxiList",orderMingxiList); req.setAttribute("order_id",order_id); req.getRequestDispatcher("admin/order/orderMingxiMana.jsp").forward(req,res); } publicvoidorderMingxiDel(HttpServletRequestreq,HttpServletResponseres) { intid=Integer.parseInt(req.getParameter("id")); Stringsql="deletefromt_orderMingxiwhereid="+id; Object[]params={}; DBmydb=newDB(); mydb.doPstm(sql,params); mydb.closed(); req.setAttribute("msg","操作成功");StringtargetURL="/common/msg.jsp"; dispatch(targetURL,req,res); }
第5章系統(tǒng)測試5.1系統(tǒng)測試用例在系統(tǒng)測試中,通過測試用例來驗證系統(tǒng)的各個功能,是一種廣泛運(yùn)用的系統(tǒng)測試方案,測試用例主要涉及到了測試項目名稱、功能模塊、編寫人、系統(tǒng)版本、預(yù)制條件和功能特性等信息,每一條測試用例包括了用例編號、用例名稱、測試步驟和預(yù)期結(jié)果[10-11]。根據(jù)本文設(shè)計的甘記訂單管理系統(tǒng)的功能需求,組合運(yùn)用多種黑盒測試方法,詳細(xì)設(shè)計并進(jìn)行了登錄模塊(表5-1)、后臺管理端模塊(表5-2)、前臺客戶端理模塊(表5-3)的測試用例。表5-1登錄模塊測試用例項目名稱:甘記訂單管理系統(tǒng)功能模塊:登錄模塊編寫人:潘先生系統(tǒng)版本:不用更新了預(yù)制條件:進(jìn)入系統(tǒng)登錄界面功能特性:驗證系統(tǒng)登錄模塊的各個功能用例編號用例名稱測試步驟預(yù)期結(jié)果1管理員登錄1、輸入管理員賬號2、輸入管理員賬號密碼3、選擇管理員身份4、點(diǎn)擊登錄成功登錄到后臺管理端2用戶登錄1、輸入用戶賬號2、輸入用戶賬號密碼3、選擇用戶身份4、點(diǎn)擊登錄成功登錄到前臺客戶端3用戶注冊1、點(diǎn)擊客戶注冊2、輸入注冊信息3、點(diǎn)擊確定正確注冊用戶賬戶表5-2后臺管理端模塊測試用例項目名稱:甘記訂單管理系統(tǒng)功能模塊:管理端模塊編寫人:系統(tǒng)版本:預(yù)制條件:登錄后臺管理端功能特性:驗證系統(tǒng)管理端模塊的各個功能用例編號用例名稱測試步驟預(yù)期結(jié)果1修改個人密碼1、點(diǎn)擊修改個人密碼2、輸入原密碼3、輸入新密碼4、點(diǎn)擊修改成功修改密碼2刪除注冊客戶1、點(diǎn)擊注冊客戶管理2、在操作欄中點(diǎn)擊刪除3、在彈出的對話框中點(diǎn)擊確定成功刪除注冊客戶賬號3刪除商品類別1、點(diǎn)擊商品類別管理2、點(diǎn)擊刪除3、在彈出的對話框中點(diǎn)擊確定成功刪除商品類別4添加商品類別1、點(diǎn)擊商品類別添加2、輸入商品類別名稱3、輸入介紹4、點(diǎn)擊提交成功添加商品類別5刪除商品信息1、點(diǎn)擊商品信息管理2、點(diǎn)擊刪除3、在彈出的對話框中點(diǎn)擊確定成功刪除商品信息6添加商品信息1、點(diǎn)擊商品信息添加2、輸入商品信息3、點(diǎn)擊提交成功添加商品信息7受理訂單1、點(diǎn)擊訂單信息管理2、在狀態(tài)欄中點(diǎn)擊受理訂單成功受理訂單8查看訂單明細(xì)1、點(diǎn)擊訂單信息管理2、在點(diǎn)擊訂單明細(xì)顯示訂單詳細(xì)信息9刪除訂單1、點(diǎn)擊訂單信息管理2、點(diǎn)擊刪除3、在彈出的對話框中點(diǎn)擊確定成功刪除訂單表5-3前臺客戶端模塊測試用例項目名稱:甘記訂單管理系統(tǒng)功能模塊:客戶端模塊編寫人:Pp系統(tǒng)版本:預(yù)制條件:成功登錄前臺客戶端功能特性:驗證系統(tǒng)客戶端模塊的各個功能用例編號用例名稱測試步驟預(yù)期結(jié)果1瀏覽商品信息1、點(diǎn)擊商品信息瀏覽可以在商品信息列表中瀏覽商品2在線下單1、點(diǎn)擊我要在線下單2、輸入備注信息3、點(diǎn)擊提交成功創(chuàng)建訂單3添加商品1、點(diǎn)擊我的訂單列表2、點(diǎn)擊添加訂單明細(xì)3、輸入商品信息4、點(diǎn)擊提交成功將商品添加入訂單4查看訂單明細(xì)1、點(diǎn)擊我的訂單列表2、點(diǎn)擊訂單明細(xì)顯示訂單中詳細(xì)商品5從訂單中刪除商品1、點(diǎn)擊我的訂單列表2、點(diǎn)擊訂單明細(xì)3、點(diǎn)擊刪除4、在彈出的對話框中點(diǎn)擊確定成功將商品從訂單中刪除5.2系統(tǒng)測試結(jié)果分析按照測試用例中的測試步驟,對本文開發(fā)的甘記訂單管理系統(tǒng)進(jìn)行了測試,系統(tǒng)運(yùn)行結(jié)果均與預(yù)期結(jié)果一致,表明該系統(tǒng)整體運(yùn)行穩(wěn)定,各個模塊的功能可以按照設(shè)計需求實(shí)現(xiàn),系統(tǒng)可以滿足商家訂單管理的要求。
第6章結(jié)束語6.1論文總結(jié)本文項目基于Structs框架的甘記訂單管理系統(tǒng)在設(shè)計與實(shí)現(xiàn)的過程中遇到了不少的技術(shù)難題,在我們廣大松田厲害的同學(xué)們熱心幫助下,在指導(dǎo)老師唐老師的耐心輔導(dǎo)下,通過與他們進(jìn)行學(xué)習(xí)和交流,不僅解決了困難,完成了項目開發(fā),還學(xué)到了不少的知識和技能,在此對項目的開發(fā)過程進(jìn)行一次總結(jié)。首先從訂單管理系統(tǒng)的設(shè)計和實(shí)現(xiàn)目的出發(fā),先論述了項目開發(fā)的背景和意義,然后介紹了系統(tǒng)開發(fā)的環(huán)境和相關(guān)技術(shù),(MVC設(shè)計模式、structs開發(fā)框架,spring開發(fā)框架,hibernate開發(fā)框架,MySQL數(shù)據(jù)庫,)為本文項目開發(fā)提供理論基礎(chǔ)和技術(shù)支持;接著進(jìn)行了項目的設(shè)計與實(shí)現(xiàn),設(shè)計方面包括了功能結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫設(shè)計和WEB應(yīng)用程序開發(fā)框架設(shè)計,為本文項目開發(fā)實(shí)現(xiàn)提供了設(shè)計思路,實(shí)現(xiàn)方面通過工程目錄、登錄模塊實(shí)現(xiàn)、后臺管理端模塊實(shí)現(xiàn)和前臺客戶端模塊的實(shí)現(xiàn),展示了本文系統(tǒng)各項功能的實(shí)現(xiàn)效果;最后對系統(tǒng)進(jìn)行了測試,采用了黑盒測試方法,設(shè)計了測試用例,并按照測試用例中的測試步驟驗證了本文開發(fā)的甘記訂單管理系統(tǒng)的各個模塊和功能。通過實(shí)踐完成本文甘記訂單管理系統(tǒng)的開發(fā),有了很大的收獲和提高:1、對項目開發(fā)流程更加清晰,認(rèn)識更加深刻。2、提高了編程能力,和基于Java開發(fā)的技術(shù)水平。3、提高了在開發(fā)過程分析問題、解決問題的能力。4、寫這篇論文會讓我懷念在松田的日子,出來社會要比在學(xué)校辛苦得多,承受的壓力也會比身為學(xué)生時候大得多??傊瑸榻窈笤诠ぷ鲘徫簧蠌氖翵AVA開發(fā)和軟件設(shè)計累積了經(jīng)驗,打下了堅實(shí)的專業(yè)知識基礎(chǔ),讓我對編程工作,有了更大的信心。6.2系統(tǒng)展望本文項目所設(shè)計的甘記訂單管理系統(tǒng)具有操作簡單、部署方便、易于維護(hù)等特點(diǎn),還有以下的優(yōu)點(diǎn):1、在該訂單管理系統(tǒng)使用過程中,會生成大量的商品交易和銷售數(shù)據(jù),因此,可以通過大數(shù)據(jù)分析,對訂單數(shù)據(jù)進(jìn)一步分析,為經(jīng)者提供更加科學(xué)合理的銷售建議,提高營業(yè)效益。2、增加和設(shè)計在線交易模塊,使用戶在下單的同時可以進(jìn)行付款,簡化交易流程,提高服務(wù)質(zhì)量。對于本文設(shè)計的甘記訂單管理系統(tǒng)其他方面的不足,還讓各位老師批評指正,不要批太狠
參考文獻(xiàn)張文豪.訂單管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].北京交通大學(xué),2019顏亞軍,仲梁維.基于訂單數(shù)據(jù)分析的訂單管理系統(tǒng)[J].中國水運(yùn)(下半月),2018,18(12):53-55周夢姝,楊杏,王小剛,殷振華.領(lǐng)域模型在訂單管理系統(tǒng)開發(fā)中的應(yīng)用研究[J].電子技術(shù)與軟件工程,2016(01):65-66曹重陽.MVC設(shè)計模式下的網(wǎng)絡(luò)購物系統(tǒng)[J].計算機(jī)產(chǎn)品與流通,2018(04):154孫亞志.淺談Javaweb技術(shù)structs2框架的MVC模式[J].數(shù)字技術(shù)與應(yīng)用,2013(05):208牟舜禹.基于Spring框架的客服系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].北京交通大學(xué),2019向大芳.基于Hibernate框架數(shù)據(jù)持久化的設(shè)計與實(shí)現(xiàn)[J].科技創(chuàng)新導(dǎo)報,2019,16(28):135-139鄭智方,魏愷樂,李彬,謝易壯.MySQL得到廣泛使用的原因以及它的嵌入應(yīng)用[J].科技風(fēng),2020(05):114冷波.基于B/SWeb架構(gòu)組態(tài)監(jiān)控平臺的應(yīng)用[J].自動化應(yīng)用,2019(09):72-74闞丹丹.軟件測試流程綜述[J].電腦知識與技術(shù),2015,11(03):94-96王艷青,于海洋.計算機(jī)軟件測試技術(shù)綜述[J].電子技術(shù)與軟件工程,2017(22):47-48
致謝 用小學(xué)寫作文的開頭來寫吧。光陰似箭,日月如梭,我專插本考上在松田之后,時間總共有一年多了,我很慶幸兩年前的自己選擇了廣州大學(xué)松田,在這快有兩年時間里,我認(rèn)識了很多同樣是專插本考上了的同學(xué)。學(xué)校的老師也非常好。在學(xué)院老師們的諄諄教誨下,在同學(xué)們的互相幫助下,我也成長了很多。 首先要感謝的是我本次畢業(yè)論文的指導(dǎo)老師,唐老師在教學(xué)和研究上一絲不茍,在畢業(yè)設(shè)計的完成過程中也給予了我很大的幫助,本來我由于自己的事情在畢業(yè)論文上面很拖沓,唐老師不但沒有覺得我是no作nodie,還特地延遲幾天讓我把論文寫好,真的非常感謝。 此外,還要感謝輔導(dǎo)員梁導(dǎo)。有一天晚上凌晨兩點(diǎn)多,我真的壓力很大,忍不住打電話給梁導(dǎo)說出自己所面臨的問題。梁導(dǎo)醒的好快,還一直安慰我。幫我和指導(dǎo)老師溝通。真的很慶幸能遇到這么好的輔導(dǎo)員,就像一個大姐姐一樣照顧我,之后也在微信問我論文寫得怎么樣,有沒有什么遇到技術(shù)性的問題啊,很好,謝謝你哦梁導(dǎo)。 最后要感謝我的爸爸媽媽,感謝他們?yōu)槲姨峁┝肆己玫奈镔|(zhì)保障,讓我可以在學(xué)校安心的學(xué)習(xí),這也是激勵我認(rèn)真學(xué)習(xí)的動力。匆匆兩年,感謝在這段時間里所有幫助過我的老師和同學(xué),讓我擁有了一個美好的大學(xué)生活,謝謝你們!
捷鍵與一些電腦小技巧HYPERLINKwinkey+d:
這是高手最常用的第一快捷組合鍵。這個快捷鍵組合可以將桌面上的所有窗口瞬間最小化,無論是聊天的窗口還是游戲的窗口……只要再次按下這個組合鍵,剛才的所有窗口都回來了,而且激活的也正是你最小化之前在使用的窗口!
--這個就是winkeywinkey+f:
不用再去移動鼠標(biāo)點(diǎn)“開始→搜索→文件和文件夾”了,在任何狀態(tài)下,只要一按winkey+f就會彈出搜索窗口。
winkey+r:
在我們的文章中,你經(jīng)常會看到這樣的操作提示:“點(diǎn)擊‘開始→運(yùn)行’,打開‘運(yùn)行’對話框……”。其實(shí),還有一個更簡單的辦法,就是按winkey+r!
alt+tab:
如果打開的窗口太多,這個組合鍵就非常有用了
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)行業(yè)工作計劃制定
- 游戲活動對幼兒發(fā)展的影響計劃
- 品牌重塑中的領(lǐng)導(dǎo)力作用計劃
- 2025年紡粘法非織造布生產(chǎn)線項目建議書
- 分析企業(yè)強(qiáng)弱勢的管理方式計劃
- 智研咨詢發(fā)布-2025年中國玄武巖纖維行業(yè)現(xiàn)狀、發(fā)展環(huán)境及投資前景分析報告
- 2025年高精度帶材軋機(jī)項目合作計劃書
- 古氣候變遷在沉積記錄中的體現(xiàn)方式
- 2025年數(shù)控超精密磨床項目建議書
- 地球的故事之環(huán)境保護(hù)讀后感
- 《跨境電商B2B操作實(shí)務(wù)》教學(xué)大綱
- 老化箱點(diǎn)檢表A4版本
- 河口區(qū)自然資源
- 音標(biāo)教學(xué)課件(共73張PPT)
- 2012數(shù)據(jù)結(jié)構(gòu)英文試卷A及答案
- 機(jī)翼結(jié)構(gòu)(課堂PPT)
- 二次回路施工驗收
- 自由組合定律的應(yīng)用9331的變式
- 唐河縣骨干網(wǎng)評員登記表
- 危險廢物利用和處置方式代碼表
- 井下使用切割機(jī)安全技術(shù)措施
評論
0/150
提交評論