2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩44頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  畢業(yè)綜合實(shí)踐</b></p><p>  課題名稱(chēng):基于java Web的網(wǎng)上商城的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  分 院: 電子與信息工程分院 </p><p>  專(zhuān) 業(yè): 3G軟件技術(shù) </p><p>

2、;  2016年 4 月25 日</p><p><b>  網(wǎng)上商城系統(tǒng)</b></p><p><b>  摘 要</b></p><p>  本文的主要研究對(duì)象是網(wǎng)上商城系統(tǒng),研究網(wǎng)上商城一般的業(yè)務(wù)流程,還有網(wǎng)上商城的結(jié)構(gòu)和模塊,各個(gè)模塊的功能等等。整個(gè)論文從如何來(lái)分析一個(gè)網(wǎng)上商城系統(tǒng)的業(yè)務(wù)流程和它的結(jié)構(gòu)以及模塊

3、,再到到對(duì)開(kāi)發(fā)工具的選擇,以及對(duì)前面分析出來(lái)的結(jié)果進(jìn)行初步的設(shè)計(jì)(這里我設(shè)計(jì)的是使用Java的web開(kāi)發(fā)技術(shù)來(lái)實(shí)現(xiàn)這個(gè)網(wǎng)上商城系統(tǒng)),對(duì)網(wǎng)上商城系統(tǒng)分析和設(shè)計(jì)完成之后,就進(jìn)入到實(shí)際的代碼編寫(xiě)階段,在這個(gè)階段就可能對(duì)前面的設(shè)計(jì)進(jìn)行一定的修改或是完善。在開(kāi)發(fā)階段,我將采用的是螺旋遞增式的開(kāi)發(fā),每次只完成一部分功能,然后就立即對(duì)這些功能進(jìn)行測(cè)試,接著進(jìn)入下一個(gè)開(kāi)發(fā)階段,然后繼續(xù)測(cè)試,直到所有的功能全部實(shí)現(xiàn)后,再對(duì)整個(gè)系統(tǒng)進(jìn)行一個(gè)完整的測(cè)試,看

4、其是否達(dá)到了先前的設(shè)計(jì)要求。</p><p>  綜上所述,本文討論的就是如何使用Java的web開(kāi)發(fā)技術(shù)來(lái)完整的實(shí)現(xiàn)一個(gè)網(wǎng)上商城系統(tǒng)的主要功能。</p><p>  關(guān)鍵詞 商城設(shè)計(jì)與開(kāi)發(fā) ; JAVA ; JAVA WEB</p><p><b>  目 錄</b></p><p><b>  第1章

5、 緒論1</b></p><p>  1.1 課題背景............................................................................................1</p><p>  1.2 目的和意義1</p><p>  1.3 論文研究?jī)?nèi)容2</p>

6、<p>  1.4 什么是網(wǎng)上商城2</p><p>  1.5 網(wǎng)上商城的分類(lèi)3</p><p>  第2章 網(wǎng)上商城系統(tǒng)的需求分析4</p><p>  2.1 網(wǎng)上商城業(yè)務(wù)流程分析4</p><p>  2.1.1 作為一名消費(fèi)者的使用流程4</p><p>  2.1.2 作為一名商城管理員

7、的操作流程5</p><p>  2.2 網(wǎng)上商城模塊分析5</p><p>  2.2.1 用戶(hù)模塊6</p><p>  2.2.2 管理員模塊6</p><p>  2.3 本章小結(jié)7</p><p>  第3章 網(wǎng)上商城系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)8</p><p>  3.1 開(kāi)發(fā)語(yǔ)言

8、和工具介紹8</p><p>  3.1.1 開(kāi)發(fā)語(yǔ)言8</p><p>  3.1.2 數(shù)據(jù)庫(kù)9</p><p>  3.1.3 服務(wù)器9</p><p>  3.1.4 開(kāi)發(fā)工具10</p><p>  3.2 業(yè)務(wù)邏輯設(shè)計(jì)10</p><p>  3.2.1 共用類(lèi)和相應(yīng)方法

9、10</p><p>  3.2.2 用戶(hù)實(shí)體類(lèi)和相應(yīng)方法11</p><p>  3.2.3 管理員實(shí)體類(lèi)和相應(yīng)方法13</p><p>  3.2.4 商品類(lèi)別類(lèi)和相應(yīng)方法14</p><p>  3.2.5 商品類(lèi)及其相應(yīng)管理方法15</p><p>  3.2.6 購(gòu)物車(chē)類(lèi)及其方法16</p&g

10、t;<p>  3.2.7 訂單類(lèi)及其方法17</p><p>  3.3 數(shù)據(jù)庫(kù)設(shè)計(jì)18</p><p>  3.3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)簡(jiǎn)要介紹18</p><p>  3.3.2 數(shù)據(jù)庫(kù)具體設(shè)計(jì)19</p><p>  3.4 本章小結(jié)21</p><p>  第4章 系統(tǒng)的測(cè)試和分析22&l

11、t;/p><p>  4.1 Version 122</p><p>  4.2 Version 224</p><p>  4.3 Version 326</p><p>  4.4 Version 428</p><p>  4.5 Version 530</p><p>  4.6

12、Version 632</p><p>  4.7 Version 734</p><p>  4.8 Version 836</p><p>  4.9 Version 938</p><p>  4.10 Version 10 40</p><p>  4.11 本章小結(jié)40</p>&l

13、t;p><b>  結(jié) 論41</b></p><p><b>  致 謝42</b></p><p><b>  附 錄43</b></p><p><b>  參考文獻(xiàn)44</b></p><p><b>  

14、第一章 緒論</b></p><p><b>  1.1選題背景</b></p><p>  隨著計(jì)算機(jī)技術(shù)的發(fā)展和網(wǎng)絡(luò)人口的增加,網(wǎng)絡(luò)世界也越來(lái)越廣博,越來(lái)越豐富,網(wǎng)上商城已經(jīng)成為網(wǎng)上購(gòu)物的一股潮流?;ヂ?lián)網(wǎng)已日益成為收集提供信息的最佳渠道并逐步進(jìn)入傳統(tǒng)的流通流域,互聯(lián)網(wǎng)的跨地域性和可交互性使其在與傳統(tǒng)媒體行業(yè)和傳統(tǒng)貿(mào)易行業(yè)的競(jìng)爭(zhēng)中是具有不可抗拒的優(yōu)勢(shì)。人

15、們對(duì)于互聯(lián)網(wǎng)技術(shù)的要求已不單單是瀏覽一下網(wǎng)站網(wǎng)頁(yè),收發(fā)電子郵件,日益忙碌的人們開(kāi)始追求足不出戶(hù)就能買(mǎi)到心儀的商品,是越來(lái)越多的上網(wǎng)愛(ài)好者實(shí)現(xiàn)購(gòu)物的一種方式。對(duì)于企業(yè)來(lái)講,無(wú)論是企業(yè)之間,還是企業(yè)和客戶(hù)之間的交易,如果能夠?qū)崿F(xiàn)網(wǎng)上交易將大大提高交易速度節(jié)約成本。但是對(duì)網(wǎng)絡(luò)的及時(shí)、一對(duì)一、跨時(shí)間、 跨空間等特性,并沒(méi)有充分加以利用。在這種形勢(shì)下,傳統(tǒng)的依靠管理人員人工工作傳遞信息和數(shù)據(jù)的管理方式就無(wú)法滿(mǎn)足企業(yè)日益增長(zhǎng)的業(yè)務(wù)需求了。因而開(kāi)發(fā)了

