課程設(shè)計(jì)報(bào)告 網(wǎng)上購(gòu)物商城系統(tǒng)設(shè)計(jì) springspringmvcmybatis的經(jīng)典框架_第1頁(yè)
課程設(shè)計(jì)報(bào)告 網(wǎng)上購(gòu)物商城系統(tǒng)設(shè)計(jì) springspringmvcmybatis的經(jīng)典框架_第2頁(yè)
課程設(shè)計(jì)報(bào)告 網(wǎng)上購(gòu)物商城系統(tǒng)設(shè)計(jì) springspringmvcmybatis的經(jīng)典框架_第3頁(yè)
課程設(shè)計(jì)報(bào)告 網(wǎng)上購(gòu)物商城系統(tǒng)設(shè)計(jì) springspringmvcmybatis的經(jīng)典框架_第4頁(yè)
課程設(shè)計(jì)報(bào)告 網(wǎng)上購(gòu)物商城系統(tǒng)設(shè)計(jì) springspringmvcmybatis的經(jīng)典框架_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

網(wǎng)上購(gòu)商系統(tǒng)設(shè)1論1.1研的景意1.1.1選題的背景近年來(lái)隨著網(wǎng)絡(luò)通訊技術(shù)和計(jì)算機(jī)的快速發(fā)展互聯(lián)網(wǎng)已經(jīng)深入到人們生活的各個(gè)領(lǐng)域,同時(shí)也催生了一種新型的通過(guò)電子信息網(wǎng)絡(luò)進(jìn)行交易的經(jīng)濟(jì)活動(dòng),買賣雙方并不需要當(dāng)面接觸,典型性的代表有“阿里巴巴淘寶”這一類通過(guò)網(wǎng)站訂貨和購(gòu)物這就是電子商務(wù)電子商務(wù)無(wú)疑已經(jīng)成為當(dāng)前網(wǎng)絡(luò)經(jīng)濟(jì)與實(shí)體經(jīng)濟(jì)發(fā)展的重要方向,電子商務(wù)已經(jīng)席卷了經(jīng)濟(jì)的各個(gè)層面。隨著電子商務(wù)逐步成為經(jīng)濟(jì)主流和商業(yè)核心許企業(yè)紛紛建立自己的電子商務(wù)行業(yè)網(wǎng)站希望向深度和廣度的方向發(fā)展。杭州市是國(guó)家電子商務(wù)、電子政務(wù)和國(guó)家信息化試點(diǎn)城市,被稱為“中國(guó)電子商務(wù)之都”,電子商務(wù)建設(shè)和應(yīng)用起步都比較早,基礎(chǔ)扎實(shí),涉及領(lǐng)域廣泛,成效十分顯著b2b信息服務(wù)模式的電子商務(wù)行業(yè)網(wǎng)站建設(shè)規(guī)模水平處于國(guó)內(nèi)領(lǐng)先地位目前b2b網(wǎng)站約1200余家,較為著名的的有“中國(guó)化工網(wǎng)”“中國(guó)化纖信息網(wǎng)”“全球紡織網(wǎng)”等。但整個(gè)電子商務(wù)市場(chǎng)的競(jìng)爭(zhēng)異常激烈均每天就有兩個(gè)以上的電子商務(wù)行業(yè)網(wǎng)站推出,規(guī)模大小不一,質(zhì)量也參差不齊,各具特色。激烈的競(jìng)爭(zhēng)引來(lái)了服務(wù)、產(chǎn)品和網(wǎng)站建設(shè)內(nèi)容的大大豐富電子商務(wù)行業(yè)網(wǎng)站的評(píng)價(jià)和選擇已引起專家和研究人員的廣泛關(guān)注。電子商務(wù)代表著未來(lái)貿(mào)易方式的發(fā)展方向其應(yīng)用和推廣將給社會(huì)和經(jīng)濟(jì)帶來(lái)極大的效益具有強(qiáng)大生命力的現(xiàn)代電子交易手段己越來(lái)越被人們所認(rèn)識(shí)發(fā)達(dá)國(guó)家在這方面有很多年的發(fā)展歷史,發(fā)展中國(guó)家也正在加緊制定總體發(fā)展戰(zhàn)略大力促進(jìn)電子商務(wù)在國(guó)民經(jīng)濟(jì)各個(gè)領(lǐng)域的應(yīng)用力爭(zhēng)在越來(lái)越激烈的國(guó)際競(jìng)爭(zhēng)中占據(jù)有利的地位因此對(duì)于網(wǎng)上購(gòu)物技術(shù)的研究和實(shí)現(xiàn)以及搭建一個(gè)實(shí)用的網(wǎng)上超市是很重要的。1.1.2國(guó)內(nèi)外研究現(xiàn)狀1.國(guó)內(nèi)電子商務(wù)行業(yè)網(wǎng)站評(píng)價(jià)研究成果楊明智,莊玉良認(rèn)為內(nèi)容易用性電子商務(wù)功能是評(píng)價(jià)一個(gè)企業(yè)電子商務(wù)的首要標(biāo)準(zhǔn),以前的研究更加關(guān)注于網(wǎng)站的內(nèi)容而對(duì)運(yùn)營(yíng)情況的關(guān)注較少,們?cè)L問(wèn)網(wǎng)站的主要目的是獲取信息因此網(wǎng)站提供怎樣的信息()和如何獲取這些信息(易用性)就成為衡量網(wǎng)站質(zhì)量的關(guān)鍵指標(biāo)。姚遠(yuǎn)認(rèn)為應(yīng)把電子商務(wù)企業(yè)和它的運(yùn)營(yíng)過(guò)程中的設(shè)計(jì)的各方面作為一個(gè)整體的系統(tǒng)來(lái)考察。運(yùn)用層次分析(ahp)來(lái)確定各個(gè)評(píng)價(jià)指標(biāo)的權(quán)重,并用加權(quán)平均法計(jì)算最終的評(píng)價(jià)結(jié)果綜合考慮電子商務(wù)價(jià)值鏈中各個(gè)環(huán)節(jié)對(duì)電子商務(wù)企業(yè)價(jià)值驅(qū)動(dòng)的作用,同時(shí)對(duì)各個(gè)方面進(jìn)行分步驟、分方面考慮和

