電機銷售管理系_第1頁
電機銷售管理系_第2頁
電機銷售管理系_第3頁
電機銷售管理系_第4頁
電機銷售管理系_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

中北大學2014屆畢業(yè)設計說明書基于Hibernate+struts2的電機銷售系統(tǒng)前臺的設計與實現(xiàn)學院:軟件學院專業(yè):軟件工程指導教師:2014年9月 基于Struts2+Hibernate的電機銷售管理系統(tǒng)摘要基于網(wǎng)絡的銷售管理系統(tǒng)伴隨著網(wǎng)絡技術的發(fā)展已得到了廣泛的應用,它極大的改變了人們的消費理念,讓人可以足不出戶實現(xiàn)快捷方便的購物體驗,為廣大網(wǎng)絡用戶提供了更加周到和人性化的服務。本文所討論的系統(tǒng)是基于目前web開發(fā)中流行的2大框架:struts、hibernate的,是典型的B/S架構的系統(tǒng),其開發(fā)主要包括應用程序的開發(fā),數(shù)據(jù)庫的建立和維護兩個方面。 應用此系統(tǒng),商家可以發(fā)布商業(yè)信息,廣告等等。用戶可以查閱、訂購商品,該系統(tǒng)可以為客戶提供更方便、更好、更快的商務活動空間,實現(xiàn)網(wǎng)上交易,是一個綜合性電子商務系統(tǒng)。從整個系統(tǒng)結(jié)構上看,本系統(tǒng)包括客戶端和服務器端,客戶端主要針對客戶的一般需求,而服務器端主要是針對管理員的需求。管理員能夠?qū)φ麄€系統(tǒng)的數(shù)據(jù)進行管理。整個系統(tǒng)的開發(fā)過程由需求分析,系統(tǒng)的功能設計,詳細設計,數(shù)據(jù)庫設計等幾個部分組成。關鍵詞:工作模式,數(shù)據(jù)庫設計,模塊設計,數(shù)據(jù)驗證 AmotorsalesmanagementsystemthatbasedonStrutsandHibernateAbstractWiththedevelopmentofthenetwork,e-businesssystemhasbeenwidelyused.Ithaschangedpeople’sideaofexpenseimmensely,peoplecangoshoppinganytimeandanywhereifyouwant,andyoudon’tneedtogoout.,providingthemorethoughtfulandhumanizedserviceforthelargenetworkcustomer.Thesystemwetalkedaboutisbasedontwowidelyusedframework:Struts2andhibernate.ThissystemisatypicalB/Sstructureofthesystem,includingthedevelopmentofitsapplicationdevelopment,databasecreationandmaintenanceofthetwoareas.Throughthissystem,Advertisercanissuesbusinessinformationandproductsadvertisements,anduserscanconvenientlyordergoodsdependingonB/Spattern.Becauseofrunningonweb,thesystemcanofferwholeday,bettermorequickroomofactivitiestorealizethebasisfunctionsoftransactioninInternet.TheWeb,accordingtothecurrentdesignprinciplesofbusinessWeb,givesfirstplacetotransactionfunctioninInternet,itisasynthesiselectroniccommerceWeb.Fromtheanalysisabove,thecontentofthispapermainlyincludesthedesignofclientandserver.Clientpartisspecifictouser,Serverpartisspecifictoadministrator.Administratorandmanagertheholesystem,guaranteetheguaranteeofdatabase.Thedevelopingofthissystemconsistofdemandanalysis、functionaldesign、detaileddesign、databasedesign.Keywords:modedatabase,designmodular,designdata,validation第Ⅰ頁共Ⅱ頁目錄TOC\o"1-3"\h\u66741緒論 頁共40頁(1)界面:在本項目中指JSP頁面,在具體的時序圖中被實際的頁面文件所替代。(2)Action:指Struts中的Action的具體實現(xiàn)類,在具體的時序圖中被實際的類所替代。其作為控制器的一部份存在。(3)BO:業(yè)務邏輯操作對象(BussinessObject),執(zhí)行功能的業(yè)務邏輯職責,在具體的時序圖中被實際的類所替代。如果某個功能沒有業(yè)務邏輯處理,此類可以不在時序圖中存在。(4)DAO:為數(shù)據(jù)操作類處理相應的數(shù)據(jù)庫操作。(5)HibernateDataSource:數(shù)據(jù)操作實現(xiàn)類,用來執(zhí)行實際的數(shù)據(jù)庫訪問。4.4系統(tǒng)的持久化層具體實現(xiàn)4.4.1定義Hibernate工廠類本系統(tǒng)采用Struts和Hibernate技術進行開發(fā),由Hibernate進行數(shù)據(jù)庫連接和數(shù)據(jù)對象的操作,這里定義一個HibernateSessionFactory類去負責初始化Hibernate。由它創(chuàng)建全局的SessionFactory工廠類,并且提供創(chuàng)建和關閉session實例,創(chuàng)建HibernateTransaction負責打開/關閉事物。這樣在使用hibernate時更加方便,不用每次為創(chuàng)建SessionFactory實例,Session實例或者關閉Session實例,打開/關閉,事物操作單獨這些代碼,只要調(diào)用上面的類的方法就可以了,從而簡化了操作[14]。4.4.2使用Dao模式本系統(tǒng)的持久化邏輯采用Hibernate作為中間件,并使用DAO設計模式實現(xiàn)。主要是在業(yè)務核心方法和具體數(shù)據(jù)源之間增加一層,這樣就減少了兩者的耦合。每個持久化類對應一個DAO類,它實現(xiàn)了持久化類的創(chuàng)建、查詢、更新及刪除方法,以及其它訪問持久化機制的方法。本系統(tǒng)所有與數(shù)據(jù)庫邏輯有關的方法都在IDao接口中,在com.briup.dao包下創(chuàng)建一個Dao的接口,并在com.briup.dao包下創(chuàng)建一個impl繼承Dao接口實現(xiàn)具體的操作[15]。4.5系統(tǒng)業(yè)務邏輯層設計業(yè)務邏輯層中只包含業(yè)務邏輯,不包含任何與數(shù)據(jù)庫的交互,因此減少了訪問過程中與數(shù)據(jù)庫交互的過程,大大提高了運行的速率。業(yè)務邏輯層的實現(xiàn)需要調(diào)用持久化層和數(shù)據(jù)庫交互功能的支持。本系統(tǒng)所有與業(yè)務邏輯有關的方法都在Service接口中,并且在com.briup.service包中創(chuàng)建一個impl包,此包中的類是對service接口的實現(xiàn)。4.6系統(tǒng)接口及映射文件的實現(xiàn)設計本系統(tǒng)的持久化邏輯采用Hibernate作為中間件,并使用DAO設計模式實現(xiàn)。主要是在業(yè)務核心方法和具體數(shù)據(jù)源之間增加一層,這樣就減少了兩者的耦合。每個持久化類對應一個DAO,它實現(xiàn)了持久化類的創(chuàng)建、查詢、更新及刪除方法,即CRUD(create、retrieve、update、delete)方法,以及其他訪問持久化機制方法。本系統(tǒng)所有與數(shù)據(jù)庫邏輯有關的方法都在Dao的實現(xiàn)類中,現(xiàn)在dao包下創(chuàng)建接口IProductDao、IOrderDao、IUserDao,并在dao.impl包下創(chuàng)建接口的實現(xiàn)類ProductDaoImplOrderDaoImpl、UserDaoImpl,注意要繼承相應的接口。為了使用Hibernate來持久化對象,首先要根據(jù)數(shù)據(jù)庫的各個表創(chuàng)建映射文件.每個類都對應的Hibernate映射文件,且都放到bean包下[16]。4.7模塊功能設計與實現(xiàn)4.7.1登陸功能任何的用戶都必須通過登陸界面進入購書系統(tǒng)。在登錄界面上用戶可以輸入用戶名和密碼進行登錄,在登錄時用戶可以選擇以不同的角色身份登錄。如果用戶名和密碼正確,將成功跳轉(zhuǎn)到電機銷售管理系統(tǒng)主頁面,如果不正確,提示給用戶錯誤信息,并且還跳轉(zhuǎn)到登錄界面繼續(xù)登錄。具體實現(xiàn)思想:首先客戶端驗證通過JavaScript來完成,比如用戶沒有輸入用戶名時提示客戶用戶名不能為空,密碼為空時提示密碼不能為空。只有用戶名和密碼都填寫好以后才能進行客戶端數(shù)據(jù)的提交,這樣使得操作更加方便并且提高效率。當數(shù)據(jù)提交以后,表單中的數(shù)據(jù)將經(jīng)過攔截器,它的作用是為參數(shù)作類型轉(zhuǎn)換,這個過程是自動完成的,無須我們?nèi)プ鬟@部分工作。我們在logAction里面也有定義兩個實例變量:name和password并且寫上對應的set/get方法[17]。然后判斷登錄的身份為普通用戶還是管理員,輸入的用戶名和密碼是否正確,action里面的execute方法調(diào)用IUserService接口中的login(Customerc)方法實現(xiàn)登錄的合法性驗證。如果為普通用戶,在此service方法中首先要調(diào)用dao方法中的find(Stringname)方法判斷數(shù)據(jù)庫customer表中是否存在名字為name的記錄,如果不存在提示用戶輸入的用戶名不存在,如果存在,繼續(xù)判斷密碼是否于數(shù)據(jù)庫中的密碼相同,相同的時候表示登錄成功execute方法返回Success,然后struts2根據(jù)配置文件的配置跳轉(zhuǎn)到相關的頁面,也就是銷售管理的客戶主界面。如果是管理員,我們將把servletContext里面的admin鍵值對讀出,如果用戶密碼都正確跳轉(zhuǎn)到管理界面否則提示出錯。無論是用戶還是管理員,在登錄成功后都把Service層的login方法返回的Customer對象保存到session范圍內(nèi)。遇到的問題:在寫action的時候總是忘記把屬性的set/get方法寫上,這樣作的后果是struts是沒法給屬性賦值的,可能會產(chǎn)生空指針異常。還有就是由于在execute()方法里面實際上有普通用戶和管理員的兩個登錄,所以剛開始寫時把返回值都寫成了"success"和"error",這樣是不能跳轉(zhuǎn)到正確的頁面的。4.7.2注冊功能任何第一次登陸的用戶必須先注冊,與注冊界面有關的為register.jsp,在完成注冊功能時需要為注冊功能的實現(xiàn)定義一個action名字為RegisterAction,在execute()方法中調(diào)用相應的Dao和Service方法實現(xiàn)注冊。對注冊的用戶進行合法性的驗證,滿足所有的條件的用戶才能注冊成功。用戶名作為用戶登錄的唯一標識。在驗證注冊新用戶的過程中加入新加入了javascript驗證的過程,提示用戶在注冊時必須提供用戶名和密碼,且為了密碼的安全,位數(shù)在6位和8位之間等等。只由在滿足這一系列條件的情況下才能正常地注冊,否則重新注冊。具體實現(xiàn)的思想:在注冊界面中,對于帶有紅色星號的項必須填寫,其具體的客戶端驗證通過JavaScript完成,如果沒有填寫在提交的時候系統(tǒng)會提示用戶填寫相關的項目。在JavaScript文件的main.js中定義了一個函數(shù),專門對注冊界面提交的表單進行合法性驗證,如果驗證通過,轉(zhuǎn)回form中執(zhí)行的action屬性,跳轉(zhuǎn)到RegisterAction的execute方法中,在execute中接收到從注冊頁面的表單中的提交的相關數(shù)據(jù),創(chuàng)建User對象并將提交的數(shù)據(jù)封裝在此User類中,調(diào)用service中的registerUser方法對業(yè)務邏輯進行進一步的驗證,完全符合條件的情況下才能注冊成功,否則繼續(xù)進行注冊。4.7.3購買商品功能商品的購買必然要牽涉到購物車的實現(xiàn),它也是本系統(tǒng)的核心技術部分,首先是購物車列表的動態(tài)顯示,所有商品的數(shù)據(jù)是通過監(jiān)聽器加載進內(nèi)存的,通過分頁技術,讓顧客能瀏覽所有的電機商品。實現(xiàn)購物車中的添加電機、修改購買的數(shù)量,以及清空購物車的功能。電機列表的動態(tài)顯示是在web應用啟動的時候完成的,使用了創(chuàng)建事件監(jiān)聽器的方式實現(xiàn)。具體實現(xiàn):在listener包中創(chuàng)建一個ApplicationListener類,繼承系統(tǒng)提供的ServletContextListener類,定義contextIntialized方法對電機列表信息進行初始化工作,在此方法中新建一個products類型的對象,該對象的構造方法就有從數(shù)據(jù)庫中查詢出所有的商品,然后把products的對象存放在ServletContext范圍內(nèi)的application對象中,存放在ServletContext范圍內(nèi)的對象的生命周期為從web的啟動到web服務器的關閉時注銷,因此解決了在整個系統(tǒng)運行的過程中都有電機信息的存在,而且不用在每次用到電機信息的時候去數(shù)據(jù)庫中查詢調(diào)用數(shù)據(jù),減少了與數(shù)據(jù)庫的交互性并能提高系統(tǒng)的運行效率。采用contextDestoriyed方法刪除存放在ServletContext范圍中的電機信息。購物車的創(chuàng)建是在listener包中創(chuàng)建一個ShopCartListener類,繼承系統(tǒng)提供的HttpSessionListener類,從HttpSessionListener中獲取session對象,創(chuàng)建一個shopcart對象,并把它放在session范圍內(nèi),以供用戶使用。在創(chuàng)建事件監(jiān)聽器以后,一定要在web.xml配置文件中對事件監(jiān)聽器進行配置,否則創(chuàng)建的事件監(jiān)聽器不起任何作用。核心代碼如下:<listener><listener-class>com.briup.web.listener.ShopCartListener</listener-class></listener>電機信息在jsp頁面上的動態(tài)顯示使用了在jsp的腳本中使用jstl標簽結(jié)合EL表達式來處理。使用EL的目的為輸出對象中的屬性值,輸出一些變量值,輸出一些表達式(關系、邏輯、算術)的結(jié)果例如:sessionScope:把session范圍中的key和value進行映射session.setAttribute("name","jack");${sessionS}等于out.println(session.getAttribute("name"));用戶點擊購買按鈕時相當于提交了一個表單,這個表單包含了一個隱含的input標簽,其內(nèi)容為購買電機的id號,和購買的電機數(shù)量。然后這個表單轉(zhuǎn)向AddProductAction來處理。action的實例變量id,和num已經(jīng)由Struts2進行了賦值。execute方法中新建一個product對象,然后從session對象中獲得shopcart對象,并調(diào)用其中的addProduct方法往購物車中添加一條product對象。點擊電機列表下方的查看購物車功能時,跳轉(zhuǎn)到shopcart.jsp頁面,在購物車頁面中使用jsp腳本把存放在session范圍內(nèi)的shopcart對象取出,將shopcart對象中的所有products信息使用jstl的<c:forEachvar=""items=""></forEach>中的集合遍歷方式遍歷輸出。在購物車中點擊清除按鈕時可以從購物車中刪除指定的products對象。當點擊購物車中指定的書的刪除按鈕時,可以刪除購物車中的這條products。同理,我們也可以電機清空購物車時,把shopcart所維護的那個Map給清空掉,購物車清空就這樣實現(xiàn)了,具體方法為調(diào)用shopcart的removeAll()方法。4.7.4用戶訂單管理在電機列表中有查看用戶訂單信息的功能,需要實現(xiàn)IOrderDao接口中的findOrderByUserid方法,此方法與數(shù)據(jù)庫交互查詢出當前用戶所有的Order信息,實現(xiàn)IOrderService接口中的業(yè)務方法listOrdersOfUser,在OrderAction中創(chuàng)建execute方法,調(diào)用Service層的listOrdersOfUser方法來查找用戶所有的訂單信息。將使用listOrdersOfUser查找出來的訂單信息存放在session對象中,在顯示用戶訂單信息的order.jsp頁面中使用el表達式獲取到存放在session對象中的訂單信息,使用jstl標簽來遍歷集合,將所有的訂單信息顯示在頁面上。在用戶訂單信息中可以查看訂單明細,在listOrder.jsp中設置隱藏文本框,可以將指定的訂單的id號通過表單參數(shù)傳給OrderDetailAction中的execute方法,在此方法中調(diào)用IOrderService接口中的listOrdersOfUser方法從數(shù)據(jù)庫中查找確定id的訂單信息。將此確定的訂單明細信息存放在request中,在orderList.jsp頁面中使用el表達式${requestScope.order}獲取request對象中的訂單明細信息,輸出到頁面上。在購物車中有提交訂單的功能,當你登錄用戶名時,點擊提交功能時跳轉(zhuǎn)到confirmOrder.jsp頁面,在這個頁面上點擊確認按鈕時才能正式提交訂單,并將訂單信息提交給相應的action來處理。具體實現(xiàn)思想:在OrderDetailAction中創(chuàng)建execute方法,從session中獲得shopcart對象并將它的product對象轉(zhuǎn)換為order對象,再封裝一個訂單對象,然后調(diào)用IOrderService接口的saveOrder方法實現(xiàn)將訂單信息保存到數(shù)據(jù)庫中。當你未登錄用戶名時,點擊提交按鈕系統(tǒng)會自動提示你登錄用戶名,頁面也相應轉(zhuǎn)到用戶登錄界面。4.7.5用戶信息修改在整個銷售系統(tǒng)中還可以對用戶的個人信息進行修改,用戶可以只修改密碼也可以修改其他信息。4.7.6添加商品在此模塊中管理員可以增加商品和修改商品。增加的商品會及時的保存到數(shù)據(jù)庫中,但是由于用戶所看到的商品是在系統(tǒng)啟動的時候加載進內(nèi)存的,所以要多刷新幾次或者下次登錄時,用戶才會看到。同理,刪除的商品雖然在數(shù)據(jù)庫中刪除,但是仍然在表現(xiàn)層用戶還是會看到已經(jīng)商品的購買,而此時用戶點擊購買會出現(xiàn)異常情況。4.8系統(tǒng)業(yè)務流程圖進入系統(tǒng)首頁購買貨物NOYes電機列表首頁用戶登錄成功NOYes提交訂單管理員接收訂單發(fā)貨流程結(jié)束確認信息?Yes繼續(xù)購買NO進入系統(tǒng)首頁購買貨物NOYes電機列表首頁用戶登錄成功NOYes提交訂單管理員接收訂單發(fā)貨流程結(jié)束確認信息?Yes繼續(xù)購買NO圖4.2系統(tǒng)業(yè)務流程圖4.9本章小結(jié)本章主要參考概要設計所提出的軟件架構,用分層的思想實現(xiàn)了銷售管理的基本功能。在用戶的功能實現(xiàn)上,有對選購商品,購物車管理,訂單管理等。在管理層方面實現(xiàn)了添加物品,修改庫存,物品信息管理模塊。