16、這樣一個(gè)具有前后臺(tái)的網(wǎng)上商城系統(tǒng),以滿(mǎn)足購(gòu)物者和企業(yè)的需求。</p><p>  1.2選題的目的和意義</p><p>  對(duì)于網(wǎng)上商城來(lái)說(shuō),我想每個(gè)人都不陌生,即使你沒(méi)有親自在網(wǎng)上買(mǎi)過(guò)東西也一定見(jiàn)過(guò)、聽(tīng)說(shuō)過(guò)網(wǎng)上購(gòu)物這種方式。網(wǎng)絡(luò)購(gòu)物作為一種新的購(gòu)物形式已經(jīng)被廣大群眾所接受,尤其是年輕群體,他們特別熱衷于網(wǎng)購(gòu)。</p><p>  網(wǎng)購(gòu)最大的優(yōu)勢(shì)就是東西要比現(xiàn)實(shí)中

17、商場(chǎng)里的商品便宜,而且一般都是送貨上門(mén),因?yàn)榫W(wǎng)購(gòu)一般都是采取快遞送貨方式,直接送到你家樓下或者公司里,因此網(wǎng)絡(luò)購(gòu)物的第二大優(yōu)勢(shì)就是其便利性,用戶(hù)只要坐在電腦前,點(diǎn)點(diǎn)鼠標(biāo)就可以買(mǎi)東西了。當(dāng)然網(wǎng)購(gòu)也有它的缺點(diǎn),比如無(wú)法見(jiàn)到實(shí)物,只能通過(guò)商家介紹的文字和圖片來(lái)了解商品,再比如買(mǎi)衣服無(wú)法試穿,而且這也為不良商家提供了忽悠消費(fèi)者的方法,他們會(huì)盡力美化自己的商品來(lái)誘惑消費(fèi)者買(mǎi)單,而消費(fèi)者收到商品后才發(fā)現(xiàn)和想象中的差異很大,而商家又以各種各樣的理由推

18、脫,而且由于采用網(wǎng)上交易,所以會(huì)存在安全問(wèn)題。但是這些都不能擋住網(wǎng)購(gòu)的魅力,網(wǎng)上購(gòu)物現(xiàn)在正變得越來(lái)越流行,市場(chǎng)份額也變得越來(lái)越大。因此這次畢業(yè)設(shè)計(jì)題目就以目前現(xiàn)有的網(wǎng)上商城系統(tǒng)為研究對(duì)象,例如淘寶和當(dāng)當(dāng),這里主要研究后者的形式,也就是商城自己經(jīng)營(yíng)的方式,研究一般的網(wǎng)上商城的業(yè)務(wù)流程,猜測(cè)其各個(gè)功能模塊及其組合、連接方式,并分析其具體的實(shí)現(xiàn)方式,最后使用Java加web服務(wù)器和數(shù)據(jù)庫(kù)完成一個(gè)網(wǎng)上商城系統(tǒng)的主要功能模塊。</p>

19、<p>  通過(guò)這樣一個(gè)畢業(yè)設(shè)計(jì),可以提高自己Java編程的水準(zhǔn),也練習(xí)了怎樣構(gòu)建一個(gè)完整的系統(tǒng),從系統(tǒng)的需求分析到設(shè)計(jì),直至編碼、測(cè)試并運(yùn)行,熟悉并掌握一個(gè)完整的Web開(kāi)發(fā)流程,為今后工作打下基礎(chǔ)。</p><p><b>  1.3論文研究?jī)?nèi)容</b></p><p>  網(wǎng)上商城是一個(gè)基于Internet的應(yīng)用,屬于B/S架構(gòu),前端就是一個(gè)客戶(hù)瀏覽

20、器,客戶(hù)需要通過(guò)瀏覽器來(lái)訪(fǎng)問(wèn)服務(wù)器,因此,本文主要研究的就是一個(gè)網(wǎng)上商城系統(tǒng)(商城自負(fù)經(jīng)營(yíng)的類(lèi)型)的業(yè)務(wù)流程及其實(shí)現(xiàn)方式。</p><p>  首先,需要站在使用者的角度去思考你究竟會(huì)怎么使用這個(gè)系統(tǒng),而一個(gè)網(wǎng)上商城的使用者一般又有兩類(lèi),一類(lèi)是普通消費(fèi)者,而另一類(lèi)則是商城的管理員,因此我就需要思考這兩類(lèi)人都會(huì)怎么來(lái)使用這個(gè)系統(tǒng),這樣就能分析出網(wǎng)上商城系統(tǒng)的業(yè)務(wù)流程。</p><p>  而

21、實(shí)現(xiàn)這個(gè)業(yè)務(wù)流程可以采用很多種不同的方法,很明顯,網(wǎng)上商城系統(tǒng)是一個(gè)基于Internet的應(yīng)用,因此就需要使用到Web開(kāi)發(fā)的方法,目前Web開(kāi)發(fā)的方法有很多,流行的有Java和.Net,這里我選擇了Java,因此我就需要研究如果采用Java作為編程語(yǔ)言,我應(yīng)當(dāng)如何來(lái)實(shí)現(xiàn)這個(gè)系統(tǒng),這個(gè)系統(tǒng)應(yīng)該劃分為多少個(gè)模塊,每個(gè)模塊的功能又是什么,他們之間如何組合到一起,這也就是系統(tǒng)的設(shè)計(jì)。</p><p>  第二章 網(wǎng)上商城

22、系統(tǒng)的需求分析</p><p>  網(wǎng)上商城業(yè)務(wù)流程分析</p><p>  開(kāi)發(fā)一個(gè)項(xiàng)目,不管你采用什么實(shí)現(xiàn)方式,其實(shí)都是在完成其業(yè)務(wù)流程,因此,將一個(gè)系統(tǒng)的業(yè)務(wù)流程分析清楚,將為后面的開(kāi)發(fā)提供極大的便利。由于本文選擇了B2C(Business To Customer,商家對(duì)顧客直銷(xiāo))模式,所以之后的分析或討論均是針對(duì)此種模式。</p><p>  如何對(duì)一個(gè)系統(tǒng)

23、進(jìn)行分析有很多的方法,這里我采用了站在具體的使用者的角度來(lái)考慮這個(gè)網(wǎng)上商城系統(tǒng)的功能和結(jié)構(gòu),先是粗略的分析一下使用的流程,在這個(gè)過(guò)程中就能夠發(fā)現(xiàn)一些必須的基礎(chǔ)的類(lèi)。</p><p>  作為一名消費(fèi)者的使用流程</p><p>  假如一個(gè)消費(fèi)者第一次來(lái)到一個(gè)網(wǎng)上商城,他首先一般會(huì)先瀏覽瀏覽該商城的首頁(yè)以及首頁(yè)上所列的各種商品,如果你這個(gè)網(wǎng)站的首頁(yè)設(shè)計(jì)得很精細(xì)很吸引人的話(huà),消費(fèi)者才會(huì)有興趣

24、進(jìn)行下一部探索,看看你們這個(gè)商城有什么好的商品。因此,目前的網(wǎng)上商城設(shè)計(jì)者大多會(huì)在首頁(yè)花費(fèi)很大的功夫,比如在首頁(yè)就展示商品什么的,一次來(lái)吸引客戶(hù)的眼球。如此一來(lái),用戶(hù)也不需要登錄就可以查看。</p><p>  進(jìn)而如果他對(duì)這個(gè)商品感興趣,那他就會(huì)點(diǎn)擊‘購(gòu)買(mǎi)’這個(gè)按鈕,如果客戶(hù)是第一次來(lái)此商城購(gòu)買(mǎi)商品,那么系統(tǒng)就會(huì)自動(dòng)提醒客戶(hù)是否注冊(cè)一個(gè)新賬號(hào),注冊(cè)之后才能進(jìn)行下一步操作。當(dāng)然了,消費(fèi)者進(jìn)行注冊(cè)之后系統(tǒng)就該為消費(fèi)

