版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGE題目:網(wǎng)上銷售系統(tǒng)的設(shè)計與實現(xiàn)
網(wǎng)上銷售系統(tǒng)的設(shè)計與實現(xiàn)摘要:隨著當(dāng)今社會的不斷進步,Internet也得到了一個好的平臺去不斷地迅速發(fā)展,人們現(xiàn)在就渴望能夠充分地享受網(wǎng)絡(luò)帶來的便利,因此各種的網(wǎng)上銷售系統(tǒng)也應(yīng)運而生。而網(wǎng)上銷售系統(tǒng)的形成正是為了適應(yīng)當(dāng)今社會快節(jié)奏的生活,使得人們可以足不出戶就可以快捷方便地選擇自己需要、喜歡的商品。這樣可以給人們節(jié)省更多的空余時間去享受生活的樂趣,使得人們可以從繁鬧喧囂的城市生活中暫時走出來去放松自己,再以飽滿的熱情投入到之后的工作生活中。本網(wǎng)上銷售系統(tǒng)主要是在Windows7下,以Tomcat網(wǎng)絡(luò)信息服務(wù)作為應(yīng)用服務(wù)器,MySQL為數(shù)據(jù)庫開發(fā)平臺,采用JSP技術(shù)進行系統(tǒng)的頁面布局和開發(fā)。本系統(tǒng)分為前臺和后臺兩個部分,前臺部分主要是向用戶展示信息,方便用戶更好的了解此系統(tǒng);后臺部分主要是給管理員使用的,管理員可以對商品信息、用戶信息等進行管理。關(guān)鍵詞:方便快捷;網(wǎng)上銷售系統(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è)計的目標 11.3系統(tǒng)開發(fā)的意義 21.4本文研究內(nèi)容及主要貢獻 2第2章需求及可行性分析 32.1系統(tǒng)的可行性分析 32.1.1技術(shù)可行性 32.1.2經(jīng)濟可行性 32.1.3操作可行性 32.2系統(tǒng)的整體功能分析 32.2.1系統(tǒng)整體功能模塊設(shè)計 42.2.2數(shù)據(jù)庫整體設(shè)計分析 72.3本章小結(jié) 8第3章開發(fā)環(huán)境及相關(guān)技術(shù)簡介 93.1系統(tǒng)開發(fā)環(huán)境 93.1.1Eclipse 93.1.2數(shù)據(jù)庫簡介 93.1.3Tomcat 103.2系統(tǒng)開發(fā)技術(shù)與MVC模式 103.2.1JSP 103.2.2MVC模式 103.3B/S體系結(jié)構(gòu) 103.4本章小結(jié) 10第4章系統(tǒng)詳細設(shè)計 114.1后臺功能實現(xiàn) 114.1.1管理員登錄 114.1.2商品信息管理 124.1.3用戶信息管理 194.2前臺的功能實現(xiàn) 224.2.1用戶登錄注冊功能 224.2.2搜索商品功能 254.2.3購物車功能實現(xiàn) 264.3本章小結(jié) 29第5章系統(tǒng)測試與分析 305.1軟件測試 305.1.1測試的目的 305.1.2采用的測試手段 305.2系統(tǒng)運行環(huán)境 305.2.1硬件環(huán)境 305.2.2軟件環(huán)境 305.3網(wǎng)站測試 305.3.1用戶注冊登錄功能測試 305.3.2商品搜索功能測試 315.3.3加入購物車功能測試 325.4本章小結(jié) 32第6章總結(jié)與展望 336.1總結(jié) 336.2展望 33畢業(yè)設(shè)計體會 34致謝 35參考文獻 36英文翻譯資料 37第1章緒論21世紀是網(wǎng)絡(luò)飛速發(fā)展的時代,上網(wǎng)、創(chuàng)建網(wǎng)站已經(jīng)成為熱門話題。Internet得到持續(xù)、猛烈的發(fā)展,已經(jīng)成為計算機產(chǎn)業(yè)的一個熱點,越來越多的企業(yè)開始關(guān)注網(wǎng)絡(luò),許多人正在或正準備學(xué)習(xí)網(wǎng)絡(luò)知識,進行網(wǎng)絡(luò)開發(fā)或創(chuàng)建自己的網(wǎng)站。JSP的全稱是JavaServerPages,是一種以Java為主的跨平臺Web開發(fā)語言,它具有安全性,健全性,運行效率高等許多優(yōu)點。本次畢業(yè)設(shè)計——網(wǎng)上銷售系統(tǒng)的設(shè)計與實現(xiàn),是在Windows7下,采用JSP(JavaServerPages)技術(shù)開發(fā),數(shù)據(jù)庫開發(fā)平臺使用的是MySQL,Tomcat作為該系統(tǒng)的應(yīng)用服務(wù)器實現(xiàn)的。1.1研究背景最近幾年,隨著Internet的迅速發(fā)展,互聯(lián)網(wǎng)已經(jīng)成為人們收集提供各種信息的最佳渠道,并且已有逐步進入傳統(tǒng)的信息傳遞、接收領(lǐng)域的趨勢。于是電子商務(wù)應(yīng)運而生,不斷流行起來,使得越來越多的商家發(fā)現(xiàn)商機,紛紛在網(wǎng)絡(luò)上建起自己特色的在線商城,為的就是向消費者傳遞出一種新穎的購物理念。網(wǎng)上銷售系統(tǒng)強大的交互功能是其一個重要、有特色的地方,可使商家和用戶之間方便快捷地傳遞所需信息,進行商品交易,使得商家與用戶之間信息與資金的無紙化交換形成了一種全新的交易方式。網(wǎng)上銷售在人們?nèi)粘I钪凶兊迷絹碓讲豢扇鄙伲怯捎谒m應(yīng)了當(dāng)今社會快節(jié)奏的生活,使得人們可以足不出戶就可以很方便、很快捷、很輕松地選擇自己喜歡需要的商品。由日前公布的一項研究結(jié)果顯示,我國電子商務(wù)產(chǎn)業(yè)在近年來得到迅速地發(fā)展,已經(jīng)有超過10萬家的網(wǎng)上商店出現(xiàn)在人們的日常生活中,約為2000萬件的商品在網(wǎng)上商店展示過。該項研究是由上海東方網(wǎng)誠數(shù)據(jù)科技有限公司進行操作的,擁有網(wǎng)上商店系統(tǒng)和獨立域名的網(wǎng)站,以及部分具有一定規(guī)模,但是租用第三方平臺的網(wǎng)上商店都是其研究的對象,但不包括設(shè)在拍賣網(wǎng)站上的店鋪。PHP與ASP技術(shù)目前在國內(nèi)應(yīng)用較為廣泛,而由于JSP技術(shù)是一種新型的技術(shù),國內(nèi)使用的情況比較少。但是在國外,JSP已經(jīng)成為一種比較流行的技術(shù),尤其是在建設(shè)電子商務(wù)類的網(wǎng)站這塊大多數(shù)都是選擇采用JSP技術(shù),而且世界上一些大的提供商在提供電子商務(wù)解決方案這方面都采用是JSP/Servlet模式。所以總體看來在這三者中,能夠成為未來發(fā)展的趨勢應(yīng)該是JSP??偠灾珹SP、PHP、JSP三者支持者都有相當(dāng)大的數(shù)量,而這三者也是各有所長的。因此在以后的開發(fā)過程中,我們采用什么樣的技術(shù)應(yīng)該根據(jù)實際的需要來衡量,本網(wǎng)上銷售系統(tǒng)采用的是比較新的JSP技術(shù),采用它的原因是開發(fā)該系統(tǒng)的需求和JSP本身的一些安全性和跨平臺性比較好,同時我也希望自己能夠在通過開發(fā)該系統(tǒng)的過程中,學(xué)習(xí)一門新的編程語言。1.2設(shè)計的目標現(xiàn)在日常生活中的一些網(wǎng)上銷售系統(tǒng)頁面布局比較雜亂,查找商品不是很方便,還有一些網(wǎng)站在購物時可能存在一些風(fēng)險,所以現(xiàn)在網(wǎng)上銷售系統(tǒng)的設(shè)計要求是不僅僅要有賞心悅目的網(wǎng)站頁面顯示,更要有一個嚴謹?shù)囊?guī)劃,注意重視每一個細小的環(huán)節(jié),這樣才能使得一些不必要發(fā)生的錯誤在電子交易時得以避免。由專業(yè)的文字錄入人員將所需要的信息輸入到管理系統(tǒng)數(shù)據(jù)庫中的這種傳統(tǒng)管理信息系統(tǒng)信息的獲取方法在數(shù)據(jù)量不大時還可以使用,但是在數(shù)據(jù)量比較大并且有較強的專業(yè)性時,這時錄入出錯的可能性就會相應(yīng)的提高,同時也增加了錄入的成本,這樣就不是很劃算。我設(shè)計的目標是先建立數(shù)據(jù)庫和使用JSP技術(shù)編輯一些基礎(chǔ)的頁面,再運用JDBC技術(shù)把數(shù)據(jù)庫和動態(tài)網(wǎng)頁關(guān)聯(lián)起來,使得所需商品信息可以及時的保存、更新,可以更好的及時了解商品買賣的情況。1.3系統(tǒng)開發(fā)的意義人類社會得以更近一步的迅猛發(fā)展,電子商務(wù)的迅速發(fā)展起到了不少的作用,網(wǎng)絡(luò)銷售就是電子商務(wù)中一個很重要的附加產(chǎn)品。從購物測試來看,中國電子商務(wù)未來的發(fā)展前景顯著,擁有巨大的購物潛力。在如今的社會中,時下比較流行的網(wǎng)上銷售系統(tǒng)有“淘寶”、“京東”、“當(dāng)當(dāng)”等,它們都屬于相當(dāng)優(yōu)秀的電子商務(wù)網(wǎng)站并為其他的一些網(wǎng)站提供了一個良好的典范。在本次設(shè)計中我就是學(xué)習(xí)、參考他們的思想,通過分析這些網(wǎng)站的開發(fā)流程和完整的電子商務(wù)網(wǎng)站應(yīng)該具備的怎樣的功能以及一些注意事項。總之,隨著個人配備自己電腦的普及和使用電腦人數(shù)的增加,在眾多的銷售渠道中網(wǎng)絡(luò)銷售脫穎而出,其地位及占有量也在呈現(xiàn)逐漸增加的趨勢。1.4本文研究內(nèi)容及主要貢獻本論文主要從以下幾方面全面介紹網(wǎng)上銷售系統(tǒng)的開發(fā)過程:第一章緒論:本章簡要介紹該系統(tǒng)的一些發(fā)展歷程和現(xiàn)狀,同時闡述該系統(tǒng)實現(xiàn)的目標和意義。第二章需求及可行性分析:本章描述了系統(tǒng)的開發(fā)目標,系統(tǒng)的可行性分析以及系統(tǒng)功能模塊的設(shè)計分析,深入地確定每個模塊具備的功能與大致實現(xiàn)思路,還有數(shù)據(jù)庫的設(shè)計。第三章開發(fā)環(huán)境及相關(guān)技術(shù)簡介:本章介紹開發(fā)該系統(tǒng)所用到的各項技術(shù)與相應(yīng)的開發(fā)工具,還有開發(fā)環(huán)境。第四章系統(tǒng)詳細設(shè)計:本章具體的說明了系統(tǒng)的實現(xiàn)方法,明確了模塊間的聯(lián)系,分層次的說明了每個模塊的具體實現(xiàn)。第五章系統(tǒng)測試與分析:本章給出了測試的意義與部分模塊的測試過程。第2章需求及可行性分析在進行系統(tǒng)設(shè)計之前,需求及可行性分析是必不可少的,這樣可以全方面地考慮清楚系統(tǒng)的功能實現(xiàn)。下面主要就是從系統(tǒng)的可行性以及其整體功能進行分析,確定系統(tǒng)的功能如何實現(xiàn)。2.1系統(tǒng)的可行性分析可行性分析是對系統(tǒng)的開發(fā)從各個方面進行相應(yīng)的分析和研究,盡可能避免一些不必要產(chǎn)生的錯誤,保證系統(tǒng)成功開發(fā)的可能性。所以在進行系統(tǒng)開發(fā)時,要進行全面的調(diào)查,在此基礎(chǔ)上,再針對系統(tǒng)開發(fā)的必要性和可能性進行分析。這部分將從以下三個方面進行詳細分析:技術(shù)可行性、經(jīng)濟可行性、操作可行性。2.1.1技術(shù)可行性本系統(tǒng)使用的是JSP技術(shù)。JSP是Java在網(wǎng)站開發(fā)上的重要應(yīng)用技術(shù),擁有可以和各種Java技術(shù)完美地結(jié)合在一起的特性,同時利用JSP技術(shù)可以建立先進、安全和跨平臺的動態(tài)網(wǎng)站,因此成為一種非常流行的網(wǎng)站開發(fā)技術(shù)并且得到了人們廣泛的支持。鑒于JSP技術(shù)的成熟與廣泛的使用,所以本系統(tǒng)就是使用的該技術(shù)。而對于數(shù)據(jù)庫方面,在大學(xué)學(xué)習(xí)期間,我們學(xué)習(xí)的是SQLServer,但是由于我個人對MySQL數(shù)據(jù)庫的了解相對而言比較多,所以就決定采用MySQL作為本系統(tǒng)數(shù)據(jù)庫的后臺。2.1.2經(jīng)濟可行性根據(jù)調(diào)查的資料顯示,由于現(xiàn)在聘用一支專業(yè)的團隊設(shè)計并建設(shè)企業(yè)需求的商務(wù)網(wǎng)站的費用大概是5300元,另外每年還需交納網(wǎng)站空間占用和網(wǎng)站維護費600元。但是為了達到更好的效果,獲取更多的經(jīng)濟效益,花費在設(shè)計團隊上的費用就要相對增加,但這與網(wǎng)站成功建成后帶來的利益遠遠大于前期的成本投入,所以這些花費就不值一提了。網(wǎng)站雖然建成但后期的服務(wù)器、網(wǎng)絡(luò)線路和設(shè)備的維護費用也是要考慮的一個重要因素。2.1.3操作可行性現(xiàn)如今,隨著時代的發(fā)展在日常生活中計算機與網(wǎng)絡(luò)已經(jīng)得到非常大的普及,企業(yè)的員工也必須具備計算機應(yīng)用這一項技能。由于本網(wǎng)上銷售系統(tǒng)是以計算機作為服務(wù)器的網(wǎng)站,所以營銷商可以自己對自己的網(wǎng)站進行相應(yīng)的操作和管理。2.2系統(tǒng)的整體功能分析通過以上的一些分析,我們可以了解到首先要對所要設(shè)計的系統(tǒng)進行可行性分析,不要拿到一個項目就開始做,要分析一下這個項目是否有做的價值。所以我所要設(shè)計的網(wǎng)站是用戶可以在前臺瀏覽信息,管理員可以在后臺根據(jù)需求做出相應(yīng)的調(diào)整。前臺功能:提供用戶的注冊和登錄功能。用戶能夠隨意瀏覽商品,包括使用搜索功能,方便用戶查找并快速獲取商品的詳細信息,如圖片預(yù)覽、商品描述。登錄用戶可以使用購物車,可以將商品增加到,對購物車中的商品進行修改,包括修改商品的數(shù)量,刪除商品等。后臺功能:管理員可以更新、配置一些信息管理本網(wǎng)站。可以管理商品信息,包括商品信息的修改、刪除、查詢、增加??梢怨芾碛脩舻男畔?,包括用戶的查詢和刪除。2.2.1系統(tǒng)整體功能模塊設(shè)計 1、整體功能結(jié)構(gòu)如圖2.1所示:圖2.1整體功能模塊圖從圖中可以看出,此網(wǎng)上銷售系統(tǒng)分為前臺和后臺兩個部分,前臺部分主要是向用戶展示信息,方便用戶更好的了解此系統(tǒng);后臺部分主要是給管理員使用的,管理員可以對商品信息、用戶信息等進行管理。2、前臺購物流程圖如圖2.2所示。圖2.2前臺購物流程圖3、用戶注冊的流程如圖2.3所示。圖2.3用戶注冊流程圖由上圖可以看出,注冊功能其實就是增加用戶的信息。具體實現(xiàn)就是:點擊主頁面的“注冊”按鈕后,會跳到用戶注冊信息的頁面,用戶需要如實填寫用戶名、密碼、E_mail、地址、電話、真實姓名等各項信息,提交后,系統(tǒng)進行一些驗證判斷是否注冊成功。注冊成功后,用戶就可以在登錄后進行一些操作。4、商品搜索的流程如圖2.4所示。開始搜索開始搜索繼續(xù)搜索繼續(xù)搜索查看搜索到的商品添加到購物車輸入條件點擊搜索圖2.4商品搜索的流程圖商品的搜索功能是用戶可以查找所想要的一系列的商品,更加方便地查詢所需要的商品,這樣可以有效地節(jié)省時間,提高操作的效率。用戶搜索時只需要在搜索框中輸入商品的關(guān)鍵字就能搜索到所有與之相關(guān)的商品。5、用戶登錄流程如圖2.5所示。 圖2.5用戶登陸流程圖商務(wù)網(wǎng)站對其網(wǎng)站的穩(wěn)定性和安全性的要求很高,因此對用戶名的填寫要求要有一定的限制。所以每個用戶都要有一個唯一的用戶名,同時對密碼也要進行加密保護,將密碼加密后再存入數(shù)據(jù)庫。6、管理員對商品進行管理的流程如圖2.6所示。2.2.2數(shù)據(jù)庫整體設(shè)計分析1、數(shù)據(jù)庫需求分析其實數(shù)據(jù)庫的設(shè)計是為存放該系統(tǒng)所需要的信息。常用的數(shù)據(jù)庫管理系統(tǒng)有MySQL、SQLServer、Oracle等,我采用了MySQL對本系統(tǒng)的數(shù)據(jù)進行管理,建立的數(shù)據(jù)庫名為shopping。2、數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫的設(shè)計與建立至關(guān)重要,如果考慮不全面會為之后的開發(fā)產(chǎn)生不少的麻煩,所以我們必須先對本系統(tǒng)所需用到的一些數(shù)據(jù)進行一個大致的分類和具體的結(jié)構(gòu)設(shè)計,這樣可以清晰明了的了解本系統(tǒng)用到了哪些數(shù)據(jù),又可以能適應(yīng)系統(tǒng)各項功能的調(diào)用,而不至于產(chǎn)生結(jié)構(gòu)上的邏輯混亂。在數(shù)據(jù)庫進行設(shè)計的時候也要遵循一定的規(guī)則,只有遵循了這些規(guī)則后才能更好地新建好網(wǎng)站的“地基”,為之后的開發(fā)減輕負擔(dān)。所以我們要盡量做到一個實體對應(yīng)一個表,要搞清楚該實體應(yīng)該有哪些屬性以及與各個實體之間有什么樣的聯(lián)系。實體、屬性與聯(lián)系是進行數(shù)據(jù)庫設(shè)計時要充分考慮到三個重要元素,同時也是設(shè)計好的一個數(shù)據(jù)庫設(shè)計的核心。(1)、管理員表,系統(tǒng)管理員的登錄信息,管理員表結(jié)構(gòu),如表2.1所示。(2)、用戶表,記錄用戶的個人信息,用戶表結(jié)構(gòu),如表2.2所示。(3)、商品表,記錄商品信息,商品表結(jié)構(gòu),如表2.3所示。(4)、大類型表,記錄商品分類的信息,大類型表結(jié)構(gòu),如表2.4所示。(5)、小類型表,記錄商品的種類,小類型表結(jié)構(gòu),如表2.5所示。(6)、供應(yīng)商表,記錄商品供應(yīng)商的信息,供應(yīng)商表結(jié)構(gòu),如表2.6所示。(7)、購物車表,記錄購物車中存放的商品信息,購物車表結(jié)構(gòu),如表2.7所示。表2.1管理員表字段字段名稱字段類型允許為空備注Id管理員編碼Int否主鍵Name管理員名稱Varchar(20)否Password密碼Varchar(20)否表2.2用戶表字段字段名稱字段類型允許為空備注UserId用戶編號Int否主鍵UserName用戶名Varchar(255)否UserPwd密碼Varchar(255)否TrueName真實姓名Varchar(255)否Phone聯(lián)系方式Varchar(255)否Email郵箱Varchar(255)否Address地址Varchar(255)否表2.3商品表字段字段名稱字段類型允許為空備注GoodsId商品編號Int否主鍵GoodsName商品名Varchar(45)否Price單價Varchar(50)否Number庫存數(shù)量Int否Picture商品圖片Varchar(50)否Introduction商品簡介Varchar(1000)是SupplierId供應(yīng)商編號Int否外鍵SmallTypeId小類型編號Int否外鍵表2.4大類型表字段字段名稱字段類型允許為空備注BigTypeId大類型編號Int否主鍵BigTypeName大類型名稱Varchar(20)否表2.5小類型表字段字段名稱字段類型允許為空備注SmallTypeId小類型編號Int否主鍵SmallTypeName小類型名稱Varchar(20)否BigTypeId大類型編號Int否外鍵表2.6大類型表字段字段名稱字段類型允許為空備注SupplierId供應(yīng)商編號Int否主鍵SupplierName供應(yīng)商名稱Varchar(20)否表2.7購物車表字段字段名稱字段類型允許為空備注CartId購物車編號Int否主鍵Picture商品圖片Varchar(50)否GoodsName商品名稱Varchar(20)否Price價格Varchar(20)否userid關(guān)聯(lián)的用戶編號Int是外鍵2.3本章小結(jié)本章節(jié)主要是對網(wǎng)上購物系統(tǒng)進行需求分析,從技術(shù)、經(jīng)濟、操作等方面進行剖析,充分說明該課題的可行性。同時也對系統(tǒng)的一些功能模塊進行詳細的分析,明確之后的工作內(nèi)容。還有就是數(shù)據(jù)庫的設(shè)計,通過功能的需求進行確定數(shù)據(jù)庫到底該如何設(shè)計。第3章開發(fā)環(huán)境及相關(guān)技術(shù)簡介在確定系統(tǒng)的整體功能實現(xiàn)之后,就要根據(jù)系統(tǒng)的功能需求考慮好在設(shè)計系統(tǒng)是所需要用到的開發(fā)環(huán)境及技術(shù)。確定好之后可以設(shè)計出系統(tǒng)的總體框架,為之后的設(shè)計奠定基礎(chǔ)。3.1系統(tǒng)開發(fā)環(huán)境3.1.1EclipseEclipse是一個基于Java、開放源代碼的可擴展開發(fā)平臺。從其本身來說,它就僅僅是一組服務(wù)和一個框架,主要用來通過插件組件來構(gòu)建開發(fā)所需環(huán)境。值得一提的是,Eclipse自身附帶了一個非常標準的插件集,其中就包括了Java開發(fā)工具JDT。
在現(xiàn)如今,構(gòu)成了IBMJava開發(fā)工具系列的基礎(chǔ)的WebSphereStudioWorkbench應(yīng)用程序就是基于Eclipse開發(fā)的最突出的例子。還有例如WebSphereStudioApplicationDeveloper就添加了對JSP、servlet、Web服務(wù)和數(shù)據(jù)庫訪問等的支持。Eclipse開發(fā)界面如圖3.1所示。圖3.1Eclipse開發(fā)界面3.1.2數(shù)據(jù)庫簡介本系統(tǒng)使用的數(shù)據(jù)庫是MySQL,同時使用SQLyog這個數(shù)據(jù)庫開發(fā)工具對數(shù)據(jù)庫中的表進行設(shè)計。MySQL是一種輕量級的數(shù)據(jù)庫,它擁有很多的特性。如使用多種編譯器對代碼進行測試;支持多線程減輕主線程運行的工作量;優(yōu)化SQL語句的查詢算法更有效地提高查詢的速度。它既能夠在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中作為一個單獨的應(yīng)用程序應(yīng)用而存在,同時也能作為一個庫嵌入到其他的軟件中。對于語言方面提供多種多樣的編碼方式,常見的編碼方式有UTF-8、GBK、GB2312等。它還提供ODBC、JDBC和TCP/IP等多種數(shù)據(jù)庫連接的途徑,本系統(tǒng)就是使用JDBC連接數(shù)據(jù)庫的。3.1.3Tomcat作為一個輕量級應(yīng)用服務(wù)器的Tomcat,它在中小型的系統(tǒng)和并發(fā)訪問用戶不是很多的情況下才會被普遍使用,它同時也是開發(fā)和調(diào)試JSP程序的首要選擇。這就不僅僅是因為它運行時所占用的系統(tǒng)資源很小、擴展的性能好、支持負載平衡等這些開發(fā)應(yīng)用系統(tǒng)的常用功能;而且還因為它仍然還在不斷地改進和完善,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。3.2系統(tǒng)開發(fā)技術(shù)與MVC模式本系統(tǒng)采用JSP技術(shù),基于MVC模式開發(fā)。3.2.1JSP在網(wǎng)頁制作時,使用的JSP頁面看上去比較象HTML和XML頁面,這是因為JSP頁面的構(gòu)成就是在HTML文件中加入一些Java程序片段(Scriptlet)和JSP標記(tag)。它使用的比較強大的Java語言進行開發(fā),因此在網(wǎng)絡(luò)數(shù)據(jù)庫應(yīng)用開發(fā)這一領(lǐng)域就具有得天獨厚的優(yōu)勢。3.2.2MVC模式MVC(ModelViewController)是模型(model)、視圖(view)、控制器(controller)的縮寫,它就是一個框架模式,但它是軟件設(shè)計的一種典范,它可以使應(yīng)用程序的輸入、處理和輸出部分強制性的分離開來。MVC的三個核心部件的這種分離開方式可以使他們各自處理自己的任務(wù)。MVC的典型模式就是JavaBean+JSP+Servlet,而我在設(shè)計的過程就是使用的此模式。3.3B/S體系結(jié)構(gòu)本系統(tǒng)采用的是B/S體系結(jié)構(gòu),在B/S體系結(jié)構(gòu)中用戶可以向分布在網(wǎng)絡(luò)上的服務(wù)器發(fā)出請求,但這要通過瀏覽器實現(xiàn)。而服務(wù)器接收到瀏覽器的請求并對其進行處理,處理完之后就將用戶所需信息返回到瀏覽器上,展示給用戶。這種三層體系結(jié)構(gòu)如圖3.2所示。圖3.2B/S三層結(jié)構(gòu)示意圖3.4本章小結(jié)本章主要是對開發(fā)網(wǎng)上銷售系統(tǒng)所需要的一些開發(fā)工具的簡單介紹。這個網(wǎng)上銷售系統(tǒng)使用B/S開發(fā)結(jié)構(gòu),采用MVC框架在Eclipse中設(shè)計開發(fā),使用JSP設(shè)計網(wǎng)頁;后臺數(shù)據(jù)庫使用的是SQLyog對數(shù)據(jù)庫中的數(shù)據(jù)進行操作。第4章系統(tǒng)詳細設(shè)計網(wǎng)上銷售系統(tǒng)是為用戶提供足不出戶就可網(wǎng)上進行購買自己所需要的商品的服務(wù),該系統(tǒng)主要是對用戶信息、商品信息等幾個方面進行增加、查詢、修改、刪除的操作。下面也就是圍繞這幾個方面展開分析。4.1后臺功能實現(xiàn)主要是管理員對用戶信息、商品信息進行增、刪、改、查的一些操作。4.1.1管理員登錄首先確保服務(wù)器已打開并數(shù)據(jù)庫已連接成功,然后管理員才可以在瀏覽器上打開設(shè)定的網(wǎng)址:http://localhost:8080/Shopping/Goods/AdminLogin.html,進入登錄頁面。網(wǎng)站打開后的管理員登錄界面如圖4.1所示。圖4.1管理員登錄界面具體代碼實現(xià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、增加商品信息:管理員添加新的商品信息,使得新的商品信息能夠及時的記錄,以防忘記、遺漏。如圖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("商品編號"); returnfalse; } elseif(!GoodsIdRegex.test(GoodsIdObjValue)){ alert("商品編號格式不對"); returnfalse; } varGoodsNameObjValue=document.getElementsByName("GoodsName")[0].value; if(!GoodsNameObjValue){ alert("商品名稱必填"); returnfalse; } varPriceObjValue=document.getElementsByName("Price")[0].value; if(!PriceObjValue){ alert("價格必填"); returnfalse; } }</script>2、維護商品信息:主要是管理員查詢出所有數(shù)據(jù)庫中的商品信息,并對其進行修改、刪除的操作。如圖4.3所示。圖4.3商品查詢界面(1)、在搜索框中輸入你所要查詢的商品類型(如:女裝),點擊搜索按鈕。出現(xiàn)的結(jié)果如下圖4.4所示。圖4.4商品查詢顯示界面關(guān)鍵代碼實現(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('確定要刪除嗎?')\">刪除</a></td>");%> </tr> <%}%> <%}%> <%}%> (2)、點擊刪除按鈕,退跳出一個窗口問你是否要刪除這個商品信息。如果要刪除就點擊“確定”,否則點擊“取消”。點擊“確定”后就可刪除此商品信息,表中不在顯示。如圖4.5所示。圖4.5商品刪除界面(3)、點擊修改按鈕,就會出現(xiàn)如圖4.6的界面,然后進行修改,點擊修改的按鈕,保存修改后的信息,提示修改成功。圖4.6商品修改界面(4)、商品管理模塊具體代碼實現(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對象實例 }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ù)商品的編號刪除商品信息 @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ù)大類型的名稱查詢商品信息 @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ù)商品編號查詢商品信息 @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用戶信息管理1、維護用戶信息:由于管理員的權(quán)限問題,管理員只能對用戶信息進行查詢與刪除的操作,不能進行添加與修改。(1)、用戶查詢用戶信息:不在輸入框中填寫要搜索的用戶名,直接點擊“搜索”按鈕,即可查看所有用戶信息。也可以輸入用戶名,查看的你想要的用戶信息,清楚的了解你想要查看的用戶,方便對用戶信息的管理,如圖4.7所示。圖4.7用戶查詢界面(2)、刪除用戶:想要刪除用戶,即可點擊這個用戶所在那一行后面“刪除”的按鈕就可刪除該用戶信息。刪除前如圖4.8所示,刪除后如圖4.9所示。圖4.8用戶刪除前界面圖4.9用戶刪除后界面(3)、用戶管理模塊關(guān)鍵代碼如下://刪除用戶信息@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); } } //獲得所有用戶信息 @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; } //通過用戶名獲取用戶信息 @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前臺的功能實現(xiàn)主要是在首頁是一些商品的展示;給用戶提供注冊,對自己所填信息的一些管理;瀏覽商品信息,將需要的商品加入購物車,對購物車進行管理的一些功能。4.2.1用戶登錄注冊功能一個新用戶可以在首頁瀏覽一些商品的信息,快速搜索到自己所需要的商品,但要加入購物車就要進行注冊,否則不能實現(xiàn)一些功能,首頁如圖4.10所示。圖4.10首頁點擊頭頁面的登錄或注冊按鈕,進行登錄和注冊的操作。如果已經(jīng)注冊過可以直接登錄,沒有注冊過的可以點擊“立即注冊”或首頁的注冊按鈕完成注冊工作,如圖4.11和圖4.12所示。圖4.11用戶登錄界面圖4.12用戶注冊界面具體代碼實現(xiàn)如下://通過用戶名稱獲取密碼@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; }//用戶輸入信息驗證 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('帳號或密碼錯誤,請重新輸入');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('帳號或密碼錯誤,請重新輸');history.back();</script>"); } } }catch(Exceptione){ e.printStackTrace(); } }//使用MD5方法對用戶密碼進行加密 publicstaticfinalStringEncoderPwdByMd5(Stringstr)throwsException{ //確定計算方法 MessageDigestmd5=MessageDigest.getInstance("MD5"); BASE64Encoderbase64en=newBASE64Encoder(); //加密后的字符串 Stringnewstr=base64en.encode(md5.digest(str.getBytes("utf-8"))); returnnewstr; }}4.2.2搜索商品功能在搜索框中輸入你想查找的商品(如:T恤),點擊搜索按鈕即可查看到所有的你想要的商品信息,如圖4.13和圖4.14所示。圖4.13商品搜索頁面圖4.14查找到的商品展示頁面搜索代碼具體實現(xià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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025工程設(shè)備租賃合同書模板
- 聘用合同范本標準版7篇
- 2025盈江婦幼中心工程建設(shè)工程委托監(jiān)理合同
- 2025勞動合同書(全國版)
- 2025網(wǎng)絡(luò)廣告服務(wù)合同(設(shè)計、制作、發(fā)布)
- 課題申報參考:考慮消費者囤積和直播促銷長期影響的供應(yīng)鏈協(xié)調(diào)優(yōu)化策略研究
- 2024年電池組配件項目投資申請報告
- 家庭影音設(shè)備的使用技巧與體驗提升
- 7年級道法試題 答案 7年級道法試題
- 國家森林公園景區(qū)信息化建設(shè)規(guī)劃方案
- 我的家鄉(xiāng)瓊海
- (2025)專業(yè)技術(shù)人員繼續(xù)教育公需課題庫(附含答案)
- 《互聯(lián)網(wǎng)現(xiàn)狀和發(fā)展》課件
- 【MOOC】計算機組成原理-電子科技大學(xué) 中國大學(xué)慕課MOOC答案
- 2024年上海健康醫(yī)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
- 2024年湖北省武漢市中考語文適應(yīng)性試卷
- 非新生兒破傷風(fēng)診療規(guī)范(2024年版)解讀
- EDIFIER漫步者S880使用說明書
- 上海市華東師大二附中2025屆高二數(shù)學(xué)第一學(xué)期期末統(tǒng)考試題含解析
- IP授權(quán)合作合同模板
- 2024中華人民共和國農(nóng)村集體經(jīng)濟組織法詳細解讀課件
評論
0/150
提交評論