版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 1 引言</b></p><p> 時(shí)代在進(jìn)步,人類從原始社會(huì)走到信息社會(huì),各種工具不斷被發(fā)明和使用?,F(xiàn)如今,計(jì)算機(jī)和互聯(lián)網(wǎng)已經(jīng)相當(dāng)成熟,逐漸成為社會(huì)進(jìn)步的一大助力,人們也越來越依賴于網(wǎng)絡(luò),因?yàn)榫W(wǎng)絡(luò)帶來了很多便利,人們可以上網(wǎng)購(gòu)物、學(xué)習(xí)、與遠(yuǎn)方的親友聊天等等。</p><p> 網(wǎng)上書城系統(tǒng)的開發(fā),可以充分地利用計(jì)算機(jī)強(qiáng)大的存儲(chǔ)和計(jì)
2、算的功能,可以存儲(chǔ)大量的圖書,同時(shí)可以高效的管理這些書籍,提高了工作的效率和服務(wù)的質(zhì)量。網(wǎng)上書城的另一個(gè)優(yōu)勢(shì)就是可以讓讀者隨時(shí)查詢到所需要的書籍并購(gòu)買,另一方面,網(wǎng)上書城的擁有者可以利用強(qiáng)大的數(shù)據(jù)庫功能,隨時(shí)可以查看各個(gè)書籍的庫存、銷售量,方便網(wǎng)上書城的經(jīng)營(yíng)者根據(jù)實(shí)際情況買入庫存短缺的圖書。網(wǎng)上書城可以滿足全球所有讀者的看書購(gòu)書需求,他們能夠在網(wǎng)上的任意一家書店搜到想要閱讀的書籍并購(gòu)買。通過這種方式,圖書能夠在市面上快速流通,從而降低了
3、圖書的出售成本,免除了圖書的流通費(fèi)用,進(jìn)一步減少生產(chǎn)和交易的成本,更符合時(shí)代的要求。本系統(tǒng)在電子商務(wù)技術(shù)的應(yīng)用使得企業(yè)或個(gè)人通過電子商務(wù)技術(shù)進(jìn)行圖書的網(wǎng)上購(gòu)買,新用戶注冊(cè)、用戶登陸、商品分類、查詢商品、購(gòu)物車和訂單等基本功能。網(wǎng)上書城系統(tǒng)的開發(fā)與實(shí)現(xiàn),充分體現(xiàn)了信息化社會(huì)的好處,大大改變了傳統(tǒng)的去書店查找并購(gòu)買書籍的方式,節(jié)省了人們查找圖書和路程消耗的時(shí)間,既方便又能滿足大家的需求。</p><p> 網(wǎng)上書城
4、的實(shí)現(xiàn)不僅給想要購(gòu)買圖書的人帶去了方便,也為書店本身帶來了許多利益。通過在互聯(lián)網(wǎng)上開設(shè)書店,可以不用花費(fèi)高額的店面租金和昂貴的裝修費(fèi)用,不用花費(fèi)人力物力進(jìn)行書籍的運(yùn)輸,這些都是網(wǎng)上書城對(duì)于傳統(tǒng)書店的直接優(yōu)勢(shì)。同時(shí),由于全球化的影響,網(wǎng)上書城更容易開拓全球市場(chǎng)。書城的運(yùn)營(yíng)是24小時(shí)制的,可以滿足所有用戶購(gòu)書時(shí)間上的需求,而且不需要售貨員,網(wǎng)上書城系統(tǒng)可以自行完成用戶購(gòu)書的流程,相當(dāng)于一個(gè)自動(dòng)售貨機(jī)。還有就是可以利用互聯(lián)網(wǎng),通過多種有效途徑
5、快速對(duì)網(wǎng)上書城進(jìn)行宣傳,吸引更多的人前來選購(gòu)。以上這些都是網(wǎng)上書城體現(xiàn)出的優(yōu)點(diǎn)。</p><p> 本系統(tǒng)采用的是B/S模式,用Eclipse實(shí)現(xiàn)程序的開發(fā),使用DIV+CSS實(shí)現(xiàn)頁面的布局,使用Oracle實(shí)現(xiàn)數(shù)據(jù)庫的設(shè)計(jì),運(yùn)用SQL語句實(shí)現(xiàn)數(shù)據(jù)庫的操作。本系統(tǒng)分為前臺(tái)系統(tǒng)和后臺(tái)系統(tǒng)。其中前臺(tái)系統(tǒng)功能模塊中包含用戶模塊、前臺(tái)圖書模塊、瀏覽記錄模塊、購(gòu)物車、前臺(tái)訂單模塊等。后臺(tái)系統(tǒng)主要包括圖書類別模塊、圖書管理
6、模塊、后臺(tái)訂單模塊等。</p><p> 本系統(tǒng)實(shí)現(xiàn)了網(wǎng)上書城系統(tǒng)的相關(guān)功能,系統(tǒng)具有的優(yōu)點(diǎn):頁面簡(jiǎn)單,操作簡(jiǎn)便,用戶能夠第一時(shí)間查詢到自己想要的東西。系統(tǒng)的開發(fā)過程中充分體現(xiàn)了軟件工程的設(shè)計(jì)思想,首先從系統(tǒng)的需求分析入手,根據(jù)數(shù)據(jù)間的關(guān)系模式設(shè)計(jì)出各個(gè)數(shù)據(jù)庫表,再詳細(xì)分析系統(tǒng)的各個(gè)功能模塊,對(duì)其進(jìn)行更細(xì)膩的分解,從而設(shè)計(jì)出系統(tǒng)的模塊化結(jié)構(gòu),最后從系統(tǒng)的具體要求出發(fā),實(shí)現(xiàn)各個(gè)功能模塊的詳細(xì)功能。</p&g
7、t;<p> 2 開發(fā)工具及技術(shù)簡(jiǎn)介</p><p> 本系統(tǒng)采用選擇Eclipse作為開發(fā)工具,使用Java語言結(jié)合JSP網(wǎng)站開發(fā)技術(shù),采用數(shù)據(jù)庫服務(wù)器Oracle完成對(duì)系統(tǒng)數(shù)據(jù)的管理,利用hibernate組件完成數(shù)據(jù)庫的連接及打開。</p><p> 下面將對(duì)系統(tǒng)的開發(fā)工具和主要技術(shù)作一個(gè)簡(jiǎn)單的介紹。</p><p> 2.1 Ecl
8、ipse開發(fā)工具</p><p> Eclipse 是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái),就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境,幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)[1]。</p><p> 雖然大多數(shù)用戶很樂于將 Eclipse 當(dāng)作 Java 集成開發(fā)環(huán)
9、境(IDE)來使用,但 Eclipse 的目標(biāo)卻不僅限于此。Eclipse 還包括插件開發(fā)環(huán)境(Plug-in Development Environment,PDE),這個(gè)組件主要針對(duì)希望擴(kuò)展 Eclipse 的軟件開發(fā)人員,因?yàn)樗试S他們構(gòu)建與 Eclipse 環(huán)境無縫集成的工具。由于 Eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮
10、場(chǎng)所[2]。</p><p> 這種平等和一致性并不僅限于 Java 開發(fā)工具。盡管 Eclipse 是使用Java語言開發(fā)的,但它的用途并不限于 Java 語言;例如,支持諸如C/C++、COBOL、PHP、Android等編程語言的插件已經(jīng)可用,或預(yù)計(jì)將會(huì)推出。Eclipse 框架還可用來作為與軟件開發(fā)無關(guān)的其他應(yīng)用程序類型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)。</p><p> 基于 Ecl
11、ipse 的應(yīng)用程序的一個(gè)突出例子是 IBM Rational Software Architect,它構(gòu)成了 IBM Java 開發(fā)工具系列的基礎(chǔ)。</p><p> 2.2 Java編程語言</p><p> Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。Java 技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算
12、機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開發(fā)者專業(yè)社群[3]。</p><p> 2.3 Oracle10G</p><p> Oracle Database,又名Oracle RDBMS,或簡(jiǎn)稱Oracle。是甲骨文公司的一款關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它是在數(shù)據(jù)庫領(lǐng)域一直處于領(lǐng)先地位的產(chǎn)品[7]??梢哉fOracle數(shù)據(jù)庫系統(tǒng)是目前世界上流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng),系統(tǒng)可移植性好、使用方便、
13、功能強(qiáng),適用于各類大、中、小、微機(jī)環(huán)境。它是一種高效率、可靠性好的 適應(yīng)高吞吐量的數(shù)據(jù)庫解決方案[4]。</p><p> ORACLE數(shù)據(jù)庫系統(tǒng)是美國(guó)ORACLE公司(甲骨文)提供的以分布式數(shù)據(jù)庫為核心的一組軟件產(chǎn)品,是目前最流行的客戶/服務(wù)器(CLIENT/SERVER)或B/S體系結(jié)構(gòu)的數(shù)據(jù)庫之一[5]。比如SilverStream就是基于數(shù)據(jù)庫的一種中間件。ORACLE數(shù)據(jù)庫是目前世界上使用最為廣泛的數(shù)
14、據(jù)庫管理系統(tǒng),作為一個(gè)通用的數(shù)據(jù)庫系統(tǒng),它具有完整的數(shù)據(jù)管理功能;作為一個(gè)關(guān)系數(shù)據(jù)庫,它是一個(gè)完備關(guān)系的產(chǎn)品;作為分布式數(shù)據(jù)庫它實(shí)現(xiàn)了分布式處理功能。但它的所有知識(shí),只要在一種機(jī)型上學(xué)習(xí)了ORACLE知識(shí),便能在各種類型的機(jī)器上使用它。 </p><p> Oracle數(shù)據(jù)庫最新版本為Oracle Database 12c。Oracle數(shù)據(jù)庫12c 引入了一個(gè)新的多承租方架構(gòu),使用該架構(gòu)可輕松部署和管理數(shù)據(jù)庫云
15、。此外,一些創(chuàng)新特性可最大限度地提高資源使用率和靈活性,如Oracle Multitenant可快速整合多個(gè)數(shù)據(jù)庫,而Automatic Data Optimization和Heat Map能以更高的密度壓縮數(shù)據(jù)和對(duì)數(shù)據(jù)分層。這些獨(dú)一無二的技術(shù)進(jìn)步再加上在可用性、安全性和大數(shù)據(jù)支持方面的主要增強(qiáng),使得Oracle數(shù)據(jù)庫12c 成為私有云和公有云部署的理想平臺(tái)[6]。</p><p> 2.4 jQuery&l
16、t;/p><p> Jquery是繼prototype之后又一個(gè)優(yōu)秀的Javascript庫。它是輕量級(jí)的js庫 ,它兼容CSS3,還兼容各種瀏覽器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后續(xù)版本將不再支持IE6/7/8瀏覽器。jQuery使用戶能更方便地處理HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用)、events、實(shí)現(xiàn)動(dòng)畫效果,并且方便地為網(wǎng)站提供
17、AJAX交互。jQuery還有一個(gè)比較大的優(yōu)勢(shì)是,它的文檔說明很全,而且各種應(yīng)用也說得很詳細(xì),同時(shí)還有許多成熟的插件可供選擇,jQuery能夠使用戶的html頁面保持代碼和html內(nèi)容分離,也就是說,不用再在html里面插入一堆js來調(diào)用命令了,只需要定義id即可[7]。</p><p> jQuery是一個(gè)兼容多瀏覽器的Javascript庫,核心理念是write less,do more(寫得更少,做得更多
18、)。jQuery在2006年1月由美國(guó)人John Resig在紐約的barcamp發(fā)布,吸引了來自世界各地的眾多JavaScript高手加入,由Dave Methvin率領(lǐng)團(tuán)隊(duì)進(jìn)行開發(fā)。如今,jQuery已經(jīng)成為最流行的Javascript庫,在世界前10000個(gè)訪問最多的網(wǎng)站中,有超過55%在使用jQuery。</p><p> jQuery是免費(fèi)、開源的,使用MIT許可協(xié)議,jQuery的語法設(shè)計(jì)可以使開發(fā)
19、者更加便捷,例如操作文檔對(duì)象、選擇DOM元素、制作動(dòng)畫效果、事件處理、使用Ajax以及其他功能,除此以外,jQuery提供API讓開發(fā)者編寫插件,其模塊化的使用方式使開發(fā)者可以很輕松的開發(fā)出功能強(qiáng)大的靜態(tài)或動(dòng)態(tài)網(wǎng)頁[8]。</p><p> jQuery,顧名思議,也就是JavaScript和查詢(Query),即是輔助JavaScript開發(fā)的庫。</p><p><b>
20、 2.5 JSP</b></p><p> JSP使Java代碼和特定的預(yù)定義動(dòng)作可以嵌入到靜態(tài)頁面中。JSP句法增加了被稱為JSP動(dòng)作的XML標(biāo)簽,它們用來調(diào)用內(nèi)建功能。另外,可以創(chuàng)建JSP標(biāo)簽庫,然后像使用標(biāo)準(zhǔn)HTML或XML標(biāo)簽一樣使用它們。標(biāo)簽庫提供了一種和平臺(tái)無關(guān)的擴(kuò)展服務(wù)器性能的方法。</p><p> JSP被JSP編譯器編譯成Java Servlets。一
21、個(gè)JSP編譯器可以把JSP編譯成Java代碼寫的servlet然后再由Java編譯器來編譯成機(jī)器碼,也可以直接編譯成二進(jìn)制碼。</p><p> JSP主要優(yōu)先如下:</p><p> a)Web服務(wù)器的支持:大多數(shù)通用的Web服務(wù)器如:Apache、Netscape和Microsoft IIS都支持JSP頁面,只有微軟本身的Microsoft IIS和Personal Web Ser
22、ver可以支持ASP[9]。</p><p> b)平臺(tái)的支持:JSP具有平臺(tái)獨(dú)立性,只要是一般的Java程序可以運(yùn)行的平臺(tái),都支持JSP程序。Windows平臺(tái)可以很好的支持ASP,但ASP對(duì)于基于Win32逐漸模型的依賴,使得它難于移植到其它平臺(tái)上[10]。</p><p> b)組件模型:JSP是建立在可重用的、跨平臺(tái)的組件(如:JavaBeans、Enterprises Jav
23、aBeans和用戶定制的標(biāo)簽庫等組件)之上的,而ASP使用的是基于Win32的COM組件模型[11]。</p><p> d)腳本語言:JSP可以使用Java編程語言或JavaScript作為腳本語言,而ASP使用VBScript或Jscript作為腳本語言。</p><p> e)安全性:JSP使用Java安全模型,而ASP使用Windows NT的安全結(jié)構(gòu)。</p>
24、<p> f)與Access數(shù)據(jù)庫的連接:JSP使用JDBC建立與Access數(shù)據(jù)庫的連接,而ASP對(duì)Access數(shù)據(jù)庫使用Data Active Objects。</p><p> h)用戶定制的標(biāo)簽:JSP可以使用用戶定制標(biāo)簽庫進(jìn)行擴(kuò)充,而ASP中沒有用戶定制標(biāo)簽庫,ASP是不能擴(kuò)充的。</p><p> 2.6 B/S結(jié)構(gòu)</p><p>
25、 由于Client/Server結(jié)構(gòu)存在的種種問題,因此人們又在它原有的基礎(chǔ)上提出了一種具有三層模式(3-Tier)的應(yīng)用系統(tǒng)結(jié)構(gòu)瀏覽器/服務(wù)器(Browser/Server)結(jié)構(gòu)[10]。Browser/Server結(jié)構(gòu)是伴隨著因特網(wǎng)的興起,對(duì)Client/Server結(jié)構(gòu)的一種改進(jìn)。從本質(zhì)上說,Browser/Server結(jié)構(gòu)也是一種Client/Server結(jié)構(gòu),它可看作是一種由傳統(tǒng)的二層模式Client/Server結(jié)構(gòu)發(fā)展而來
26、的三層模式Client/Server結(jié)構(gòu)在Web上應(yīng)用的特例[11]。</p><p> Browser/Server結(jié)構(gòu)主要是利用了不斷成熟的Web瀏覽器技術(shù):結(jié)合瀏覽器的多種腳本語言和ActiveX技術(shù),用通用瀏覽器實(shí)現(xiàn)原來需要復(fù)雜專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,同時(shí)節(jié)約了開發(fā)成本。</p><p> B/S最大的優(yōu)點(diǎn)就是可以在任何地方進(jìn)行操作而不用安裝任何專門的軟件,只要有一臺(tái)能上網(wǎng)
27、的電腦就能使用,客戶端零安裝、零維護(hù)。系統(tǒng)的擴(kuò)展非常容易[12]。</p><p> B/S結(jié)構(gòu)的使用越來越多,特別是由需求推動(dòng)了AJAX技術(shù)的發(fā)展,它的程序也能在客戶端電腦上進(jìn)行部分處理,從而大大的減輕了服務(wù)器的負(fù)擔(dān);并增加了交互性,能進(jìn)行局部實(shí)時(shí)刷新。</p><p><b> 3 需求分析</b></p><p><b>
28、 3.1 項(xiàng)目背景</b></p><p> 網(wǎng)上書城是進(jìn)行圖書出售的一種新興的途徑,在近幾年出現(xiàn)了幾個(gè)大的網(wǎng)上書城系統(tǒng)。20世紀(jì)80年代后,隨著計(jì)算機(jī)的出現(xiàn)和迅速普及,計(jì)算機(jī)日益成為很多機(jī)構(gòu)不可缺少的工具,到90年代之后,計(jì)算機(jī)已經(jīng)逐漸普及到千家萬戶,互聯(lián)網(wǎng)又發(fā)展迅猛,于是各種基于網(wǎng)絡(luò)的網(wǎng)上書城系統(tǒng)開始出現(xiàn),網(wǎng)上書城網(wǎng)站也逐漸增多,如當(dāng)當(dāng)網(wǎng)、亞馬遜等。</p><p>
29、 網(wǎng)上書城作為一種基于互聯(lián)網(wǎng)平臺(tái)的有效的圖書出售平臺(tái),越來越受到許多傳統(tǒng)圖書經(jīng)營(yíng)者和相關(guān)企業(yè)的關(guān)注及運(yùn)用。開發(fā)網(wǎng)上書城系統(tǒng)不僅能更好得方便讀者用戶購(gòu)買書籍,也能幫助圖書經(jīng)營(yíng)者甚至企業(yè)更好的出售圖書從而獲取更多的經(jīng)濟(jì)效益。網(wǎng)上書城系統(tǒng)將傳統(tǒng)的門面式出售圖書,把圖書的銷售轉(zhuǎn)移到了網(wǎng)絡(luò)上,人們可以快速的根據(jù)自己的情況獲取相應(yīng)的書籍,這樣更加方便了用戶。而對(duì)經(jīng)營(yíng)者來說,將圖書銷售放在網(wǎng)站上,可以對(duì)圖書進(jìn)行更加有效的管理,大幅減少了圖書銷售的成
30、本,同時(shí)經(jīng)營(yíng)者或企業(yè)也能通過網(wǎng)上書城系統(tǒng)中書籍的出售情況做一個(gè)數(shù)據(jù)的收集和統(tǒng)計(jì),更好得幫助經(jīng)營(yíng)者作下一步規(guī)劃。</p><p><b> 3.2 系統(tǒng)功能</b></p><p> 根據(jù)網(wǎng)上書城系統(tǒng)的需求,在匯總分析后,對(duì)系統(tǒng)各功能進(jìn)行模塊劃分,并制作出系統(tǒng)的主要功能圖,如圖3.1所示。</p><p> 分別對(duì)網(wǎng)上書城系統(tǒng)的各個(gè)功能介
31、紹如下:</p><p><b> a) 前臺(tái)用戶模塊</b></p><p> 當(dāng)用戶處在系統(tǒng)的前臺(tái)首頁時(shí),可以通過單擊左上角的“注冊(cè)”按鈕使頁面跳轉(zhuǎn)到用戶注冊(cè)頁面,本系統(tǒng)需要用戶填寫用戶名、密碼、郵箱,需要指出的是本系統(tǒng)增加了驗(yàn)證碼的文本框,用戶需要正確填寫驗(yàn)證碼圖片中的驗(yàn)證碼信息,用戶不必注意大小寫,當(dāng)用戶按照正確的格式填寫好各個(gè)信息后,單擊注冊(cè)按鈕,系統(tǒng)會(huì)
32、自動(dòng)轉(zhuǎn)發(fā)到登陸頁面;如果用戶填寫的用戶名在數(shù)據(jù)庫中已經(jīng)被其他用戶占用,那么在點(diǎn)擊注冊(cè)按鈕后系統(tǒng)會(huì)在注冊(cè)頁面提示用戶該用戶名已經(jīng)被使用。在這里為了在原頁面上方便的顯示信息,本系統(tǒng)采用了EL表達(dá)式的技術(shù)。</p><p> 如果是已經(jīng)注冊(cè)的用戶,在登錄時(shí),如果用戶名或密碼不正確,系統(tǒng)會(huì)返回到登錄頁面,并提示用戶名或密碼提示錯(cuò)誤,如果登錄成功,系統(tǒng)會(huì)轉(zhuǎn)發(fā)的圖書的顯示頁面,并在左上角顯示已經(jīng)登錄的用戶的用戶名。<
33、/p><p><b> b)后臺(tái)類別模塊</b></p><p> 在首頁點(diǎn)擊進(jìn)入后臺(tái),即可進(jìn)入后臺(tái)相關(guān)頁面,類別模塊主要有類別的添加、查看、更新、刪除的功能。點(diǎn)擊添加類別按鈕,會(huì)轉(zhuǎn)到一個(gè)類別添加的頁面,填寫類別的名稱,點(diǎn)擊保存,如果保存成功,系統(tǒng)會(huì)轉(zhuǎn)發(fā)到一個(gè)帶有提示成功的頁面。在后臺(tái)點(diǎn)擊查看分類的按鈕,則會(huì)轉(zhuǎn)到已存在分類列表的頁面,在每個(gè)分類的后面都提供了更新和刪除
34、的功能,點(diǎn)擊更新系統(tǒng)會(huì)轉(zhuǎn)到更新頁面,同時(shí)把原類名的信息自動(dòng)回顯到表單,如果更新成功,系統(tǒng)會(huì)轉(zhuǎn)發(fā)到一個(gè)帶有提示更新成功的頁面;在分類列表頁面點(diǎn)擊刪除按鈕,系統(tǒng)會(huì)提示用戶是否確定要?jiǎng)h除該類,點(diǎn)擊確定后刪除。</p><p> 圖3.1 系統(tǒng)功能圖</p><p><b> c)后臺(tái)圖書模塊</b></p><p> 后臺(tái)的圖書模塊包括了圖書
35、的插入、更新、刪除操作。在首頁點(diǎn)擊進(jìn)入后臺(tái),即可進(jìn)入后臺(tái)相關(guān)頁面。點(diǎn)擊添加圖書按鈕,會(huì)轉(zhuǎn)到一個(gè)圖書添加的頁面,填寫圖書相關(guān)信息,需要說明的是到達(dá)該頁面的時(shí)候系統(tǒng)會(huì)自動(dòng)攜帶分類信息,并回顯該類之前的類別,點(diǎn)擊保存,如果保存成功,系統(tǒng)會(huì)轉(zhuǎn)發(fā)到一個(gè)帶有提示成功的頁面。在后臺(tái)點(diǎn)擊查看圖書的按鈕,則會(huì)轉(zhuǎn)到已存在圖書列表的頁面,在每個(gè)圖書的后面都提供了更新、刪除和查看封面的功能,點(diǎn)擊更新系統(tǒng)會(huì)轉(zhuǎn)到更新頁面,同時(shí)把原圖書的信息自動(dòng)回顯到表單,如果更新
36、成功,系統(tǒng)會(huì)轉(zhuǎn)發(fā)到一個(gè)帶有提示更新成功的頁面;在圖書列表頁面點(diǎn)擊刪除按鈕,系統(tǒng)會(huì)提示用戶是否確定要?jiǎng)h除該圖書,點(diǎn)擊確定后刪除。在圖書列表頁面點(diǎn)擊查看圖書封面按鈕,系統(tǒng)會(huì)轉(zhuǎn)到顯示該圖書封面的頁面。</p><p><b> d)前臺(tái)圖書分頁</b></p><p> 在首頁即顯示圖書的分頁。系統(tǒng)自動(dòng)把三本圖書分為一頁,每個(gè)圖書都顯示圖書的封面和圖書的相關(guān)信息,同時(shí),
37、圖書的下邊一行,顯示了共多少頁及當(dāng)前為第幾頁,共有多少條圖書記錄,還有首頁、上一頁、下一頁、末頁的超鏈接,同時(shí)提供了跳轉(zhuǎn)到指定頁的功能。上方則顯示了購(gòu)物車的相關(guān)信息,提供了在指定價(jià)格區(qū)間進(jìn)行查詢的功能。</p><p><b> e)查看瀏覽記錄</b></p><p> 用戶在圖書頁面查看圖書的同時(shí),系統(tǒng)會(huì)記錄用戶查看了哪些圖書,點(diǎn)擊左側(cè)導(dǎo)航中的查看瀏覽記錄的按
38、鈕,會(huì)自動(dòng)跳轉(zhuǎn)到顯示用戶瀏覽記錄的頁面,并且系統(tǒng)會(huì)按用戶查看圖書的先后順序倒序來顯是圖書的相關(guān)信息,點(diǎn)擊圖書后面的查看詳細(xì)信息會(huì)再次跳轉(zhuǎn)到該圖書詳細(xì)信息頁面,系統(tǒng)同時(shí)提供了清除瀏覽記錄的功能。</p><p><b> f)購(gòu)物車</b></p><p> 這是網(wǎng)上書城的核心功能。在圖書分頁頁面,點(diǎn)擊加入購(gòu)物車即可把指定圖書加入到用戶的購(gòu)物車中,點(diǎn)擊右上角的查看購(gòu)
39、物車,即可顯示購(gòu)物車中相關(guān)購(gòu)物項(xiàng)的信息,繼續(xù)點(diǎn)擊結(jié)賬按鈕,系統(tǒng)會(huì)判斷此時(shí)是否存在用戶,如果不存在系統(tǒng)會(huì)轉(zhuǎn)到用戶登錄頁面,如果用戶已經(jīng)登錄,系統(tǒng)會(huì)跳轉(zhuǎn)到顯示地址列表的頁面,用戶指定一個(gè)地址,然后點(diǎn)擊生成訂單,系統(tǒng)會(huì)返回一個(gè)訂單號(hào)給用戶,從而完成圖書的購(gòu)買。</p><p><b> g)訂單</b></p><p> 訂單分為前臺(tái)的訂單模塊和后臺(tái)的訂單模塊,前臺(tái)點(diǎn)擊
40、查看訂單,即可查看當(dāng)前用戶的訂單列表,如果此時(shí)沒有用戶,系統(tǒng)會(huì)跳轉(zhuǎn)到用戶登錄頁面;后臺(tái)的訂單模塊會(huì)顯示所有用戶的訂單列表,如果管理員點(diǎn)擊發(fā)貨的按鈕,則訂單會(huì)顯示已發(fā)貨。無論前臺(tái)訂單模塊還是后臺(tái)訂單模塊都提供了查看訂單詳情的功能,點(diǎn)擊查看訂單詳情的按鈕,系統(tǒng)會(huì)跳轉(zhuǎn)到訂單詳情頁面,頁面上顯示了該訂單的地址信息及訂單所包含的所有的圖書的信息。</p><p> 3.3 系統(tǒng)運(yùn)行環(huán)境</p><p
41、> 該系統(tǒng)至少需要一臺(tái)安裝聯(lián)網(wǎng)的計(jì)算機(jī)。具體系統(tǒng)需求如下:</p><p> a)Windows XP 或更高版本的操作系統(tǒng)。</p><p> b)Oracle10g或更高版本的數(shù)據(jù)庫服務(wù)器。</p><p> c)開發(fā)調(diào)試環(huán)境為Eclipse。</p><p> d)Tomcat服務(wù)器。</p><p&
42、gt;<b> 4 數(shù)據(jù)庫設(shè)計(jì)</b></p><p> 4.1 數(shù)據(jù)庫需求分析</p><p> 任何項(xiàng)目開發(fā)的過程中的一個(gè)核心環(huán)節(jié)就是數(shù)據(jù)庫的設(shè)計(jì),數(shù)據(jù)庫設(shè)計(jì)的好壞是項(xiàng)目的成功與否的關(guān)鍵因素之一,如果把項(xiàng)目比作高樓大廈,數(shù)據(jù)庫就像是項(xiàng)目的地基,如果數(shù)據(jù)庫設(shè)計(jì)的不完善,那么就為項(xiàng)目后續(xù)的維護(hù)埋下了隱患,項(xiàng)目后續(xù)的更改和功能的進(jìn)一步擴(kuò)充可能就會(huì)變得異常的艱難
43、。好的數(shù)據(jù)庫設(shè)計(jì)有下面的一些作用。</p><p> a) 充分反映和體現(xiàn)實(shí)體的屬性,能夠滿足系統(tǒng)的業(yè)務(wù)需求。</p><p> b) 數(shù)據(jù)的準(zhǔn)確性、健壯性和一致性,通過主鍵、外鍵、約束、索引等來保持?jǐn)?shù)據(jù)的準(zhǔn)確性和數(shù)據(jù)庫整體的健壯性。</p><p> c) 數(shù)據(jù)庫中數(shù)據(jù)查詢的效率,需要數(shù)據(jù)庫的設(shè)計(jì)者建立合理的表結(jié)構(gòu),必要時(shí)增加除數(shù)據(jù)庫系統(tǒng)自動(dòng)生成的索引外的索
44、引,提高數(shù)據(jù)的查詢效率。</p><p> d)擴(kuò)展性,在必要時(shí)能根據(jù)需求擴(kuò)展數(shù)據(jù)結(jié)構(gòu)。</p><p> 按照對(duì)系統(tǒng)需求的分析和基于用戶/服務(wù)器開發(fā)模式的要求,數(shù)據(jù)庫采用Oracle,它所支持的字段數(shù)據(jù)類型包括數(shù)值、字符、日期時(shí)間以及二進(jìn)制和整數(shù)等類型,它性能穩(wěn)定適合本設(shè)計(jì)的工作需求。</p><p> 通過對(duì)系統(tǒng)需求的分析,列出以下部分?jǐn)?shù)據(jù)庫表和數(shù)據(jù)項(xiàng):&
45、lt;/p><p> a) users表:包括編號(hào)、用戶名、密碼、郵箱等數(shù)據(jù)項(xiàng);</p><p> b)category表:包括編號(hào)、分類名稱等數(shù)據(jù)項(xiàng);</p><p> c)book表:包括編號(hào)、圖書名稱、作者、價(jià)格、庫存、銷量、封面路徑、所屬類別的編號(hào)等數(shù)據(jù)項(xiàng);</p><p> d)address表:包括編號(hào)、收貨人姓名、地址信息、
46、手機(jī)號(hào)、所屬用戶編號(hào)等數(shù)據(jù)項(xiàng)。</p><p> e)orders表:包括編號(hào)、訂單號(hào)、訂單狀態(tài)、訂單時(shí)間、總金額、所屬用戶編號(hào)、所屬地址編號(hào)等數(shù)據(jù)項(xiàng);</p><p> f)orderItem:包括編號(hào)、數(shù)量、單價(jià)、所屬訂單編號(hào)、所屬圖書編號(hào)等數(shù)據(jù)項(xiàng)。</p><p> 根據(jù)上述分析得到E-R圖,如圖4.1所示:</p><p>
47、圖4.1系統(tǒng)E-R圖</p><p> 4.2 創(chuàng)建數(shù)據(jù)庫</p><p> 點(diǎn)擊開始菜單:開始=>程序=>Oracle=>oraDb10g_home1=>配置和移植工具=>Database Configuration Assistant,單擊“下一步”,系統(tǒng)提示選擇需要進(jìn)行的操作;選擇“創(chuàng)建數(shù)據(jù)庫”,點(diǎn)擊下一步;選擇“事務(wù)處理”,點(diǎn)擊下一步;輸入全局?jǐn)?shù)
48、據(jù)庫名,點(diǎn)擊下一步;選擇“所有帳戶使用同一口令”,并設(shè)置口令,然后點(diǎn)擊下一步;一直點(diǎn)擊“下一步”, 點(diǎn)擊“確定”,oralce開始創(chuàng)建數(shù)據(jù)庫。</p><p> 需要額外說明的是,當(dāng)新創(chuàng)建一個(gè)數(shù)據(jù)庫而沒有進(jìn)行配置時(shí)會(huì)出現(xiàn)“ORA-12514: TNS:listener does not currently know of service requested in connect descriptor”的警告,這
49、個(gè)的錯(cuò)誤意思就是說 :ORA-12514 : TNS: 監(jiān)聽程序當(dāng)前無法識(shí)別連接描述符中請(qǐng)求的服務(wù),這個(gè)錯(cuò)誤就是在D:\oracle\product\10.2.0\db_1 \NETWORK\ADMIN\listener.ora 目錄下面的這個(gè)文件里面 的一個(gè)監(jiān)聽沒有配置。</p><p> SID_LIST_LISTENER =</p><p> (SID_LIST =</p&
50、gt;<p> (SID_DESC =</p><p> (SID_NAME = PLSExtProc)</p><p> (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)</p><p> (PROGRAM = extproc)</p><p><b> ) &
51、lt;/b></p><p> (SID_DESC =</p><p> (GLOBAL_DBNAME = bookstore )</p><p> (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)</p><p> (SID_NAME = bookstore )</p>
52、<p><b> )</b></p><p><b> )</b></p><p> LISTENER =</p><p> (DESCRIPTION_LIST =</p><p> (DESCRIPTION =</p><p> (ADDRESS =
53、(PROTOCOL = IPC)(KEY = EXTPROC1))</p><p><b> )</b></p><p> (DESCRIPTION =</p><p> (ADDRESS = (PROTOCOL = TCP)(HOST = 10.246.146.133)(PORT = 1521))</p><p>
54、;<b> )</b></p><p><b> )</b></p><p><b> 需要我們加入的是:</b></p><p> (SID_DESC =</p><p> (GLOBAL_DBNAME = bookstore )</p><p&
55、gt; (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)</p><p> (SID_NAME = bookstore)</p><p><b> )</b></p><p> 同時(shí)要注意的是bookstore一定要是Oracle數(shù)據(jù)庫服務(wù)的實(shí)例名,本系統(tǒng)數(shù)據(jù)庫服務(wù)的實(shí)例名就是bookstore
56、。</p><p> 4.3 數(shù)據(jù)庫表設(shè)計(jì)</p><p> 根據(jù)需求分析中對(duì)系統(tǒng)功能的各方面做出的定義,系統(tǒng)設(shè)計(jì)了相應(yīng)的數(shù)據(jù)庫表。進(jìn)行開發(fā)時(shí),在Oracle數(shù)據(jù)庫服務(wù)器中應(yīng)該嚴(yán)格按照此結(jié)構(gòu)進(jìn)行表之定義。</p><p> 根據(jù)功能模塊的設(shè)計(jì),以及規(guī)范化的設(shè)計(jì)要求,該系統(tǒng)所涉及的表包括用戶表、圖書分類表、圖書表、地址表、訂單表、訂單詳情表共有6個(gè)表:<
57、/p><p> a)注冊(cè)用戶表users</p><p> 注冊(cè)用戶表users用來保存用戶信息,結(jié)構(gòu)如表4.2所示。</p><p> 表4.2注冊(cè)用戶表(users)</p><p> b) 圖書分類表category</p><p> 圖書分類表category用來保存提問的問題信息,結(jié)構(gòu)如表4.3所示。
58、</p><p> 表4.3圖書分類(category)</p><p> c) 圖書表book</p><p> 圖書表book用來保存圖書的詳細(xì)信息,結(jié)構(gòu)如表4.4所示。</p><p> d) 地址表address</p><p> 地址表address用來保存地址的詳細(xì)信息,結(jié)構(gòu)如表4.5所示<
59、;/p><p> 表4. 4圖書(book)</p><p> 表4.5地址(address)</p><p><b> e) 訂單表</b></p><p> 訂單表orders用來保存訂單的詳細(xì)信息,結(jié)構(gòu)如表4.6所示。</p><p><b> f)訂單詳情表</b
60、></p><p> 訂單詳情表orderItem用來保存訂單詳情的詳細(xì)信息,結(jié)構(gòu)如表4.7所示。</p><p> 表4.6訂單(orders)</p><p> 表4.7訂單詳情(orderItems)</p><p><b> 5 系統(tǒng)設(shè)計(jì)</b></p><p><
61、;b> 5.1 首頁設(shè)計(jì)</b></p><p> 由于網(wǎng)上書城系統(tǒng)要求用戶能夠最效率的獲得圖書的相關(guān)信息,界面必須簡(jiǎn)潔易操作,所以首頁左側(cè)是圖書分類的列表,當(dāng)用戶點(diǎn)擊某個(gè)分類時(shí),右側(cè)的圖書就被篩選為該分類的圖書。同時(shí)圖書的上方有個(gè)價(jià)格的表單,用戶可以根據(jù)自己的情況來選擇指定價(jià)格區(qū)間的圖書。頁面設(shè)計(jì)如圖5.1所示。</p><p><b> 圖5.1 首
62、頁設(shè)計(jì)</b></p><p> 5.2 前臺(tái)系統(tǒng)設(shè)計(jì)</p><p> 前臺(tái)系統(tǒng)主要包括用戶注冊(cè)模塊、用戶登錄模塊、前臺(tái)圖書模塊、瀏覽記錄模塊、購(gòu)物車、前臺(tái)訂單模塊等。</p><p> 5.2.1 用戶注冊(cè)模塊</p><p> a)用戶注冊(cè)頁面設(shè)計(jì)</p><p> 在首頁點(diǎn)擊注冊(cè)按鈕即
63、可來到注冊(cè)頁面,該頁面包括幾行行文本域,,主要完成用戶注冊(cè)功能。用戶在此填入自己相應(yīng)的資料后,單擊注冊(cè),系統(tǒng)確認(rèn)資料格式正確并且數(shù)據(jù)庫中該用戶名沒有被使用后便可完成注冊(cè)。信息錯(cuò)誤檢測(cè)采用jQuery的技術(shù),當(dāng)用戶填寫的信息格式不正確時(shí),點(diǎn)擊注冊(cè)按鈕后就會(huì)彈出對(duì)話框提示用戶哪項(xiàng)格式不正確,方便用戶改正,同時(shí),用戶需要正確輸入系統(tǒng)給出的驗(yàn)證碼從才可以成功注冊(cè)成功。用戶注冊(cè)初始頁面和錯(cuò)誤提示頁面如圖5.2和圖5.3所示。</p>
64、<p> 圖5.2 用戶注冊(cè)初始頁面</p><p> 圖5.3 用戶注冊(cè)錯(cuò)誤提示頁面</p><p> b)用戶注冊(cè)主要流程</p><p> 用戶從主頁面來到注冊(cè)頁面,可以輸入相關(guān)注冊(cè)信息。當(dāng)填寫的信息為空、格式不正確,會(huì)出現(xiàn)錯(cuò)誤提示。當(dāng)單擊注冊(cè)按鈕后,系統(tǒng)會(huì)從數(shù)據(jù)庫匹配是否有重復(fù)的用戶名,如果用戶名存在則系統(tǒng)會(huì)提示用戶名已經(jīng)存在,返回注冊(cè)頁
65、面,并提示該用戶名已存在。當(dāng)所有注冊(cè)信息填寫正確后,用戶信息會(huì)存入數(shù)據(jù)庫,頁面跳轉(zhuǎn)到登陸頁面。流程圖如圖5.4所示。</p><p> 5.2.2 用戶登錄模塊</p><p> a)用戶登錄頁面設(shè)計(jì)</p><p> 圖5.4 用戶注冊(cè)流程圖</p><p><b> 圖5.5登錄頁面</b></p&g
66、t;<p> 用戶可以通過點(diǎn)擊主頁面的登錄按鈕或者注冊(cè)完成后系統(tǒng)會(huì)跳轉(zhuǎn)到登錄頁面,并需要用戶輸入用戶名和密碼。登錄頁面如圖5.5所示。</p><p> b)用戶登錄主要流程</p><p> 用戶首先輸入用戶名和密碼,點(diǎn)擊登錄按鈕。當(dāng)填寫的信息為空、格式不正確,會(huì)出現(xiàn)錯(cuò)誤提示。當(dāng)單擊登錄按鈕后,系統(tǒng)會(huì)從數(shù)據(jù)庫匹配是存在該用戶,如果用戶不存在,系統(tǒng)會(huì)返回登錄界面并給出提
67、示信息。當(dāng)所有登錄信息填寫正確后,頁面跳轉(zhuǎn)首頁,首頁的左上角會(huì)有歡迎用戶登錄的信息。流程圖如圖5.6所示。</p><p> 5.2.3 前臺(tái)圖書模塊</p><p> 首先為了實(shí)現(xiàn)分頁,我們需要了解分頁的模型,我們需要在頁面上提供一個(gè)頁碼,根據(jù)Java語言的面相對(duì)象的思想,系統(tǒng)應(yīng)該返回給我們一個(gè)包含了頁面上要顯示的信息的Page對(duì)象,讓Page對(duì)象在頁面上顯示就實(shí)現(xiàn)了分頁。從而我們
68、在代碼中創(chuàng)建了特殊的Page類,分頁的每一頁上有頁面上要顯示的集合數(shù)據(jù)、當(dāng)前頁碼、總頁數(shù)、總記錄數(shù)、首頁、末頁、上一頁、下一頁,所以我們?cè)赑age類中設(shè)置了代表總記錄數(shù)的totalRecordNum,代表總頁數(shù)的totalPageNum,代表當(dāng)前頁碼的pageNo,包含了圖書數(shù)據(jù)的list,同時(shí)我設(shè)置了一頁上顯示3個(gè)圖書數(shù)據(jù)。需要注意的是,為了保證從當(dāng)前頁碼的正確性,我在Page對(duì)象的構(gòu)造器中對(duì)pageNo進(jìn)行了糾正。</p>
69、;<p> 但是,單純的分頁不能滿足用戶的需要,為了適應(yīng)不同用戶的不同要求,我們需要在原有分頁的基礎(chǔ)上實(shí)現(xiàn)帶條件的分頁,根據(jù)Java語言面相對(duì)象的思想,我們應(yīng)該把頁面上的條件封裝到一個(gè)整體的對(duì)象中,頁面上的條件有:類別和價(jià)格。這樣我們就新創(chuàng)建一個(gè)類叫PageCondition,它有四個(gè)字段,分別是pageNo代表頁碼、cateId代表分類編號(hào)、最小價(jià)格minPrice、最大價(jià)格maxPrice。分頁顯示界面如圖5.7所示
70、。這里為了方便的把從頁面上獲取的參數(shù)封裝成我們組要的對(duì)象,特別的我構(gòu)造了一個(gè)工具方法,代碼如下:</p><p> public static <T> T param2Bean(HttpServletRequest request, Class<T> clazz)</p><p> throws IllegalAccessException, Invocatio
71、nTargetException,</p><p> InstantiationException {</p><p> T t = clazz.newInstance();</p><p> // field數(shù)組→field→fieldName→request.getParameter(fieldName)</p><p> Fie
72、ld[] fields = clazz.getDeclaredFields();</p><p> for (int i = 0; i < fields.length; i++) {</p><p> String name = fields[i].getName();</p><p> String value = request.getParamet
73、er(name);</p><p> if (value == null || "".equals(value)) {</p><p><b> continue;</b></p><p><b> }</b></p><p> BeanUtils.copyPropert
74、y(t, name, value);</p><p><b> }</b></p><p><b> return t;</b></p><p><b> }</b></p><p> 圖5.6用戶登陸流程</p><p> 圖5.7圖書的分頁
75、顯示</p><p> 5.2.4 瀏覽記錄模塊</p><p> 查看瀏覽記錄功能實(shí)現(xiàn):</p><p> 瀏覽記錄數(shù)據(jù)是屬于與具體用戶密切相關(guān)的數(shù)據(jù),且不是很重要,可以考慮不保存在數(shù)據(jù)庫中,而保存在瀏覽器端的Cookie中。同時(shí)系統(tǒng)在所瀏覽書名的后面提供了該圖書的超鏈接,方便用戶再次查看。瀏覽記錄如圖5.8所示。</p><p>
76、 圖5.8瀏覽記錄顯示</p><p> 5.2.5 購(gòu)物車模塊</p><p><b> a)購(gòu)物車頁面設(shè)計(jì)</b></p><p> 用戶通過主頁面的購(gòu)物車超鏈接可以轉(zhuǎn)到購(gòu)物車頁面,購(gòu)物車的信息有:商品的總件數(shù)、每個(gè)購(gòu)物項(xiàng)的詳細(xì)信息、總金額,系統(tǒng)同時(shí)提供了在購(gòu)物車中改變商品件數(shù)的功能,用戶也可以點(diǎn)擊清空購(gòu)物車按鈕來清空購(gòu)物車中的購(gòu)
77、物項(xiàng),也可以點(diǎn)擊繼續(xù)購(gòu)物回到主頁面繼續(xù)購(gòu)買圖書。購(gòu)物車的頁面如圖5.9所示。</p><p><b> 圖5.9購(gòu)物車顯示</b></p><p><b> b)結(jié)賬</b></p><p> 當(dāng)用戶選好所要購(gòu)買的圖書,并處在購(gòu)物車頁面時(shí),可以點(diǎn)擊右下角的結(jié)賬按鈕,此時(shí)系統(tǒng)會(huì)判斷是否有用戶登錄,如果沒有用戶登錄,則會(huì)
78、自動(dòng)跳轉(zhuǎn)到用戶登錄界面,如果有用戶登錄,則轉(zhuǎn)到地址列表界面。地址列表如圖5.10所示。</p><p> 圖5.10地址列表顯示</p><p><b> c)添加新地址</b></p><p> 點(diǎn)擊右下角的添加新地址會(huì)轉(zhuǎn)發(fā)到新建地址頁面,此時(shí),系統(tǒng)也會(huì)檢測(cè)是否有用戶登錄,如果沒有會(huì)自動(dòng)跳轉(zhuǎn)到用戶登錄界面。地址添加頁面如圖5.11所示。
79、</p><p> 圖5.11地址新建頁面</p><p><b> d)生成訂單</b></p><p> 在地址列表頁面,選擇一個(gè)地址,然后點(diǎn)擊生成訂單按鈕,系統(tǒng)這時(shí)會(huì)檢測(cè)是否有用戶登錄,如果沒有會(huì)自動(dòng)跳轉(zhuǎn)到用戶登錄界面,若有用戶登錄則跳轉(zhuǎn)到結(jié)果頁面,結(jié)果頁面上會(huì)給用戶一個(gè)訂單號(hào)。用戶結(jié)賬的流程如圖5.12所示。</p>
80、<p> 5.2.6 前臺(tái)訂單模塊</p><p> 用戶點(diǎn)擊首頁面的我的訂單按鈕即可轉(zhuǎn)發(fā)到用戶所提交的訂單列表的頁面。需要說明的是,我設(shè)置的訂單號(hào)是由當(dāng)天的時(shí)間信息再加上這是當(dāng)天的第幾份訂單組成的數(shù)字序列,如訂單號(hào)20150525193441000001,“20150525193441”代表2015年5月25日19分34秒,后6位的“000001”代表該訂單是當(dāng)天的第一份訂單。同時(shí)為了讓ser
81、vlet層更專注的來處理調(diào)度,把生成訂單號(hào)聲明在了工具方法類中,代碼如下:</p><p> public static String createOrderNum(int todayCount) {</p><p> StringBuilder orderNum = new StringBuilder("");</p><p> //1.
82、構(gòu)建日期部分</p><p> SimpleDateFormat format = new SimpleDateFormat("yyyyMMddkkmmss");</p><p> String dateStr = format.format(new Date());</p><p> orderNum.append(dateStr);&l
83、t;/p><p> //2.構(gòu)建數(shù)量部分</p><p> int numLen = (todayCount + "").length();</p><p> int zeroCount = 6 - numLen;</p><p> for(int i = 0; i < zeroCount; i++) {<
84、/p><p> orderNum.append("0");</p><p><b> }</b></p><p> orderNum.append(todayCount+1);</p><p> return orderNum.toString();</p><p><
85、;b> }</b></p><p> 圖5.12用戶結(jié)賬的流程</p><p> 5.3 后臺(tái)系統(tǒng)設(shè)計(jì)</p><p> 后臺(tái)系統(tǒng)主要包括圖書類別模塊、圖書管理模塊、后臺(tái)訂單模塊等。</p><p> 5.3.1 后臺(tái)圖書類別模塊</p><p> a)圖書類別添加和刪除</p&
86、gt;<p> 在后臺(tái)頁面點(diǎn)擊添加分類超鏈接,即可轉(zhuǎn)到分類添加頁面,用戶在類別文本框中填寫好所要添加的類別的名稱后點(diǎn)擊添加按鈕,即可添加分類。用戶點(diǎn)擊查看分類,即可進(jìn)入已存在分類列表。添加分類頁面如圖5.13所示。分類列表頁面如圖5.14所示。</p><p> 如果某個(gè)分類下,沒有改分類的圖書,則用戶可以刪除該分類,如果該分類下有圖書屬于這個(gè)分類,則頁面上顯示不可刪除。為了實(shí)現(xiàn)這個(gè)功能,我們必
87、須創(chuàng)建自己的標(biāo)簽,并為這個(gè)功能創(chuàng)建處理這個(gè)業(yè)務(wù)的類,這里我們創(chuàng)建了DelCartTag,代碼如下: </p><p> public void doTag() throws JspException, IOException {</p><p> //1.查詢數(shù)據(jù)庫,獲取當(dāng)前分類下是否有圖書</p><p> boolean hasBook = categor
88、yDao.isHasBook(cateId);</p><p> //2.根據(jù)查詢結(jié)果,在JSP頁面上顯示不同內(nèi)容</p><p> JspContext context = this.getJspContext();</p><p> JspWriter out = context.getOut();</p><p> String
89、 htmlStr = null;</p><p> if(hasBook) {</p><p> //有圖書:不可刪除</p><p> htmlStr = "不可刪除";</p><p><b> }else{</b></p><p> //沒有圖書:刪除的超鏈接&
90、lt;/p><p> htmlStr = "<a class=\"del\"href=\"manager/CategoryServlet?method=del&cateId="+cateId+"\">刪除分類</a>";</p><p><b> }</b>
91、</p><p> out.write(htmlStr);</p><p><b> }</b></p><p> 圖5.13添加分類頁面</p><p> 圖5.14分類列表頁面</p><p><b> b)圖書類別更新</b></p><p
92、> 在后臺(tái)頁面,用戶點(diǎn)擊查看分類,即可進(jìn)入已存在分類列表,每個(gè)分類名稱的后面都提供了更新的超鏈接,用戶點(diǎn)擊鏈接即可進(jìn)入分類更新頁面。在分類更新頁面,系統(tǒng)會(huì)在分類名稱文本框中自動(dòng)回顯原分類的名稱,方面用戶的修改。</p><p> 5.3.2 后臺(tái)圖書管理模塊</p><p> a)圖書的添加和刪除</p><p> 在后臺(tái)頁面點(diǎn)擊添加圖書的超鏈接,即
93、可轉(zhuǎn)到圖書添加頁面,用戶在填寫完圖書的各個(gè)相關(guān)信息后點(diǎn)擊添加按鈕,即可添加圖書到數(shù)據(jù)庫中。需要說明的是,在圖書的添加頁面上需要從數(shù)據(jù)庫中提取真實(shí)的分類信息,所以在實(shí)現(xiàn)這個(gè)功能的時(shí)候,不能直接通過超鏈接到達(dá)圖書添加頁面,而需要通過servlet從數(shù)據(jù)庫拿到圖書的分類數(shù)據(jù)后再轉(zhuǎn)發(fā)到圖書的添加頁面。用戶點(diǎn)擊查看圖書,即可進(jìn)入已存在圖書列表,點(diǎn)擊所要?jiǎng)h除的圖書后面的刪除超鏈接即可刪除該圖書。添加圖書頁面如圖5.15所示。圖書列表頁面如圖5.16
94、所示。</p><p> 圖5.15圖書添加頁面</p><p> 圖5.16圖書列表頁面</p><p><b> b)圖書的更新</b></p><p> 在后臺(tái)頁面,用戶點(diǎn)擊查看圖書,即可進(jìn)入已存在圖書列表,每個(gè)圖書名稱的后面都提供了更新的超鏈接,用戶點(diǎn)擊鏈接即可進(jìn)入圖書更新頁面。在圖書更新頁面,系統(tǒng)會(huì)在圖
95、書的各個(gè)文本框和類別下拉框中自動(dòng)回顯原圖書的相關(guān)內(nèi)容,方面用戶的修改。</p><p> 5.3.3 后臺(tái)訂單模塊</p><p> 用戶點(diǎn)擊后臺(tái)頁面的查看訂單超鏈接即可轉(zhuǎn)發(fā)到所有用戶所提交的訂單列表的頁面。訂單列表如圖5.17所示。</p><p> 圖5.17訂單列表頁面</p><p><b> 結(jié) 論</b
96、></p><p> 本次畢業(yè)的題目是百易網(wǎng)上書城系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。在系統(tǒng)的實(shí)現(xiàn)過程中,結(jié)合了軟件工程的設(shè)計(jì)思想,首先進(jìn)行了需求分析,在進(jìn)行詳細(xì)設(shè)計(jì)時(shí)把系統(tǒng)分為前臺(tái)系統(tǒng)和后臺(tái)系統(tǒng)的設(shè)計(jì)。根據(jù)關(guān)系模式設(shè)計(jì)數(shù)據(jù)庫表,把前端系統(tǒng)和后臺(tái)系統(tǒng)的各個(gè)功能進(jìn)行模塊化,分別實(shí)現(xiàn)各個(gè)模塊,并按照各個(gè)模塊功能的具體要求進(jìn)行編碼。</p><p> 本系統(tǒng)可以劃分為前臺(tái)系統(tǒng)和后臺(tái)系統(tǒng)。前臺(tái)系統(tǒng)包括用戶
97、模塊、前臺(tái)圖書模塊、瀏覽記錄模塊、購(gòu)物車模塊、前臺(tái)訂單模塊等。后臺(tái)系統(tǒng)包括圖書類別模塊、圖書管理模塊、后臺(tái)訂單模塊。</p><p> 系統(tǒng)具有的優(yōu)點(diǎn):頁面較簡(jiǎn)單,操作較簡(jiǎn)便,用戶能夠第一時(shí)間查詢到自己想要的東西。同時(shí)具備網(wǎng)上書城最基本的要求,實(shí)現(xiàn)了允許用戶登陸、管理地址信息、結(jié)賬下單等最基本的功能。</p><p> 由于本人水平和時(shí)間有限等原因,本系統(tǒng)還有許多不完善的地方。有待改進(jìn)
98、的內(nèi)容有:頁面過于簡(jiǎn)單,對(duì)用戶的吸引力可能下降一個(gè)層次;由于只是對(duì)網(wǎng)上書城的一次模擬,所以用戶并不區(qū)分普通用戶和管理員,相應(yīng)的也就沒有了權(quán)限的功能,任何用戶都可以進(jìn)入后臺(tái)。</p><p><b> 致 謝</b></p><p> 經(jīng)過幾個(gè)月的努力,我的畢業(yè)設(shè)計(jì)——用 Java和Oracle等相關(guān)技術(shù)制作的百易在線網(wǎng)上書城系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)得以完成,這不僅是本人
99、辛勤汗水的結(jié)晶,更凝聚了指導(dǎo)老師和其他所有支持我、鼓勵(lì)我的人們的幫助和關(guān)心。</p><p> 首先要衷心地感謝王井陽老師在我畢業(yè)設(shè)計(jì)過程中給予的幫助。在畢設(shè)剛開始,面對(duì)自己的課題不知如何下手,王老師給我指明了研究方向,使我找到了畢設(shè)的切入點(diǎn)。王老師在畢業(yè)設(shè)計(jì)進(jìn)行的過程中也給了我以精心地指導(dǎo),使我得以順利地完成。</p><p> 王老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,平易近人的學(xué)者之風(fēng)深深地影響了我
100、,激勵(lì)著我在今后的人生道路上不斷開拓進(jìn)取。老師對(duì)我的學(xué)習(xí)和工作嚴(yán)格要求,培養(yǎng)我形成良好的科研作風(fēng)。所有這些,將使我終生受益。</p><p> 在設(shè)計(jì)完成的過程中,我還得到了許多同學(xué)的熱情幫助,在此表示感謝!</p><p> 最后,向所有幫助過我的人致以最誠(chéng)摯的謝意,謝謝你們!</p><p><b> 參考文獻(xiàn)</b></p&g
101、t;<p> 1吳越勝, 李新磊.Eclipse 3.0程序開發(fā)技術(shù)詳解.北京:清華大學(xué)出版社,2010</p><p> 2趙真.Eclipse開發(fā)技術(shù)詳解.北京:化學(xué)工業(yè)出版社,2010</p><p> 3董明.淺談JAVA程序設(shè)計(jì)的數(shù)據(jù)輸入方法.重慶航天職業(yè)技術(shù)學(xué)院學(xué)報(bào).2012,0(2):53 ~55</p><p> 4滕永昌.Or
102、acle數(shù)據(jù)庫系統(tǒng)管理.北京:清華大學(xué)出版社,2003</p><p> 5Lina Ni.Market Mechanism Based Resource Management Strategy in Cloud Computing. IJDTA, 2014,7 (4):1-9</p><p> 6趙會(huì)東、王小科.Oracle從入門到精通.北京:清華大學(xué)出版社,2014</p&g
103、t;<p> 7姚敦紅.jQuery程序設(shè)計(jì)基礎(chǔ)教程.北京:人民郵電出版社,2013</p><p> 8袁江.jQuery開發(fā)從入門到精通.北京:清華大學(xué)出版社,2013</p><p> 9耿祥義,張躍平.JSP基礎(chǔ)教程.北京:清華大學(xué)出版社,2009</p><p> 10張銀鶴.JSP完全學(xué)習(xí)手冊(cè).北京:清華大學(xué)出版社,2008<
104、/p><p> 11王曉軍,田中雨.JSP動(dòng)態(tài)網(wǎng)站開發(fā)基礎(chǔ)教程.北京:清華大學(xué)出版社,2008</p><p> 12孫衛(wèi)琴、李洪成.Tomcat與Java Web開發(fā)技術(shù)詳解.北京:電子工業(yè)出版社,2004</p><p> 13聶明.Java Web應(yīng)用開發(fā)項(xiàng)目教程.北京:電子工業(yè)出版社,2009</p><p> 14朱輝.Java
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 百易網(wǎng)上書城系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 網(wǎng)上書城的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 網(wǎng)上書城系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 網(wǎng)上書店系統(tǒng)畢業(yè)論文--網(wǎng)上書店系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)上書城畢業(yè)設(shè)計(jì)
- 網(wǎng)上書城系統(tǒng)
- e滿多網(wǎng)上書城系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 開題報(bào)告--網(wǎng)上書城系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)上書店系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 網(wǎng)上書店系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_畢業(yè)論文
- 網(wǎng)上書店銷售系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文
- 網(wǎng)上書店系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 網(wǎng)上書店系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文
- 畢業(yè)論文網(wǎng)上書店系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)上書店銷售系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(設(shè)計(jì))
- 基于web的網(wǎng)上書城系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- JAVA網(wǎng)上書城的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 網(wǎng)上書店系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文模板
- 網(wǎng)上書店畢業(yè)論文---網(wǎng)上書店系統(tǒng)
- 畢業(yè)論文——網(wǎng)上書店的設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論