25、者提供一個(gè)登錄功能,以方便消費(fèi)者登錄進(jìn)而進(jìn)行購(gòu)買(mǎi)商品的操作以及一些相關(guān)的操作。該系統(tǒng)在消費(fèi)者登錄成功之后會(huì)在頁(yè)面上顯示該消費(fèi)者的用戶(hù)名以及跟消費(fèi)者相關(guān)的一些操作功能。這些操作功能包括修改用戶(hù)的密碼,查看自己的個(gè)人信息,修改自己的相關(guān)的個(gè)人信息。</p><p>  當(dāng)然用戶(hù)登錄之后也可以查看商品,最重要的,登錄用戶(hù)可以選擇商品放入自己的購(gòu)物車(chē)并下單結(jié)賬。還可以查看自己所下的訂單。</p><p

26、>  根據(jù)上面的信息分析,我們大致可以分析出來(lái)有這么幾個(gè)實(shí)體類(lèi)來(lái)支撐這些操作,首先,注冊(cè)之后就會(huì)產(chǎn)生一個(gè)用戶(hù),接著要用此用戶(hù)來(lái)支持登錄功能,這樣一來(lái),所有的用戶(hù)集合成了一個(gè)用戶(hù)實(shí)體類(lèi),這個(gè)實(shí)體類(lèi)包括用戶(hù)名,用戶(hù)密碼,聯(lián)系方式,用戶(hù)地址等等。接著,在用戶(hù)注冊(cè)登錄之后,商城就要向用戶(hù)展示相關(guān)的商品,那么,所有的商品又集合成了一個(gè)商品實(shí)體類(lèi),這個(gè)實(shí)體類(lèi)包括一些商品的相關(guān)信息,不如商品名,商品價(jià)格,商品生產(chǎn)日期等。再者,用戶(hù)如果對(duì)某些商品

27、感興趣了,就要把喜歡的商品放到購(gòu)物車(chē)?yán)铮敲从忠粋€(gè)購(gòu)物車(chē)實(shí)體類(lèi)產(chǎn)生了,這個(gè)實(shí)體類(lèi)包括商品名稱(chēng),商品價(jià)格,把此商品放入購(gòu)物車(chē)的用戶(hù)名稱(chēng)等等;最后會(huì)員買(mǎi)完?yáng)|西后給商城下了訂單,那么這個(gè)訂單也需要包裝成一個(gè)實(shí)體類(lèi),上面需要記錄一些信息,最主要的信息應(yīng)當(dāng)有:誰(shuí)下了這個(gè)訂單?買(mǎi)了什么東西?多少錢(qián)?其它的諸如什么時(shí)候下的也可以記錄。</p><p>  作為一名商城管理員的使用流程</p><p> 

28、 管理員首先也要登錄才能操作所有功能,商城管理員應(yīng)當(dāng)能管理商城注冊(cè)的會(huì)員:可以查看商城的已注冊(cè)會(huì)員,并且對(duì)已注冊(cè)的會(huì)員信息進(jìn)行修改,而且也可以刪除相關(guān)的會(huì)員。</p><p>  接著,管理員還應(yīng)該有如下的一些功能。首先,添加父類(lèi)商品,比如說(shuō)“書(shū)籍”,再者,就是可以添加子類(lèi)商品,比如說(shuō)“計(jì)算機(jī)”,最后,管理員應(yīng)該也可以添加子類(lèi)下的相關(guān)的一些商品,比如說(shuō)“30天精通JAVA” 。</p><p&

29、gt;  當(dāng)然,管理員應(yīng)該也可以修改自己的密碼。</p><p>  從管理員的操作,我們也可以得到這么幾個(gè)實(shí)體類(lèi)。第一,管理員,既然有管理員那么就必須有一個(gè)類(lèi)來(lái)記錄這些東西,對(duì)于該系統(tǒng)需要說(shuō)明一點(diǎn)的就是:在我開(kāi)發(fā)的這個(gè)系統(tǒng)中,由于本人的水平只是有限,為了降低該項(xiàng)目的復(fù)雜度,所以本人把管理員和會(huì)員都放在同一個(gè)實(shí)體類(lèi)中去了,在登錄的時(shí)候把管理員的名稱(chēng)固定到代碼中去了,即:admin,用戶(hù)類(lèi)這個(gè)實(shí)體類(lèi)中,admin這

30、個(gè)用戶(hù)是不能刪除的,是永久保存在此實(shí)體類(lèi)中的,只要以這個(gè)名稱(chēng)登錄,那么頁(yè)面就會(huì)跳轉(zhuǎn)到管理員的操作頁(yè)面中去;第二,這里提到了父類(lèi)別,那么這個(gè)也應(yīng)當(dāng)包裝成一個(gè)類(lèi),而且這個(gè)類(lèi)應(yīng)當(dāng)和子類(lèi)別有一定的關(guān)聯(lián)。第三,這里也提到了子類(lèi)別,那么子類(lèi)別也應(yīng)該是個(gè)實(shí)體類(lèi),這個(gè)類(lèi)和商品類(lèi)也有一定得關(guān)聯(lián);第三,最底層的就是商品這個(gè)類(lèi)了,所有商品集合在一個(gè)構(gòu)成了一個(gè)商品實(shí)體類(lèi),商品類(lèi)別是屬于某個(gè)子類(lèi)別中的一種。</p><p>  因此,從前

31、面兩個(gè)站在不同角度來(lái)分析使用流程來(lái)看,我從中提取出了一些個(gè)名詞,這些個(gè)名詞也就成為了一些基礎(chǔ)的實(shí)體類(lèi),目前分析的出來(lái)的有,用戶(hù)類(lèi)、商品父類(lèi)別類(lèi)、商品子類(lèi)別類(lèi)、商品類(lèi)、購(gòu)物車(chē)類(lèi)、訂單類(lèi)、。</p><p>  顯然,這些個(gè)類(lèi)在此商城項(xiàng)目中是比較具體的,是可以很明顯看出的,但是還有一些類(lèi)是比較“抽象”的,是不能這樣直接的通過(guò)找名詞來(lái)得出來(lái),但是可以分析這個(gè)過(guò)程,可以得出這些類(lèi)確實(shí)要存在,因而來(lái)將其推算出來(lái)。商城有很多

32、數(shù)據(jù)是要存到數(shù)據(jù)庫(kù)的,在這里,我把一些與數(shù)據(jù)庫(kù)打交道的通用操作封裝成為一個(gè)JDBC的類(lèi)。另外,對(duì)于商城頁(yè)面中涉及到需要分頁(yè)的,我寫(xiě)了一個(gè)通用的分頁(yè)實(shí)體類(lèi),里面包括六個(gè)相關(guān)的屬性。</p><p>  當(dāng)然這肯定不是全部,隨著分析設(shè)計(jì)的深入,還會(huì)有一些類(lèi)添加進(jìn)來(lái),就算進(jìn)入到實(shí)際開(kāi)發(fā)階段,還有可能突然覺(jué)得需要再加入某個(gè)類(lèi)。</p><p><b>  網(wǎng)上商城模塊分析</b&g