評(píng)價(jià),這樣更加科學(xué)和實(shí)用。胡冰川,張運(yùn)華,夏德峰認(rèn)為企業(yè)網(wǎng)站評(píng)價(jià)包含三個(gè).則:動(dòng)態(tài)性、差異性和整體性們認(rèn)為企業(yè)網(wǎng)站的評(píng)價(jià)指標(biāo)體系包括整體評(píng)價(jià)站設(shè)計(jì),內(nèi)容提供,網(wǎng)站推廣及其他。網(wǎng)站自身特征及其發(fā)展的階段性決定了要站在動(dòng)態(tài)和整體的角度上對(duì)企業(yè)網(wǎng)站進(jìn)行指標(biāo)評(píng)價(jià)和分析網(wǎng)站在不同行業(yè)、不同領(lǐng)域、不同發(fā)展時(shí)期表現(xiàn)出的不同特征決定了要采取差異性原則。2.國(guó)外電子商務(wù)行業(yè)網(wǎng)站評(píng)價(jià)研究成果jungpilhahn和robertj.kauffman認(rèn)為當(dāng)前的網(wǎng)站評(píng)價(jià)方法的準(zhǔn)確性會(huì)受到網(wǎng)站頻繁更新、受訪者缺乏專業(yè)知識(shí)等情況的影響,且僅僅強(qiáng)調(diào)網(wǎng)站可用性這一點(diǎn)不符合商業(yè)運(yùn)作的特征因而他們強(qiáng)調(diào)利用生產(chǎn)經(jīng)濟(jì)學(xué)的邊界估測(cè)方法評(píng)價(jià)網(wǎng)站性,察網(wǎng)站將所提供的用戶功能等輸入方轉(zhuǎn)化為交易行為等輸出方的能,后計(jì)算出某些指標(biāo)來(lái)衡量和發(fā)現(xiàn)網(wǎng)站中潛在的無(wú)效用戶功能。hopen.till站在用戶的立場(chǎng)上,分析用戶如何利用網(wǎng)絡(luò)信息資源,提出評(píng)價(jià)網(wǎng)絡(luò)信息的基本標(biāo)準(zhǔn),并提供了網(wǎng)上常用的一些網(wǎng)站評(píng)價(jià)工具。他認(rèn)為網(wǎng)站信息與其他載體來(lái)源的相關(guān)信息的比較情況可作為評(píng)價(jià)網(wǎng)站質(zhì)量的必.備指標(biāo)。f.j.mirandagonzalez和t.m.palacios提出了一種可以適用于評(píng)價(jià)商業(yè)、教育和非贏利性機(jī)構(gòu)網(wǎng)站的通用性評(píng)價(jià)指標(biāo)體系:wis(webassessmentindex),由可接入性、速度、內(nèi)容和導(dǎo)航四項(xiàng)指標(biāo)構(gòu)成。但是因?yàn)樾袠I(yè)特色、機(jī)構(gòu)特點(diǎn)以及網(wǎng)站目的差異性wis于全面衡量網(wǎng)站缺乏具體針對(duì)性。1.1.3研究的意義電子商務(wù)是一種新興的,處于發(fā)展過(guò)百程中的現(xiàn)代商務(wù)方式。電子商務(wù)活動(dòng)是通過(guò)公共計(jì)算機(jī)通信網(wǎng)絡(luò)進(jìn)行商務(wù)活動(dòng)的現(xiàn)代方式該方式將突破傳統(tǒng)商務(wù)在時(shí)間地域的限制成為方便快問(wèn)捷全可靠的新興電子化商務(wù)活動(dòng)模式。電子商務(wù)的發(fā)展速度之快遠(yuǎn)超過(guò)我們的想象速度之快令人難答以置信,它不僅帶給人們商業(yè)機(jī)會(huì)利潤(rùn)空間更改變了人們的生活及工作方式?jīng)]有了時(shí)間空間和人為條件上的版限制人民的生活和工作將變得更加方便靈活和自如,信息權(quán)渠道更寬,信息傳輸更快。1.2系目在大體上系統(tǒng)共分為前臺(tái)和后臺(tái)兩個(gè)部分。前臺(tái)部分提供給客戶使用如客戶可以登錄和注冊(cè)前臺(tái)瀏覽物品分類,瀏覽物品,查看新聞信息,添加購(gòu)物車,購(gòu)物車結(jié)算,商品評(píng)論等操作后臺(tái)部分提供給管理員使用,管理員可以在后臺(tái)增加管理員,對(duì)用戶進(jìn)行管理,增加產(chǎn)品分類,增加產(chǎn)品,修改產(chǎn)品,刪除產(chǎn)品,評(píng)論管理,訂單管理,新聞管理等操作。系統(tǒng)旨在提供一個(gè)網(wǎng)上購(gòu)物商城,所有的界面簡(jiǎn)潔易懂,邏輯清晰,操作簡(jiǎn)易。

2求分析2.1功需2.1.1子系統(tǒng)/塊說(shuō)明本系統(tǒng)分為兩個(gè)大模塊,分別是前臺(tái)、后臺(tái)管理模塊,其下若干小模塊。前臺(tái)模塊給客戶使用,后臺(tái)模塊提供電商管理員對(duì)本系統(tǒng)的操作權(quán)。前臺(tái)有客戶登錄注冊(cè)模塊、首頁(yè)產(chǎn)品顯示模塊、產(chǎn)品分類展示模塊、產(chǎn)品放入購(gòu)物車、購(gòu)物車模塊、評(píng)論模塊、新聞模塊。后臺(tái)有用戶管理模塊、產(chǎn)品管理模塊、新聞管理模塊、評(píng)論管理模塊、訂單管理模塊。所有的功能模塊都是SSM框架下實(shí)現(xiàn)框架、SpringMVC、MyBatis三種技術(shù)相結(jié)合的產(chǎn)物Spring有著IOCAOP的特性簡(jiǎn)化的開(kāi)發(fā)人員的代碼實(shí)現(xiàn)而且對(duì)其它流行框架都提供了集成支持SpringMVC是實(shí)現(xiàn)了MVC思想的輕量級(jí)框架,也可以讓開(kāi)發(fā)人員更加的方便開(kāi)發(fā)。而Mybatis則在數(shù)據(jù)庫(kù)方便使用了XML文件配置的形式sql語(yǔ)句獨(dú)立開(kāi)來(lái)合性更低。響應(yīng)請(qǐng)求Model調(diào)用業(yè)務(wù)對(duì)象

