版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上信息工程學(xué)院本科畢業(yè)論文(2010屆)題 目電腦銷售管理系統(tǒng)設(shè)計與開發(fā)系計算機(jī)專 業(yè)計算機(jī)科學(xué)與技術(shù)(信息工程學(xué)院)班 級學(xué) 號學(xué)生姓名沈華清指導(dǎo)教師諶志群完成日期2010年6月專心-專注-專業(yè)摘 要在計算機(jī)飛速發(fā)展的今天,采用計算機(jī)來對產(chǎn)品進(jìn)行管理已成為銷售市場科學(xué)化和現(xiàn)代化的重要標(biāo)志,它給買家和賣家都帶來了明顯的經(jīng)濟(jì)效益和社會效益。電腦在每年的銷售量都保持在一個驚人的數(shù)量級上,可以說如今電腦已成為人們生活中的一部分。因此,開發(fā)一個電腦銷售管理系統(tǒng)是相當(dāng)有必要的。本次畢業(yè)設(shè)計要實(shí)現(xiàn)的是一個電腦銷售管理系統(tǒng),該系統(tǒng)基本實(shí)現(xiàn)了以下的功能:注冊為該網(wǎng)站的用戶,在這個模塊中
2、主要使用了Struts的Validator驗(yàn)證器來對用戶輸入的格式進(jìn)行驗(yàn)證,Ajax技術(shù)來確保賬號的唯一性;一般權(quán)限的用戶可以對在售電腦的信息進(jìn)行瀏覽,瀏覽又可以分為機(jī)型分類,店主推薦機(jī)型,熱門機(jī)型,新機(jī)型和熱賣機(jī)型的瀏覽,這塊主要通過在Jsp頁面使用Div和Css來實(shí)現(xiàn);具有管理權(quán)限的用戶能對已注冊用戶的賬號有效性以及合法性進(jìn)行審核,添加新型的電腦,刪除不銷售的電腦,對用戶生成的訂單進(jìn)行瀏覽和發(fā)貨操作。本課題所要設(shè)計與實(shí)現(xiàn)的系統(tǒng)是用Java結(jié)合Mysql數(shù)據(jù)庫來實(shí)現(xiàn),其中主要運(yùn)用Java中的MVC框架,用JavaBean來做Model,完成對數(shù)據(jù)的讀取,用Sevelet來作為Controle
3、r,來接受用戶的輸入并調(diào)用Model和Model去完成用戶的需求,用Jsp頁面來作為View完成與用戶之間信息的交互。關(guān)鍵詞:銷售系統(tǒng);Java;Jsp;Mysql數(shù)據(jù)庫ABSTRACTToday, with the rapid development of the computer, using computers to manage product has become an important scientific and modern symbol in sales market. It gives buyers and sellers have brought significant
4、 economic and social benefits. Computer sales are kept at an alarming magnitude each year, it can be said now the computer has become a part of life. Therefore, the development of a computerized sales management system is very necessary.The graduation project is to be achieved by a computer sales ma
5、nagement system,this system basically the following functions: Registration for the site's users, in this module, i use the validator of Struts Validator to format what the user input, and use Ajax technology to ensure the uniqueness of account; users who has general authority can browse the inf
6、ormation of the computer in the sale, this model can be divided into categories model, recommended model, hot model, new model and hot rank model.this function achieves primarily through the use of Div and Css in the Jsp page; users with administrative privileges can review the validity and legality
7、 on registered account, add new computers, delete computers which does not sell, and browse user-generated orders and send computers operations.The system is combined with Java and Mysql database, primarily using the MVC framework in Java. To use the JavaBean as Model, read the data from database, u
8、sing Sevelet as Controler, to accept user input and calls the Model and View to complete the needs of users, with Jsp page as View complete information between the user interaction.Key words:Sales system;Java;Jsp;Mysql database目 錄1 引言 電子商務(wù)給我們的日常生活帶去的好處是顯而易見的。首先,我們可以對現(xiàn)有的資源進(jìn)行合理的利用。在經(jīng)濟(jì)全球化發(fā)展中,我們不能只故眼前的利
9、益而放棄了更好的發(fā)展道路。因?yàn)榛ヂ?lián)網(wǎng)的普及和電子商務(wù)的日益完善,最先加入網(wǎng)絡(luò)貿(mào)易的商家將受益無窮。供需雙方可以通過Internet獲得豐富的供求信息,開拓廣闊渠道,捕捉商機(jī)、尋找客戶,提高工作效率。電子商務(wù)是一種方式、一種媒介、一種信息共享。它可以實(shí)現(xiàn)無紙化辦公,通過降低傳統(tǒng)企業(yè)在制作、傳送、管理和處理紙質(zhì)文件的成本,不僅可以降低這些紙質(zhì)文件的成本,更重要的是簡化流程、減少耽擱和錯誤,提高公司的靈活性、應(yīng)變能力和提供更好的服務(wù)能力。它還可以實(shí)現(xiàn)即時生產(chǎn)、即時經(jīng)銷、即時服務(wù)和即時通信。其次,互聯(lián)網(wǎng)使我們對傳統(tǒng)的空間概念發(fā)生變化,出現(xiàn)了有別于實(shí)際地理空間的虛擬空間或者虛擬社會。處于世界任何角落的個
10、人、公司或機(jī)構(gòu),可以通過互聯(lián)網(wǎng)緊密地聯(lián)系在一起,建立虛擬社區(qū)、虛擬公司、虛擬政府、虛擬商場、虛擬大學(xué)或者虛擬研究所等,以達(dá)到信息共享、資源共享、智力共享等。然后,電子商務(wù)也任然保留了傳統(tǒng)商品交易中的互動性。通過互聯(lián)網(wǎng),商家之間可以直接交流、談判、簽合同,消費(fèi)者也可以把自己的反饋建議反映到企業(yè)或商家的網(wǎng)站,而企業(yè)或者商家則會根據(jù)消費(fèi)者的反饋及時調(diào)查產(chǎn)品種類及服務(wù)品質(zhì),做到良性互動. 借助于電子商務(wù)的如此多的優(yōu)勢之上,杭州的百腦匯在線電腦銷售系統(tǒng)取得了巨大的成功,它具有瀏覽電腦信息,在線交易,送貨上門等功能。它讓我們即使不用去電腦商城也能夠?qū)Ω鞣N品牌,各種型號的電腦信息有個比較直觀的了解。和傳統(tǒng)的
11、交易方式相比,百腦匯在線電腦銷售系統(tǒng)有很多優(yōu)越之處,如它可以突破地域和時間限制,使處于不同地區(qū)的人們自由地傳遞信息、互通有無、開展貿(mào)易,它的快捷、迅速、自由是傳統(tǒng)的電腦商城所無法比擬的。因此,電腦的在線銷售也必將在不久的將來成為主流,所以開發(fā)一個基于B/S結(jié)構(gòu)的電腦銷售系統(tǒng)也是十分有意義的1。2 開發(fā)環(huán)境的介紹及安裝2.1 Java概述 Java是一個廣泛使用的網(wǎng)絡(luò)編程語言,它是一種新的計算概念。Java語言是一種面向?qū)ο蟮恼Z言,它通過提供最基本的方法來完成指定的任務(wù),只需理解一些基本的概念,就可以用它編寫出適合于各種情況的應(yīng)用程序。Java略去了運(yùn)算符重載、多重繼承等模糊的概念,并且通過實(shí)現(xiàn)
12、自動垃圾收集大大簡化了程序設(shè)計者的內(nèi)存管理工作2。 Java語言的設(shè)計集中于對象及其接口,它提供了簡單的類機(jī)制以及動態(tài)的接口模型。對象中封裝了它的狀態(tài)變量以及相應(yīng)的方法,實(shí)現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,并且通過繼承機(jī)制,子類可以使用父類所提供的方法,實(shí)現(xiàn)了代碼的復(fù)用。用于網(wǎng)絡(luò)、分布環(huán)境下的Java必須要防止病毒的入侵。 Java不支持指針,一切對內(nèi)存的訪問都必須通過對象的實(shí)例變量來實(shí)現(xiàn),這樣就防止程序員使用“特洛伊”木馬等欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易產(chǎn)生的錯誤。與平臺無關(guān)的特性使 Java程序可以方便地被移植到網(wǎng)絡(luò)上的不同機(jī)器。 同時,Java的類
13、庫中也實(shí)現(xiàn)了與不同平臺的接口,使這些類庫可以移植。另外,Java編譯器是由Java語言實(shí)現(xiàn)的,Java運(yùn)行時系統(tǒng)由標(biāo)準(zhǔn)C實(shí)現(xiàn),這使得Java 系統(tǒng)本身也具有可移植性。Java的設(shè)計使它適合于一個不斷發(fā)展的環(huán)境。在類庫中可以自由地加入新的方法和實(shí)例變量而不會影響用戶程序的執(zhí)行。并且 Java通過接口來支持多重繼承,使之比嚴(yán)格的類繼承具有更靈活的方式和擴(kuò)展性。 2.2 Jsp的介紹 Jsp規(guī)范是Web服務(wù)器、應(yīng)用服務(wù)器、交易系統(tǒng)、以及開發(fā)工具供應(yīng)商間廣泛合作的結(jié)果。Sun公司開發(fā)出這個規(guī)范來整合和平衡已經(jīng)存在的對Java編程環(huán)境(例如,Java Servlet和JavaBeansTM)進(jìn)行支持的技
14、術(shù)和工具。其結(jié)果是產(chǎn)生了一種新的、開發(fā)基于Web應(yīng)用程序的方法,給予使用基于組件應(yīng)用邏輯的頁面設(shè)計者以強(qiáng)大的功能3。 Jsp技術(shù)在多個方面加速了動態(tài)Web頁面的開發(fā):首先,使用Jsp技術(shù),Web頁面開發(fā)人員可以使用HTML或者XML標(biāo)識來設(shè)計和格式化最終頁面。使用 Jsp標(biāo)識或者小腳本來生成頁面上的動態(tài)內(nèi)容(內(nèi)容是根據(jù)請求來變化的,例如請求帳戶信息或者特定的一瓶酒的價格)。生成內(nèi)容的邏輯被封裝在標(biāo)識和 JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。如果核心邏輯被封裝在標(biāo)識和Beans中,那么其他人,如Web管理人員和頁面設(shè)計者,能夠編輯和使用Jsp頁面,而不影響內(nèi)容的
15、生成。在服務(wù)器端,Jsp引擎解釋Jsp標(biāo)識和小腳本,生成所請求的內(nèi)容(例如,通過訪問JavaBeans組件,使用JDBCTM技術(shù)訪問數(shù)據(jù)庫,或者包含文件),并且將結(jié)果以HTML(或者XML)頁面的形式發(fā)送回瀏覽器。這有助于作者保護(hù)自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。 其次,Web頁面開發(fā)人員不會都是熟悉腳本語言的編程人員。JavaServer Page技術(shù)封裝了許多功能,這些功能是在易用的、與Jsp相關(guān)的XML標(biāo)識中進(jìn)行動態(tài)內(nèi)容生成所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識能夠訪問和實(shí)例化 JavaBeans組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行用其他方法更難于編碼
16、和耗時的功能。通過開發(fā)定制化標(biāo)識庫,Jsp技術(shù)是可以擴(kuò)展的。今后,第三方開發(fā)人員和其他人員可以為常用功能創(chuàng)建自己的標(biāo)識庫。這使得Web頁面開發(fā)人員能夠使用熟悉的工具和如同標(biāo)識一樣的執(zhí)行特定功能的構(gòu)件來工作。Jsp技術(shù)很容易整合到多種應(yīng)用體系結(jié)構(gòu)中,以利用現(xiàn)存的工具和技巧,并且擴(kuò)展到能夠支持企業(yè)級的分布式應(yīng)用。作為采用Java技術(shù)家族的一部分,以及Java 2(企業(yè)版體系結(jié)構(gòu))的一個組成部分,Jsp技術(shù)能夠支持高度復(fù)雜的基于Web的應(yīng)用。由于Jsp頁面的內(nèi)置腳本語言是基于Java編程語言的,而且所有的Jsp頁面都被編譯成為Java Servlet,Jsp頁面就具有Java技術(shù)的所有好處,包括健壯
17、的存儲管理和安全性。作為Java平臺的一部分,Jsp擁有Java編程語言“一次編寫,各處運(yùn)行”的特點(diǎn)。隨著越來越多的供應(yīng)商將Jsp支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,更改工具或服務(wù)器并不影響當(dāng)前的應(yīng)用。當(dāng)與Java 2平臺,企業(yè)版(J2EE)和Enterprise JavaBean技術(shù)整合時,Jsp頁面將提供企業(yè)級的擴(kuò)展性和性能,這對于在虛擬企業(yè)中部署基于Web的應(yīng)用是必需的。2.3 Myeclipse的安裝我是依照Myeclipse中文版本的安裝過程來講解和截屏的,如果你手里有的是Myeclipse的其它版本,也別擔(dān)心,因?yàn)闊o論是Myeclipse的哪個版本,安裝過程
18、幾乎都是一樣的,最多是在安裝功能選項(xiàng)中,有些版本功能多,有些版本功能少而已。由于沒有安裝光盤,我就下載了一個。雙擊下載的exe文件,即可進(jìn)行解包,這步所花時間較長,你會看到圖2-1所示。圖2-1 安裝路徑界面選擇安裝Myeclipse 6.0的目錄,如圖2-2所示。圖2-2 安裝過程界面選擇開始菜單中的程序組,用如圖2-3所示的選擇即可。圖2-3 安裝過程界面開始安裝Myeclipse 6.0,如圖2-4所示。圖2-4 安裝過程界面確認(rèn)安裝,至此,你已經(jīng)成功安裝好了Myeclipse 6.03 系統(tǒng)分析3.1 系統(tǒng)設(shè)計的背景信息是當(dāng)代最流行的詞語之一。翻開書報充滿眼簾的是“信息時代”、“信息科
19、學(xué)”、“信息技術(shù)”、“信息產(chǎn)業(yè)”、“信息就是財富”等等。“信息是物質(zhì)的基本屬性之一,是物質(zhì)間接存在性的自身顯示。信息的作用是消除不確定性。”4在經(jīng)濟(jì)日益全球化的今天,我們看到計算機(jī)網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,利用因特網(wǎng)實(shí)現(xiàn)商務(wù)活動的國際化、信息化和無紙化,已經(jīng)成為經(jīng)濟(jì)全球化發(fā)展的一大趨勢。電子商務(wù)正是為了適應(yīng)這種以全球?yàn)槭袌龅淖兓l(fā)展起來的,并已在國際貿(mào)易和商業(yè)領(lǐng)域得到廣泛應(yīng)用,而本課題正是對電子商務(wù)的具體化實(shí)際應(yīng)用。3.2 系統(tǒng)需求分析本畢設(shè)課題是要設(shè)計與開發(fā)一個在線的電腦銷售管理系統(tǒng),該系統(tǒng)主要包括用戶賬號注冊,電腦信息的品牌分類、店主推薦機(jī)型、新上架機(jī)型、熱賣機(jī)型和熱賣機(jī)型榜的瀏覽,下訂單,管
20、理員對賬號、訂單、產(chǎn)品的上架與下架的管理等幾個部分。系統(tǒng)主要劃分為以下幾個模塊:1)用戶注冊模塊:創(chuàng)建用戶進(jìn)入購買頁面的賬號。2)電腦信息瀏覽模塊:實(shí)現(xiàn)對不同品牌電腦的基本信息瀏覽。3)訂單模塊:收集用戶購買的電腦信息。4)管理員模塊:實(shí)現(xiàn)管理員的登錄以及對注冊用戶的賬號審核和刪除。5)電腦上架與下架:產(chǎn)品入庫與出庫的管理。6)訂單管理:送貨地址的審核以及進(jìn)行發(fā)貨操作。3.3 系統(tǒng)開發(fā)的目標(biāo)在軟件開發(fā)項(xiàng)目中,信息管理的影子隨處可見,但要真正使技術(shù)人員的積極性都發(fā)揮出來,并不是“影子”所能完成的。正所謂“知易行難”,信息管理并不僅僅是管理信息這么簡單。它有一套完備的目標(biāo)體系;它需要科學(xué)的方法,需
21、要一種對時間進(jìn)度、任務(wù)分解、績效控制的把握和判斷的過程。而該銷售系統(tǒng)開發(fā)的目標(biāo)就是為了讓更多的人能夠在線了解最新的電腦資訊,使他們能夠更加便捷的購買電腦。軟件的開發(fā)本身就是一件很好的事情,能夠讓技術(shù)人員開發(fā)研究一個比較完善的系統(tǒng),能夠更好的讓客戶使用,讓更多的人方便使用,了解和知道系統(tǒng)軟件的可行性和可操作性。3.4 數(shù)據(jù)庫分析什么是數(shù)據(jù)庫呢?當(dāng)人們從不同的角度來描述這一概念時就有不同的定義(當(dāng)然是描述性的)。例如,稱數(shù)據(jù)庫是一個“記錄保存系統(tǒng)”(該定義強(qiáng)調(diào)了數(shù)據(jù)庫是若干記錄的集合)。又如稱數(shù)據(jù)庫是“人們?yōu)榻鉀Q特定的任務(wù),以一定的組織方式存儲在一起的相關(guān)的數(shù)據(jù)的集合”(該定義側(cè)重于數(shù)據(jù)的組織)。
22、更有甚者稱數(shù)據(jù)庫是“一個數(shù)據(jù)倉庫”。當(dāng)然,這種說法雖然形象,但并不嚴(yán)謹(jǐn)。嚴(yán)格地說,數(shù)據(jù)庫是“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫” 5。在經(jīng)濟(jì)管理的日常工作中,常常需要把某些相關(guān)的數(shù)據(jù)放進(jìn)這樣“倉庫”,并根據(jù)管理的需要進(jìn)行相應(yīng)的處理。例如,在本次畢業(yè)設(shè)計中的電腦信息表,在該表中保存了電腦的基本參數(shù)(電腦編號,屏幕尺寸,顯卡類型,產(chǎn)品定位,產(chǎn)品重量,Cpu類型,內(nèi)存大小,硬盤大?。?,這張表就可以看成是一個數(shù)據(jù)庫。有了這個“數(shù)據(jù)倉庫”我們就可以根據(jù)需要隨時查詢某類型電腦的基本情況,也可以查詢在某個特定內(nèi)存區(qū)間內(nèi)的電腦類型等等。這些工作如果都能在計算機(jī)上自動進(jìn)行,那我們的人事管理就可以達(dá)到極高的
23、水平。此外,在財務(wù)管理、倉庫管理、生產(chǎn)管理中也需要建立眾多的這種“數(shù)據(jù)庫”,使其可以利用計算機(jī)實(shí)現(xiàn)財務(wù)、倉庫、生產(chǎn)的自動化管理。4 系統(tǒng)設(shè)計4.1 總體設(shè)計在需求明確、準(zhǔn)備開始編碼之前,要做總體設(shè)計,而詳細(xì)設(shè)計會在后一章節(jié)詳細(xì)說明與設(shè)計。因此,對于總體設(shè)計只要介紹系統(tǒng)軟件所需要實(shí)現(xiàn)的功能和操作,對后面的開發(fā)、測試、實(shí)施、維護(hù)工作起到關(guān)鍵性的影響6。在電腦銷售管理系統(tǒng)中,對特別而強(qiáng)的功能是不要求,只需簡單實(shí)現(xiàn)基本功能就可以了,因此以用戶注冊,電腦瀏覽,訂單生成,管理員管理等操作功能作為基本功能來開發(fā)總體設(shè)計??傮w設(shè)計的界面也是很簡單的,就主要以電腦瀏覽頁面做為主頁面,其他功能的頁面作為子頁面。通
24、過對該系統(tǒng)簡單分析,所需總體設(shè)計的方面有以下幾個:1)需要做好數(shù)據(jù)庫的準(zhǔn)備,通過Mysql數(shù)據(jù)庫來完成數(shù)據(jù)的輸入工作,通過SQL語句來實(shí)現(xiàn)簡單的儲存過程;2)前臺的頁面設(shè)計盡量簡單化、可視化、可操作化、可擴(kuò)充化;3)前臺頁面功能的設(shè)計通過在Myeclipse下編寫Jsp頁面來實(shí)現(xiàn);4)要求做到本系統(tǒng)的擴(kuò)充性和可更新性,就是在對數(shù)據(jù)庫進(jìn)行修改、添加、更新等操作。4.1.1 數(shù)據(jù)表結(jié)構(gòu)的建立通過本系統(tǒng),需要建立的表有七張,分別為:d_d_user,d_d_computer,d_d_order,d_d_category,d_d_product,d_d_receive_address,d_d_orde
25、r_detail。d_d_user表中存儲用戶的基本信息,該表中的Email字段用來存儲登錄的賬號,Is_email_verify用來查看是否通過郵箱驗(yàn)證,通過驗(yàn)證的該字段為1,未通過的則為0,其結(jié)構(gòu)如表4-1所示。表4-1 d_d_user表字段名類型意義Id整型(12)用戶編號Email文本(50)帳號名Nickname文本(50)昵稱Password文本(50)密碼Is_email_verify整型(1)是否通過郵箱驗(yàn)證Email_verify_code文本(50)郵箱的驗(yàn)證碼d_d_category表中存儲電腦的不同品牌信息,該表中的Turn字段用來存儲每個類別下子類別的個數(shù),Pare
26、nt_id中存儲的是父類的Id號,方便分類存取,其結(jié)構(gòu)如表4-2所示。表4-2 d_d_category表字段名類型意義Id整型(12)類別編號Turn整型(3)子類序號En_name文本(50)英文名稱Cn_name文本(50)中文名稱Parent_id整型(12)所屬父類編號d_d_computer表中存儲電腦參數(shù)信息,其結(jié)構(gòu)如表4-3所示。 表4-3 d_d_computer表字段名類型意義Id整型(12)電腦編號Screen_size文本(20)屏幕尺寸Graphics文本(50)顯卡類型Types文本(20)產(chǎn)品定位Weight文本(20)產(chǎn)品重量Cpu文本(20)Cpu類型Memo
27、ry 文本(20)內(nèi)存大小Hard_size文本(20)硬盤大小d_d_product表中存儲電腦參數(shù)信息,該表中的Id為d_d_computer表的外鍵,并且兩表做了級聯(lián)操作,Category_id字段存儲的是該產(chǎn)品的類別號,需用時可以直接通過取該產(chǎn)品的Category_id來達(dá)到取該產(chǎn)品信息的目的,其結(jié)構(gòu)如表4-4所示。 表4-4 d_d_product表字段名類型意義Id整型(12)電腦編號Category_id整型(12)類別號Product_name文本(100)產(chǎn)品名稱Add_time長整型(20)入庫時間Fixed_price雙進(jìn)度浮點(diǎn)型市場價Dang_price雙進(jìn)度浮點(diǎn)型會員
28、價Product_pic文本(200)電腦圖片d_d_order表中存儲訂單信息,該表中的User_id與Send_id是為了方便做表關(guān)聯(lián)查詢操作而設(shè)置的字段,他們分別表示在d_d_user表中的用戶Id和在d_d_receive_address表的Id,Status表示的是訂單的狀態(tài),為1時表示該訂單已發(fā)貨,為0時則表示還未發(fā)貨,由于在程序中調(diào)用的是系統(tǒng)的毫秒數(shù),所以在設(shè)計Order_time類型時采用的是長整形,其結(jié)構(gòu)如表4-5所示。表4-5 d_d_order表字段名類型意義Id整型(10)訂單編號User_id整型(10)用戶編號Send_id整型(12)送貨地址號Status整型(1
29、0)訂單狀態(tài)Order_time長整型(20)下訂單日期Total_price雙進(jìn)度浮點(diǎn)型訂單總價Send_time長整型(20)出貨日期d_d_order_detail表中存儲訂單詳細(xì)信息,表中的Order_id字段與表d_d_order中的Id相對應(yīng),方便對訂單詳細(xì)信息的了解,其結(jié)構(gòu)如表4-6所示。 表4-6 d_d_order_detail表字段名類型意義Id整型(12)編號Order_id整型(12)訂單編號Product_name文本(50)貨物名稱Num整型(50)貨物數(shù)量d_d_receive_address表中存儲送貨信息,表中的User_id字段與表d_d_user中的Id相
30、對應(yīng),方便對用戶信息表的關(guān)聯(lián)操作,其結(jié)構(gòu)如表4-7所示。 表4-7 d_d_receive_address表字段名類型意義Id整型(12)送貨編號User_id整型(10)用戶編號Receive_name文本(20)收貨人Full_address文本(200)送貨地址Postal_code文本(8)郵編Mobile文本(15)手機(jī)號Phone文本(20)固定電話4.1.2 數(shù)據(jù)庫中數(shù)據(jù)建立通過該系統(tǒng),需要建立的表數(shù)據(jù)有三張分別為:d_d_computer,d_d_category,d_d_product。d_d_category表所要建立如圖4-1數(shù)據(jù)所示。圖4-1 d_d_category表
31、中數(shù)據(jù)的顯示 d_d_computer表所要建立如圖4-2數(shù)據(jù)所示。 圖4-2 d_d_computer表中數(shù)據(jù)的顯示 d_d_product表所要建立如圖4-3數(shù)據(jù)所示。 圖4-3 d_d_product表中數(shù)據(jù)的顯示4.2 詳細(xì)設(shè)計最重要的部分是模塊的流程圖、狀態(tài)圖、局部變量及相應(yīng)的文字說明等。在這個階段,各個模塊可以分給不同的人去并行設(shè)計,當(dāng)然設(shè)計就本人一個人全部實(shí)現(xiàn)系統(tǒng)設(shè)計。在詳細(xì)設(shè)計階段,設(shè)計者的工作對象是一個模塊,根據(jù)總體設(shè)計賦予的局部任務(wù),設(shè)計并表達(dá)出模塊的流程、狀態(tài)轉(zhuǎn)換等內(nèi)容。該系統(tǒng)詳細(xì)設(shè)計的有幾個功能界面7。比如用戶注冊,電腦瀏覽,訂單生成,管理員管理,其中把電腦瀏覽頁面作為
32、主界面進(jìn)行設(shè)計和功能實(shí)現(xiàn)。詳細(xì)設(shè)計主要是對總體設(shè)計進(jìn)行詳細(xì)的開發(fā)和設(shè)計,其中設(shè)計包括前臺的界面設(shè)計和后臺數(shù)據(jù)庫的設(shè)計。后臺對數(shù)據(jù)庫的輸入,對其進(jìn)行分析,然后在前臺進(jìn)行控件的使用,代碼的編程。詳細(xì)設(shè)計主要包括界面的設(shè)計,操作功能的初步實(shí)現(xiàn)如(添加、刪除、修改等功能)。以及實(shí)現(xiàn)每一個操作功能。4.2.1 功能設(shè)計界面對于用戶的功能設(shè)計界面分為以下幾個基本功能。如圖4-4所示。 圖4-4 系統(tǒng)的功能圖用戶主界面就是一個電腦瀏覽的頁面,用電腦瀏覽作為主界面,其他頁面作為子頁面。通過用戶主界面的鏈接來跳轉(zhuǎn)其他界面。通過跳轉(zhuǎn)的代碼編程來實(shí)現(xiàn)主頁面跳轉(zhuǎn)到其他子頁面。5 系統(tǒng)實(shí)現(xiàn)5.1 用戶注冊模塊的實(shí)現(xiàn) 在
33、該模塊中,采用Jsp頁面來獲取用戶輸入的信息,該模塊頁面如圖5-1所示。圖5-1 注冊界面在這個模塊中,主要做的工作有輸入格式的驗(yàn)證,帳號唯一性的驗(yàn)證還有驗(yàn)證碼類的編寫。對格式的驗(yàn)證采用了Struts框架中的Validator框架。使用該框架必須先導(dǎo)入Jakarta-oro.Jar和 Commons-validator.Jar這兩個Jar包。Validator采用基于兩個Xml文件的方式來配置驗(yàn)證規(guī)則,分別為Validation.xml,Validator-rules.xml。在Struts應(yīng)用中,需放到Web-inf目錄下。在Validator-rules.Xml這個文件包含了一組驗(yàn)證規(guī)則,
34、對所有Struts應(yīng)用都適用。一般情況不用修改這個文件,除非要修改或擴(kuò)展默認(rèn)規(guī)則。如果要給應(yīng)放到另一個Xml文件中,而不是直接添加到Validator-rules.xml文件中,這樣當(dāng)Validator升級時,不用修改Validator-rules.xml文件8。Validator.xml這個文件是針對于具體Struts應(yīng)用的,他可以為應(yīng)用中的ActionForm配置驗(yàn)證規(guī)則。而不用編碼實(shí)現(xiàn)驗(yàn)證。其次是對帳號的唯一性進(jìn)行驗(yàn)證,避免同一帳號的重復(fù)注冊。該功能是通過Ajax來實(shí)現(xiàn)的。當(dāng)用戶在Email地址欄中填完帳號,文本框失去焦點(diǎn)時,就會由Onblur去觸發(fā)checkEmail方法,以下即為ch
35、eckEmail方法的實(shí)現(xiàn)代碼。 var d = document.getElementById("email_exist");var email = document.getElementById("txtEmail");var xmlHttpRequest = null;if(typeof XMLHttpRequest) != 'undefined') xmlHttpRequest = new XMLHttpRequest();else xmlHttpRequest=new ActiveXObject('Microsoft.X
36、MLHttp');xmlHttpRequest.open('GET','ajaxEmailAction.do?email='+email.value, true);xmlHttpRequest.onreadystatechange=function() if(xmlHttpRequest.readyState=4) var txt = xmlHttpRequest.responseText;d.innerHTML = txt; ;xmlHttpRequest.send(null); 該方法會將獲得的帳號信息傳給ajaxEmailAction.java中,
37、在該類中系統(tǒng)將會把獲取的帳號去數(shù)據(jù)庫的d_d_user表中去遍歷,若找不到則返回“該帳號可用”信息,ajaxEmailAction.java中的處理代碼如下。String email_exist = ""String email = request.getParameter("email");SuperUserDao userDao = UserDaoFactory.getUserDao();List list =userDao.findByEmail(email);if("".equals(email)email_exist = &
38、quot;"else if(list.size()=0)email_exist = "恭喜你,該賬戶可用"elseemail_exist = "Sorry,該賬戶已被注冊"response.setContentType("text/plain;charset=utf-8");response.getWriter().write(email_exist);return null; 最后在該模塊中還寫了個ImageServletAction類來獲得驗(yàn)證碼,在這里使用的是中文驗(yàn)證碼,主要代碼如下。 response.setCont
39、entType("image/jpeg"); OutputStream ops = response.getOutputStream(); Random rd = new Random(); BufferedImage bi=new BufferedImage(250,75,BufferedImage.TYPE_INT_RGB); Graphics gp=bi.getGraphics();gp.setColor(new Color(rd.nextInt(255),rd.nextInt(255),rd.nextInt(255);gp.fillRect(0, 0, 300, 3
40、00);gp.setColor(new Color(rd.nextInt(255),rd.nextInt(255),rd.nextInt(255);String font = "好","愛","你","啊","哈","他","說","哦"String s = null;s = fontrd.nextInt(8)+fontrd.nextInt(8)+fontrd.nextInt(8)+fontrd.nextInt(8);gp.setFon
41、t(new Font("", Font.BOLD, 50);gp.drawString(s, 25, 55);JPEGImageEncoder jpeg=JPEGCodec.createJPEGEncoder(ops);jpeg.encode(bi);ops.flush();ops.close();request.getSession().setAttribute("verifycode", s);return null; 在這里只要改變數(shù)組font里的值就可以實(shí)現(xiàn)對效果的改變,如果String font = "A","B&
42、quot;,"C","D","E","F","G","H",調(diào)用s = fontrd.nextInt(8)+fontrd.nextInt(8)+fontrd.nextInt(8)+fontrd.nextInt(8)后顯示的就是這幾個大寫字母里的四個了。這個圖片型驗(yàn)證碼主要由兩塊組成,背景圖片以及圖片上的字符串9。大概的制作過程是這樣的,首先通過new BufferedImage()在內(nèi)存創(chuàng)建圖像區(qū),然后通過getGraphics()來獲得背景圖片,并通過setColor()和
43、fillRect()來設(shè)置圖片的顏色和位置。接著就是用數(shù)組font來存放所需的字符串,用setFont()和drawString()來設(shè)置字體和將字符串添加到背景圖片上去。這樣就完成了對圖片驗(yàn)證碼的實(shí)現(xiàn)了。5.2 電腦瀏覽的實(shí)現(xiàn)該模塊由Category.jsp(分類頁面),Hot.jsp(熱銷電腦),New.jsp(新型電腦),New_bang.jsp(新機(jī)熱賣榜),Recommend.jsp(推薦機(jī)型)這5張jsp頁面通過Css組織在Main.jsp中來完成的10。下面重點(diǎn)介紹下Category.jsp的實(shí)現(xiàn)過程,其他頁面的實(shí)現(xiàn)基本與這兩者類似。Category.Jsp主要可分為三層,最上層
44、為電腦的品牌,下一層為末品牌下的系列名稱,在系列名稱下還有各個系列的不同型號的電腦,如圖5-2所示。圖5-2 分類瀏覽 要實(shí)現(xiàn)這個功能,首先必須調(diào)用DAO包下的CategoryDao.Java這個類中的findById(Integer id)這個方法,它返回的是一個Category對象,代碼如下:Session session = HibernateSessionFactory.openSession();try String hql = "from Category c where c.id=?"Query query = session.createQuery(hql)
45、;query.setParameter(0, id);List<?> list = query.list();if (list.size() > 0) return (Category) list.get(0); catch (HibernateException e) e.printStackTrace(); finally HibernateSessionFactory.closeSession();return null;然后在CategoryAction.java中調(diào)用這個方法獲得Category對象并將它封裝在Session中,代碼如下:Category categ
46、ory = categoryDao.findById(1);request.setAttribute("cat", category);return mapping.findForward("success");最后,在Jsp頁面中將Session中的值取出來顯示在頁面中,該部分的主要代碼如下:<c:forEach items="$cat.subCategorys" var="c2"><h3>$Name</h3><ul class="ul_left_list&qu
47、ot;> <c:forEach items="$c2.subCategorys" var="c3"> <li><a href="product.do?c2=$c2.id&c3=$c3.id">$Name</a></li> </c:forEach></ul></c:forEach> 以上代碼中通過嵌套的<c:forEach></c:forEach>來取對象Category中的值,外面的<c:forE
48、ach></c:forEach>取的是電腦品牌的值,而內(nèi)部的取得則是不同品牌下的不同系列的值,并且為每個系列值都賦予了一個鏈接,點(diǎn)擊鏈接頁面將跳轉(zhuǎn)到該系列下的電腦列表中,頁面效果如圖5-3所示。圖5-3 電腦列表頁面在這系列下面的電腦列表的顯示頁面制作過程中比較耗時的是對列表的排序方式的編碼和記錄分頁的實(shí)現(xiàn)11。首先對排序方式的實(shí)現(xiàn)做一下分析,在這里主要做了對名稱和價格的升序和降序,主要實(shí)現(xiàn)代碼如下:public ProductDao()this.initHashMap();private void initHashMap()hql.put(ORDER_BY_DEFAULT,
49、 "from Product where category_id = ?");hql.put(ORDER_BY_NAME_ASC, "from Product where category_id = ? order by productName");hql.put(ORDER_BY_NAME_DESC, "from Product where category_id = ? order by productName desc");hql.put(ORDER_BY_PRICE_DESC, "from Product where
50、 category_id = ? order by dangPrice desc");hql.put(ORDER_BY_PRICE_ASC, "from Product where category_id = ? order by dangPrice");public Map getOrderOptions()Map<Integer ,String> options = new TreeMap<Integer ,String>();options.put(ORDER_BY_DEFAULT, "product.order.defau
51、lt");options.put(ORDER_BY_NAME_ASC, ".asc");options.put(ORDER_BY_NAME_DESC, ".desc");options.put(ORDER_BY_PRICE_DESC, "product.order.price.desc");options.put(ORDER_BY_PRICE_ASC, "product.order.price.asc");return options
52、; 當(dāng)調(diào)用類ProducntDao.java時,該類的構(gòu)造函數(shù)便會被調(diào)用,從而調(diào)用了initHashMap()方法。因此,對應(yīng)的排序值與其對應(yīng)的Hql語句就被以鍵值對的形式綁定在HashMap中,而真正實(shí)現(xiàn)了排序的是findByCategoryId()這個方法,代碼如下:public List findByCategoryId(int categoryId, int rowsPerPage, int page,int order) Session session = HibernateSessionFactory.openSession();Transaction tr=session.beg
53、inTransaction();String maphql=hql.get(order); /獲得排序方式Query query = session.createQuery(maphql);query.setParameter(0, categoryId); /設(shè)置Hql中的category_id值,并執(zhí)行Hql語句query.setMaxResults(rowsPerPage); /設(shè)置每頁顯示的最大條數(shù) query.setFirstResult(page - 1) * rowsPerPage); /設(shè)置每頁的第一條記錄List list = query.list();return list
54、;返回的List被保存在一個名為ProductList的Session中,在頁面上同過EL表達(dá)式輸出從數(shù)據(jù)庫取來的相對應(yīng)的數(shù)據(jù)。其次是分頁顯示的實(shí)現(xiàn),這個主要還是在取數(shù)據(jù)庫數(shù)據(jù)時候做的操作。下面是實(shí)現(xiàn)這一功能的代碼:ProductListForm f = (ProductListForm) form;Integer totalPages = productDao.getTotalPages(f.getC3(), ROWS_PER_PAGE);if(totalPages=0)f.setPage(0);List categoryList = categoryDao.findByParentId(f
55、.getC2();List productList = productDao.findByCategoryId(f.getC3(),ROWS_PER_PAGE, f.getPage(),f.getOrder();Map orderOptions = productDao.getOrderOptions();request.getSession().setAttribute("category_list", categoryList);request.getSession().setAttribute("product_list", productList
56、);request.getSession().setAttribute("total_pages", totalPages);request.getSession().setAttribute("order_option", orderOptions);這里先用ProductListForm把傳過來的parent_id和category_id封裝起來,再通過getTotalPages()方法,取得總的頁面數(shù)。在方法體內(nèi)部還有對頁面頁數(shù)的一個判斷語句if (totalRows % rowsPerPages = 0),如果totalRows % rowsPe
57、rPages = 0整除則返回整除后的那個數(shù)字,如果不能整除就返回加1后的那個數(shù)字。getTotalPages()方法的代碼如下:public int getTotalPages(Integer categoryId, int rowsPerPages) Session session = HibernateSessionFactory.openSession();Query query = session.createQuery("select count(*) from Product where category_id =?");query.setParameter(0,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 焊錫絲采購合同樣本
- 服務(wù)合同保管合同的訂金退還
- 標(biāo)準(zhǔn)勞務(wù)分包協(xié)議
- 海鮮供應(yīng)商合作合同
- 標(biāo)準(zhǔn)土地分割協(xié)議范本
- 設(shè)計合同補(bǔ)充協(xié)議的簽訂法律規(guī)定
- 企業(yè)代理記賬業(yè)務(wù)合同范本
- 房屋買賣合同案例研究論文
- 首付款借款合同樣本
- 農(nóng)村建房合同范本
- 大國外交演講與辯論智慧樹知到期末考試答案章節(jié)答案2024年中國石油大學(xué)(華東)
- 《鋰電池石墨負(fù)極材料石墨化技術(shù)規(guī)范》
- GB/T 19633.1-2024最終滅菌醫(yī)療器械包裝第1部分:材料、無菌屏障系統(tǒng)和包裝系統(tǒng)的要求
- DZ∕T 0342-2020 礦坑涌水量預(yù)測計算規(guī)程(正式版)
- 《工程勘察資質(zhì)分級標(biāo)準(zhǔn)和工程設(shè)計資質(zhì)分級標(biāo)準(zhǔn)》
- 數(shù)據(jù)通信與計算機(jī)網(wǎng)絡(luò)智慧樹知到期末考試答案章節(jié)答案2024年四川鐵道職業(yè)學(xué)院
- 心理成長與發(fā)展智慧樹知到期末考試答案章節(jié)答案2024年武漢職業(yè)技術(shù)學(xué)院
- MH-T 5061-2022運(yùn)輸機(jī)場專業(yè)工程施工組織設(shè)計規(guī)范
- 2023-2024學(xué)年福建省福州市鼓樓區(qū)屏東中學(xué)八年級(上)期末數(shù)學(xué)試卷
- 青少版新概念3B-U21市公開課一等獎省賽課微課金獎?wù)n件
- 強(qiáng)夯安全技術(shù)交底
評論
0/150
提交評論