33、t;</p><p><b>  用戶(hù)模塊分析</b></p><p>  用戶(hù)模塊是為商城的前臺(tái)展示所設(shè)計(jì)的,用戶(hù)模塊又可以大致劃分為一下子模塊:</p><p><b>  用戶(hù)注冊(cè)模塊</b></p><p><b>  用戶(hù)登錄模塊</b></p><

34、;p><b>  用戶(hù)信息修改模塊</b></p><p><b>  修改用戶(hù)密碼模塊</b></p><p><b>  商品展示模塊</b></p><p><b>  購(gòu)物車(chē)模塊</b></p><p><b>  查看以往訂單模塊

35、</b></p><p>  用戶(hù)注冊(cè)模塊負(fù)責(zé)新會(huì)員注冊(cè),并將其持久化,也就是將新注冊(cè)的會(huì)員的信息寫(xiě)入數(shù)據(jù)庫(kù)。登錄模塊負(fù)責(zé)驗(yàn)證會(huì)員的登錄,看看有沒(méi)有這個(gè)用戶(hù),密碼是否正確等,這種操作通常都是從數(shù)據(jù)庫(kù)查詢(xún)。用戶(hù)信息修改模塊可以讓用戶(hù)修改自己的個(gè)人信息,這就涉及到了數(shù)據(jù)庫(kù)的修改。修改用戶(hù)密碼模塊讓用戶(hù)修改自己的密碼。商品展示模塊應(yīng)當(dāng)是從數(shù)據(jù)庫(kù)中將商品拿出來(lái),然后再以某種方式顯示的網(wǎng)頁(yè)上。購(gòu)物車(chē)模塊就是收集

36、和記錄用戶(hù)所購(gòu)買(mǎi)的商品,購(gòu)物車(chē)最后要么被直接銷(xiāo)毀,要么會(huì)轉(zhuǎn)化為訂單,然后被銷(xiāo)毀。查看以往訂單模塊使用戶(hù)能查看自己所下的訂單。因此數(shù)據(jù)庫(kù)的操作始終貫穿在整個(gè)系統(tǒng)里面,幾乎所有的地方都涉及到了數(shù)據(jù)庫(kù)的操作。</p><p><b>  管理員模塊分析</b></p><p>  管理員模塊是為管理員管理商城事物所設(shè)計(jì)的,管理員模塊又可以初步劃分為以下子模塊:</p&

37、gt;<p><b>  會(huì)員管理模塊</b></p><p><b>  商品類(lèi)別管理模塊</b></p><p><b>  商品管理模塊</b></p><p><b>  訂單處理模塊</b></p><p><b>  管

38、理員的自我管理</b></p><p>  很明顯,會(huì)員管理模塊是用來(lái)管理商城的注冊(cè)會(huì)員的,應(yīng)當(dāng)可以查看會(huì)員、修改會(huì)員信息、刪除會(huì)員,這就是對(duì)數(shù)據(jù)庫(kù)的增刪改查的體現(xiàn)。商品類(lèi)別管理模塊用來(lái)管理商品類(lèi)別,可以查看商品類(lèi)別,添加商品類(lèi)別,修改商品類(lèi)別和刪除商品類(lèi)別。商品管理模塊用來(lái)管理商城的商品,可以查看商品,添加商品,修改商品和刪除商品。訂單處理模塊用來(lái)管理會(huì)員所下訂單,可以查看會(huì)員所下的訂單,并處理這些

39、訂單。</p><p><b>  本章小結(jié)</b></p><p>  本章主要從商城的使用者角度,也就是普通用戶(hù)和商城管理員兩方面分別分析了這些用戶(hù)對(duì)商城一般的操作流程。然后根據(jù)這些流程分析出了一些直接的類(lèi),也就是一些基礎(chǔ)的實(shí)體類(lèi),并跟據(jù)這些大致的流程分析出兩個(gè)大模塊,用戶(hù)模塊和管理員模塊,兩個(gè)大模塊又可以進(jìn)一步細(xì)分為一個(gè)個(gè)小模塊。并大致分析了這些模塊的功能。&l

40、t;/p><p>  第三章 網(wǎng)上商城系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  本章是網(wǎng)上商城系統(tǒng)的具體設(shè)計(jì),包括開(kāi)發(fā)環(huán)境的選擇及介紹,各個(gè)功能模塊的具體設(shè)計(jì)以及一部分實(shí)現(xiàn)。</p><p><b>  開(kāi)發(fā)語(yǔ)言和工具介紹</b></p><p>  這里介紹我選擇的開(kāi)發(fā)語(yǔ)言,開(kāi)發(fā)工具等。</p><p>

41、;<b>  開(kāi)發(fā)語(yǔ)言介紹</b></p><p>  1.Java簡(jiǎn)介:Java是一種簡(jiǎn)單的,面向?qū)ο蟮?,分布式的,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異、多線(xiàn)程的動(dòng)態(tài)語(yǔ)言。</p><p>  Java平臺(tái)由Java虛擬機(jī)(Java Virtual Machine)和Java 應(yīng)用編程接口(Application Programming Interf

42、ace、簡(jiǎn)稱(chēng)API)構(gòu)成[2]。Java 應(yīng)用編程接口為Java應(yīng)用提供了一個(gè)獨(dú)立于操作系統(tǒng)的標(biāo)準(zhǔn)接口,可分為基本部分和擴(kuò)展部分。在硬件或操作系統(tǒng)平臺(tái)上安裝一個(gè)Java平臺(tái)之后,Java應(yīng)用程序就可運(yùn)行。現(xiàn)在Java平臺(tái)已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。這樣Java程序可以只編譯一次,就可以在各種系統(tǒng)中運(yùn)行。 </p><p>  2.HTML簡(jiǎn)介:HTML是Hypertext Markup Language的縮寫(xiě),

43、即超文本標(biāo)記語(yǔ)言。它是用于創(chuàng)建可從一個(gè)平臺(tái)移植到另一平臺(tái)的超文本文檔的一種簡(jiǎn)單標(biāo)記語(yǔ)言,經(jīng)常用來(lái)創(chuàng)建Web頁(yè)面。HTML文件是帶有格式標(biāo)識(shí)符和超文本鏈接的內(nèi)嵌代碼的ASCII 文本文件。HTML是制作網(wǎng)頁(yè)的基礎(chǔ),</p><p>  3.JavaScript簡(jiǎn)介:JavaScript是由Netscapt與SUN公司合作開(kāi)發(fā)的產(chǎn)品。JavaScript是一種跨平臺(tái)的開(kāi)放式腳本描述語(yǔ)言,它是Java和Livescri

44、pt的衍生物,它生成的應(yīng)用程序能夠?qū)⒖蛻?hù)和服務(wù)器上的對(duì)象和資源聯(lián)系在一起,通過(guò)Internet動(dòng)態(tài)的表示信息并與用戶(hù)進(jìn)行交互。JavaScript是用來(lái)改變網(wǎng)頁(yè)外觀的編輯命令和指令,它對(duì)網(wǎng)頁(yè)設(shè)計(jì)有著重要的幫助。</p><p>  4.AJAX簡(jiǎn)介:AJAX即“Asynchronous JavaScript and XML”(異步JavaScript和XML),AJAX并非縮寫(xiě)詞,而是由Jesse James G