返回?cái)?shù)據(jù)模型用戶

發(fā)送請(qǐng)求

前端控制

委托處理器處理

頁(yè)面處理渲染視圖

返回控制VIEW

返Model圖2-1工作流程圖發(fā)送請(qǐng)求XMLHttpRequst對(duì)象

服務(wù)器相應(yīng)請(qǐng)求圖AJAX請(qǐng)求響應(yīng)圖在購(gòu)物車模塊當(dāng)中使用了AJAX技術(shù)技術(shù)是一種異步交互的開(kāi)發(fā)技術(shù)。

購(gòu)物車中的刪除和修改是有此技術(shù)實(shí)現(xiàn)的不需要重載界面就可以修改購(gòu)物車中物品的數(shù)量的變化和刪除物品。AJAX技術(shù)里面有一個(gè)對(duì)象,通過(guò)這個(gè)對(duì)象向后端服務(wù)器傳輸數(shù)據(jù)。如所示,在此過(guò)程中不需要進(jìn)行頁(yè)面的刷新而傳統(tǒng)的網(wǎng)頁(yè)如果想要得到新的數(shù)據(jù)則是需要重新加載頁(yè)面的這樣在只需要交換小量的數(shù)據(jù)的情況下是非常浪費(fèi)資源的。而AJAX技術(shù)則恰好解決了這一問(wèn)題,技術(shù)正是適合應(yīng)用于頁(yè)面交換小量數(shù)據(jù)并且需要及時(shí)更新的數(shù)據(jù)類型。目前的絕大部分主流瀏覽器都是適用的,所以不用擔(dān)心兼容問(wèn)題,可以放心適用AJAX,使得程序更加的方便快捷。2.1.2功能需求描述前臺(tái)模塊圖:通過(guò)登錄注冊(cè)模塊進(jìn)入,客戶可以進(jìn)行一些常規(guī)操作。圖2-3前臺(tái)模塊圖客戶登錄注冊(cè)模塊:客戶可輸入網(wǎng)址訪問(wèn)本系統(tǒng),若未登錄則只可以瀏覽產(chǎn)品和新聞等相關(guān)信息客戶可以自行注冊(cè)賬號(hào)并利用該賬號(hào)登錄本系統(tǒng)登錄成功之后可以進(jìn)行將物品加入購(gòu)物車結(jié)算和評(píng)論等相關(guān)操作如果客戶登錄失敗,那么只能后瀏覽物品和新聞,其他功能無(wú)法使用。購(gòu)物車模塊:用戶登錄后,可以在產(chǎn)品的明細(xì)模塊把物品添加到購(gòu)物車,在購(gòu)物車中,可以修改物品的數(shù)量,以及將該物品移除購(gòu)物車,以及結(jié)算。首頁(yè)產(chǎn)品展示模塊:首頁(yè)可以看到商品的分類和相關(guān)商品展示以及新聞?wù)故尽?/p>

產(chǎn)品明細(xì)模塊:在產(chǎn)品明細(xì)模塊中,可以看到相關(guān)產(chǎn)品的具體信息,并且可以進(jìn)行購(gòu)買和加入購(gòu)物車操作。產(chǎn)品分類展示擊左側(cè)的商品分類中的一個(gè)分類可進(jìn)到產(chǎn)品分類展示,可以看到屬于該分類的所有產(chǎn)品。新聞?wù)故灸K:首頁(yè)右側(cè)有個(gè)新聞?wù)故灸K,點(diǎn)擊可以進(jìn)入到該新聞的具體頁(yè)面。評(píng)論模塊:用戶可以在物品詳情頁(yè)面對(duì)該物品進(jìn)行評(píng)論后臺(tái)模塊圖:管理員登錄模塊:管理員輸入賬號(hào)和密碼和驗(yàn)證碼,跳轉(zhuǎn)到管理后臺(tái)首頁(yè)。用戶管理模塊:在該模塊中,管理員可以進(jìn)行用戶的增刪改查。商品分類管理模塊:管理員可以進(jìn)行商品分類新增,查看所有商品分類,可以修改相關(guān)商品分類的信息。商品管理模塊:可以進(jìn)行商品新增,修改商品信息,刪除該商品,查看所有商品操作。新聞管理模塊:可以進(jìn)行增加新聞,刪除新聞,修改新聞,查看所有新聞操作。評(píng)論模塊:可以查看所有評(píng)論,回復(fù)評(píng)論和刪除評(píng)論操作。訂單管理:可以查看訂單列表,對(duì)訂單進(jìn)行管理。

