版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于java web的網(wǎng)上商城設(shè)計(jì)與開(kāi)發(fā)
- 畢業(yè)設(shè)計(jì)---基于web的網(wǎng)上商城系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于java的網(wǎng)上商城系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 基于web的網(wǎng)上商城設(shè)計(jì)與實(shí)現(xiàn)論文
- 測(cè)控技術(shù)與儀器畢業(yè)設(shè)計(jì)基于web的網(wǎng)上商城設(shè)計(jì)與實(shí)現(xiàn)
- 基于java語(yǔ)言的網(wǎng)上商城的設(shè)計(jì)與實(shí)現(xiàn)
- 基于java的網(wǎng)上商城系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)附件
- 畢業(yè)設(shè)計(jì)---網(wǎng)上商城網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文--基于java的網(wǎng)上商城系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于java與jsp下的網(wǎng)上商城設(shè)計(jì)
- 基于java與jsp下的網(wǎng)上商城設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----網(wǎng)上商城網(wǎng)站設(shè)計(jì)和實(shí)現(xiàn)
- [優(yōu)秀畢業(yè)設(shè)計(jì)精品] 網(wǎng)上商城系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)上商城本科畢業(yè)論文-基于web的電子商城的設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)上商城畢業(yè)設(shè)計(jì)論文
- jsp網(wǎng)上商城畢業(yè)設(shè)計(jì)
- 測(cè)控技術(shù)與儀器畢業(yè)論文基于web的網(wǎng)上商城設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)上商城系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)_基于Android技術(shù)的網(wǎng)上商城系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).doc
- 畢業(yè)設(shè)計(jì)(論文)基于web的網(wǎng)上購(gòu)物商城的設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論