45、aiiett創(chuàng)造的名詞,是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。</p><p>  5.JSP簡(jiǎn)介:JSP(Java Server Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)[7]。該技術(shù)為創(chuàng)建顯示動(dòng)態(tài)生成內(nèi)容的Web頁(yè)面提供了一個(gè)簡(jiǎn)捷而快速的方法。JSP技術(shù)的設(shè)計(jì)目的是使得構(gòu)造基于Web的應(yīng)用程序更加容易和快捷,而這些應(yīng)用程序能夠與各種Web服務(wù)器,

46、應(yīng)用服務(wù)器,瀏覽器和開(kāi)發(fā)工具共同工作。 JSP規(guī)范是Web服務(wù)器、應(yīng)用服務(wù)器、交易系統(tǒng)、以及開(kāi)發(fā)工具供應(yīng)商間廣泛合作的結(jié)果。</p><p><b>  數(shù)據(jù)庫(kù)介紹</b></p><p>  MySQL 是一個(gè)真正的多用戶(hù)、多線(xiàn)程SQL數(shù)據(jù)庫(kù)服務(wù)器,它是一個(gè)客戶(hù)機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn)。MySQL是現(xiàn)在流行的關(guān)系數(shù)據(jù)庫(kù)中其中的一種,相比其它的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)來(lái)

47、說(shuō),MySQL具有小巧、功能齊全、查詢(xún)迅捷等優(yōu)點(diǎn)。MySQL 主要目標(biāo)是快速、健壯和易用。關(guān)鍵的是它是免費(fèi)的,可以在Internet上免費(fèi)下載到,并可免費(fèi)使用。MySQL 對(duì)于一般中小型,甚至大型應(yīng)用都能夠勝任。</p><p><b>  服務(wù)器介紹</b></p><p>  Tomcat是Apache 軟件基金會(huì)(Apache Software Foundati

48、on)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目[10],由Apache、Sun 和其他一些公司及個(gè)人共同開(kāi)發(fā)而成。因?yàn)門(mén)omcat 技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java 愛(ài)好者的喜愛(ài)并得到了部分軟件開(kāi)發(fā)商的認(rèn)可,成為目前比較流行的Web 應(yīng)用服務(wù)器。</p><p><b>  開(kāi)發(fā)工具介紹</b></p><p>  在開(kāi)發(fā)過(guò)程中,我主要用到了myeclip

49、se</p><p>  MyEclipse介紹:MyEclipse,是一個(gè)十分優(yōu)秀的用于開(kāi)發(fā)Java, J2EE的Eclipse插件集合,MyEclipse的功能非常強(qiáng)大,支持也十分廣泛,尤其是對(duì)各種開(kāi)源產(chǎn)品的支持十分不錯(cuò)。</p><p><b>  業(yè)務(wù)邏輯設(shè)計(jì)</b></p><p>  要實(shí)現(xiàn)網(wǎng)上商城的業(yè)務(wù)邏輯,必須有相應(yīng)的實(shí)體類(lèi)和其

50、相應(yīng)的方法,這里就大致將其設(shè)計(jì)出來(lái)。</p><p>  基礎(chǔ)共用類(lèi)和相應(yīng)方法</p><p>  整個(gè)系統(tǒng)有一些通用的類(lèi)和方法,比如連接數(shù)據(jù)庫(kù)等。</p><p><b>  DataBase類(lèi)</b></p><p><b>  方法:</b></p><p>  pub

51、lic static Connection getConn() 取得用于連接數(shù)據(jù)庫(kù)的Connection。</p><p>  public static void close(Connection conn) 關(guān)閉Connection。</p><p>  public static void close(Statement stmt) 關(guān)閉Statement。</p>&

52、lt;p>  public static void close(ResultSet rs) 關(guān)閉ResultSet。</p><p>  3.2.1.2 PoolDataSource類(lèi)</p><p>  private static String username;</p><p>  private static String password;</

53、p><p>  private static String url ;</p><p>  private static String className;</p><p>  private static int maxActive;</p><p>  private static int minActive;</p><

54、p>  private static int curActive;</p><p>  private static Properties prop = new Properties();</p><p>  private static int curActive</p><p>  getters()和setters()方法,用來(lái)得到和設(shè)置成員變量的值,因

55、此不詳細(xì)列出。</p><p>  3.2.1.3 Page類(lèi)</p><p>  Page包裝了分頁(yè)信息。</p><p><b>  成員變量:</b></p><p>  1、private Integer pageNo;//當(dāng)前是第幾頁(yè)</p><p>  2、private Intege

56、r pageSize;//當(dāng)前總共多少頁(yè)</p><p>  3、private Long totalPage ;//總共多少頁(yè)</p><p>  4、private String url;//頁(yè)面地址(jsp)</p><p>  5、private String method ;//相關(guān)方法名</p><p>  6、private S

57、tring index ;//用來(lái)作標(biāo)記的</p><p>  方法:getters()和setters()方法,用來(lái)得到和設(shè)置成員變量的值,因此不詳細(xì)列出。</p><p>  用戶(hù)實(shí)體類(lèi)以及相關(guān)的類(lèi)和相應(yīng)方法</p><p>  為了實(shí)現(xiàn)商城會(huì)員的注冊(cè)、登錄、查看會(huì)員自己的信息、修改會(huì)員的個(gè)人信息、修改個(gè)人密碼和查看所下的訂單,應(yīng)當(dāng)有一個(gè)用戶(hù)實(shí)體類(lèi)和其相應(yīng)的方法

58、,在這里設(shè)計(jì)出兩個(gè)類(lèi)User類(lèi)。User包裝了用戶(hù)的信息,并提供相應(yīng)的get和set方法;</p><p><b>  User類(lèi)</b></p><p><b>  成員變量:</b></p><p>  private int id 用戶(hù)id。</p><p>  1、 private Inte

59、ger userId ;//User的id</p><p>  2、 private String username ;//用戶(hù)名</p><p>  3、 private String password ;//用戶(hù)密碼</p><p>  4、 private String email ;//用戶(hù)郵箱</p><p>  5、 privat

60、e String address ;//用戶(hù)地址</p><p>  6、 private String phone ;//用戶(hù)聯(lián)系方式</p><p>  方法:getters()和setters()方法,用來(lái)得到和設(shè)置成員變量的值,因此不詳細(xì)列出。</p><p>  3.2.2.2 IUserDAO接口 </p><p>  1

61、、 User findUserByExample(User user) ;//根據(jù)一個(gè)user找出user</p><p>  2、 void save(User user) ;//添加一個(gè)user</p><p>  3、 List<User> findAllUser() ;//查找出所有的會(huì)員</p><p>  4、 User findUserBy

62、Id(Integer userId) ;//根據(jù)某個(gè)id查找對(duì)應(yīng)的user</p><p>  5、 void modify(User user) ;//修改相應(yīng)的user</p><p>  6、 void delete(User user) ;//刪除選中的user</p><p>  7、 User findUserByName(String username

63、) ;//根據(jù)用戶(hù)名稱(chēng)查找user</p><p>  8、 List findUserByPage(Page page) ;//根據(jù)頁(yè)數(shù)號(hào)碼列出用戶(hù)</p><p>  9、 void modifyPasswordByUid(Integer uid) ;//根據(jù)id修改相應(yīng)的用戶(hù)密碼</p><p>  3.2.2.3 UserDAO類(lèi)</p>&l

64、t;p>  實(shí)現(xiàn)了IUserDAO接口的所有方法,在此不再詳細(xì)列出。</p><p>  3.2.2.4 UserService類(lèi)</p><p>  成員變量: IUserDAO userDao = new UserDAO() ;</p><p><b>  相關(guān)方法:</b></p><p>  1、publ