2.2非能求2.2.1外部接口需求前臺(tái)界面:前臺(tái)界面接口,通過(guò)登錄注冊(cè)的管理類去控制。后臺(tái)界面:通過(guò)管理員登錄控制類進(jìn)行管理。2.2.2性能需求本系統(tǒng)使用Tomcat進(jìn)行發(fā)布不需要?jiǎng)e的工具數(shù)據(jù)庫(kù)方面使用的是Mysql關(guān)系型數(shù)據(jù)庫(kù),同樣不需要什么特別的需求。推薦環(huán)境如下:運(yùn)行內(nèi)存:4GB硬盤空間:50GB4GB的運(yùn)行內(nèi)存保證了多客戶訪問(wèn)時(shí)的服務(wù)器響應(yīng)速度,而的磁盤空間保證了數(shù)據(jù)的容量基本沒(méi)什么問(wèn)題。2.2.3其它需求安全性即與防止對(duì)程序技術(shù)局的非授權(quán)的故意或者意外訪問(wèn)的能力有關(guān)的軟件屬性。如用戶權(quán)限、動(dòng)態(tài)口令、數(shù)據(jù)庫(kù)字段加密等。所有的數(shù)據(jù)都是存儲(chǔ)在數(shù)據(jù)庫(kù)當(dāng)中,所以要防止例如sql注入等的黑客攻擊破解數(shù)據(jù)庫(kù),所以在安全方面要多加注意,設(shè)計(jì)接口的時(shí)候最好不要暴露太多的細(xì)節(jié),防止黑客攻擊。易用性是與一組規(guī)定或者潛在的用戶為使用其軟件所需做的努力和對(duì)這樣的使用所作的評(píng)價(jià)有關(guān)的一組屬性簡(jiǎn)單來(lái)講就是要好用一個(gè)成功的應(yīng)用應(yīng)該并不復(fù)雜,不需要太多的專業(yè)知識(shí)即可。那自動(dòng)售貨機(jī)作比較,試想一下,你就是想買瓶水,你不需要知道它是怎么工作的只需要知道你付了錢機(jī)器會(huì)彈出一瓶水即可。這就是易用性??赏卣剐裕河捎谙到y(tǒng)是由SSM框架搭建而成的,并且各個(gè)層次結(jié)構(gòu)分明,比如DAO、server層等。所以日后若想要添加什么功能,直接添加接口即可,不需要修改原來(lái)的代碼,這就是耦合性低的好處了,也就是的一大優(yōu)點(diǎn)。

3據(jù)庫(kù)設(shè)計(jì)3.1概結(jié)設(shè)3.1.1設(shè)計(jì)思路1在創(chuàng)建表的時(shí)候要設(shè)置主鍵,并且一開(kāi)始的時(shí)候就要設(shè)置好主鍵。2主鍵的值必須是唯一的,就是說(shuō)一旦當(dāng)主鍵已經(jīng)存在某個(gè)值了,那么這個(gè)值只能出現(xiàn)一次。3被設(shè)為主鍵的字段不能插入空值。4被設(shè)為主鍵的字段的值是不能更改的。6主鍵最好是一個(gè)和表里數(shù)據(jù)無(wú)關(guān)的值。比如說(shuō)另建一個(gè)字段,而不要設(shè)在name等這些字段上。7外鍵的設(shè)置尤其要注意,若可以,則不設(shè)置外鍵,雖然關(guān)聯(lián)起來(lái)是很好使用但這樣一來(lái)表與表之間的耦合度就變得很高了一旦后期要對(duì)數(shù)據(jù)庫(kù)稍作修改就會(huì)變得特別麻煩,比如會(huì)遇到主鍵唯一的問(wèn)題、數(shù)據(jù)不可為空的問(wèn)題等等。所以外鍵最好不設(shè),可以使用相同含義的字段代替,比如表B使用到了表A中的ID屬性,則表不使用外鍵關(guān)聯(lián),而是添加一個(gè)自己的獨(dú)立字段A_ID的屬性,只要保證A_ID的值與表A中的ID值一致即可。3.1.2E-R圖

圖3-1-2易買網(wǎng)項(xiàng)目E-R圖3.1.3數(shù)據(jù)庫(kù)物理結(jié)構(gòu)用戶表(user)字名

數(shù)類

長(zhǎng)uidunameupwdgenderbirthdayidentityCodeemailmobileaddressstatuslogin

用戶名真實(shí)姓名密碼性別出生日期身份證號(hào)郵箱手機(jī)地址類型登錄次數(shù)

bigintvarcharvarcharintbigintvarcharvarcharvarcharvarcharintint

2050200112020200121001111

商品表(product)字名

數(shù)類

長(zhǎng)idpnamedescriptionpricestockcategoryIdcategory_cidproductImg

商品號(hào)商品名商品描述商品價(jià)格商品庫(kù)存所屬分類ID所屬二級(jí)分類ID上傳的文件路徑

bigintvarcharvarcharfloatintbigintbigintvarchar

201003000112020200訂單表(order)字名

數(shù)類

長(zhǎng)oiduidgoodssum

訂單號(hào)用戶ID訂單詳情內(nèi)容總金額

1111255255

intintvarchardouble新聞表(news)字名

數(shù)類

長(zhǎng)nidcontenttitlecreate_time

新聞號(hào)內(nèi)容標(biāo)題錄入日期

intvarcharvarchardate

11255255評(píng)論表(字名

數(shù)類

長(zhǎng)comidcontent

評(píng)論號(hào)ID內(nèi)容

intvarchar

11255

uidpid

用戶ID物品ID

intint

1111商品分類表(category)字名

數(shù)類

長(zhǎng)idcnameparentid

編號(hào)分類名父分類

bigintvarcharbigint

2050204細(xì)設(shè)計(jì)4.1系主功模介用戶登錄注冊(cè)模塊:客戶可輸入網(wǎng)址訪問(wèn)本系統(tǒng),若未登錄則只可以瀏覽商品和查看新聞?dòng)脩艨梢宰孕凶?cè)賬號(hào)并利用該賬號(hào)登錄本系統(tǒng)登錄成功之后可以把物品加入到購(gòu)物車并進(jìn)行結(jié)算用戶也可以進(jìn)行評(píng)論操作管理員登錄后可以進(jìn)入到后臺(tái)系統(tǒng)進(jìn)行用戶管理產(chǎn)品管理新聞管理評(píng)論管理和訂單管理。購(gòu)物車模塊用戶登錄后在物品詳情頁(yè)面點(diǎn)擊加入購(gòu)物車把物品加入購(gòu)物車后用戶可以在購(gòu)物車中看到加入購(gòu)物車中的物品有那些可以進(jìn)行數(shù)量修改操作,可以進(jìn)行將物品從購(gòu)物車中刪除操作。評(píng)論模塊:在商品的詳情頁(yè)面,用戶可以對(duì)該商品進(jìn)行相關(guān)評(píng)論操作。4.2戶錄冊(cè)塊計(jì)4.2.1戶登錄冊(cè)模塊法描用戶注冊(cè)算法:客戶輸入需要注冊(cè)的用戶名、密碼、確認(rèn)密碼、郵箱、手機(jī)和驗(yàn)證碼后臺(tái)進(jìn)行驗(yàn)證匹配用戶名密碼和驗(yàn)證碼是否符合規(guī)則數(shù)據(jù)庫(kù)是否已存在該用戶。并對(duì)密碼進(jìn)行MD5加密后,如果一切都正常,該用戶則注冊(cè)成功。用戶登錄算法:客戶輸入用戶名密碼和驗(yàn)證碼,后臺(tái)進(jìn)行驗(yàn)證是否符合規(guī)則

