
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGE題目:網(wǎng)上銷(xiāo)售系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
網(wǎng)上銷(xiāo)售系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘要:隨著當(dāng)今社會(huì)的不斷進(jìn)步,Internet也得到了一個(gè)好的平臺(tái)去不斷地迅速發(fā)展,人們現(xiàn)在就渴望能夠充分地享受網(wǎng)絡(luò)帶來(lái)的便利,因此各種的網(wǎng)上銷(xiāo)售系統(tǒng)也應(yīng)運(yùn)而生。而網(wǎng)上銷(xiāo)售系統(tǒng)的形成正是為了適應(yīng)當(dāng)今社會(huì)快節(jié)奏的生活,使得人們可以足不出戶(hù)就可以快捷方便地選擇自己需要、喜歡的商品。這樣可以給人們節(jié)省更多的空余時(shí)間去享受生活的樂(lè)趣,使得人們可以從繁鬧喧囂的城市生活中暫時(shí)走出來(lái)去放松自己,再以飽滿(mǎn)的熱情投入到之后的工作生活中。本網(wǎng)上銷(xiāo)售系統(tǒng)主要是在Windows7下,以Tomcat網(wǎng)絡(luò)信息服務(wù)作為應(yīng)用服務(wù)器,MySQL為數(shù)據(jù)庫(kù)開(kāi)發(fā)平臺(tái),采用JSP技術(shù)進(jìn)行系統(tǒng)的頁(yè)面布局和開(kāi)發(fā)。本系統(tǒng)分為前臺(tái)和后臺(tái)兩個(gè)部分,前臺(tái)部分主要是向用戶(hù)展示信息,方便用戶(hù)更好的了解此系統(tǒng);后臺(tái)部分主要是給管理員使用的,管理員可以對(duì)商品信息、用戶(hù)信息等進(jìn)行管理。關(guān)鍵詞:方便快捷;網(wǎng)上銷(xiāo)售系統(tǒng);JSP;MySQL
Abstract:Alongwiththeadvanceofsociety,theInternethasbeenagoodplatformtocontinuouslyrapiddevelopment,peopleareeagertonowfullybenefitfromthemassiveconstructionofthenetwork,soavarietyofonlinesalessystemalsoarisesatthehistoricmoment.Andtheformationoftheonlinesalessystemisinordertoadapttothefastpaceoflifeintoday'ssociety.Itcanmakepeopleneverleavehometobeveryconvenient,quickandeasytochoosetheirownneedsgoods.Whichcangivepeoplesavemorefreetimetoenjoylife,itmakepeoplefromthebusyhustleandbustleofcitylifegonetemporarilyrelax,afterwithfullenthusiasmintoworklife.TheonlinesalessystemismainlyundertheWindows7,usingTomcatastheapplicationserver,networkinformationserviceMySQLdatabasedevelopmentplatform,usingJSPtechnologytopagelayoutanddevelopmentofthesystem.Thissystemisdividedintoforegroundandbackgroundoftwoparts,frontpartismainlytoshowtheuserinformation,convenientforuserstobetterunderstandthissystem;thebackgroundpartismainlytotheadministrator,theadministratorcanmanagethecommodityinformation,customerinformation,etc.Keywords:Convenientandquick;Onlinesalessystem;JSP;MySQL目錄第1章緒論 11.1研究背景 11.2設(shè)計(jì)的目標(biāo) 11.3系統(tǒng)開(kāi)發(fā)的意義 21.4本文研究?jī)?nèi)容及主要貢獻(xiàn) 2第2章需求及可行性分析 32.1系統(tǒng)的可行性分析 32.1.1技術(shù)可行性 32.1.2經(jīng)濟(jì)可行性 32.1.3操作可行性 32.2系統(tǒng)的整體功能分析 32.2.1系統(tǒng)整體功能模塊設(shè)計(jì) 42.2.2數(shù)據(jù)庫(kù)整體設(shè)計(jì)分析 72.3本章小結(jié) 8第3章開(kāi)發(fā)環(huán)境及相關(guān)技術(shù)簡(jiǎn)介 93.1系統(tǒng)開(kāi)發(fā)環(huán)境 93.1.1Eclipse 93.1.2數(shù)據(jù)庫(kù)簡(jiǎn)介 93.1.3Tomcat 103.2系統(tǒng)開(kāi)發(fā)技術(shù)與MVC模式 103.2.1JSP 103.2.2MVC模式 103.3B/S體系結(jié)構(gòu) 103.4本章小結(jié) 10第4章系統(tǒng)詳細(xì)設(shè)計(jì) 114.1后臺(tái)功能實(shí)現(xiàn) 114.1.1管理員登錄 114.1.2商品信息管理 124.1.3用戶(hù)信息管理 194.2前臺(tái)的功能實(shí)現(xiàn) 224.2.1用戶(hù)登錄注冊(cè)功能 224.2.2搜索商品功能 254.2.3購(gòu)物車(chē)功能實(shí)現(xiàn) 264.3本章小結(jié) 29第5章系統(tǒng)測(cè)試與分析 305.1軟件測(cè)試 305.1.1測(cè)試的目的 305.1.2采用的測(cè)試手段 305.2系統(tǒng)運(yùn)行環(huán)境 305.2.1硬件環(huán)境 305.2.2軟件環(huán)境 305.3網(wǎng)站測(cè)試 305.3.1用戶(hù)注冊(cè)登錄功能測(cè)試 305.3.2商品搜索功能測(cè)試 315.3.3加入購(gòu)物車(chē)功能測(cè)試 325.4本章小結(jié) 32第6章總結(jié)與展望 336.1總結(jié) 336.2展望 33畢業(yè)設(shè)計(jì)體會(huì) 34致謝 35參考文獻(xiàn) 36英文翻譯資料 37第1章緒論21世紀(jì)是網(wǎng)絡(luò)飛速發(fā)展的時(shí)代,上網(wǎng)、創(chuàng)建網(wǎng)站已經(jīng)成為熱門(mén)話題。Internet得到持續(xù)、猛烈的發(fā)展,已經(jīng)成為計(jì)算機(jī)產(chǎn)業(yè)的一個(gè)熱點(diǎn),越來(lái)越多的企業(yè)開(kāi)始關(guān)注網(wǎng)絡(luò),許多人正在或正準(zhǔn)備學(xué)習(xí)網(wǎng)絡(luò)知識(shí),進(jìn)行網(wǎng)絡(luò)開(kāi)發(fā)或創(chuàng)建自己的網(wǎng)站。JSP的全稱(chēng)是JavaServerPages,是一種以Java為主的跨平臺(tái)Web開(kāi)發(fā)語(yǔ)言,它具有安全性,健全性,運(yùn)行效率高等許多優(yōu)點(diǎn)。本次畢業(yè)設(shè)計(jì)——網(wǎng)上銷(xiāo)售系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),是在Windows7下,采用JSP(JavaServerPages)技術(shù)開(kāi)發(fā),數(shù)據(jù)庫(kù)開(kāi)發(fā)平臺(tái)使用的是MySQL,Tomcat作為該系統(tǒng)的應(yīng)用服務(wù)器實(shí)現(xiàn)的。1.1研究背景最近幾年,隨著Internet的迅速發(fā)展,互聯(lián)網(wǎng)已經(jīng)成為人們收集提供各種信息的最佳渠道,并且已有逐步進(jìn)入傳統(tǒng)的信息傳遞、接收領(lǐng)域的趨勢(shì)。于是電子商務(wù)應(yīng)運(yùn)而生,不斷流行起來(lái),使得越來(lái)越多的商家發(fā)現(xiàn)商機(jī),紛紛在網(wǎng)絡(luò)上建起自己特色的在線商城,為的就是向消費(fèi)者傳遞出一種新穎的購(gòu)物理念。網(wǎng)上銷(xiāo)售系統(tǒng)強(qiáng)大的交互功能是其一個(gè)重要、有特色的地方,可使商家和用戶(hù)之間方便快捷地傳遞所需信息,進(jìn)行商品交易,使得商家與用戶(hù)之間信息與資金的無(wú)紙化交換形成了一種全新的交易方式。網(wǎng)上銷(xiāo)售在人們?nèi)粘I钪凶兊迷絹?lái)越不可缺少,正是由于它適應(yīng)了當(dāng)今社會(huì)快節(jié)奏的生活,使得人們可以足不出戶(hù)就可以很方便、很快捷、很輕松地選擇自己喜歡需要的商品。由日前公布的一項(xiàng)研究結(jié)果顯示,我國(guó)電子商務(wù)產(chǎn)業(yè)在近年來(lái)得到迅速地發(fā)展,已經(jīng)有超過(guò)10萬(wàn)家的網(wǎng)上商店出現(xiàn)在人們的日常生活中,約為2000萬(wàn)件的商品在網(wǎng)上商店展示過(guò)。該項(xiàng)研究是由上海東方網(wǎng)誠(chéng)數(shù)據(jù)科技有限公司進(jìn)行操作的,擁有網(wǎng)上商店系統(tǒng)和獨(dú)立域名的網(wǎng)站,以及部分具有一定規(guī)模,但是租用第三方平臺(tái)的網(wǎng)上商店都是其研究的對(duì)象,但不包括設(shè)在拍賣(mài)網(wǎng)站上的店鋪。PHP與ASP技術(shù)目前在國(guó)內(nèi)應(yīng)用較為廣泛,而由于JSP技術(shù)是一種新型的技術(shù),國(guó)內(nèi)使用的情況比較少。但是在國(guó)外,JSP已經(jīng)成為一種比較流行的技術(shù),尤其是在建設(shè)電子商務(wù)類(lèi)的網(wǎng)站這塊大多數(shù)都是選擇采用JSP技術(shù),而且世界上一些大的提供商在提供電子商務(wù)解決方案這方面都采用是JSP/Servlet模式。所以總體看來(lái)在這三者中,能夠成為未來(lái)發(fā)展的趨勢(shì)應(yīng)該是JSP??偠灾珹SP、PHP、JSP三者支持者都有相當(dāng)大的數(shù)量,而這三者也是各有所長(zhǎng)的。因此在以后的開(kāi)發(fā)過(guò)程中,我們采用什么樣的技術(shù)應(yīng)該根據(jù)實(shí)際的需要來(lái)衡量,本網(wǎng)上銷(xiāo)售系統(tǒng)采用的是比較新的JSP技術(shù),采用它的原因是開(kāi)發(fā)該系統(tǒng)的需求和JSP本身的一些安全性和跨平臺(tái)性比較好,同時(shí)我也希望自己能夠在通過(guò)開(kāi)發(fā)該系統(tǒng)的過(guò)程中,學(xué)習(xí)一門(mén)新的編程語(yǔ)言。1.2設(shè)計(jì)的目標(biāo)現(xiàn)在日常生活中的一些網(wǎng)上銷(xiāo)售系統(tǒng)頁(yè)面布局比較雜亂,查找商品不是很方便,還有一些網(wǎng)站在購(gòu)物時(shí)可能存在一些風(fēng)險(xiǎn),所以現(xiàn)在網(wǎng)上銷(xiāo)售系統(tǒng)的設(shè)計(jì)要求是不僅僅要有賞心悅目的網(wǎng)站頁(yè)面顯示,更要有一個(gè)嚴(yán)謹(jǐn)?shù)囊?guī)劃,注意重視每一個(gè)細(xì)小的環(huán)節(jié),這樣才能使得一些不必要發(fā)生的錯(cuò)誤在電子交易時(shí)得以避免。由專(zhuān)業(yè)的文字錄入人員將所需要的信息輸入到管理系統(tǒng)數(shù)據(jù)庫(kù)中的這種傳統(tǒng)管理信息系統(tǒng)信息的獲取方法在數(shù)據(jù)量不大時(shí)還可以使用,但是在數(shù)據(jù)量比較大并且有較強(qiáng)的專(zhuān)業(yè)性時(shí),這時(shí)錄入出錯(cuò)的可能性就會(huì)相應(yīng)的提高,同時(shí)也增加了錄入的成本,這樣就不是很劃算。我設(shè)計(jì)的目標(biāo)是先建立數(shù)據(jù)庫(kù)和使用JSP技術(shù)編輯一些基礎(chǔ)的頁(yè)面,再運(yùn)用JDBC技術(shù)把數(shù)據(jù)庫(kù)和動(dòng)態(tài)網(wǎng)頁(yè)關(guān)聯(lián)起來(lái),使得所需商品信息可以及時(shí)的保存、更新,可以更好的及時(shí)了解商品買(mǎi)賣(mài)的情況。1.3系統(tǒng)開(kāi)發(fā)的意義人類(lèi)社會(huì)得以更近一步的迅猛發(fā)展,電子商務(wù)的迅速發(fā)展起到了不少的作用,網(wǎng)絡(luò)銷(xiāo)售就是電子商務(wù)中一個(gè)很重要的附加產(chǎn)品。從購(gòu)物測(cè)試來(lái)看,中國(guó)電子商務(wù)未來(lái)的發(fā)展前景顯著,擁有巨大的購(gòu)物潛力。在如今的社會(huì)中,時(shí)下比較流行的網(wǎng)上銷(xiāo)售系統(tǒng)有“淘寶”、“京東”、“當(dāng)當(dāng)”等,它們都屬于相當(dāng)優(yōu)秀的電子商務(wù)網(wǎng)站并為其他的一些網(wǎng)站提供了一個(gè)良好的典范。在本次設(shè)計(jì)中我就是學(xué)習(xí)、參考他們的思想,通過(guò)分析這些網(wǎng)站的開(kāi)發(fā)流程和完整的電子商務(wù)網(wǎng)站應(yīng)該具備的怎樣的功能以及一些注意事項(xiàng)??傊?,隨著個(gè)人配備自己電腦的普及和使用電腦人數(shù)的增加,在眾多的銷(xiāo)售渠道中網(wǎng)絡(luò)銷(xiāo)售脫穎而出,其地位及占有量也在呈現(xiàn)逐漸增加的趨勢(shì)。1.4本文研究?jī)?nèi)容及主要貢獻(xiàn)本論文主要從以下幾方面全面介紹網(wǎng)上銷(xiāo)售系統(tǒng)的開(kāi)發(fā)過(guò)程:第一章緒論:本章簡(jiǎn)要介紹該系統(tǒng)的一些發(fā)展歷程和現(xiàn)狀,同時(shí)闡述該系統(tǒng)實(shí)現(xiàn)的目標(biāo)和意義。第二章需求及可行性分析:本章描述了系統(tǒng)的開(kāi)發(fā)目標(biāo),系統(tǒng)的可行性分析以及系統(tǒng)功能模塊的設(shè)計(jì)分析,深入地確定每個(gè)模塊具備的功能與大致實(shí)現(xiàn)思路,還有數(shù)據(jù)庫(kù)的設(shè)計(jì)。第三章開(kāi)發(fā)環(huán)境及相關(guān)技術(shù)簡(jiǎn)介:本章介紹開(kāi)發(fā)該系統(tǒng)所用到的各項(xiàng)技術(shù)與相應(yīng)的開(kāi)發(fā)工具,還有開(kāi)發(fā)環(huán)境。第四章系統(tǒng)詳細(xì)設(shè)計(jì):本章具體的說(shuō)明了系統(tǒng)的實(shí)現(xiàn)方法,明確了模塊間的聯(lián)系,分層次的說(shuō)明了每個(gè)模塊的具體實(shí)現(xiàn)。第五章系統(tǒng)測(cè)試與分析:本章給出了測(cè)試的意義與部分模塊的測(cè)試過(guò)程。第2章需求及可行性分析在進(jìn)行系統(tǒng)設(shè)計(jì)之前,需求及可行性分析是必不可少的,這樣可以全方面地考慮清楚系統(tǒng)的功能實(shí)現(xiàn)。下面主要就是從系統(tǒng)的可行性以及其整體功能進(jìn)行分析,確定系統(tǒng)的功能如何實(shí)現(xiàn)。2.1系統(tǒng)的可行性分析可行性分析是對(duì)系統(tǒng)的開(kāi)發(fā)從各個(gè)方面進(jìn)行相應(yīng)的分析和研究,盡可能避免一些不必要產(chǎn)生的錯(cuò)誤,保證系統(tǒng)成功開(kāi)發(fā)的可能性。所以在進(jìn)行系統(tǒng)開(kāi)發(fā)時(shí),要進(jìn)行全面的調(diào)查,在此基礎(chǔ)上,再針對(duì)系統(tǒng)開(kāi)發(fā)的必要性和可能性進(jìn)行分析。這部分將從以下三個(gè)方面進(jìn)行詳細(xì)分析:技術(shù)可行性、經(jīng)濟(jì)可行性、操作可行性。2.1.1技術(shù)可行性本系統(tǒng)使用的是JSP技術(shù)。JSP是Java在網(wǎng)站開(kāi)發(fā)上的重要應(yīng)用技術(shù),擁有可以和各種Java技術(shù)完美地結(jié)合在一起的特性,同時(shí)利用JSP技術(shù)可以建立先進(jìn)、安全和跨平臺(tái)的動(dòng)態(tài)網(wǎng)站,因此成為一種非常流行的網(wǎng)站開(kāi)發(fā)技術(shù)并且得到了人們廣泛的支持。鑒于JSP技術(shù)的成熟與廣泛的使用,所以本系統(tǒng)就是使用的該技術(shù)。而對(duì)于數(shù)據(jù)庫(kù)方面,在大學(xué)學(xué)習(xí)期間,我們學(xué)習(xí)的是SQLServer,但是由于我個(gè)人對(duì)MySQL數(shù)據(jù)庫(kù)的了解相對(duì)而言比較多,所以就決定采用MySQL作為本系統(tǒng)數(shù)據(jù)庫(kù)的后臺(tái)。2.1.2經(jīng)濟(jì)可行性根據(jù)調(diào)查的資料顯示,由于現(xiàn)在聘用一支專(zhuān)業(yè)的團(tuán)隊(duì)設(shè)計(jì)并建設(shè)企業(yè)需求的商務(wù)網(wǎng)站的費(fèi)用大概是5300元,另外每年還需交納網(wǎng)站空間占用和網(wǎng)站維護(hù)費(fèi)600元。但是為了達(dá)到更好的效果,獲取更多的經(jīng)濟(jì)效益,花費(fèi)在設(shè)計(jì)團(tuán)隊(duì)上的費(fèi)用就要相對(duì)增加,但這與網(wǎng)站成功建成后帶來(lái)的利益遠(yuǎn)遠(yuǎn)大于前期的成本投入,所以這些花費(fèi)就不值一提了。網(wǎng)站雖然建成但后期的服務(wù)器、網(wǎng)絡(luò)線路和設(shè)備的維護(hù)費(fèi)用也是要考慮的一個(gè)重要因素。2.1.3操作可行性現(xiàn)如今,隨著時(shí)代的發(fā)展在日常生活中計(jì)算機(jī)與網(wǎng)絡(luò)已經(jīng)得到非常大的普及,企業(yè)的員工也必須具備計(jì)算機(jī)應(yīng)用這一項(xiàng)技能。由于本網(wǎng)上銷(xiāo)售系統(tǒng)是以計(jì)算機(jī)作為服務(wù)器的網(wǎng)站,所以營(yíng)銷(xiāo)商可以自己對(duì)自己的網(wǎng)站進(jìn)行相應(yīng)的操作和管理。2.2系統(tǒng)的整體功能分析通過(guò)以上的一些分析,我們可以了解到首先要對(duì)所要設(shè)計(jì)的系統(tǒng)進(jìn)行可行性分析,不要拿到一個(gè)項(xiàng)目就開(kāi)始做,要分析一下這個(gè)項(xiàng)目是否有做的價(jià)值。所以我所要設(shè)計(jì)的網(wǎng)站是用戶(hù)可以在前臺(tái)瀏覽信息,管理員可以在后臺(tái)根據(jù)需求做出相應(yīng)的調(diào)整。前臺(tái)功能:提供用戶(hù)的注冊(cè)和登錄功能。用戶(hù)能夠隨意瀏覽商品,包括使用搜索功能,方便用戶(hù)查找并快速獲取商品的詳細(xì)信息,如圖片預(yù)覽、商品描述。登錄用戶(hù)可以使用購(gòu)物車(chē),可以將商品增加到,對(duì)購(gòu)物車(chē)中的商品進(jìn)行修改,包括修改商品的數(shù)量,刪除商品等。后臺(tái)功能:管理員可以更新、配置一些信息管理本網(wǎng)站。可以管理商品信息,包括商品信息的修改、刪除、查詢(xún)、增加??梢怨芾碛脩?hù)的信息,包括用戶(hù)的查詢(xún)和刪除。2.2.1系統(tǒng)整體功能模塊設(shè)計(jì) 1、整體功能結(jié)構(gòu)如圖2.1所示:圖2.1整體功能模塊圖從圖中可以看出,此網(wǎng)上銷(xiāo)售系統(tǒng)分為前臺(tái)和后臺(tái)兩個(gè)部分,前臺(tái)部分主要是向用戶(hù)展示信息,方便用戶(hù)更好的了解此系統(tǒng);后臺(tái)部分主要是給管理員使用的,管理員可以對(duì)商品信息、用戶(hù)信息等進(jìn)行管理。2、前臺(tái)購(gòu)物流程圖如圖2.2所示。圖2.2前臺(tái)購(gòu)物流程圖3、用戶(hù)注冊(cè)的流程如圖2.3所示。圖2.3用戶(hù)注冊(cè)流程圖由上圖可以看出,注冊(cè)功能其實(shí)就是增加用戶(hù)的信息。具體實(shí)現(xiàn)就是:點(diǎn)擊主頁(yè)面的“注冊(cè)”按鈕后,會(huì)跳到用戶(hù)注冊(cè)信息的頁(yè)面,用戶(hù)需要如實(shí)填寫(xiě)用戶(hù)名、密碼、E_mail、地址、電話、真實(shí)姓名等各項(xiàng)信息,提交后,系統(tǒng)進(jìn)行一些驗(yàn)證判斷是否注冊(cè)成功。注冊(cè)成功后,用戶(hù)就可以在登錄后進(jìn)行一些操作。4、商品搜索的流程如圖2.4所示。開(kāi)始搜索開(kāi)始搜索繼續(xù)搜索繼續(xù)搜索查看搜索到的商品添加到購(gòu)物車(chē)輸入條件點(diǎn)擊搜索圖2.4商品搜索的流程圖商品的搜索功能是用戶(hù)可以查找所想要的一系列的商品,更加方便地查詢(xún)所需要的商品,這樣可以有效地節(jié)省時(shí)間,提高操作的效率。用戶(hù)搜索時(shí)只需要在搜索框中輸入商品的關(guān)鍵字就能搜索到所有與之相關(guān)的商品。5、用戶(hù)登錄流程如圖2.5所示。 圖2.5用戶(hù)登陸流程圖商務(wù)網(wǎng)站對(duì)其網(wǎng)站的穩(wěn)定性和安全性的要求很高,因此對(duì)用戶(hù)名的填寫(xiě)要求要有一定的限制。所以每個(gè)用戶(hù)都要有一個(gè)唯一的用戶(hù)名,同時(shí)對(duì)密碼也要進(jìn)行加密保護(hù),將密碼加密后再存入數(shù)據(jù)庫(kù)。6、管理員對(duì)商品進(jìn)行管理的流程如圖2.6所示。2.2.2數(shù)據(jù)庫(kù)整體設(shè)計(jì)分析1、數(shù)據(jù)庫(kù)需求分析其實(shí)數(shù)據(jù)庫(kù)的設(shè)計(jì)是為存放該系統(tǒng)所需要的信息。常用的數(shù)據(jù)庫(kù)管理系統(tǒng)有MySQL、SQLServer、Oracle等,我采用了MySQL對(duì)本系統(tǒng)的數(shù)據(jù)進(jìn)行管理,建立的數(shù)據(jù)庫(kù)名為shopping。2、數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)的設(shè)計(jì)與建立至關(guān)重要,如果考慮不全面會(huì)為之后的開(kāi)發(fā)產(chǎn)生不少的麻煩,所以我們必須先對(duì)本系統(tǒng)所需用到的一些數(shù)據(jù)進(jìn)行一個(gè)大致的分類(lèi)和具體的結(jié)構(gòu)設(shè)計(jì),這樣可以清晰明了的了解本系統(tǒng)用到了哪些數(shù)據(jù),又可以能適應(yīng)系統(tǒng)各項(xiàng)功能的調(diào)用,而不至于產(chǎn)生結(jié)構(gòu)上的邏輯混亂。在數(shù)據(jù)庫(kù)進(jìn)行設(shè)計(jì)的時(shí)候也要遵循一定的規(guī)則,只有遵循了這些規(guī)則后才能更好地新建好網(wǎng)站的“地基”,為之后的開(kāi)發(fā)減輕負(fù)擔(dān)。所以我們要盡量做到一個(gè)實(shí)體對(duì)應(yīng)一個(gè)表,要搞清楚該實(shí)體應(yīng)該有哪些屬性以及與各個(gè)實(shí)體之間有什么樣的聯(lián)系。實(shí)體、屬性與聯(lián)系是進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)要充分考慮到三個(gè)重要元素,同時(shí)也是設(shè)計(jì)好的一個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的核心。(1)、管理員表,系統(tǒng)管理員的登錄信息,管理員表結(jié)構(gòu),如表2.1所示。(2)、用戶(hù)表,記錄用戶(hù)的個(gè)人信息,用戶(hù)表結(jié)構(gòu),如表2.2所示。(3)、商品表,記錄商品信息,商品表結(jié)構(gòu),如表2.3所示。(4)、大類(lèi)型表,記錄商品分類(lèi)的信息,大類(lèi)型表結(jié)構(gòu),如表2.4所示。(5)、小類(lèi)型表,記錄商品的種類(lèi),小類(lèi)型表結(jié)構(gòu),如表2.5所示。(6)、供應(yīng)商表,記錄商品供應(yīng)商的信息,供應(yīng)商表結(jié)構(gòu),如表2.6所示。(7)、購(gòu)物車(chē)表,記錄購(gòu)物車(chē)中存放的商品信息,購(gòu)物車(chē)表結(jié)構(gòu),如表2.7所示。表2.1管理員表字段字段名稱(chēng)字段類(lèi)型允許為空備注Id管理員編碼Int否主鍵Name管理員名稱(chēng)Varchar(20)否Password密碼Varchar(20)否表2.2用戶(hù)表字段字段名稱(chēng)字段類(lèi)型允許為空備注UserId用戶(hù)編號(hào)Int否主鍵UserName用戶(hù)名Varchar(255)否UserPwd密碼Varchar(255)否TrueName真實(shí)姓名Varchar(255)否Phone聯(lián)系方式Varchar(255)否Email郵箱Varchar(255)否Address地址Varchar(255)否表2.3商品表字段字段名稱(chēng)字段類(lèi)型允許為空備注GoodsId商品編號(hào)Int否主鍵GoodsName商品名Varchar(45)否Price單價(jià)Varchar(50)否Number庫(kù)存數(shù)量Int否Picture商品圖片Varchar(50)否Introduction商品簡(jiǎn)介Varchar(1000)是SupplierId供應(yīng)商編號(hào)Int否外鍵SmallTypeId小類(lèi)型編號(hào)Int否外鍵表2.4大類(lèi)型表字段字段名稱(chēng)字段類(lèi)型允許為空備注BigTypeId大類(lèi)型編號(hào)Int否主鍵BigTypeName大類(lèi)型名稱(chēng)Varchar(20)否表2.5小類(lèi)型表字段字段名稱(chēng)字段類(lèi)型允許為空備注SmallTypeId小類(lèi)型編號(hào)Int否主鍵SmallTypeName小類(lèi)型名稱(chēng)Varchar(20)否BigTypeId大類(lèi)型編號(hào)Int否外鍵表2.6大類(lèi)型表字段字段名稱(chēng)字段類(lèi)型允許為空備注SupplierId供應(yīng)商編號(hào)Int否主鍵SupplierName供應(yīng)商名稱(chēng)Varchar(20)否表2.7購(gòu)物車(chē)表字段字段名稱(chēng)字段類(lèi)型允許為空備注CartId購(gòu)物車(chē)編號(hào)Int否主鍵Picture商品圖片Varchar(50)否GoodsName商品名稱(chēng)Varchar(20)否Price價(jià)格Varchar(20)否userid關(guān)聯(lián)的用戶(hù)編號(hào)Int是外鍵2.3本章小結(jié)本章節(jié)主要是對(duì)網(wǎng)上購(gòu)物系統(tǒng)進(jìn)行需求分析,從技術(shù)、經(jīng)濟(jì)、操作等方面進(jìn)行剖析,充分說(shuō)明該課題的可行性。同時(shí)也對(duì)系統(tǒng)的一些功能模塊進(jìn)行詳細(xì)的分析,明確之后的工作內(nèi)容。還有就是數(shù)據(jù)庫(kù)的設(shè)計(jì),通過(guò)功能的需求進(jìn)行確定數(shù)據(jù)庫(kù)到底該如何設(shè)計(jì)。第3章開(kāi)發(fā)環(huán)境及相關(guān)技術(shù)簡(jiǎn)介在確定系統(tǒng)的整體功能實(shí)現(xiàn)之后,就要根據(jù)系統(tǒng)的功能需求考慮好在設(shè)計(jì)系統(tǒng)是所需要用到的開(kāi)發(fā)環(huán)境及技術(shù)。確定好之后可以設(shè)計(jì)出系統(tǒng)的總體框架,為之后的設(shè)計(jì)奠定基礎(chǔ)。3.1系統(tǒng)開(kāi)發(fā)環(huán)境3.1.1EclipseEclipse是一個(gè)基于Java、開(kāi)放源代碼的可擴(kuò)展開(kāi)發(fā)平臺(tái)。從其本身來(lái)說(shuō),它就僅僅是一組服務(wù)和一個(gè)框架,主要用來(lái)通過(guò)插件組件來(lái)構(gòu)建開(kāi)發(fā)所需環(huán)境。值得一提的是,Eclipse自身附帶了一個(gè)非常標(biāo)準(zhǔn)的插件集,其中就包括了Java開(kāi)發(fā)工具JDT。
在現(xiàn)如今,構(gòu)成了IBMJava開(kāi)發(fā)工具系列的基礎(chǔ)的WebSphereStudioWorkbench應(yīng)用程序就是基于Eclipse開(kāi)發(fā)的最突出的例子。還有例如WebSphereStudioApplicationDeveloper就添加了對(duì)JSP、servlet、Web服務(wù)和數(shù)據(jù)庫(kù)訪問(wèn)等的支持。Eclipse開(kāi)發(fā)界面如圖3.1所示。圖3.1Eclipse開(kāi)發(fā)界面3.1.2數(shù)據(jù)庫(kù)簡(jiǎn)介本系統(tǒng)使用的數(shù)據(jù)庫(kù)是MySQL,同時(shí)使用SQLyog這個(gè)數(shù)據(jù)庫(kù)開(kāi)發(fā)工具對(duì)數(shù)據(jù)庫(kù)中的表進(jìn)行設(shè)計(jì)。MySQL是一種輕量級(jí)的數(shù)據(jù)庫(kù),它擁有很多的特性。如使用多種編譯器對(duì)代碼進(jìn)行測(cè)試;支持多線程減輕主線程運(yùn)行的工作量;優(yōu)化SQL語(yǔ)句的查詢(xún)算法更有效地提高查詢(xún)的速度。它既能夠在客戶(hù)端服務(wù)器網(wǎng)絡(luò)環(huán)境中作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用而存在,同時(shí)也能作為一個(gè)庫(kù)嵌入到其他的軟件中。對(duì)于語(yǔ)言方面提供多種多樣的編碼方式,常見(jiàn)的編碼方式有UTF-8、GBK、GB2312等。它還提供ODBC、JDBC和TCP/IP等多種數(shù)據(jù)庫(kù)連接的途徑,本系統(tǒng)就是使用JDBC連接數(shù)據(jù)庫(kù)的。3.1.3Tomcat作為一個(gè)輕量級(jí)應(yīng)用服務(wù)器的Tomcat,它在中小型的系統(tǒng)和并發(fā)訪問(wèn)用戶(hù)不是很多的情況下才會(huì)被普遍使用,它同時(shí)也是開(kāi)發(fā)和調(diào)試JSP程序的首要選擇。這就不僅僅是因?yàn)樗\(yùn)行時(shí)所占用的系統(tǒng)資源很小、擴(kuò)展的性能好、支持負(fù)載平衡等這些開(kāi)發(fā)應(yīng)用系統(tǒng)的常用功能;而且還因?yàn)樗匀贿€在不斷地改進(jìn)和完善,任何一個(gè)感興趣的程序員都可以更改它或在其中加入新的功能。3.2系統(tǒng)開(kāi)發(fā)技術(shù)與MVC模式本系統(tǒng)采用JSP技術(shù),基于MVC模式開(kāi)發(fā)。3.2.1JSP在網(wǎng)頁(yè)制作時(shí),使用的JSP頁(yè)面看上去比較象HTML和XML頁(yè)面,這是因?yàn)镴SP頁(yè)面的構(gòu)成就是在HTML文件中加入一些Java程序片段(Scriptlet)和JSP標(biāo)記(tag)。它使用的比較強(qiáng)大的Java語(yǔ)言進(jìn)行開(kāi)發(fā),因此在網(wǎng)絡(luò)數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)這一領(lǐng)域就具有得天獨(dú)厚的優(yōu)勢(shì)。3.2.2MVC模式MVC(ModelViewController)是模型(model)、視圖(view)、控制器(controller)的縮寫(xiě),它就是一個(gè)框架模式,但它是軟件設(shè)計(jì)的一種典范,它可以使應(yīng)用程序的輸入、處理和輸出部分強(qiáng)制性的分離開(kāi)來(lái)。MVC的三個(gè)核心部件的這種分離開(kāi)方式可以使他們各自處理自己的任務(wù)。MVC的典型模式就是JavaBean+JSP+Servlet,而我在設(shè)計(jì)的過(guò)程就是使用的此模式。3.3B/S體系結(jié)構(gòu)本系統(tǒng)采用的是B/S體系結(jié)構(gòu),在B/S體系結(jié)構(gòu)中用戶(hù)可以向分布在網(wǎng)絡(luò)上的服務(wù)器發(fā)出請(qǐng)求,但這要通過(guò)瀏覽器實(shí)現(xiàn)。而服務(wù)器接收到瀏覽器的請(qǐng)求并對(duì)其進(jìn)行處理,處理完之后就將用戶(hù)所需信息返回到瀏覽器上,展示給用戶(hù)。這種三層體系結(jié)構(gòu)如圖3.2所示。圖3.2B/S三層結(jié)構(gòu)示意圖3.4本章小結(jié)本章主要是對(duì)開(kāi)發(fā)網(wǎng)上銷(xiāo)售系統(tǒng)所需要的一些開(kāi)發(fā)工具的簡(jiǎn)單介紹。這個(gè)網(wǎng)上銷(xiāo)售系統(tǒng)使用B/S開(kāi)發(fā)結(jié)構(gòu),采用MVC框架在Eclipse中設(shè)計(jì)開(kāi)發(fā),使用JSP設(shè)計(jì)網(wǎng)頁(yè);后臺(tái)數(shù)據(jù)庫(kù)使用的是SQLyog對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操作。第4章系統(tǒng)詳細(xì)設(shè)計(jì)網(wǎng)上銷(xiāo)售系統(tǒng)是為用戶(hù)提供足不出戶(hù)就可網(wǎng)上進(jìn)行購(gòu)買(mǎi)自己所需要的商品的服務(wù),該系統(tǒng)主要是對(duì)用戶(hù)信息、商品信息等幾個(gè)方面進(jìn)行增加、查詢(xún)、修改、刪除的操作。下面也就是圍繞這幾個(gè)方面展開(kāi)分析。4.1后臺(tái)功能實(shí)現(xiàn)主要是管理員對(duì)用戶(hù)信息、商品信息進(jìn)行增、刪、改、查的一些操作。4.1.1管理員登錄首先確保服務(wù)器已打開(kāi)并數(shù)據(jù)庫(kù)已連接成功,然后管理員才可以在瀏覽器上打開(kāi)設(shè)定的網(wǎng)址:http://localhost:8080/Shopping/Goods/AdminLogin.html,進(jìn)入登錄頁(yè)面。網(wǎng)站打開(kāi)后的管理員登錄界面如圖4.1所示。圖4.1管理員登錄界面具體代碼實(shí)現(xiàn)如下://登錄驗(yàn)證protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); PrintWriterout=response.getWriter(); Stringadminname=request.getParameter("adminName"); Stringadminpsw=request.getParameter("pwd"); out.print(adminname+"<br/>"); out.print(adminpsw+"<br/>"); HttpSessionsession=request.getSession(); AdminDaoImpladmin=newAdminDaoImpl(); booleana=admin.check(adminname,adminpsw); out.print(a+"<br/>"); if(a){ out.print(adminname+"<br/>"); out.print(adminpsw+"<br/>"); session.setAttribute("adminName",adminname); response.sendRedirect("goodsAdd.jsp"); }else{ out.print("<script>alert('登錄失敗');history.back();</script>"); } }}4.1.2商品信息管理1、增加商品信息:管理員添加新的商品信息,使得新的商品信息能夠及時(shí)的記錄,以防忘記、遺漏。如圖4.2所示。圖4.2商品增加界面關(guān)鍵代碼如下:<scripttype="text/javascript"> functioncheck(){ varGoodsIdObjValue=document.getElementsByName("GoodsId")[0].value; varGoodsIdRegex=/^[0-9]*[1-9][0-9]*$/; if(!GoodsIdObjValue){ alert("商品編號(hào)"); returnfalse; } elseif(!GoodsIdRegex.test(GoodsIdObjValue)){ alert("商品編號(hào)格式不對(duì)"); returnfalse; } varGoodsNameObjValue=document.getElementsByName("GoodsName")[0].value; if(!GoodsNameObjValue){ alert("商品名稱(chēng)必填"); returnfalse; } varPriceObjValue=document.getElementsByName("Price")[0].value; if(!PriceObjValue){ alert("價(jià)格必填"); returnfalse; } }</script>2、維護(hù)商品信息:主要是管理員查詢(xún)出所有數(shù)據(jù)庫(kù)中的商品信息,并對(duì)其進(jìn)行修改、刪除的操作。如圖4.3所示。圖4.3商品查詢(xún)界面(1)、在搜索框中輸入你所要查詢(xún)的商品類(lèi)型(如:女裝),點(diǎn)擊搜索按鈕。出現(xiàn)的結(jié)果如下圖4.4所示。圖4.4商品查詢(xún)顯示界面關(guān)鍵代碼實(shí)現(xiàn)如下:<% intshowPage=0; intpageCount=0; intposition=0; intrecordCount=0; StringBigTypeName=null; if(session.getAttribute("showPage")!=null){ showPage=(Integer)session.getAttribute("showPage"); } if(session.getAttribute("pageCount")!=null){ pageCount=(Integer)session.getAttribute("pageCount"); } if(session.getAttribute("position")!=null){ position=(Integer)session.getAttribute("position"); } if(session.getAttribute("recordCount")!=null){ recordCount=(Integer)session.getAttribute("recordCount"); } if(session.getAttribute("BigTypeName")!=null){ BigTypeName=(String)session.getAttribute("BigTypeName"); } List<UpdateGoods>showlist=newArrayList<UpdateGoods>(); GoodsDaoImplgoodsdao=newGoodsDaoImpl(); showlist=goodsdao.getAllGoodsByBigType(BigTypeName); session.setAttribute("BigTypeName",BigTypeName); %> <scripttype="text/javascript"> functionbb(input){ varshowPage=input.value; input.value=parseFloat(<%=pageCount%>); } </script> <%if(showlist!=null&&showlist.size()>0){%> <% for(inti=position-1;i<position+3;i++){%> <%if(i<=recordCount-1){%> <tr> <td><%=showlist.get(i).getGoodsId()%></td> <td><%=showlist.get(i).getGoodsName()%></td> <td><%=showlist.get(i).getPrice()%></td> <td><%=showlist.get(i).getNumber()%></td> <tdclass="pic"><imgwidth=170height=220src="image/<%=showlist.get(i).getPicture()%>"></td> <td><%=showlist.get(i).getIntroduction()%></td> <td><%=showlist.get(i).getSupplierName()%></td> <td><%=showlist.get(i).getBigtypeName()%></td> <td><%=showlist.get(i).getSamlltypeName()%></td> <%out.print("<td><ahref=goodsUpdateOne.jsp?goodsId="+showlist.get(i).getGoodsId()+">修改</a></td>");%> <%out.print("<td><ahref=GoodsDelServlet?goodsId="+showlist.get(i).getGoodsId()+"onclick=\"returnconfirm('確定要?jiǎng)h除嗎?')\">刪除</a></td>");%> </tr> <%}%> <%}%> <%}%> (2)、點(diǎn)擊刪除按鈕,退跳出一個(gè)窗口問(wèn)你是否要?jiǎng)h除這個(gè)商品信息。如果要?jiǎng)h除就點(diǎn)擊“確定”,否則點(diǎn)擊“取消”。點(diǎn)擊“確定”后就可刪除此商品信息,表中不在顯示。如圖4.5所示。圖4.5商品刪除界面(3)、點(diǎn)擊修改按鈕,就會(huì)出現(xiàn)如圖4.6的界面,然后進(jìn)行修改,點(diǎn)擊修改的按鈕,保存修改后的信息,提示修改成功。圖4.6商品修改界面(4)、商品管理模塊具體代碼實(shí)現(xiàn)如下: //增加商品信息 @Override publicintgoodsAdd(Goodsgoods){ connection=ConnectionManager.getConnction(); Stringsql="insertintogoodsvalues(?,?,?,?,?,?,?,?)"; try{ pst=connection.prepareStatement(sql); pst.setInt(1,goods.getGoodsId()); pst.setString(2,goods.getGoodsName()); pst.setString(3,goods.getPrice()); pst.setInt(4,goods.getNumber()); pst.setString(5,goods.getPicture()); pst.setString(6,goods.getIntroduction()); pst.setInt(7,goods.getSupplierId()); pst.setInt(8,goods.getSmalltypeId()); returnpst.executeUpdate();//prestmt是PreparedStatement對(duì)象實(shí)例 }catch(SQLExceptione){ e.printStackTrace(); return0; }finally{ ConnectionManager.closeResultSet(results); ConnectionManager.closeStatement(pst); ConnectionManager.closeConnection(connection); } }//獲取所有的商品信息 @Override publicList<UpdateGoods>getAllGoods(){ connection=ConnectionManager.getConnction(); List<UpdateGoods>updategoodslist=newArrayList<UpdateGoods>(); Stringsql="selectGoodsId,BigTypeName,SmallTypeName,GoodsName,Price,Number,Picture,Introduction,SupplierName" +"fromgoodsasginnerjoinsmalltypeassong.SmallTypeId=s.SmallTypeId" +"innerjoinbigtypeasbons.BigTypeId=b.BigTypeId"+"innerjoinsupplieraspong.SupplierId=p.SupplierId"; try{ pst=connection.prepareStatement(sql); results=pst.executeQuery(); while(results.next()){ UpdateGoodsupdategoods=newUpdateGoods(results.getInt(1),results.getString(2),results.getString(3),results.getInt(4),results.getString(5), results.getString(6),results.getString(7),results.getString(8),results.getString(9)); updategoodslist.add(updategoods); } }catch(SQLExceptione){ e.printStackTrace(); }finally{ ConnectionManager.closeResultSet(results); ConnectionManager.closeStatement(pst); ConnectionManager.closeConnection(connection); } returnupdategoodslist; } //根據(jù)商品的編號(hào)刪除商品信息 @Override publicvoidgoodsDel(intgoodsId){ connection=ConnectionManager.getConnction(); Stringsql="deletefromgoodswhereGoodsId=?"; try{ pst=connection.prepareStatement(sql); pst.setInt(1,goodsId); pst.executeUpdate(); }catch(SQLExceptione){ e.printStackTrace(); }finally{ ConnectionManager.closeResultSet(results); ConnectionManager.closeStatement(pst); ConnectionManager.closeConnection(connection); } } //更新商品信息 @Override publicvoidupdateGoods(Goodsgoods){connection=ConnectionManager.getConnction(); Stringsql="updategoodssetGoodsName=?,Price=?,Number=?,Picture=?,Introduction=?whereGoodsId=?"; try{ pst=connection.prepareStatement(sql); pst.setString(1,goods.getGoodsName()); pst.setString(2,goods.getPrice()); pst.setInt(3,goods.getNumber()); pst.setString(4,goods.getPicture()); pst.setString(5,goods.getIntroduction()); pst.setInt(6,goods.getGoodsId()); pst.executeUpdate(); }catch(SQLExceptione){ e.printStackTrace(); }finally{ ConnectionManager.closeResultSet(results); ConnectionManager.closeStatement(pst); ConnectionManager.closeConnection(connection); } } //根據(jù)大類(lèi)型的名稱(chēng)查詢(xún)商品信息 @Override publicList<UpdateGoods>getAllGoodsByBigType(StringBigTypeName){ connection=ConnectionManager.getConnction(); List<UpdateGoods>showlist=newArrayList<UpdateGoods>(); try{ CallableStatementcast=connection.prepareCall("{callsp_GetAllGoods(?)}"); cast.setString(1,BigTypeName); results=cast.executeQuery(); while(results.next()){ UpdateGoodsshowcar=newUpdateGoods(results.getInt(1),results.getString(2),results.getString(3), results.getInt(4),results.getString(5),results.getString(6),results.getString(7), results.getString(8),results.getString(9)); showlist.add(showcar); } }catch(SQLExceptione){ e.printStackTrace(); }finally{ ConnectionManager.closeResultSet(results); ConnectionManager.closeStatement(pst); ConnectionManager.closeConnection(connection); } returnshowlist; }//根據(jù)商品編號(hào)查詢(xún)商品信息 @Override publicList<Goods>getGoodsById(intgoodsId){ List<Goods>list=newArrayList<Goods>(); try{ Stringsql="select*fromgoodswhereGoodsId=?"; connection=ConnectionManager.getConnction(); pst=connection.prepareStatement(sql); pst.setInt(1,goodsId); results=pst.executeQuery(); System.out.println(goodsId); while(results.next()){ Goodsupdategoods=newGoods(results.getInt(1),results.getString(2),results.getString(3), results.getInt(4),results.getString(5),results.getString(6),results.getInt(7),results.getInt(8)); list.add(updategoods); } }catch(SQLExceptionexception){ exception.printStackTrace(); }finally{ ConnectionManager.closeResultSet(results); ConnectionManager.closeStatement(pst); ConnectionManager.closeConnection(connection); } returnlist; }4.1.3用戶(hù)信息管理1、維護(hù)用戶(hù)信息:由于管理員的權(quán)限問(wèn)題,管理員只能對(duì)用戶(hù)信息進(jìn)行查詢(xún)與刪除的操作,不能進(jìn)行添加與修改。(1)、用戶(hù)查詢(xún)用戶(hù)信息:不在輸入框中填寫(xiě)要搜索的用戶(hù)名,直接點(diǎn)擊“搜索”按鈕,即可查看所有用戶(hù)信息。也可以輸入用戶(hù)名,查看的你想要的用戶(hù)信息,清楚的了解你想要查看的用戶(hù),方便對(duì)用戶(hù)信息的管理,如圖4.7所示。圖4.7用戶(hù)查詢(xún)界面(2)、刪除用戶(hù):想要?jiǎng)h除用戶(hù),即可點(diǎn)擊這個(gè)用戶(hù)所在那一行后面“刪除”的按鈕就可刪除該用戶(hù)信息。刪除前如圖4.8所示,刪除后如圖4.9所示。圖4.8用戶(hù)刪除前界面圖4.9用戶(hù)刪除后界面(3)、用戶(hù)管理模塊關(guān)鍵代碼如下://刪除用戶(hù)信息@Override publicvoiduserDel(intuserId){ try{ connection=ConnectionManager.getConnction(); pst=connection.prepareStatement("deletefromuserwhereUserId=?"); pst.setInt(1,userId); pst.executeUpdate(); }catch(SQLExceptione){ e.printStackTrace(); }finally{ ConnectionManager.closeResultSet(results); ConnectionManager.closeStatement(pst); ConnectionManager.closeConnection(connection); } } //獲得所有用戶(hù)信息 @Override publicList<User>getAllUser(){ List<User>userList=newArrayList<User>(); try{ connection=ConnectionManager.getConnction(); pst=connection.prepareStatement("select*fromUser"); results=pst.executeQuery(); while(results.next()){ userList.add(newUser(results.getInt("UserId"),results .getString("UserName"),results.getString("UserPwd"),results.getString("TrueName") ,results.getString("Phone"),results.getString("Email"),results.getString("Address"))); } }catch(SQLExceptionexception){ exception.printStackTrace(); } finally{ ConnectionManager.closeResultSet(results); ConnectionManager.closeStatement(pst); ConnectionManager.closeConnection(connection); } returnuserList; } //通過(guò)用戶(hù)名獲取用戶(hù)信息 @Override publicList<User>getUserByName(StringUserName){ List<User>showList=newArrayList<User>(); try{ connection=ConnectionManager.getConnction(); CallableStatementcstmt=connection.prepareCall("{callSP_GetUserByName(?)}"); cstmt.setString(1,UserName); results=cstmt.executeQuery(); while(results.next()){ showList.add(newUser(results.getInt(1),results .getString(2),results.getString(3),results.getString(4) ,results.getString(5),results.getString(6),results.getString(7))); } } catch(Exceptionexception){ exception.printStackTrace(); } finally{ ConnectionManager.closeResultSet(results); ConnectionManager.closeConnection(connection); } returnshowList; }4.2前臺(tái)的功能實(shí)現(xiàn)主要是在首頁(yè)是一些商品的展示;給用戶(hù)提供注冊(cè),對(duì)自己所填信息的一些管理;瀏覽商品信息,將需要的商品加入購(gòu)物車(chē),對(duì)購(gòu)物車(chē)進(jìn)行管理的一些功能。4.2.1用戶(hù)登錄注冊(cè)功能一個(gè)新用戶(hù)可以在首頁(yè)瀏覽一些商品的信息,快速搜索到自己所需要的商品,但要加入購(gòu)物車(chē)就要進(jìn)行注冊(cè),否則不能實(shí)現(xiàn)一些功能,首頁(yè)如圖4.10所示。圖4.10首頁(yè)點(diǎn)擊頭頁(yè)面的登錄或注冊(cè)按鈕,進(jìn)行登錄和注冊(cè)的操作。如果已經(jīng)注冊(cè)過(guò)可以直接登錄,沒(méi)有注冊(cè)過(guò)的可以點(diǎn)擊“立即注冊(cè)”或首頁(yè)的注冊(cè)按鈕完成注冊(cè)工作,如圖4.11和圖4.12所示。圖4.11用戶(hù)登錄界面圖4.12用戶(hù)注冊(cè)界面具體代碼實(shí)現(xiàn)如下://通過(guò)用戶(hù)名稱(chēng)獲取密碼@Override publicList<User>getPassword(StringuserName){ List<User>userList=newArrayList<User>(); try{ connection=ConnectionManager.getConnction(); pst=connection.prepareStatement("select*fromuserwhereUserName=?"); pst.setString(1,userName); results=pst.executeQuery(); while(results.next()){ userList.add(newUser(results.getInt(1),results.getString(2),results .getString(3))); } } catch(SQLExceptionexception){ exception.printStackTrace(); } finally{ ConnectionManager.closeResultSet(results); ConnectionManager.closeStatement(pst); ConnectionManager.closeConnection(connection); } returnuserList; }//用戶(hù)輸入信息驗(yàn)證 protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriterout=response.getWriter(); StringuserName=request.getParameter("UserName"); StringuserPwd; try{ userPwd=EncoderPwdByMd5(request.getParameter("UserPwd")); System.out.println(userPwd); UserDaoImpluserDaoImpl=newUserDaoImpl(); List<User>list=userDaoImpl.getPassword(userName); if(list.size()==0){ out.print("<script>alert('帳號(hào)或密碼錯(cuò)誤,請(qǐng)重新輸入');history.back();</script>"); }else{ Stringpass=list.get(0).getUserPwd(); if(userPwd.equals(pass)){ request.getRequestDispatcher("index.jsp").forward(request,response); }else{ out.print("<script>alert('帳號(hào)或密碼錯(cuò)誤,請(qǐng)重新輸');history.back();</script>"); } } }catch(Exceptione){ e.printStackTrace(); } }//使用MD5方法對(duì)用戶(hù)密碼進(jìn)行加密 publicstaticfinalStringEncoderPwdByMd5(Stringstr)throwsException{ //確定計(jì)算方法 MessageDigestmd5=MessageDigest.getInstance("MD5"); BASE64Encoderbase64en=newBASE64Encoder(); //加密后的字符串 Stringnewstr=base64en.encode(md5.digest(str.getBytes("utf-8"))); returnnewstr; }}4.2.2搜索商品功能在搜索框中輸入你想查找的商品(如:T恤),點(diǎn)擊搜索按鈕即可查看到所有的你想要的商品信息,如圖4.13和圖4.14所示。圖4.13商品搜索頁(yè)面圖4.14查找到的商品展示頁(yè)面搜索代碼具體實(shí)現(xiàn)如下://通過(guò)對(duì)商品名稱(chēng)的模糊查詢(xún),查找到所需要的商品信息@Override publicList<UpdateGoods>findAll(StringkeyWord)throwsException{ List<UpdateGoods>all=newArrayList<UpdateGoods>(); Stringsql="selectGoodsId,Picture,GoodsName,Price,Number,IntroductionfromgoodswhereGoodsNamelike?"; connection=ConnectionManager.getConnction(); pst=connection.prepareStatement(sql); pst.setString(1,"%"+keyWord+"%"); ResultSetrs=pst.executeQuery(); UpdateGoodsupdGoods=newUpdateGoods(); while(rs.next()){
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)殖買(mǎi)賣(mài)合同范例
- 企業(yè)購(gòu)買(mǎi)二手房合同范例
- 供貨框架協(xié)議合同范例
- loft公寓合同范例
- 便利店進(jìn)貨合同范本
- 臨時(shí)供貨款合同范例
- 基于顯微特征與集成深度學(xué)習(xí)的古陶瓷窯口分類(lèi)研究
- 研發(fā)投入對(duì)比亞迪創(chuàng)新績(jī)效的影響
- DNA存儲(chǔ)糾錯(cuò)、安全與文件系統(tǒng)研究
- 基于全面預(yù)算管理的H公司成本管控問(wèn)題研究
- 靜脈留置針完整版課件
- 人力資源課件 -非人力資源經(jīng)理的人力資源管理
- GB/T 24475-2023電梯遠(yuǎn)程報(bào)警系統(tǒng)
- 衢州市建筑工程質(zhì)量通病防治措施
- 《中式面點(diǎn)技藝(第二版)》教案(高教版)
- 《神經(jīng)梅毒》教學(xué)課件
- 六年級(jí)下冊(cè)數(shù)學(xué)同步學(xué)堂
- 【電氣專(zhuān)業(yè)】15D501建筑物防雷設(shè)施安裝
- 通信施工安全生產(chǎn)培訓(xùn)(登高作業(yè)施工專(zhuān)題)
- 四位數(shù)乘四位數(shù)乘法題500道
- 企業(yè)生產(chǎn)管理-9S現(xiàn)場(chǎng)管理培訓(xùn)PPT課件教材講義
評(píng)論
0/150
提交評(píng)論