65、ic void save(User user){ }</p><p>  2、public List<User> findAllUser(){} </p><p>  3、public User findUserById(Integer userId){}</p><p>  4、public User login(User user){}<

66、/p><p>  5、public void modify(User user) {}</p><p>  6、public void delete(User user){}</p><p>  7、public User findUserByName(String username){}</p><p>  8、public List find

67、UserByPage(Page page){}</p><p>  9、public void modifyPasswordByUid(Integer uid){}</p><p>  商品父類(lèi)別類(lèi)和相應(yīng)方法</p><p>  這是一個(gè)基礎(chǔ)的類(lèi),它是一種樹(shù)形結(jié)構(gòu),有根類(lèi)別,其下又有很多子類(lèi)別,一個(gè)商品子類(lèi)別類(lèi)必須屬于某種商品父類(lèi)別類(lèi)。</p><

68、;p>  ParentCategory實(shí)體類(lèi)</p><p><b>  成員變量:</b></p><p>  1、private Integer pid ;</p><p>  2、private String pname ;</p><p>  方法:getters()和setters()方法,用來(lái)得到和設(shè)置

69、成員變量的值,因此不詳細(xì)列出。</p><p>  3.2.3.2 IParentCategoryDAO接口</p><p>  List listAll() ;//列出所有的父類(lèi)別的實(shí)例</p><p>  void addParentCategory(ParentCategory pCategory) ;//添加父類(lèi)別中的實(shí)例</p><p&

70、gt;  3.2.3.3 ParentCategoryDAO類(lèi)</p><p>  實(shí)現(xiàn)了ParentCategoryDAO接口的所有方法,在此不再詳細(xì)列出。</p><p>  3.2.3.4 ParentCategoryService類(lèi)</p><p>  成員變量:IChildCategoryDAO iccDao = new ChildCategoryDAO

71、() ;</p><p><b>  相關(guān)方法:</b></p><p>  1、 public void addChildCategory(ChildCategory cCategory) {}</p><p>  2、 public List listAll() {}</p><p>  3、 public Lis

72、t findChildCategoryByPid(Integer pid){}</p><p>  商品子類(lèi)別類(lèi)和相應(yīng)方法</p><p>  ChildCategory類(lèi)</p><p>  這個(gè)類(lèi)與ParentCategory有關(guān)聯(lián)</p><p>  1、 private Integer cid ;//子類(lèi)別類(lèi)的id</p>

73、<p>  2、private String cname ;//子類(lèi)別類(lèi)的名稱(chēng)</p><p>  3、private Integer pid ;//相關(guān)聯(lián)的父類(lèi)別id</p><p>  3.2.4.2 IChildCategoryDAO接口</p><p><b>  抽象方法:</b></p><p>

74、;  1、List listAll() ;//列出所有的子類(lèi)別實(shí)例</p><p>  2、void addChildCategory(ChildCategory cCategory) ;// 添加子類(lèi)別實(shí)例</p><p>  3、List findChildCategoryByPid(Integer pid) ;</p><p>  3.2.4.3 ChildC

75、ategoryDAO類(lèi)</p><p>  實(shí)現(xiàn)了ChildCategoryDAO接口的所有方法,在此不再詳細(xì)列出。</p><p>  3.2.4.4 ChildCategoryService類(lèi)</p><p><b>  成員變量: </b></p><p>  IChildCategoryDAO iccDao

76、 = new ChildCategoryDAO() ;</p><p><b>  方法:</b></p><p>  1、public void addChildCategory(ChildCategory cCategory) {}</p><p>  2、public List listAll() {}</p><p&

77、gt;  3、public List findChildCategoryByPid(Integer Pid){}</p><p>  商品類(lèi)以及相關(guān)類(lèi)和方法</p><p>  3.2.5.1 Goods類(lèi)</p><p>  1、private Integer gid ;//商品id</p><p>  2、private String g

78、name ;//商品名稱(chēng)</p><p>  3、private Float price ;//商品價(jià)格</p><p>  4、private String description ;//商品相關(guān)描述</p><p>  5、private Integer cid ;//子類(lèi)別id</p><p>  6、private String im

79、age ;//商品圖片</p><p>  3.2.5.2IGoodsDAO接口</p><p>  1、void saveGoods(Goods goods) ;//添加商品</p><p>  2、List listAllGoods(Page page) ;//列出所有的商品</p><p>  3、List findGoodsByCid

80、(Integer cid,Page page) ;//根據(jù)商品id找出相對(duì)于的商品</p><p>  4、void modifyGoodsByGid(Goods goods,Integer gid) ;//根據(jù)商品id修改某商品的信息</p><p>  5、void deleteGoodsByGid(Integer gid) ;//根據(jù)商品id刪除此商品</p><

81、p>  3.2.5.3 GoodsDAO類(lèi)</p><p>  實(shí)現(xiàn)了GoodsDAO接口的所有方法,在此不再詳細(xì)列出。</p><p>  3.2.5.4 GoodsService類(lèi)</p><p>  成員變量:IGoodsDAO goodsDao = new GoodsDAO() ;</p><p><b>  方法