并給出相應(yīng)提示若驗(yàn)證碼正確則驗(yàn)證賬號(hào)密碼和數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)是否匹配若驗(yàn)證碼不正確,提示驗(yàn)證碼錯(cuò)誤。注冊(cè)功能使用了技術(shù)步刷新饋用戶名在數(shù)據(jù)庫(kù)中是否已經(jīng)存在。Ajax實(shí)現(xiàn)步驟和原理(1).獲取ajax異步對(duì)象IE4~IE12:使用newActiveXObject("microsoft.xmlhttp");非IE:使用newXMLHttpRequest();(2)ajax.open(method,url);method是提交方式有g(shù)et和post兩種url是提交路徑(3)ajax.send()(4)ajax.onreadystatechange這是一個(gè)監(jiān)聽(tīng)函數(shù)狀態(tài)碼:0—ajax異步對(duì)象創(chuàng)建完畢,但是還未發(fā)送。1—ajax已經(jīng)調(diào)用了方法,但是還未調(diào)用send()方法。2—已經(jīng)調(diào)用send(),但是還未到達(dá)服務(wù)器端。3表示請(qǐng)求已經(jīng)到達(dá)服務(wù)端,正在服務(wù)端的處理,但是還未響應(yīng)返回。4—ajax已經(jīng)完全接收了服務(wù)器的響應(yīng)信息,但是狀態(tài)碼未必是正確的。5—ajax.readyState==6—ajax.status==200;7—獲取值

ajax.requestText或者ajax.requestXML4.2.2戶登錄冊(cè)模塊序流圖

