計(jì)算機(jī)專業(yè)本科畢業(yè)論文_第1頁
計(jì)算機(jī)專業(yè)本科畢業(yè)論文_第2頁
計(jì)算機(jī)專業(yè)本科畢業(yè)論文_第3頁
計(jì)算機(jī)專業(yè)本科畢業(yè)論文_第4頁
計(jì)算機(jī)專業(yè)本科畢業(yè)論文_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

目錄摘要 1Abstract 2前言 3第1章 系統(tǒng)分析 4 可行性分析 41.2 需求分析 4第2章 系統(tǒng)設(shè)計(jì) 52.1系統(tǒng)總體設(shè)計(jì) 52.2系統(tǒng)設(shè)計(jì)思想 62.3數(shù)據(jù)庫設(shè)計(jì) 72.3.1數(shù)據(jù)需求分析 7 E-R圖 7 邏輯結(jié)構(gòu)設(shè)計(jì) 10 系統(tǒng)運(yùn)行壞境和開發(fā)工具 11運(yùn)行環(huán)境 11開發(fā)工具 11 系統(tǒng)開發(fā)的主要技術(shù) 112.5.1Java簡介 11 瀏覽器/效勞器結(jié)構(gòu)〔B/S〕 122.5.3動(dòng)態(tài)WEB技術(shù)JSP 122.5.4Tomcat應(yīng)用效勞器 13 框架技術(shù) 132.5.6數(shù)據(jù)庫的設(shè)計(jì)與實(shí)現(xiàn) 13第3章系統(tǒng)實(shí)現(xiàn) 143.1總體設(shè)計(jì) 143.1.1系統(tǒng)功能模塊劃分 143.1.2系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 153.1.3數(shù)據(jù)庫系統(tǒng) 153.2詳細(xì)設(shè)計(jì) 163.2.1用戶登錄模塊設(shè)計(jì) 163.2.2用戶注冊(cè)模塊設(shè)計(jì) 193.2.3在線購書功能模塊設(shè)計(jì) 203.2.4我的購物車功能模塊設(shè)計(jì) 213.2.5訂單信息功能模塊設(shè)計(jì) 253.2.6圖書分類模塊設(shè)計(jì) 27第4章 測(cè)試分析 314.1測(cè)試概要 314.2測(cè)試條件 314.3測(cè)試結(jié)果及發(fā)現(xiàn) 314.3.1測(cè)試步驟 314.3.2模塊測(cè)試 314.4對(duì)系統(tǒng)功能測(cè)試 32第5章 系統(tǒng)開發(fā)總結(jié) 33參考文獻(xiàn) 33致謝 34購書網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)張文超指導(dǎo)老師:庹清摘要:電子商務(wù)已經(jīng)成為了新經(jīng)濟(jì)的代名詞。能在internet的全程上實(shí)現(xiàn)商品的展示、商品的訂購、訂單跟蹤與管理、貸款的支付的系統(tǒng)稱為網(wǎng)上購物系統(tǒng)。網(wǎng)上購物系統(tǒng)是電子商務(wù)的一種重要形式。本文介紹了網(wǎng)上購物系統(tǒng)——購書網(wǎng)站,本系統(tǒng)采用B/S架構(gòu),MyEclipse開發(fā)工具,MySql數(shù)據(jù)庫,tomcat6.0Web容器,應(yīng)用MVC設(shè)計(jì)模式開發(fā)。以hibernate框架做數(shù)據(jù)持久化,struts2框架做控制層,jsp做頁面層。它是一個(gè)基于網(wǎng)絡(luò)、以書籍為商品的專業(yè)性網(wǎng)上購物網(wǎng)站,系統(tǒng)同時(shí)具有購置書籍、收藏書籍到購物車以及訂單送貨上門等多種功能,為書籍的流通提供了一個(gè)高效的網(wǎng)絡(luò)交易平臺(tái)。文中介紹了本系統(tǒng)開發(fā)時(shí)所用到的環(huán)境、工具及技術(shù)和電子商務(wù)的開展背景、根本概念等一些根本理論,還討論了網(wǎng)站的需求分析、網(wǎng)站流程設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)和系統(tǒng)結(jié)構(gòu)設(shè)計(jì)。并對(duì)系統(tǒng)各模塊功能作了詳細(xì)說明。該系統(tǒng)詳細(xì)介紹了前臺(tái)功能,主要有注冊(cè)、登陸、分類瀏覽、購物車、購書、新書熱賣榜等。關(guān)鍵詞:電子商務(wù),購書網(wǎng)站,數(shù)據(jù)庫設(shè)計(jì),jsp,系統(tǒng)功能Thedesignandimplementationofthebook-sellingwebsiteAuthor:ZhangWenChaoGuidingteacher:TuoQingAbstract:E-commercehasbecomesynonymouswiththeneweconomy.IntheInternetcanrealizethewholeshow,commoditygoodsordering,ordertrackingandmanagement,loanpaymentsonlineshoppingsystemcalledsystem.Onlineshoppingsystemisakindofimportantelectroniccommerceform.Thispaperintroducesonlineshoppingsystem-thesystemUSESthebook-sellingwebsite,B/Sarchitecture,MyEclipsedevelopmenttools,MySqldatabase,tomcat6.0Webcontainers,applicationdevelopment.DesignpatternofMVCTohibernateframeworkdodatapersistencestruts2frameworkdocontrollayer,JSPdopagelayer.Itisbasedonanetwork,withprofessionalonlinebooksforgoodsshoppingwebsite,systemandhastobuybooks,collectbookstocartandorderdoor-to-doorforbooksandotherfunctions,thecirculationprovidesanefficientnetworktradingplatform.Thispaperintroducesthissystemdevelopmentenvironment,toolsandusetechnologyandelectroniccommercedevelopmentbackground,basicconceptsandsomeotherbasictheory,alsodiscussedtherequirementanalysis,websiteprocessdesign,databasedesignandsystemstructuredesign.Andthefunctionofeachmoduleinthesystemdescribedindetail.Thissystemisintroducedindetail,themainfunctionofregisteredwiththedesk,landing,classificationbrowse,shoppingcart,books,newsuperheroeslistetc.Keywords:electroniccommerce,acquisitionwebsite,databasedesign,JSP,systemfunction前言隨著信息技術(shù)在我國企業(yè)中的廣泛應(yīng)用,企業(yè)的生產(chǎn)經(jīng)營活動(dòng)越來越依賴計(jì)算機(jī)信息系統(tǒng),很多企業(yè)都構(gòu)建了自己的企業(yè)管理系統(tǒng)。但是由于科技的開展,社會(huì)文明的進(jìn)步,人們已不在滿足于現(xiàn)在的經(jīng)營、生活方式。Internet的出現(xiàn)使更多的商業(yè)機(jī)構(gòu)可以在線銷售貨物和提供效勞,比較容易的地為客戶和企業(yè)用戶提供這些功能。電子商務(wù)是通過互聯(lián)網(wǎng)實(shí)現(xiàn)企業(yè)、商戶及消費(fèi)者的網(wǎng)上購物、網(wǎng)上交易及在線電子支付的一種不同于傳統(tǒng)商業(yè)運(yùn)營的新型商業(yè)運(yùn)營模式,電子商務(wù)是隨著INTERNET開展而開展起來的,主要以EDI〔電子數(shù)據(jù)交換〕和INTERNET來實(shí)現(xiàn)的,電子商務(wù)有廣義和狹義之分,狹義的電子商務(wù)是主要利用WEB在網(wǎng)上進(jìn)行交易,稱作電子易〔E-COMMERCE〕廣義的電子商務(wù)包括基于WEB的全部商業(yè)活動(dòng),稱作電子商業(yè)〔E-BUSINESS〕。我們這次課題研究的對(duì)象——購書網(wǎng)站,把握住時(shí)代的脈搏,順應(yīng)社會(huì)開展的需要,向廣闊客戶提供了一個(gè)到網(wǎng)上書店購置圖書全過程中所需的全部效勞。網(wǎng)上書店有著其他形式的書店所不能比較的優(yōu)勢(shì):它不需要店鋪和龐大的銷售網(wǎng)絡(luò),通過在網(wǎng)上直接訂購、支付、結(jié)算,減少了中間的環(huán)節(jié)和開支。不受時(shí)空的限制,一天24小時(shí)的營業(yè)時(shí)間。全世界范圍內(nèi)都可以銷售等。由此可見,購書網(wǎng)站有著廣闊的開展前景,將會(huì)受到廣闊消費(fèi)者和商家的喜愛。本文涉及的Java技術(shù)主要有B/S結(jié)構(gòu)體系、mysql數(shù)據(jù)庫以及struts、hibernate框架技術(shù)。所使用的效勞器是Tomcat。隨著java的流行,其在web上的應(yīng)用也越來越廣,tomcat作為一個(gè)開源的servlet容器,應(yīng)用前景越來越廣,tomcat是jakarta工程中的一個(gè)重要的子工程,其被JavaWorld雜志的編輯選為2001年度最具創(chuàng)新的java產(chǎn)品(MostInnovativeJavaProduct),同時(shí)它又是sun公司官方推薦的servlet和jsp容器(具體可以見://java.sun/products/jsp/tomcat/),因此其越來越多的受到軟件公司和開發(fā)人員的喜愛。servlet和jsp的最新標(biāo)準(zhǔn)都可以在tomcat的新版本中得到實(shí)現(xiàn)。系統(tǒng)分析可行性分析商業(yè)企業(yè)在運(yùn)營過程中,經(jīng)常會(huì)受到以下一些條件的限制:產(chǎn)品的宣傳受到限制,采購商或顧客只能通過上門咨詢、溝通等方式進(jìn)行各種信息的獲取,受一定的時(shí)間與物理空間的局限并且本錢較高。龐大的商業(yè)經(jīng)濟(jì)周轉(zhuǎn)。復(fù)雜的產(chǎn)品周轉(zhuǎn)渠道。從看樣品、談價(jià)格到支付貨款等一系列的產(chǎn)品周轉(zhuǎn)渠道過于復(fù)雜,企業(yè)與顧客之間缺乏全面的溝通與快捷運(yùn)營的平臺(tái)?!?〕商業(yè)企業(yè)中根據(jù)季節(jié)的變化,熱銷商品在銷售頂峰到來時(shí)貨源緊張,企業(yè)需要實(shí)時(shí)了解商品的銷售情況,保證熱銷商品的要貨滿足率。因此,企業(yè)需要重新認(rèn)識(shí)市場(chǎng)、消費(fèi)者以及自身市場(chǎng)定位,正確認(rèn)識(shí)電子商務(wù)技術(shù)在企業(yè)中的重要地位,以少量的時(shí)間和資金建立企業(yè)信息門戶網(wǎng)站并架設(shè)一定范圍的商務(wù)網(wǎng)絡(luò),以此來制定長遠(yuǎn)開展戰(zhàn)略,使企業(yè)與顧客間的經(jīng)濟(jì)活動(dòng)變得更靈活、更主動(dòng)。本系統(tǒng)是一個(gè)中小型的電子商務(wù)系統(tǒng)購書網(wǎng)站,可以為各類用戶提供方便的在線買書環(huán)境,符合目前國內(nèi)流行的電子商務(wù)模式。用戶可以在系統(tǒng)中實(shí)現(xiàn)注冊(cè)、瀏覽商品、下定單、處理訂單等功能。在技術(shù)上,目前市場(chǎng)上開發(fā)電子商務(wù)平臺(tái)的技術(shù)很多,如ASP,PHP,PB,.NET等。我采用SUN公司的JSP技術(shù),它是目前市場(chǎng)上最流行的技術(shù)之一,JSP具有一次編譯,處處運(yùn)行的優(yōu)點(diǎn)[4]。由分析可得,不管是商業(yè)還是技術(shù)上,購書網(wǎng)站的開發(fā)都是可行的。需求分析通過對(duì)電子商務(wù)網(wǎng)站及購書網(wǎng)站的考察、分析以及實(shí)際的市場(chǎng)調(diào)查,要求本系統(tǒng)具有以下功能:統(tǒng)一友好的操作界面,能保證系統(tǒng)的易用性。標(biāo)準(zhǔn)、完善的根底信息設(shè)置。圖書分類詳盡,可按不同類別查看商品信息。實(shí)現(xiàn)網(wǎng)上購書?!?〕新書熱賣榜圖書展示。針對(duì)購書網(wǎng)站系統(tǒng)的需求分析,得出如下需求信息。訂單分為單張?jiān)敿?xì)訂單和總訂單。一個(gè)用戶可以購置多本圖書。一個(gè)用戶對(duì)應(yīng)一張訂單。一個(gè)列表對(duì)應(yīng)多張訂單。針對(duì)本系統(tǒng)功能分析,總結(jié)出如下的需求信息。用戶,包括數(shù)據(jù)項(xiàng):用戶ID、用戶名、密碼。圖書,包括數(shù)據(jù)項(xiàng):圖書編號(hào)、圖書名、價(jià)格、圖書介紹。訂單列表,包括數(shù)據(jù)項(xiàng):訂單編號(hào)、圖書編號(hào)、購書數(shù)量。訂單,包括數(shù)據(jù)項(xiàng):訂單編號(hào)、用戶編號(hào)、下單時(shí)間。系統(tǒng)設(shè)計(jì)2.1系統(tǒng)總體設(shè)計(jì)購書網(wǎng)站的總體功能設(shè)計(jì)如下所示:管理購物車管理購物車用戶登錄查看最近新書用戶登錄查看最近新書系統(tǒng)首頁管理訂單系統(tǒng)首頁管理訂單新用戶注冊(cè)新用戶注冊(cè)查看熱賣圖書榜查看熱賣圖書榜查看所有圖書類型查看所有圖書類型在線購書在線購書圖2.1總體設(shè)計(jì)功能圖2.2系統(tǒng)設(shè)計(jì)思想系統(tǒng)采用MVC[5]模式開發(fā),分為三層,分別為視圖層、控制層和模型層,總體結(jié)構(gòu)如下圖。視圖層視圖層控制層控制層模型層模型層數(shù)據(jù)庫數(shù)據(jù)庫(1)視圖層視圖是用戶看到并與之交互的界面,當(dāng)用戶向效勞器發(fā)出請(qǐng)求時(shí),由控制層ActionServlet來接受此請(qǐng)求,然后調(diào)用JavaBean做具體的數(shù)據(jù)存取邏輯運(yùn)算等處理,然后把結(jié)果返回給JSP,JSP把得到的結(jié)果通過瀏覽器返回給用戶。(2)控制層控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。所以當(dāng)單擊Web頁面中的超鏈接和發(fā)送HTML表單時(shí),控制器本身不輸出任何東西和做任何處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求,然后用確定用哪個(gè)視圖來顯示模型處理返回的數(shù)據(jù)。它用struts2的核心控制器ActionServlet實(shí)現(xiàn)。(3)模型層通常模型層用來處理系統(tǒng)數(shù)據(jù)和業(yè)務(wù)規(guī)那么。在MVC的三個(gè)部件中,模型擁有最多的處理任務(wù)。例如它可能用來操作數(shù)據(jù)庫,處理亂碼,分頁后臺(tái)處理等。被模型返回的數(shù)據(jù)是中立的,就是說模型與數(shù)據(jù)格式無關(guān),這樣一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性。2.3數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫在一個(gè)信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)的好壞將直接對(duì)應(yīng)用系統(tǒng)的效率,以及實(shí)現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)存儲(chǔ)的效率,保證數(shù)據(jù)的完整和一致。2數(shù)據(jù)需求分析針對(duì)購書網(wǎng)站系統(tǒng)的需求分析,得出如下需求信息。訂單分為單張?jiān)敿?xì)訂單和總訂單。一個(gè)用戶可以購置多本圖書。一個(gè)用戶對(duì)應(yīng)一張訂單。一個(gè)列表對(duì)應(yīng)多張訂單。針對(duì)本系統(tǒng)功能分析,總結(jié)出如下的需求信息。用戶,包括數(shù)據(jù)項(xiàng):用戶ID、用戶名、密碼。圖書,包括數(shù)據(jù)項(xiàng):圖書編號(hào)、圖書名、價(jià)格、圖書介紹。訂單列表,包括數(shù)據(jù)項(xiàng):訂單編號(hào)、圖書編號(hào)、購書數(shù)量。(4)訂單,包括數(shù)據(jù)項(xiàng):訂單編號(hào)、用戶編號(hào)、下單時(shí)間。用戶用戶E-R圖用戶用戶從本系統(tǒng)中規(guī)劃出的實(shí)體有:用戶信息實(shí)體、管理員信息實(shí)體、圖書實(shí)體、圖書分類實(shí)體、訂單實(shí)體、訂單列表實(shí)體。實(shí)體之間關(guān)系的E-R圖如下圖。用戶用戶購書訂單列表訂單圖書圖書分類11NN11圖實(shí)體之間的E-R圖管理員實(shí)體的E-R圖,如圖2.4所示。圖書分類實(shí)體的E-R圖,如圖2.5所示。用戶信息實(shí)體的E-R圖,如圖2.6所示。圖書實(shí)體的E-R圖,如圖2.7所示。訂單實(shí)體的E-R圖,如圖2.8示。訂單列表實(shí)體的E-R圖,如圖2.9所示。管理員管理員用戶名密碼圖書分類分類名稱分類編號(hào)圖2.4管理員實(shí)體的E-R圖圖2.5圖書分類實(shí)體E-R圖用戶用戶用戶名密碼地址真名性別Email注冊(cè)時(shí)間注冊(cè)IP圖2.6用戶實(shí)體E-R圖圖書圖書圖書編號(hào)圖書名稱分類編號(hào)封面作者出版社內(nèi)容介紹總數(shù)量剩余數(shù)量價(jià)格圖2.7圖書實(shí)體E-R圖訂單訂單訂單編號(hào)用戶編號(hào)購置時(shí)間總價(jià)格內(nèi)容IP地址是否發(fā)貨是否付款圖2.8訂單實(shí)體E-R圖訂單列表訂單列表購書數(shù)量圖書編號(hào)用戶號(hào)訂單號(hào)圖2.9訂單列表實(shí)體的E-R圖邏輯結(jié)構(gòu)設(shè)計(jì)1.用戶信息表〔storeuser表〕字段名稱含義數(shù)據(jù)類型是否主鍵其它約束id用戶編號(hào)int是自動(dòng)增1username登錄用戶名varchar〔50〕否password登錄密碼varchar〔50〕否name用戶真實(shí)姓名varchar〔20〕否tel用戶聯(lián)系varchar〔20〕否address發(fā)貨地址varchar〔100〕否email用戶電子郵箱varchar〔50〕否pwd_info密保信息varchar〔100〕否2.訂單表〔orders〕字段名稱含義數(shù)據(jù)類型是否主鍵其它約束Id訂單編號(hào)int是自動(dòng)增1receive_user收貨人姓名varchar〔50〕否creat_user訂單創(chuàng)立人姓名varchar〔20〕否create_time訂單創(chuàng)立時(shí)間datetime否delivery送貨方式varchar〔20〕否payment付款方式varchar〔20〕否tel聯(lián)系varchar〔20〕否addressvarchar〔100〕否status訂單狀態(tài)varchar〔50〕否3.圖書信息表〔book〕字段名稱含義數(shù)據(jù)類型是否主鍵其它約束id圖書編號(hào)int是自動(dòng)增1typeid圖書聯(lián)系編號(hào)int否name圖書名稱varchar〔50〕否price圖書市場(chǎng)價(jià)格varchar〔12〕否saleprice圖書銷售價(jià)格varchar〔12〕否bookinfo圖書簡介varchar〔5000〕否author圖書作者varchar〔50〕否image圖書封面圖片路徑varchar〔100〕否num圖書庫存數(shù)量int否publish圖書出版社varchar〔50〕否storetime圖書入庫時(shí)間datetime否buynum圖書累計(jì)購置數(shù)量int否4.訂單明細(xì)表〔orderdetail〕字段名稱含義數(shù)據(jù)類型是否主鍵其它約束orderid訂單編號(hào)int是bookid購置圖書編號(hào)int是book_count購置圖書數(shù)量int否price購置圖書價(jià)格int否5.圖書類型表〔booktype〕字段名稱含義數(shù)據(jù)類型是否主鍵其它約束id圖書類型編號(hào)int是自動(dòng)增1typename圖書類型名稱int否系統(tǒng)運(yùn)行壞境和開發(fā)工具運(yùn)行環(huán)境整個(gè)系統(tǒng)構(gòu)建在Microsoft公司的系統(tǒng)平臺(tái)與環(huán)境下。操作系統(tǒng)是Windowsxpprofessional。開發(fā)工具采用JDK作為JVM和MyEcliopse來開發(fā)。數(shù)據(jù)庫mysql5.1。W系統(tǒng)開發(fā)的主要技術(shù)Java簡介Java,是由SunMicrosystems公司于1995年5月推出的Java程序設(shè)計(jì)語言和Java平臺(tái)的總稱。用Java實(shí)現(xiàn)的HotJava瀏覽器〔支持Javaapplet〕顯示了Java的魅力:跨平臺(tái)、動(dòng)態(tài)的Web、Internet計(jì)算。從此,Java被廣泛接受并推動(dòng)了Web的迅速開展,常用的瀏覽器現(xiàn)在均支持Javaapplet。Java平臺(tái)由Java虛擬機(jī)〔JavaVirtualMachine〕和Java應(yīng)用編程接口〔ApplicationProgrammingInterface、簡稱API〕構(gòu)成。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)行。Java應(yīng)用編程接口已經(jīng)從1.1x版開展到1.2版。目前常用的Java平臺(tái)基于Java1.5,最近版本為Java1.7。電子商務(wù)是當(dāng)今的熱門話題,然而傳統(tǒng)的編程語言難以勝任電子商務(wù)系統(tǒng),電子商務(wù)要求程序代碼具有根本的要求:平安、可靠、同時(shí)要求能與運(yùn)行于不同平臺(tái)的機(jī)器的全世界客戶開展業(yè)務(wù)。Java以其強(qiáng)平安性、平臺(tái)無關(guān)性、硬件結(jié)構(gòu)無關(guān)性、語言簡潔同時(shí)面向?qū)ο?,在網(wǎng)絡(luò)編程語言中占據(jù)無可比較的優(yōu)勢(shì),成為實(shí)現(xiàn)電子商務(wù)系統(tǒng)的首選語言。瀏覽器/效勞器結(jié)構(gòu)〔B/S〕B/S結(jié)構(gòu)〔Browser/Server,瀏覽器/效勞器模式〕,是WEB興起后的一種網(wǎng)絡(luò)結(jié)構(gòu)模式,WEB瀏覽器是客戶端最主要的應(yīng)用軟件。這種模式統(tǒng)一了客戶端,將系統(tǒng)功能實(shí)現(xiàn)的核心局部集中到效勞器上,簡化了系統(tǒng)的開發(fā)、維護(hù)和使用??蛻魴C(jī)上只要安裝一個(gè)瀏覽器〔Browser〕,如NetscapeNavigator或InternetExplorer,效勞器安裝Oracle、Sybase、Informix或SQLServer等數(shù)據(jù)庫。瀏覽器通過WebServer同數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互。2動(dòng)態(tài)WEB技術(shù)JSPJSP〔JavaServerPages〕是由SunMicrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn),JSP技術(shù)在Servlet技術(shù)根底上開展起來的,它正在飛速開展中,現(xiàn)已成為Java效勞器編程的重要組成局部。它雖然還未成型,但是它必將和J2EE(Java2EnterpriseEdition)一起開展[6]。JSP是結(jié)合markup(HTML和XML)和Java代碼來處理一種動(dòng)態(tài)頁面。每一頁第一次被調(diào)用時(shí),通過JSP引擎自動(dòng)被編譯成Servlet,然后被執(zhí)行,以后每次調(diào)用時(shí),執(zhí)行編譯過的Servlet。JSP提供了多種方式訪問Javaclass、Servlet、Applets和WebServer,因此,Web應(yīng)用的功能可以分成多個(gè)明確定義公用接口的組件,通過JSP將它們結(jié)合在一起。Tomcat應(yīng)用效勞器Tomcat是JavaServlet2.2和JavaServerPages1.1技術(shù)的標(biāo)準(zhǔn)實(shí)現(xiàn),是基于Apache許可證下開發(fā)的自由軟件。框架技術(shù)1.Struts框架:struts框架具有組件的模塊化,靈活性和重用性的優(yōu)點(diǎn),同時(shí)簡化了基于MVC的web應(yīng)用程序的開發(fā)。struts可以清晰地區(qū)分控制,事務(wù)邏輯和外觀,從而簡化了開發(fā)應(yīng)用程序的過程。struts提供的類使得開發(fā)工作更加簡單,這些類包括:a.控制程序流程的類b.實(shí)現(xiàn)和執(zhí)行程序事務(wù)邏輯的類c.自定義的標(biāo)記庫使得創(chuàng)立和驗(yàn)證HTML表單更加容易2.Hibernate框架:Hibernate是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。數(shù)據(jù)庫的設(shè)計(jì)與實(shí)現(xiàn)數(shù)據(jù)庫在一個(gè)信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)的好壞將直接對(duì)應(yīng)用系統(tǒng)的效率,以及實(shí)現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)存儲(chǔ)的效率,保證數(shù)據(jù)的完整和一致。依據(jù)購書網(wǎng)站的處理需求,采用SQLServer2000數(shù)據(jù)庫,數(shù)據(jù)庫名為WebShop。對(duì)就數(shù)據(jù)表的設(shè)計(jì)及功能如下圖書根本信息表book:存放網(wǎng)上書店所銷售圖書的根本信息。圖書分類根本信息表booktype:存放網(wǎng)上書店所提供圖書分類的信息??蛻舾拘畔⒈韘toreuser:存放書店客戶的根本信息。訂單信息表orders:存放與客戶相關(guān)的訂單的根本信息。訂單條目詳細(xì)信息表orderdetail:存放訂單中詳細(xì)條目的根本信息。第3章系統(tǒng)實(shí)現(xiàn)3.1總體設(shè)計(jì)系統(tǒng)功能模塊劃分用戶登錄用戶登錄在線購書在線購書用戶注冊(cè)登陸觀察圖書詳細(xì)購置觀察訂單信息查看購物車在線購書用戶注冊(cè)登陸觀察圖書詳細(xì)購置觀察訂單信息查看購物車在線購書購置觀察圖書詳細(xì)資料購置查看訂單詳細(xì)繼續(xù)購書清空購物車提交購物車刪除已經(jīng)選購的圖書修改購置數(shù)量購置觀察圖書詳細(xì)資料購置查看訂單詳細(xì)繼續(xù)購書清空購物車提交購物車刪除已經(jīng)選購的圖書修改購置數(shù)量圖3.1客戶端系統(tǒng)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)根據(jù)面向?qū)ο蠛腿龑咏Y(jié)構(gòu)設(shè)計(jì)的思想,可得出如圖3.2所示的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)圖。購書網(wǎng)站購書網(wǎng)站客戶端界面管理端界面JavaBean數(shù)據(jù)庫在購書界面圖書管理模塊訂單管理圖書管理用戶管理購物車界面定單信息管理登陸/注冊(cè)添加圖書模塊添加圖書分類模塊訂單信息模塊客戶管理模塊登陸模塊圖書分類類圖書類圖書分類管理類圖書管理類訂單類訂單管理類購物車類購物車管理類用戶類用戶管理類用戶登錄類圖3.2系統(tǒng)結(jié)構(gòu)圖數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫3層結(jié)構(gòu):用戶視圖層:這一層面向各個(gè)具體用戶。從滿足用戶需求出發(fā)而設(shè)計(jì)的各種各樣的文件結(jié)構(gòu),在系統(tǒng)中稱為子模型。子模型用圖、表來表示,給人以直觀清晰、一目了然之感。用戶看到的是一些視圖,它只提供用戶所需的信息,以免用戶訪問到其它無關(guān)的信息。例如,在銀行中的顧客看到的是數(shù)據(jù)庫顧客帳戶的信息,他們不能訪問銀行雇員的工資信息。然而計(jì)算機(jī)是不會(huì)認(rèn)識(shí)這些圖表的。為了讓計(jì)算機(jī)認(rèn)識(shí)它,DBMS設(shè)置了一種數(shù)據(jù)定義語言(DLL)。用DLL精確定義數(shù)據(jù)模型的程序稱為模式。除非整體改動(dòng),否那么數(shù)據(jù)庫模式一般是部經(jīng)常變化的。用戶視圖的這種語言形式定義稱為子模式。由圖可見,對(duì)于同一數(shù)據(jù)庫,系統(tǒng)提供許多的用戶視圖。也就是說,一個(gè)數(shù)據(jù)庫可以有多個(gè)不同的子模式。邏輯層:這一層面向全局,它綜合各用戶的信息需求,設(shè)計(jì)了一個(gè)全局性的、完整的而又無冗余的系統(tǒng)框架,稱為邏輯模型。邏輯層的簡單數(shù)據(jù)結(jié)構(gòu)的操作要與復(fù)雜的物理層結(jié)構(gòu)相聯(lián)系,但用戶不用擔(dān)憂這些,因?yàn)檫壿媽邮怯蓴?shù)據(jù)庫管理員來使用的。邏輯模型的語言形式定義為邏輯模型。用戶的信息來自邏輯層,而邏輯層又從物理層獲的信息。物理層:這一層完全面向物理存儲(chǔ)。物理層詳細(xì)的描述了復(fù)雜的底層數(shù)據(jù)結(jié)構(gòu)。在完成存放根本文件的前提下,考慮物理存儲(chǔ)的最正確組織形式,我們把不考慮用戶需求而僅僅著眼于物理存儲(chǔ)的模型稱為物理模型。用DDL定義的語言形式稱為物理模式。物理模式是邏輯模式的具體實(shí)現(xiàn)。數(shù)據(jù)庫系統(tǒng)具有幾個(gè)模式。在最底層是物理模式,中間層是邏輯模式,在最高層是子模式。總而言之,數(shù)據(jù)庫系統(tǒng)支持一個(gè)物理模式,一個(gè)邏輯模式和幾個(gè)子模式。在某一層上修改一個(gè)模式而不影響其它層的模式定義的能力稱為數(shù)據(jù)獨(dú)立性。有兩種獨(dú)立性。●物理獨(dú)立性:是指當(dāng)數(shù)據(jù)的物理存儲(chǔ)設(shè)備、物理存儲(chǔ)結(jié)構(gòu)和存取方法發(fā)生變化時(shí),數(shù)據(jù)的邏輯結(jié)構(gòu)和定義可以不變,應(yīng)用程序也可以不變的能力。邏輯獨(dú)立性:是一種應(yīng)用程序可以不管邏輯模式定義的改變而正確執(zhí)行的能力。從另一方面說,用戶要求的改變,應(yīng)對(duì)用戶的子模式的影響最小。邏輯獨(dú)立性比物理獨(dú)立性更加難以實(shí)現(xiàn)。因?yàn)閼?yīng)用程序更大程度上依賴于它們所訪問的數(shù)據(jù)的邏輯結(jié)構(gòu)。數(shù)據(jù)獨(dú)立性概念與現(xiàn)代編程語言中抽象數(shù)據(jù)類型概念的許多方面相似。兩者都對(duì)用戶隱藏了底層信息,而用戶關(guān)系的只是普通結(jié)構(gòu)。3.2詳細(xì)設(shè)計(jì)用戶登錄模塊設(shè)計(jì)為了檢測(cè)用戶是否是書店的合法用戶,需要用戶輸入用戶名和密碼來核對(duì)用戶的合法性,用戶登陸模塊就是完成這一功能。源代碼如下:packageorg.whatisjava.dangdang.service;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importorg.hibernate.Transaction;importorg.whatisjava.dangdang.domain.User;importorg.whatisjava.dangdang.util.EmailUtils;importorg.whatisjava.dangdang.util.HibernateUtils;importorg.whatisjava.dangdang.util.MD5Utils;importorg.whatisjava.dangdang.util.VerifyCodeUtils;publicclassAuthorizeServiceImplimplementsAuthorizeService{ /** * *@paramuser */ publicvoidaddUser(Useruser){ Sessionsession=HibernateUtils.getSession(); Transactiontx=session.beginTransaction(); user.setPassword(MD5Utils.md5(user.getPassword())); user.setVerify(false); user.setUserIntegral(0); session.save(user); Stringcontent=VerifyCodeUtils.generateCode(user.getId()); EmailUtils.sendEmail(user.getEmail(),content); user.setVerifyCode(VerifyCodeUtils.getCode(content)); txmit(); session.close(); } /** * *@paraminput *@return */ publicbooleanverifyUser(Stringinput){ booleanok=false; Sessionsession=HibernateUtils.getSession(); Transactiontx=session.beginTransaction(); Stringcode=VerifyCodeUtils.getCode(input); Integerid=VerifyCodeUtils.getId(input); if(code==null||id==null) returnfalse; Useruser=(User)session.get(User.class,id); if(user!=null&&user.getVerifyCode().equals(code)){ user.setVerify(true); ok=true; } txmit(); session.close(); returnok; } /** * *@return */ publicUservalidateUser(Stringname,Stringpassword){ Sessionsession=HibernateUtils.getSession(); Queryquery=session .createQuery("fromUseruserwhereuser.email=?anduser.password=?"); query.setParameter(0,name); query.setParameter(1,MD5Utils.md5(password)); List<User>userList=query.list(); session.close(); if(userList.size()==0){ returnnull; } returnuserList.get(0); } /** * *@paramemail *@return */ publicbooleanvalidateEmail(Stringemail){ Sessionsession=HibernateUtils.getSession(); Queryquery=session .createQuery("selectcount(*)fromUseruserwhereuser.email=?"); query.setParameter(0,email); List<Number>list=query.list(); session.close(); if(list.size()==1&&list.get(0).intValue()==0){ returntrue; }else{ returnfalse; } }}圖3.4登錄界面用戶注冊(cè)模塊設(shè)計(jì)如果是新用戶,那么需要注冊(cè)才可以進(jìn)入系統(tǒng),在登錄頁面有個(gè)創(chuàng)立新用戶,點(diǎn)擊進(jìn)入注冊(cè)頁面,首先填寫用戶信息,郵箱名、用戶名、密碼、以及驗(yàn)證碼,這里用js做的驗(yàn)證,當(dāng)填寫完一項(xiàng)信息,移開光標(biāo)那么進(jìn)行驗(yàn)證,如不合法,那么彈出紅色字體提出非法信息,只有填寫的信息全合法,注冊(cè)按鈕才成灰色狀態(tài)〔不可點(diǎn)擊狀態(tài)〕變?yōu)槟茳c(diǎn)擊狀態(tài);點(diǎn)擊注冊(cè)后,進(jìn)入郵箱驗(yàn)證,此時(shí)用戶雖然注冊(cè)但并未真正注冊(cè)完成,用戶的郵箱驗(yàn)證狀態(tài)為非,系統(tǒng)將發(fā)送驗(yàn)證碼到用戶郵箱,這里由于環(huán)境問題,采用模擬實(shí)現(xiàn),采用Java工具包中的UUID進(jìn)行隨機(jī)生成,然后在控制臺(tái)進(jìn)行打印,輸入驗(yàn)證碼后點(diǎn)擊完成那么跳轉(zhuǎn)到注冊(cè)成功頁面完成注冊(cè);根據(jù)分析做出用戶注冊(cè)模塊流程圖,如下圖。圖注冊(cè)模塊流程圖3.2.3在線購書功能模塊設(shè)計(jì)在該模塊用戶可以看見現(xiàn)有的圖書,用戶可以查找圖書〔只可分類查詢〕,用戶可以購置圖書〔把書放進(jìn)購物車〕,也可以查看圖書的詳細(xì)資料,還可以轉(zhuǎn)到其他模塊,如查看購物車,查看訂單信息等。該功能模塊局部源代碼如下:packageorg.whatisjava.dangdang.action.main;importorg.whatisjava.dangdang.action.BaseAction;importorg.whatisjava.dangdang.domain.Category;importorg.whatisjava.dangdang.service.CatalogService;importorg.whatisjava.dangdang.service.ServiceFactory;publicclassCategoryActionextendsBaseAction{ privateCategorycat; privateCatalogServicecs=ServiceFactory.getCatalogService(); publicCategorygetCat(){ returncat; } publicvoidsetCat(Categorycat){ this.cat=cat; } publicStringexecute(){ cat=cs.getCategoryById(CatalogService.BOOK_CAT,true); return"success"; }}3.2.4我的購物車功能模塊設(shè)計(jì)在〞我的購物車〞這個(gè)模塊里,用戶可以修改購置數(shù)量,可以修改已經(jīng)選購的圖書,可以提交購物車〔在提交時(shí)可以簡單附言說明〕,可以清空購物車,還可以繼續(xù)購書,或者查詢圖書,或者轉(zhuǎn)到其他功能模塊。買書的第一步便是用戶登錄,現(xiàn)在驗(yàn)用戶的合法性的: functionchecklogin(){ if(document.payout.userid.value=="") { alert("你還沒有登錄,請(qǐng)登錄后再提交購物清單。"); returnfalse; }證明是合法用戶后,就必須給這個(gè)用戶一個(gè)購物車,用戶每次選中一本書,點(diǎn)擊“放入購物車〞,就必須添加一個(gè)訂購單。這就相當(dāng)于把用戶要買的書放入購物車?yán)?,其主要代碼如下:packageorg.whatisjava.dangdang.service;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importorg.whatisjava.dangdang.domain.CartItem;importorg.whatisjava.dangdang.domain.Product;importorg.whatisjava.dangdang.domain.User;publicclassCartServiceImplimplementsCartService,java.io.Serializable{ privateCatalogServicecs=ServiceFactory.getCatalogService(); privateMap<Integer,CartItem>carts=newHashMap<Integer,CartItem>(); privateUseruser; /** * *@paramuser */ publicCartServiceImpl(Useruser){ this.user=user; this.carts=newHashMap<Integer,CartItem>(); } /** * *@paramproduct *@return */ publicbooleanaddItem(IntegerproductId){ if(!carts.containsKey(productId)){ CartItemitem=newCartItem(); Productproduct=cs.getProductById(productId); item.setProduct(product); item.setNumber(1); item.setStatus(true); carts.put(product.getId(),item); returntrue; } returnfalse; } /** * *@paramproductId *@paramnum *@return */ publicbooleanupdateNumber(IntegerproductId,intnum){ if(carts.containsKey(productId)){ CartItemitem=carts.get(productId); item.setNumber(num); returntrue; } returnfalse; } /** * *@paramproductId *@return */ publicbooleandrop(IntegerproductId){ if(carts.containsKey(productId)){ CartItemitem=carts.get(productId); item.setStatus(false); returntrue; } returnfalse; } /** * *@paramproductId *@return */ publicbooleanrecovery(IntegerproductId){ if(carts.containsKey(productId)){ CartItemitem=carts.get(productId); item.setStatus(true); returntrue; } returnfalse; } publicvoidclear(){ carts.clear(); } /** * *@return */ publicbooleanisEmpty(){ returncarts.isEmpty(); } /** * *@return */ publicList<CartItem>getCartItems(){ ArrayList<CartItem>list=newArrayList<CartItem>(); Iterator<Integer>it=carts.keySet().iterator(); while(it.hasNext()){ CartItemitem=carts.get(it.next()); list.add(item); } returnlist; } publicdoublegetTotalPrice(){ doubletotalPrice=0; Iterator<Integer>it=carts.keySet().iterator(); while(it.hasNext()){ CartItemitem=carts.get(it.next()); if(item.isStatus()){ totalPrice+=item.getProduct().getFixedPrice() *item.getNumber(); } } returntotalPrice; } publicdoublegetDangPrice(){ doubletotalPrice=0; Iterator<Integer>it=carts.keySet().iterator(); while(it.hasNext()){ CartItemitem=carts.get(it.next()); if(item.isStatus()){ totalPrice+=item.getProduct().getDangPrice() *item.getNumber(); } } returntotalPrice; } publicUsergetUser(){ returnuser; }}3.2.5訂單信息功能模塊設(shè)計(jì)在該功能模塊用戶可以看見自己已經(jīng)提交的所有訂單,可以查看訂單的詳細(xì)情況。并設(shè)計(jì)以彈出窗口的形式顯示訂單信息,在彈出的窗口中可以付款。實(shí)現(xiàn)代碼如下:packageorg.whatisjava.dangdang.service;importjava.util.Date;importjava.util.List;importorg.hibernate.Session;importorg.hibernate.Transaction;importorg.whatisjava.dangdang.domain.Address;importorg.whatisjava.dangdang.domain.CartItem;importorg.whatisjava.dangdang.domain.Item;importorg.whatisjava.dangdang.domain.Order;importorg.whatisjava.dangdang.util.HibernateUtils;publicclassOrderServiceImplimplementsOrderService{ publicvoidcreateOrder(CartServicecs,Addressaddress){ Sessionsession=HibernateUtils.getSession(); Transactiontx=session.beginTransaction(); address.setUserId(cs.getUser().getId()); session.saveOrUpdate(address); Orderorder=newOrder(); order.setUserId(cs.getUser().getId()); order.setReceiveAddress(address); doubletotalPrice=0.0; List<CartItem>cartItemList=cs.getCartItems(); for(CartItemct:cartItemList){ Itemitem=ct.toItem(); order.addItem(item); totalPrice+=item.getAmount(); } order.setStatus(0); order.setOrderTime(newDate().getTime()); order.setTotalPrice(totalPrice); order.setOrderDesc(""); session.save(order); txmit(); session.close(); } publicvoiddeleteOrder(Integerid){ //TODOAuto-generatedmethodstub } publicList<Order>findOrderByUserId(IntegeruserId){ //TODOAuto-generatedmethodstub returnnull; } publicOrdergetOrderById(Integerid){ //TODOAuto-generatedmethodstub returnnull; }}圖3.6訂單信息詳情圖書分類模塊設(shè)計(jì)這是購書網(wǎng)站的一個(gè)重要的功能,可以為用戶快捷的找到需要的圖書,找出自己喜歡的分類,而且分類的好壞影響購置者點(diǎn)擊率。該功能模塊局部源代碼如下:packageorg.whatisjava.dangdang.service;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importorg.whatisjava.dangdang.domain.Category;importorg.whatisjava.dangdang.domain.Product;importorg.whatisjava.dangdang.util.HibernateUtils;publicclassCatalogServiceImplimplementsCatalogService{ /** * */ publicCategorygetCategoryById(Integerid,booleanwithSub){ Sessionsession=HibernateUtils.getSession(); Categorycat=null; if(withSub){ Queryquery=session .createQuery("selectdistinctcfromCategorycjoinfetchc.subCatsc1joinfetchc1.subCatswherec.id=?"); query.setParameter(0,1); List<Category>list=query.list(); if(list.size()>0){ cat=list.get(0); } }else{ cat=(Category)session.get(Category.class,id); } session.close(); returncat; } /** * */ publicList<Product>findProductByCategoryId(IntegercatId){ Sessionsession=HibernateUtils.getSession(); Queryquery=session .createQuery("fromProductpjoinfetchp.categoryscatwherecat.id=?"); query.setParameter(0,catId); List<Product>list=query.list(); session.close(); returnlist; } /** * *@paramid *@return */ publicProductgetProductById(Integerid){ Productproduct=null; Sessionsession=HibernateUtils.getSession(); Queryquery=session .createQuery("selectnewProduct(p.id,ductName,p.fixedPrice,p.dangPrice)fromProductpwherep.id=?"); query.setParameter(0,id); Listlist=query.list(); if(list.size()>0) product=(Product)list.get(0); session.close(); returnproduct; } /** * */ publicList<Category>findCategoryByParentId(IntegercatId){ Sessionsession=HibernateUtils.getSession(); Queryquery=session .createQuery("fromCategorycatwherecat.parentId=?"); query.setParameter(0,catId); List<Category>list=query.list(); session.close(); returnlist; } /** * */ publicList<Product>findProductByCategoryId(IntegercatId,intpage, introwsPerPage){ Sessionsession=HibernateUtils.getSession(); Queryquery=session .createQuery("fromProductpjoinfetchp.categoryscatwherecat.id=?"); query.setParameter(0,catId); query.setMaxResults(rowsPerPage); query.setFirstResult((1)*rowsPerPage); List<Product>list=query.list(); session.close(); returnlist; } /** * */ publicintgetProductTotalPageByCategoryId(

溫馨提示

  • 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. 人人文庫網(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)論