82、:</b></p><p>  1、public void saveGoods(Goods goods){} </p><p>  2、public List listAllGoods(Page page){}</p><p>  3、public List findGoodsByCid(Integer cid,Page page{}</p>

83、<p>  4、public void modifyGoodsByGid(Goods goods,Integer gid){}</p><p>  public void deleteGoodsByGid(Integer gid){}</p><p>  3.2.6 SvImage類(lèi)</p><p>  該類(lèi)主要用于在添加相關(guān)商品時(shí),同時(shí)要求附帶商品

84、圖片,此時(shí)就需要運(yùn)用這個(gè)類(lèi)來(lái)處理圖片上傳方面的功能了。</p><p>  3.2.6.1 SvImage類(lèi)</p><p>  Servlet,用來(lái)實(shí)現(xiàn)為商品上傳圖片,用到了apache的commons-fileupload和commons-io組件,這是在Java的Web開(kāi)發(fā)中最常用的文件上傳組件。上傳的圖片會(huì)存放在服務(wù)器的目錄下。</p><p>  3.2

85、.7購(gòu)物車(chē)類(lèi)及其方法</p><p>  該類(lèi)主要用于用戶(hù)如果對(duì)某件商品感興趣時(shí),就可以按下“放入購(gòu)物車(chē)”這個(gè)按鈕,同時(shí),這件商品的相關(guān)信息就會(huì)被放到了相應(yīng)的購(gòu)物車(chē)中去了。即用來(lái)存放用戶(hù)喜歡而即將購(gòu)買(mǎi)的商品信息的。</p><p>  3.2.7.1 Car類(lèi)</p><p>  1、private Integer carId ;//購(gòu)物車(chē)id</p>

86、<p>  2、private String gname ;//放入購(gòu)物車(chē)某商品的名稱(chēng)</p><p>  3、private Float price ;//放入購(gòu)物車(chē)某商品的價(jià)格</p><p>  4、private Integer userId ;//此購(gòu)物車(chē)屬于那個(gè)user的用戶(hù)的id</p><p>  3.2.7.2 ICarDAO接口&l

87、t;/p><p>  1、void saveCar(Car car) ;//用戶(hù)決定購(gòu)買(mǎi)某件商品</p><p>  2、void deleteCar();//把某件商品從購(gòu)物車(chē)中移出來(lái)</p><p>  3、List<Car> listCarsByUid(Integer uid) ;//列出某用戶(hù)的購(gòu)物車(chē)</p><p>  4、

88、void deleteCarByCarId(Integer carId) ;根據(jù)carid把某件商品從購(gòu)物車(chē)中移出來(lái)</p><p>  3.2.7.3 CarDAO類(lèi) </p><p>  實(shí)現(xiàn)了CarDAO接口的所有方法,在此不再詳細(xì)列出。</p><p>  3.2.7.4 CarService類(lèi)</p><p>  成員

89、變量: ICarDAO carDao = new CarDAO() ;</p><p><b>  方法:</b></p><p>  1、 public void saveCar(Car car){} </p><p>  2、public List listCarByUid(Integer uid){}</p>&l

90、t;p>  3、 public void deleteCarByCarId(Integer carId){}</p><p>  3.2.8訂單類(lèi)及其方法</p><p>  3.2.8.1 Orders類(lèi)</p><p><b>  成員變量:</b></p><p>  1、private Integer or

91、derId ;//訂單id</p><p>  2、private Integer userId ;//下此訂單的用戶(hù)id</p><p>  3、private String gname ;//此訂單中某商品的名稱(chēng)</p><p>  4、private Float price ;//此訂單中某商品的價(jià)格</p><p>  5、priva

92、te Date orderDate ;//訂單日期</p><p>  6、private String orderNum ;//訂單號(hào)</p><p>  7、private String username ;//下此訂單的用戶(hù)名稱(chēng)</p><p>  8、private String state ;//訂單的狀態(tài)</p><p>  此類(lèi)

93、中的set和get方法在此就不再列出了。</p><p>  3.2.8.2 IOrdersDAO 接口</p><p>  1、void saveOrder(Orders order) ;//保存訂單</p><p>  2、List<Orders> listOrdersByUid(Integer userId) ;//列出某用戶(hù)的訂單</p&

94、gt;<p>  3、List<Orders> listAllOrders() ;//列出所有訂單</p><p>  4、void handleOrderByOrderId(String state,Integer orderId) ;//處理訂單</p><p>  5、void deleteOrderByOrderId(Integer orderId) ;/

95、/刪除某訂單</p><p>  3.2.8.3 OrdersDAO 類(lèi)</p><p>  實(shí)現(xiàn)了IOrderDAO接口的所有方法,在此不再詳細(xì)列出</p><p>  3.2.8.4 OrderSerrvice類(lèi) </p><p>  成員變量: IOrdersDAO orderDao = new OrderDAO() ;</p&g

96、t;<p><b>  相關(guān)方法:</b></p><p>  1、public void saveOrder(Orders order){} </p><p>  2、public List<Orders> listMyOrderByUid(Integer userId){} </p><p>  3

97、、public List<Orders> listAllOrder(){}</p><p>  4、public void handleOrderByOrderId(String state,Integer orderId){ }</p><p>  5、public void deleteOrderByOrderId(Integer orderId) {}</p>

98、<p><b>  數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p>  3.3.1 user表</p><p>  user表是用來(lái)存放商城會(huì)員的信息的表,有7個(gè)字段,分別用來(lái)存放用戶(hù)id、用戶(hù)名、密碼、聯(lián)系電話(huà)、送貨地址、Email和注冊(cè)日期,它又和User實(shí)體類(lèi)的成員變量對(duì)應(yīng),詳見(jiàn)表4-1。</p><p>  表4-1 user表&l

99、t;/p><p>  3.3.2 parentcategory表</p><p>  parentcategory表用來(lái)存放父類(lèi)別的信息的,有2個(gè)字段,分別用來(lái)存放父類(lèi)別的的pid和名稱(chēng)的,它的主鍵作為子類(lèi)別childcategory表的外鍵。</p><p>  表4-2 parentcategory表</p><p>  3.3.3 c

100、hildcategory表</p><p>  cparentcategory表用來(lái)存放子類(lèi)別的信息的,有3個(gè)字段,分別用來(lái)存放子類(lèi)別的的cid、名稱(chēng)和外鍵pid,,它的主鍵作為商品goods表的外鍵。</p><p>  表4-3 category表</p><p>  3.3.4 goods表</p><p>  goods表用來(lái)保存商

101、品的信息,有6個(gè)字段,分別用來(lái)保存商品的id、商品的名稱(chēng)、價(jià)格、描述、圖片名稱(chēng)、外鍵cid詳見(jiàn)表4-4。</p><p>  表4-4 goods表</p><p>  3.3.5 car表</p><p>  car表用來(lái)存放用戶(hù)喜歡并且有意購(gòu)買(mǎi)的商品信息的,有4個(gè)字段,分別表示訂單id,用戶(hù)id,商品名稱(chēng),商品價(jià)格。詳情見(jiàn)4-5。</p><

102、;p>  表4-5 car表</p><p>  3.3.6 orders表</p><p>  orders用來(lái)存在用戶(hù)已經(jīng)購(gòu)買(mǎi)的商品信息以及相關(guān)的一些信息,本表有8個(gè)字段,分別表示訂單id,用戶(hù)id,商品名稱(chēng),商品價(jià)格,下單日期,訂單號(hào),用戶(hù)名,訂單狀態(tài),詳情請(qǐng)見(jiàn)4-6。</p><p>  表4-6orders表</p><p&g

103、t;<b>  3.4 本章小結(jié)</b></p><p>  本章非常詳細(xì)的介紹了網(wǎng)上商城系統(tǒng)的具體設(shè)計(jì),從開(kāi)發(fā)工具的選擇和環(huán)境的搭建,到基礎(chǔ)的共用類(lèi),到具體的實(shí)體類(lèi)再到數(shù)據(jù)庫(kù)的設(shè)計(jì)。這樣就完成了項(xiàng)目具體框架的搭建。</p><p>  第四章 系統(tǒng)的測(cè)試和分析</p><p>  從這里進(jìn)入到具體的軟件編碼階段,我采用了螺旋遞增的方式開(kāi)發(fā),每

104、個(gè)版本都只完成一定的功能,然后進(jìn)行一定的測(cè)試,然后繼續(xù)進(jìn)行開(kāi)發(fā),繼續(xù)完成和完善功能,直到所有的功能全部完成。</p><p>  4.11 Version 1</p><p>  在這個(gè)版本里,做了一些系統(tǒng)共用類(lèi)的封裝,比如對(duì)數(shù)據(jù)庫(kù)操作的一些常用的方法,將其封裝到了DB類(lèi)中,封裝了取得數(shù)據(jù)庫(kù)連接Connection的方法,和關(guān)閉Connection、Statement和ResultSet的

105、方法。在獲得數(shù)據(jù)庫(kù)連接Connection的時(shí)候需要提供一些信息,第一個(gè)是數(shù)據(jù)連接驅(qū)動(dòng)的名字,第二個(gè)是數(shù)據(jù)庫(kù)連接字符串,還有用戶(hù)名和密碼,這些信息如果寫(xiě)死在程序里面并不好,如果修改數(shù)據(jù)庫(kù)那必須要重新修改程序,因此我將上面那些信息封裝到了配置文件中,也就是sys-config.xml文件中,如果配置發(fā)生了變化,那只需要在配置文件中改動(dòng)相應(yīng)的配置即可。</p><p>  在網(wǎng)絡(luò)編程中,中文亂碼問(wèn)題一直是個(gè)比較麻煩的

106、事情,解決的方法就是在JSP頁(yè)面或者Servlet里設(shè)置字符集,但是頁(yè)面非常多的情況下,設(shè)置字符集就變得非常麻煩,而且如果發(fā)生變動(dòng),就需要將這些頁(yè)面或Servlet的代碼全部改一遍,所以這里引入了一個(gè)Filter,F(xiàn)ilter是一個(gè)過(guò)濾器,屬于面向切面編程的東西,它就是在原來(lái)的調(diào)用流程里無(wú)縫的切入了一層,來(lái)實(shí)現(xiàn)一些功能,下面我畫(huà)圖解釋一下Filter的工作原理和調(diào)用流程,如圖4-1。</p><p>  圖4-1

107、 普通調(diào)用流程</p><p>  在沒(méi)有加入Filter之前,一個(gè)請(qǐng)求到達(dá)時(shí),Tomcat會(huì)幫忙調(diào)用相應(yīng)的JSP或者Servlet,如果加入了Filter則變成了圖4-2所示的樣子。</p><p>  圖4-2 加入Filter之后的調(diào)用流程</p><p>  如果加入了一個(gè)Filter,則會(huì)變成這個(gè)樣子,也就是在原先的Tomcat調(diào)用Servlet之間又切入

108、了一層,正因?yàn)榍腥肓诉@么一層,所以在這一層就可以做一些事情,在這里我設(shè)置了字符集(GBK),之后又通過(guò)doFilter()方法繼續(xù)調(diào)用Servlet,這種切入是無(wú)縫的,不會(huì)影響之前的任何東西。</p><p>  在用戶(hù)注冊(cè)和登錄之前,我設(shè)置好了這個(gè)網(wǎng)上商城的首頁(yè),界面截圖如下:</p><p><b>  圖4-1-1</b></p><p>