圖4-2-2登錄注冊(cè)流程圖4.2.3戶登錄冊(cè)模塊鍵類明UserController.Class類主要控住用戶的登錄注冊(cè)功能。主要代碼:/***登錄*@paramuser*@paramsession*@paramtxtCode*@return*/@RequestMapping("login")publicStringlogin(Useruser,HttpSessionsession,StringtxtCode){Stringresulttry{

//服務(wù)器端的數(shù)據(jù)檢查//處理:比對(duì)驗(yàn)證碼session("authCode"),txtCodeStringokCode=session.getAttribute("authCode").toString();if(!okCode.equals(txtCode)){thrownewBusinessException("驗(yàn)證碼不匹配);}//交給業(yè)務(wù)邏輯處理登錄事宜Useruser1=this.userSerivce.login(user);//密碼清**給前端user1.setUpwd("***");session.setAttribute("user",user1);result="index";}catch(BusinessException{//登錄出錯(cuò)//重定向到登錄頁(yè)面session.setAttribute("User",user);session.setAttribute("errmsg",e.getMessage());result="redirect:/toLogin";}catch(Exceptionex){thrownewRuntimeException(ex);}returnresult;}/***注冊(cè)*@paramuser*@paramtxtCode*@paramrequest*@paramresponse*@paramsession*@return*/@RequestMapping("doRegist")publicStringdoRegist(Useruser,StringtxtCode,HttpServletRequestrequest,HttpServletResponseresponse,HttpSession//普通用戶注冊(cè)u(píng)ser.setStatus(1);Stringresulttry{

//服務(wù)器端的數(shù)據(jù)檢查//處理:比對(duì)驗(yàn)證碼session("authCode"),txtCodeStringokCode=session.getAttribute("authCode").toString();if(!okCode.equals(txtCode)){thrownewBusinessException("驗(yàn)證碼不匹配);}//交給業(yè)務(wù)邏輯處理注冊(cè)事宜this.userSerivce.regist(user);result="redirect:/login";}catch(BusinessException{//重定向到注冊(cè)頁(yè)面session.setAttribute("User",user);session.setAttribute("errmsg",e.getMessage());result="redirect:/toRegist";}catch(Exceptionex){thrownewRuntimeException(ex);}returnresult;}4.3物模設(shè)4.3.1物車模算法描物品加入購(gòu)物車算法:用戶進(jìn)入一個(gè)物品的詳情頁(yè)面,在該物品的詳情頁(yè)面點(diǎn)擊加入購(gòu)物車會(huì)把該物品加入到購(gòu)物車當(dāng)中,如果重復(fù)將該物品加入購(gòu)物車,購(gòu)物車中該物品的數(shù)量會(huì)+1。購(gòu)物車中修改商品數(shù)量算法:修改商品數(shù)量,如果修改的商品數(shù)量,則彈出提示是否要?jiǎng)h除該行確認(rèn)則刪除該行調(diào)用定義好的刪除函數(shù)如果修改商品的數(shù)量>0,采用AJAX技術(shù)則調(diào)用更新接口修改商品數(shù)量,并提示修改成功。將物品從購(gòu)物車中刪除的算法調(diào)用定義好的刪除函數(shù)用AJAX技術(shù)調(diào)用后臺(tái)的刪除接口進(jìn)行刪除。

4.3.2物車模程序流圖圖4-3-2購(gòu)物車模塊流程圖4.3.3物車模關(guān)鍵類明CartController.Class類主要控制用戶購(gòu)物車功能。主要代碼:/***將品添加到購(gòu)物車中**session*@return*/@ResponseBody@RequestMapping("AddToOrder")publicJsonResultAddToOrder(Longid,HttpSessionsession){//從Session中取購(gòu)物車對(duì)象Cartcart=null;if(session.getAttribute("mycart")==null){//session中沒(méi)有購(gòu)車創(chuàng)購(gòu)物車對(duì)象并寫入sessioncart=Cart();session.setAttribute("mycart",cart);}else{//session中經(jīng)存在物車對(duì)象,直接獲取cart=(Cart)session.getAttribute("mycart");

}//根據(jù)id獲商品信息Productp=newProduct();p.setId(id);Productproduct=ductService.getProduct(p);//添加到購(gòu)物車CartItem=CartItem(product);//這調(diào)用add函數(shù),里面有一個(gè)處理就是,如果重復(fù)添加一個(gè)物品,購(gòu)物車中該物品數(shù)量cart.add(ci);//返回結(jié)果(包含物車中數(shù)量的相關(guān)信息)JsonResultjr=newJsonResult();jr.setOk(true);jr.setMsg(""+cart.size());returnjr;}/***將物品從購(gòu)物車中刪除**session*@return*/@ResponseBody@RequestMapping("deleteFromCart")publicJsonResultdeleteFromCart(longid,HttpSessionsession){//1從session中取購(gòu)物車對(duì)象Cartcart=(Cart)session.getAttribute("mycart");//2從物車中找到要?jiǎng)h除的購(gòu)物條目CartItemitem=cart.find(id);//3調(diào)購(gòu)物車對(duì)象的刪除方法刪除購(gòu)物車中的條目cart.delete(item);//4返JsonResult對(duì)JsonResultjr=newJsonResult();jr.setOk(true);jr.setMsg(""+cart.size());returnjr;

}/***更該物品的數(shù)量**quantity*session*@return*/@ResponseBody@RequestMapping("updateQuantity")publicJsonResultupdateQuantity(longid,intquantity,HttpSessionsession){//1從session中取購(gòu)物車對(duì)象Cartcart=(Cart)session.getAttribute("mycart");//2從物車中找到要?jiǎng)h除的購(gòu)物條目CartItemitem=cart.find(id);//2.2更條目的數(shù)量item.setQuantity(quantity);//3調(diào)購(gòu)物車對(duì)象的修改方法修改條目的購(gòu)買數(shù)量cart.update(item);//4返JsonResult對(duì)JsonResultjr=newJsonResult();jr.setOk(true);jr.setMsg(""+cart.size());returnjr;}/***購(gòu)車結(jié)算,生成訂單*session*@return*Exception*/@RequestMapping("buy")publicStringshop_result(HttpSessionsession)Exception//獲取購(gòu)物車中的息Cartcart=(Cart)session.getAttribute("mycart");//獲取用戶信息Useruser=(User)session.getAttribute("user");//新建訂單Orderorder=newOrder();order.setUid(userMapper.findByName(user).get(0).getUid().intValue());String="";

for(CartItemc:cart.getItems()){goods+=c.getProduct().getPname()+"+c.getQuantity()件}order.setGoods(goods);order.setSum(cart.getTotal());//插入訂單Integerinsert=orderService.insert(order);cart=null;//清空購(gòu)物車session.setAttribute("mycart",cart);//結(jié)算成功跳轉(zhuǎn)成頁(yè)面return}4.4論塊計(jì)4.4.1論模塊法描述評(píng)論模塊算法:用戶在物品詳情頁(yè)面下方,可以提交關(guān)于該物品的相關(guān)評(píng)論。4.4.2論模塊序流程圖4-4-2評(píng)論模塊流程圖

4.4.3論模塊鍵類說(shuō)CommentController.Class類主要控制評(píng)論功能。主要代碼:/***提交評(píng)論*content**session*@return*/@RequestMapping("submitCom")publicJsonResultsubmitComment(HttpSessionsession,Stringcontent,Integerpid)throwsException{//獲取用戶信息Useruser=(User)session.getAttribute("user");//新建評(píng)論,把評(píng)的內(nèi)容和商品號(hào)導(dǎo)入comment=Comment();comment.setContent(content);comment.setPid(pid);comment.setUid(userMapper.findByName(user).get(0).getUid().intValue());//增加該評(píng)論Integerresult=commentService.insert(comment);JsonResultjsonResultnewJsonResult();(result0){//表示插入失敗jsonResult.setOk(false);}else{//表示插入成功jsonResult.setOk(true);}returnjsonResult;}/**

*管理員端獲取評(píng)論列表(分頁(yè))*session*pageNum*pageSize*@return*/@RequestMapping("getComments")publicStringgetCommentss(HttpSessionsession,@RequestParam(name="pageNum",defaultValue="1")IntegerpageNum,@RequestParam(name="pageSize",defaultValue"5")IntegerpageSize){//默認(rèn)第一頁(yè),一5行數(shù)據(jù)//查詢所有評(píng)論P(yáng)ageInfo<Comment>commentPageInfo=commentService.geCommentPages(pageNum,pageSize);session.setAttribute("commentPageInfo",commentPageInfo);return"manage/guestbook";}/***刪評(píng)論*/@RequestMapping("deleteComment")publicStringdeleteComment(Integercomid){commentService.delete(comid);return"redirect:/getComments";}5、物理計(jì)5.1.1存取方式本系統(tǒng)數(shù)據(jù)庫(kù)采用的是mysql關(guān)系型數(shù)據(jù)庫(kù)mysql內(nèi)部使用的是存儲(chǔ)引擎。InnoDB支持事務(wù)、支持外鍵。支持自動(dòng)增長(zhǎng)列。寫的處理效率差一些,占用更多的磁盤空間以保留數(shù)據(jù)和索引5.1.2存儲(chǔ)結(jié)構(gòu)InnoDB支持兩種存儲(chǔ)方式,分別為:共享表空間存儲(chǔ)、多表空間存儲(chǔ)。使用共享表空間存儲(chǔ)時(shí),表結(jié)構(gòu)保存.frm文件中,數(shù)索引保存在innodb_data_home_dir和innodb_data_file_path定義的表空間中,可以是多個(gè)文件;使用多表空間存儲(chǔ)時(shí),數(shù)據(jù)和索引單獨(dú)保存在.ibd中.6試6.1測(cè)方設(shè)6.1.1測(cè)試策略在編寫代碼的過(guò)程中既要一邊寫系統(tǒng)的主代碼同時(shí)也是要對(duì)所寫的代碼進(jìn)

行測(cè)試首先進(jìn)行單元測(cè)試因?yàn)閷?shí)現(xiàn)功能的時(shí)候是分模塊的實(shí)現(xiàn)所以單元測(cè)試之后還要進(jìn)行模塊化測(cè)試也就是集成測(cè)試再就是整個(gè)系統(tǒng)都已經(jīng)完成功能點(diǎn)都已經(jīng)實(shí)現(xiàn)并且相互聯(lián)系了起來(lái)此時(shí)就要進(jìn)行系統(tǒng)測(cè)試了而系統(tǒng)測(cè)試又是比較重要的一點(diǎn)畢竟保證整套程序能夠上線使用的是靠系統(tǒng)測(cè)試的前面的單元測(cè)試和集成測(cè)試都是只顧著一小塊,而整個(gè)系統(tǒng)確實(shí)由眾多部分組成。進(jìn)行各種測(cè)試的過(guò)程中也需要一套規(guī)范,比如編寫測(cè)試用例。測(cè)的越全面,編寫的用例越完善,這樣最后的系統(tǒng)就越穩(wěn)定,越有效。6.1.2測(cè)試進(jìn)度安排單元測(cè)試根據(jù)編寫的主代碼進(jìn)程,可以編寫完一個(gè)類即可進(jìn)行操作,也可以很句類的功能進(jìn)行測(cè)試。集成測(cè)試根據(jù)模塊完成進(jìn)行測(cè)試。每當(dāng)一個(gè)小模塊完成便進(jìn)行集成測(cè)試,若干個(gè)有關(guān)聯(lián)的模塊之間也加以測(cè)試。系統(tǒng)測(cè)試則在所有模塊均已完成并且關(guān)聯(lián)之后進(jìn)行。6.1.3測(cè)試資源在開(kāi)發(fā)環(huán)境下展開(kāi)測(cè)試即可。6.1.4關(guān)鍵測(cè)試點(diǎn)關(guān)鍵測(cè)試點(diǎn)就是系統(tǒng)的關(guān)鍵地方,系統(tǒng)的實(shí)現(xiàn)流程所需要關(guān)鍵點(diǎn)。重點(diǎn)需要測(cè)試的有用戶登錄注冊(cè)部分、訂單的信息是否正確、購(gòu)物車是否正確商品結(jié)算是否正確后臺(tái)對(duì)商品分類的增上改查后臺(tái)對(duì)商品的增刪改查是否正確。登錄部分:當(dāng)輸入正確的用戶名密碼和驗(yàn)證碼時(shí)、當(dāng)輸入正確用戶名正確密碼錯(cuò)誤驗(yàn)證碼時(shí)當(dāng)輸入正確用戶名錯(cuò)誤密碼正確驗(yàn)證碼時(shí)當(dāng)輸入正確用戶名錯(cuò)誤密碼錯(cuò)誤驗(yàn)證碼時(shí)、當(dāng)輸入錯(cuò)誤用戶名時(shí),當(dāng)輸入空值時(shí)。購(gòu)物車部分:當(dāng)用戶重復(fù)加入同一件商品進(jìn)入購(gòu)物車時(shí),當(dāng)修改購(gòu)物車中商品數(shù)量<=0時(shí)。6.2測(cè)用構(gòu)6.2.1測(cè)試用例編寫約定系統(tǒng)性。對(duì)系統(tǒng)業(yè)務(wù)流程要完整說(shuō)明整個(gè)系統(tǒng)的業(yè)務(wù)需求、系統(tǒng)由幾個(gè)子系統(tǒng)組成以及它們之間的關(guān)系對(duì)模塊業(yè)務(wù)流程要說(shuō)明子系統(tǒng)內(nèi)部功能重點(diǎn)功能以及它們之間的關(guān)系。連貫性。對(duì)系統(tǒng)業(yè)務(wù)流程要說(shuō)明各個(gè)子系統(tǒng)之間是如何連接在一起,若需要接口各子系統(tǒng)之間是否有正確的接口若是依靠頁(yè)面鏈接則頁(yè)面的鏈接是否正確;對(duì)模塊業(yè)務(wù)流程要說(shuō)明同級(jí)模塊以及上下級(jí)模塊是如何構(gòu)成一個(gè)子系統(tǒng),其內(nèi)部功能接口是否連貫。全面性。應(yīng)盡可能覆蓋各種路徑、盡可能覆蓋各個(gè)業(yè)務(wù)點(diǎn)。

正確性。輸入界面后的數(shù)據(jù)應(yīng)與測(cè)試文檔所記錄的數(shù)據(jù)一致,而預(yù)期結(jié)果也應(yīng)與測(cè)試數(shù)據(jù)發(fā)生的業(yè)務(wù)吻合。符合正常業(yè)務(wù)規(guī)則。測(cè)試數(shù)據(jù)要符合用戶實(shí)際工作中的業(yè)務(wù)流程??刹僮餍?。測(cè)試用例中要寫清楚測(cè)試的操作步驟,以及不同的操作步驟相對(duì)應(yīng)的測(cè)試結(jié)果。6.2.2測(cè)試用例設(shè)計(jì)功能測(cè)試:首先測(cè)試所有需要實(shí)現(xiàn)的功能是否可完成。異常測(cè)試:刻意的輸入錯(cuò)誤的內(nèi)容檢驗(yàn)程序?qū)Ξ惓5奶幚怼?.2.3關(guān)鍵測(cè)試用例登錄測(cè)試:表6-1登錄測(cè)試輸入用戶名:test1

輸出登錄成功提示

實(shí)際輸入用戶名:test1

實(shí)際輸出登錄成功提示

結(jié)論實(shí)現(xiàn)密碼:123驗(yàn)證碼(輸入正確的驗(yàn)證碼)用戶名:test1

密碼:123驗(yàn)證碼(輸入正確的驗(yàn)證碼)登錄失敗提示,用戶名:test1

登錄失敗提示,

實(shí)現(xiàn)密碼:123驗(yàn)證碼(輸入錯(cuò)誤的驗(yàn)證碼)

驗(yàn)證碼不匹配

密碼:123驗(yàn)證碼(輸入錯(cuò)誤的驗(yàn)證碼)

驗(yàn)證碼不匹配用戶名:test1

登錄失敗提示,用戶名:test1

登錄失敗提示,

實(shí)現(xiàn)密碼:123456驗(yàn)證碼(輸入正確的驗(yàn)證碼)

密碼錯(cuò)誤

密碼:123456驗(yàn)證碼(輸入正確的驗(yàn)證碼)

密碼錯(cuò)誤用戶名:test1

登錄失敗提示,用戶名:test1

登錄失敗提示,

實(shí)現(xiàn)密碼:123456驗(yàn)證碼(輸入錯(cuò)誤的驗(yàn)證碼)

驗(yàn)證碼不匹配

密碼:123456驗(yàn)證碼(輸入錯(cuò)誤的驗(yàn)證碼)

驗(yàn)證碼不匹配用戶名登錄失敗提示,用戶名登錄失敗提示,

實(shí)現(xiàn)密碼:123456驗(yàn)證碼(輸入正確的驗(yàn)證碼)

用戶名不存在

密碼:123456驗(yàn)證碼(輸入正確的驗(yàn)證碼)

用戶名不存在購(gòu)物車測(cè)試:表6-2購(gòu)物車測(cè)試

輸入件物

結(jié)果購(gòu)物車中該商品數(shù)量+1

實(shí)際輸入重復(fù)添加一件商品進(jìn)入購(gòu)物

實(shí)際結(jié)果購(gòu)物車中該商品數(shù)量+1

結(jié)論實(shí)現(xiàn)車

車中

提示該商品數(shù)

提示該商品數(shù)

實(shí)現(xiàn)數(shù)量<=0是否從購(gòu)品數(shù)量<=0是否從購(gòu)量<=0中

物車中移除該商品提示修改成功

量<=0中

物車中移除該商品提示修改成功

實(shí)現(xiàn)數(shù)量>0

數(shù)量>0小結(jié)設(shè)工總此次項(xiàng)目是一個(gè)網(wǎng)上商城的一個(gè)項(xiàng)目做之前需要了解整個(gè)購(gòu)物的邏輯和后臺(tái)管理員的一個(gè)管理邏輯,這樣才能在功能實(shí)現(xiàn)上邏輯清晰。此次項(xiàng)目的需求分析同樣的重要要確定好具體模塊的相關(guān)功能和實(shí)現(xiàn)的相關(guān)邏輯模塊要和數(shù)據(jù)庫(kù)中的表對(duì)應(yīng)不然容易出現(xiàn)模塊中需要的字段而數(shù)據(jù)庫(kù)中沒(méi)有該字段的情況這樣可能需要再次修改表的相關(guān)內(nèi)容并且表之間的關(guān)系可以從圖中進(jìn)行得知。所以E-R圖在開(kāi)發(fā)的過(guò)程中也是重要的一環(huán)。開(kāi)發(fā)這個(gè)網(wǎng)上商城項(xiàng)目用了spring+springmvc+mybatis的經(jīng)典框架進(jìn)行開(kāi)發(fā),前端一些地方用了進(jìn)行異步操作,在這些技術(shù)框架的加持下,整個(gè)項(xiàng)目開(kāi)發(fā)的層次比較清晰端框架分為控制(controller(service數(shù)據(jù)訪問(wèn)層dao),在對(duì)應(yīng)的層次做對(duì)應(yīng)的事情,使得在開(kāi)發(fā)過(guò)程中邏輯清晰,代碼可讀性強(qiáng)且在后端的分頁(yè)實(shí)現(xiàn)中采用了的分頁(yè)插件PageHelper插件進(jìn)行管理員后端相關(guān)功能的列表展示進(jìn)行了分頁(yè)處理前端在一些功能上采用了術(shù),在傳統(tǒng)的web實(shí)現(xiàn)中,想要對(duì)頁(yè)面的“部分?jǐn)?shù)據(jù)”進(jìn)行更新只能把整個(gè)頁(yè)面進(jìn)行刷新,這樣會(huì)導(dǎo)致頁(yè)面的中“其他數(shù)據(jù)”重復(fù)獲取,導(dǎo)致帶寬和服務(wù)器的資源浪費(fèi)例如在購(gòu)物車中對(duì)商品的數(shù)量進(jìn)行修改或者從購(gòu)物車中刪除該商品往往只是修改購(gòu)物車中一行數(shù)據(jù)的值如果為了一行的值而取刷新整個(gè)頁(yè)面,重新加載整個(gè)頁(yè)面的數(shù)據(jù),這樣的話就很浪費(fèi)資源,而技術(shù)可以異步操作,這樣就不需要刷新整個(gè)頁(yè)面了。

此次項(xiàng)目的開(kāi)發(fā)過(guò)程中,還有一個(gè)必不可少的事,那就是對(duì)每個(gè)模塊的功能進(jìn)行單元測(cè)試,因?yàn)榇a寫好了實(shí)際運(yùn)行過(guò)程中,前端頁(yè)面的輸入是不可控的,程序并不一定會(huì)按照你所寫的邏輯來(lái)進(jìn)行以我們要對(duì)許多情況進(jìn)行考慮并進(jìn)行單元測(cè)試,例如注冊(cè)模塊:用戶名輸入為空,輸入已經(jīng)存在的用戶名,驗(yàn)證碼輸入錯(cuò)誤密碼為空等情況都需要進(jìn)行測(cè)試確保這些輸入情況都在后臺(tái)進(jìn)行了處理,并且能夠得到預(yù)期的結(jié)果。此次開(kāi)發(fā)這個(gè)項(xiàng)目肯定還有很多不足之處很多情況無(wú)法在開(kāi)發(fā)中完全考慮到需要進(jìn)行大量的測(cè)試才能確保某個(gè)功能完全的沒(méi)有問(wèn)題我現(xiàn)在完成的也只是能夠滿足該項(xiàng)目的一些基

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論