5測試小結(jié)5.1測試說明(1)測試的目的及要求軟件測試試圖以最少的代價發(fā)現(xiàn)軟件分析、設計和編碼中存在的各種不同類型的錯誤,從而提高軟件質(zhì)量,降低軟件成本。軟件測試是保證軟件質(zhì)量的關鍵,也是發(fā)現(xiàn)軟件中錯誤和缺陷的主要手段。軟件測試的目的是確保最終交給用戶的產(chǎn)品的功能符合用戶需求,在產(chǎn)品交給用戶之前發(fā)現(xiàn)并改正盡可能多的問題。測試過程中我們能發(fā)現(xiàn)電機銷售管理系統(tǒng)的每個功能是否都能正常使用,檢查程序功能是否按照需求分析的規(guī)定正常使用,程序是否能適當?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生預期的輸出信息。(2)測試流程軟件測試的流程一般分為以下三步:準備測試數(shù)據(jù),并預測結(jié)果;數(shù)據(jù)輸入,進行測試,并記錄測試結(jié)果;分析測試結(jié)果及其產(chǎn)生原因。(3)功能測試簡介功能測試,又稱黑盒測試或數(shù)據(jù)驅(qū)動測試,是指已知產(chǎn)品所應具有的功能,通過測試來檢測每個功能是否都能正常使用。在測試時,把程序看做一個不能打開的黑盒子,在完全不考慮程序內(nèi)部結(jié)構和內(nèi)部特性的情況下,測試者對程序接口進行測試,它只檢查程序功能是否能按照需求規(guī)格說明書的規(guī)定正常使用。5.2系統(tǒng)功能測試本銷售管理系統(tǒng)分為客戶端的功能測試和服務端的功能測試。在進行用戶端測試之前,為了能讓用戶能購買電機所以預先錄入了一些商品信息。為了方便服務端的測試系統(tǒng)在啟動時讀取配置文件獲得默認的管理員帳號和密碼,在登錄時可以選擇此帳戶并以管理員身份登錄進行后臺數(shù)據(jù)的管理。(1)用戶注冊:準備測試數(shù)據(jù),并預測結(jié)果,測試數(shù)據(jù)如下表所示。表5.1用戶注冊數(shù)據(jù)表用戶名lixm密碼123456確認密碼123456所在地區(qū)中國山西省呂梁市聯(lián)系地址1呂梁市文水縣聯(lián)系地址2呂梁市文水縣2Zip(郵政編碼)032100家庭電話111111辦公室電話111111手mail771869092@預期結(jié)果:使用測試數(shù)據(jù)能夠完成用戶的注冊模塊,并且跳入商品顯示頁面。如果之前有用戶注冊了一個相同用戶名的賬號則此次注冊失敗,并提示用戶。數(shù)據(jù)輸入進行測試,并記錄測試結(jié)果,輸入的數(shù)據(jù)如下圖5.1所示:圖5.1注冊信息數(shù)據(jù)圖如果注冊成功系統(tǒng)會提示您注冊成功且表userinfo和contactinfo中會存儲相應的數(shù)據(jù),如圖5.2所示:圖5.2注冊成功頁面注冊成功后注冊圖5.1所示的注冊信息會存儲至表userinfo和contactinfo,userinfo表中只存儲用戶名和密碼,如圖5.3所示;而表contactinfo存儲的信息包括所在地區(qū)、聯(lián)系地址、郵編、家庭電話、辦公電話、手機、email地址,如圖5.4所示,兩個表通過用戶名來關聯(lián)。圖5.3注冊成功后userinfo信息存儲圖5.4注冊成功后contactinfo信息存儲如果用戶名已經(jīng)存在則ajax驗證會提示用戶該用戶名已經(jīng)被注冊,用戶必須重新選擇用戶名,如圖5.5所示。圖5.5重復注冊分析測試結(jié)果及其產(chǎn)生原因。用戶輸入用戶名點擊“查看用戶名是否存在時”會發(fā)送一個xmlHttpRequest請求給名為“CheckName”的servlet,它獲得用戶填入的用戶名然后調(diào)用Service層的方法查找該名稱的user類的對象。根據(jù)返回的對象是否為null返回不同的語句到瀏覽器端,這就是ajax的異步驗證。如果用戶名是可以注冊的,表單提交到一個Action去處理,它調(diào)用Service層的方法保存表單的所有數(shù)據(jù)到數(shù)據(jù)庫的user表中。然后,Action的result會把頁面跳到系統(tǒng)主頁面去。(2)購買電機,提交訂單準備測試數(shù)據(jù),并預測結(jié)果,測試數(shù)據(jù)如表5.2所示。表5.2購買電機功能測試數(shù)據(jù)表購買的電機名數(shù)量JS系列電機1JR系列電機1預期結(jié)果:如果成功購買則共需花費940元,用戶需要先加入購物車才能提交訂單。用戶可以選擇3種匯款方式:貨到付款、郵局匯款、銀行轉(zhuǎn)賬,在購買的過程中,用戶可以根據(jù)自己的需要修改已經(jīng)購買的某種電機的數(shù)量、刪除已經(jīng)購買的某種電機,確認訂單后,用戶也可以查看訂單明細,修改訂單信息等。數(shù)據(jù)輸入,進行測試,并記錄測試結(jié)果。用戶可以在系統(tǒng)首頁的商品展示上,選擇自己需要購買的產(chǎn)品,購買測試數(shù)據(jù)中的商品后可以在購物車上查看,如圖5.6所示。圖5.6查看購物車圖購買商品操作提示:如果輸入一個小于0的整數(shù)然后點擊購買按鈕,系統(tǒng)給予反饋的提示:購買數(shù)量不能小于1。分析測試結(jié)果及其產(chǎn)生原因。當用戶點擊購買商品時會往用戶所對應的購物車上添加一條記錄。本次測試中共購買的2件商品,生成了2條購物記錄。(3)購物車管理準備測試數(shù)據(jù),并預測結(jié)果,測試數(shù)據(jù)如表5.3所示。表5.3電機修改表修改前修改后購買的電機名數(shù)量購買的電機名數(shù)量JS系列電機1JS系列電機2JR系列電機1JN系列電機2總價4096總價8196預期結(jié)果:購物車中購買的商品的數(shù)量和商品的總價會改變?yōu)樾薷暮蟮?。?shù)據(jù)輸入,進行測試,并記錄測試結(jié)果。用戶可以修改購物車中購買的商品數(shù)量,刪除購買的商品。相應的操作都會由一個Action去執(zhí)行。一條記錄代表著一個product對象,一個購物車又由多個product構成。無論是修改還是刪除實際上都是對product的操作,修改后的購物車如圖5.7所示。圖5.7修改后的購物車分析測試結(jié)果及其產(chǎn)生原因。購物車存放的是用戶的臨時購物信息,在沒有確認訂單之前都是可以修改的,本次修改購物車信息的測試符合預期的結(jié)果。(4)訂單管理提交訂單,并記錄測試結(jié)果。在測試2的購物車管理中我們修改并確定我們最終要購買的商品,此時可以點擊提交訂單按鈕了,生成的訂單信息如圖5.8所示。圖5.8提交訂單生成的訂單信息圖可以發(fā)現(xiàn)圖5.8中用戶信息表單中除了用戶名其余都是可編輯的這樣做是因為可能用戶現(xiàn)在所處的地理位置與注冊時不一樣。可以修改如電話、地址信息,確??蛻裟苁盏截浳?,快遞公司能正確地發(fā)送貨物,還可以選擇自己的付款方式。距離生成真正的訂單到數(shù)據(jù)庫中只差最后一步了也就是確認訂單,用戶之后不能再針對此訂單做任何的修改,包括用戶信息。值得注意的是訂單表中有一個字段名為“pending”,代表此訂單是否支付過,默認值為true。生成的訂單是處理過的。分析測試結(jié)果及其產(chǎn)生原因。從測試結(jié)果圖中可以看出只要輸入的數(shù)據(jù)合理就能提交訂單,提交訂單時需要選擇自己的付款方式。遺憾的是,本銷售管理系統(tǒng)尚沒有實現(xiàn)賬戶的充值功能,所以支付模塊沒有演示。(5)管理員庫存管理庫存管理主要有添加電機和修改電機信息,修改庫存三個模塊。準備測試數(shù)據(jù),并預測結(jié)果,添加電機的測試數(shù)據(jù)如表5.4所示,添加電機后頁面上電機銷售店中會顯示添加的電機,且數(shù)據(jù)庫中表product會添加電機的信息。表5.4添加電機數(shù)據(jù)表電機名交流變頻電機V12單價150類型變頻調(diào)速簡介具有起動推力大、傳動剛度高、動態(tài)響應快、定位精度高、行程長度不受限制等優(yōu)點數(shù)量10數(shù)據(jù)輸入,進行測試,并記錄測試結(jié)果。輸入的數(shù)據(jù)如圖5.9所示:輸入添加電機的信息,點擊提交按鈕。圖5.9添加電機信息圖點擊提交按鈕后,系統(tǒng)會把電機信息存儲至表product中,其中圖片的存儲方式為存儲的字符串,為圖片路徑,提交成功后,頁面訂單下回多一條提交的信息,如圖5.10所示。圖5.10頁面顯示添加的電機信息圖提交電機信息成功后不僅頁面顯示提交電機信息而且數(shù)據(jù)庫表product會存儲相應信息,如圖5.11所示。圖5.11數(shù)據(jù)庫存儲提交的電機信息圖除以上功能之外,電機添加成功之后在電機銷售專店首頁電機產(chǎn)品名稱,可以查看電機詳細信息,包括圖片、型號、名稱等,如圖5.12所示。圖5.12頁面顯示電機信息5.3本章小結(jié)本章開始從用戶的角度,逐一使用了系統(tǒng)的各個功能模塊如登陸、注冊、下訂單等模塊等。認真分析了系統(tǒng)的測試結(jié)果和產(chǎn)生原因,對個別的用戶可能出現(xiàn)非法操作也進行了演示,盡量讓系統(tǒng)的功能特性反映出來。然后,以管理員的角度使用了管理訂單、查詢用戶等功能模塊。相對來講,后臺的管理還是比較簡單的,僅僅圍繞著訂單與用戶展開。

6結(jié)論本文用當前比較成熟的web開發(fā)框架Struts和Hibernate技術實現(xiàn)了的電機銷售管理系統(tǒng)的設計與開發(fā)。實現(xiàn)時主要用到了MVC模型。由于使用了MVC開發(fā)模型,使得各模塊具有相對的獨立性,因此系統(tǒng)的可重用性也比較高。用Java語言開發(fā),程序也具有很強的可移植性。本系統(tǒng)可以讓用戶輕松的對該系統(tǒng)執(zhí)行業(yè)務操作,如個人信息管理、購物車管理、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論