109、;  在這個(gè)版本里,我還建立了User實(shí)體類(lèi)封裝了會(huì)員的信息,IUserDAO接口,UserDAO類(lèi)以及UserService類(lèi),UserService則提供了一系列的管理方法,有了這些類(lèi)和接口,接著就完成了用戶(hù)的注冊(cè)和登錄功能,在用戶(hù)注冊(cè)的時(shí)候采用了AJAX來(lái)驗(yàn)證用戶(hù)名是否已經(jīng)被注冊(cè)過(guò)了,如果已經(jīng)被注冊(cè)過(guò)了頁(yè)面就是提示該用戶(hù)名已經(jīng)被注冊(cè)過(guò),如果沒(méi)有則提示該用戶(hù)名可以用,在注冊(cè)頁(yè)面還使用了JavaScript來(lái)驗(yàn)證用戶(hù)的輸入,比如密碼長(zhǎng)

110、度不能小于6位,兩次密碼輸入的是否一致,如果輸入了電話(huà),另外還使用了正則表達(dá)式來(lái)驗(yàn)證郵箱格式是否符合規(guī)定的格式。最后還設(shè)置了驗(yàn)證碼這個(gè)功能,防止一些非法分子進(jìn)行批量注冊(cè)。正對(duì)這個(gè)功能,我特地寫(xiě)了一個(gè)ImageCode類(lèi)。</p><p>  下面是當(dāng)用戶(hù)第一次來(lái)此網(wǎng)站,在點(diǎn)擊注冊(cè)按鈕之后,出現(xiàn)的頁(yè)面,界面截圖如下</p><p><b>  圖4-1-2</b><

111、;/p><p>  當(dāng)用戶(hù)填寫(xiě)的所有信息都符合相關(guān)的規(guī)定,那么注冊(cè)之后頁(yè)面就會(huì)轉(zhuǎn)到登錄界面提醒用戶(hù)是否要進(jìn)行登錄,在首頁(yè)右邊有一個(gè)供用戶(hù)登錄的區(qū)域,在這里可以輸入用戶(hù)名和密碼登錄,截圖如下:</p><p><b>  圖4-1-3</b></p><p>  在登錄過(guò)程中,如果用戶(hù)名為空或者密碼為空,頁(yè)面會(huì)有相關(guān)的提示信息,即使用戶(hù)輸入了用戶(hù)名和

112、密碼,如果用戶(hù)名或者密碼不對(duì),頁(yè)面也會(huì)有相關(guān)的提示信息提示用戶(hù)。然后,如果用戶(hù)名和密碼都輸入正確,那么在登錄之后頁(yè)面會(huì)跳轉(zhuǎn)到下一個(gè)頁(yè)面,并且會(huì)將這個(gè)用戶(hù)記錄到Session中,此頁(yè)面的功能我把它放在了下個(gè)版本中測(cè)試。這里不再詳述。</p><p>  到這里,V1.0版本就完成了,經(jīng)過(guò)測(cè)試也都沒(méi)有問(wèn)題。</p><p>  4.12 Version 2</p><p&g

113、t;  該版本完成得是用戶(hù)信息的修改,用戶(hù)的密碼修改以及用戶(hù)注銷(xiāo)功能。當(dāng)點(diǎn)擊當(dāng)前用戶(hù)名的時(shí)候,頁(yè)面中間會(huì)出現(xiàn)如下類(lèi)容,截圖如下:</p><p><b>  圖4-1-4</b></p><p>  當(dāng)用戶(hù)輸入新的信息并點(diǎn)擊提交之后,就會(huì)把新的信息保存到數(shù)據(jù)庫(kù)中。當(dāng)用戶(hù)再做顯示操作的時(shí)候,顯示的便是修改以后的信息。</p><p>  當(dāng)用戶(hù)點(diǎn)

114、擊頁(yè)面右上方的修改密碼按鈕時(shí),便會(huì)出現(xiàn)修改密碼的頁(yè)面,頁(yè)面中有三個(gè)輸入框,第一個(gè)是要求輸入原密碼,第二個(gè)框要求輸入新密碼,第三個(gè)輸入框要求輸入與第二個(gè)輸入框輸入的內(nèi)容一致,如果不一致,頁(yè)面便會(huì)出現(xiàn)提示信息提示兩次密碼輸入不一致。截圖如下:</p><p><b>  圖4-1-5</b></p><p>  當(dāng)用戶(hù)想退出本商城時(shí),可以點(diǎn)擊頁(yè)面右上方的注銷(xiāo)按鈕,用戶(hù)按下

115、注銷(xiāo)按鈕時(shí),頁(yè)面會(huì)彈出一個(gè)小窗口,提示用戶(hù)是否真的要退出。如果點(diǎn)擊確定,頁(yè)面也轉(zhuǎn)到初始狀態(tài),如果點(diǎn)擊取消,頁(yè)面不變。截圖如下:</p><p><b>  圖4-1-6</b></p><p>  Version2的功能到這里已結(jié)束,經(jīng)過(guò)細(xì)心的測(cè)試,這些功能能正常發(fā)揮作用。</p><p>  4.13 Version 3</p>

116、<p>  接著我們來(lái)看看管理員方面。在前面我已經(jīng)說(shuō)明了,由于本人水平有限,所有就沒(méi)有把用戶(hù)表和管理員表分開(kāi)了,而是把管理員的數(shù)據(jù)也寫(xiě)進(jìn)了user表,在數(shù)據(jù)庫(kù)里面把a(bǔ)dmin這個(gè)用戶(hù)名定為管理員用戶(hù)名,只要以此用戶(hù)名登錄的便是管理員身份。在登錄界面方面,管理員也是賀普通用戶(hù)共用一個(gè)登錄界面。界面截圖在上面已列出來(lái),在這里不再贅述。</p><p>  管理員輸入正確用戶(hù)名和密碼之后頁(yè)面轉(zhuǎn)到主頁(yè)面,否則

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論