版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上信息工程學(xué)院本科畢業(yè)論文(2010屆)題 目電腦銷售管理系統(tǒng)設(shè)計(jì)與開發(fā)系計(jì)算機(jī)專 業(yè)計(jì)算機(jī)科學(xué)與技術(shù)(信息工程學(xué)院)班 級(jí)學(xué) 號(hào)學(xué)生姓名沈華清指導(dǎo)教師諶志群完成日期2010年6月專心-專注-專業(yè)摘 要在計(jì)算機(jī)飛速發(fā)展的今天,采用計(jì)算機(jī)來對(duì)產(chǎn)品進(jìn)行管理已成為銷售市場(chǎng)科學(xué)化和現(xiàn)代化的重要標(biāo)志,它給買家和賣家都帶來了明顯的經(jīng)濟(jì)效益和社會(huì)效益。電腦在每年的銷售量都保持在一個(gè)驚人的數(shù)量級(jí)上,可以說如今電腦已成為人們生活中的一部分。因此,開發(fā)一個(gè)電腦銷售管理系統(tǒng)是相當(dāng)有必要的。本次畢業(yè)設(shè)計(jì)要實(shí)現(xiàn)的是一個(gè)電腦銷售管理系統(tǒng),該系統(tǒng)基本實(shí)現(xiàn)了以下的功能:注冊(cè)為該網(wǎng)站的用戶,在這個(gè)模塊中
2、主要使用了Struts的Validator驗(yàn)證器來對(duì)用戶輸入的格式進(jìn)行驗(yàn)證,Ajax技術(shù)來確保賬號(hào)的唯一性;一般權(quán)限的用戶可以對(duì)在售電腦的信息進(jìn)行瀏覽,瀏覽又可以分為機(jī)型分類,店主推薦機(jī)型,熱門機(jī)型,新機(jī)型和熱賣機(jī)型的瀏覽,這塊主要通過在Jsp頁面使用Div和Css來實(shí)現(xiàn);具有管理權(quán)限的用戶能對(duì)已注冊(cè)用戶的賬號(hào)有效性以及合法性進(jìn)行審核,添加新型的電腦,刪除不銷售的電腦,對(duì)用戶生成的訂單進(jìn)行瀏覽和發(fā)貨操作。本課題所要設(shè)計(jì)與實(shí)現(xiàn)的系統(tǒng)是用Java結(jié)合Mysql數(shù)據(jù)庫來實(shí)現(xiàn),其中主要運(yùn)用Java中的MVC框架,用JavaBean來做Model,完成對(duì)數(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ù)給我們的日常生活帶去的好處是顯而易見的。首先,我們可以對(duì)現(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ì)文件的成本,更重要的是簡化流程、減少耽擱和錯(cuò)誤,提高公司的靈活性、應(yīng)變能力和提供更好的服務(wù)能力。它還可以實(shí)現(xiàn)即時(shí)生產(chǎn)、即時(shí)經(jīng)銷、即時(shí)服務(wù)和即時(shí)通信。其次,互聯(lián)網(wǎng)使我們對(duì)傳統(tǒng)的空間概念發(fā)生變化,出現(xiàn)了有別于實(shí)際地理空間的虛擬空間或者虛擬社會(huì)。處于世界任何角落的個(gè)
10、人、公司或機(jī)構(gòu),可以通過互聯(lián)網(wǎng)緊密地聯(lián)系在一起,建立虛擬社區(qū)、虛擬公司、虛擬政府、虛擬商場(chǎng)、虛擬大學(xué)或者虛擬研究所等,以達(dá)到信息共享、資源共享、智力共享等。然后,電子商務(wù)也任然保留了傳統(tǒng)商品交易中的互動(dòng)性。通過互聯(lián)網(wǎng),商家之間可以直接交流、談判、簽合同,消費(fèi)者也可以把自己的反饋建議反映到企業(yè)或商家的網(wǎng)站,而企業(yè)或者商家則會(huì)根據(jù)消費(fèi)者的反饋及時(shí)調(diào)查產(chǎn)品種類及服務(wù)品質(zhì),做到良性互動(dòng). 借助于電子商務(wù)的如此多的優(yōu)勢(shì)之上,杭州的百腦匯在線電腦銷售系統(tǒng)取得了巨大的成功,它具有瀏覽電腦信息,在線交易,送貨上門等功能。它讓我們即使不用去電腦商城也能夠?qū)Ω鞣N品牌,各種型號(hào)的電腦信息有個(gè)比較直觀的了解。和傳統(tǒng)的
11、交易方式相比,百腦匯在線電腦銷售系統(tǒng)有很多優(yōu)越之處,如它可以突破地域和時(shí)間限制,使處于不同地區(qū)的人們自由地傳遞信息、互通有無、開展貿(mào)易,它的快捷、迅速、自由是傳統(tǒng)的電腦商城所無法比擬的。因此,電腦的在線銷售也必將在不久的將來成為主流,所以開發(fā)一個(gè)基于B/S結(jié)構(gòu)的電腦銷售系統(tǒng)也是十分有意義的1。2 開發(fā)環(huán)境的介紹及安裝2.1 Java概述 Java是一個(gè)廣泛使用的網(wǎng)絡(luò)編程語言,它是一種新的計(jì)算概念。Java語言是一種面向?qū)ο蟮恼Z言,它通過提供最基本的方法來完成指定的任務(wù),只需理解一些基本的概念,就可以用它編寫出適合于各種情況的應(yīng)用程序。Java略去了運(yùn)算符重載、多重繼承等模糊的概念,并且通過實(shí)現(xiàn)
12、自動(dòng)垃圾收集大大簡化了程序設(shè)計(jì)者的內(nèi)存管理工作2。 Java語言的設(shè)計(jì)集中于對(duì)象及其接口,它提供了簡單的類機(jī)制以及動(dòng)態(tài)的接口模型。對(duì)象中封裝了它的狀態(tài)變量以及相應(yīng)的方法,實(shí)現(xiàn)了模塊化和信息隱藏;而類則提供了一類對(duì)象的原型,并且通過繼承機(jī)制,子類可以使用父類所提供的方法,實(shí)現(xiàn)了代碼的復(fù)用。用于網(wǎng)絡(luò)、分布環(huán)境下的Java必須要防止病毒的入侵。 Java不支持指針,一切對(duì)內(nèi)存的訪問都必須通過對(duì)象的實(shí)例變量來實(shí)現(xiàn),這樣就防止程序員使用“特洛伊”木馬等欺騙手段訪問對(duì)象的私有成員,同時(shí)也避免了指針操作中容易產(chǎn)生的錯(cuò)誤。與平臺(tái)無關(guān)的特性使 Java程序可以方便地被移植到網(wǎng)絡(luò)上的不同機(jī)器。 同時(shí),Java的類
13、庫中也實(shí)現(xiàn)了與不同平臺(tái)的接口,使這些類庫可以移植。另外,Java編譯器是由Java語言實(shí)現(xiàn)的,Java運(yùn)行時(shí)系統(tǒng)由標(biāo)準(zhǔn)C實(shí)現(xiàn),這使得Java 系統(tǒng)本身也具有可移植性。Java的設(shè)計(jì)使它適合于一個(gè)不斷發(fā)展的環(huán)境。在類庫中可以自由地加入新的方法和實(shí)例變量而不會(huì)影響用戶程序的執(zhí)行。并且 Java通過接口來支持多重繼承,使之比嚴(yán)格的類繼承具有更靈活的方式和擴(kuò)展性。 2.2 Jsp的介紹 Jsp規(guī)范是Web服務(wù)器、應(yīng)用服務(wù)器、交易系統(tǒng)、以及開發(fā)工具供應(yīng)商間廣泛合作的結(jié)果。Sun公司開發(fā)出這個(gè)規(guī)范來整合和平衡已經(jīng)存在的對(duì)Java編程環(huán)境(例如,Java Servlet和JavaBeansTM)進(jìn)行支持的技
14、術(shù)和工具。其結(jié)果是產(chǎn)生了一種新的、開發(fā)基于Web應(yīng)用程序的方法,給予使用基于組件應(yīng)用邏輯的頁面設(shè)計(jì)者以強(qiáng)大的功能3。 Jsp技術(shù)在多個(gè)方面加速了動(dòng)態(tài)Web頁面的開發(fā):首先,使用Jsp技術(shù),Web頁面開發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來設(shè)計(jì)和格式化最終頁面。使用 Jsp標(biāo)識(shí)或者小腳本來生成頁面上的動(dòng)態(tài)內(nèi)容(內(nèi)容是根據(jù)請(qǐng)求來變化的,例如請(qǐng)求帳戶信息或者特定的一瓶酒的價(jià)格)。生成內(nèi)容的邏輯被封裝在標(biāo)識(shí)和 JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。如果核心邏輯被封裝在標(biāo)識(shí)和Beans中,那么其他人,如Web管理人員和頁面設(shè)計(jì)者,能夠編輯和使用Jsp頁面,而不影響內(nèi)容的
15、生成。在服務(wù)器端,Jsp引擎解釋Jsp標(biāo)識(shí)和小腳本,生成所請(qǐng)求的內(nèi)容(例如,通過訪問JavaBeans組件,使用JDBCTM技術(shù)訪問數(shù)據(jù)庫,或者包含文件),并且將結(jié)果以HTML(或者XML)頁面的形式發(fā)送回瀏覽器。這有助于作者保護(hù)自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。 其次,Web頁面開發(fā)人員不會(huì)都是熟悉腳本語言的編程人員。JavaServer Page技術(shù)封裝了許多功能,這些功能是在易用的、與Jsp相關(guān)的XML標(biāo)識(shí)中進(jìn)行動(dòng)態(tài)內(nèi)容生成所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識(shí)能夠訪問和實(shí)例化 JavaBeans組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行用其他方法更難于編碼
16、和耗時(shí)的功能。通過開發(fā)定制化標(biāo)識(shí)庫,Jsp技術(shù)是可以擴(kuò)展的。今后,第三方開發(fā)人員和其他人員可以為常用功能創(chuàng)建自己的標(biāo)識(shí)庫。這使得Web頁面開發(fā)人員能夠使用熟悉的工具和如同標(biāo)識(shí)一樣的執(zhí)行特定功能的構(gòu)件來工作。Jsp技術(shù)很容易整合到多種應(yīng)用體系結(jié)構(gòu)中,以利用現(xiàn)存的工具和技巧,并且擴(kuò)展到能夠支持企業(yè)級(jí)的分布式應(yīng)用。作為采用Java技術(shù)家族的一部分,以及Java 2(企業(yè)版體系結(jié)構(gòu))的一個(gè)組成部分,Jsp技術(shù)能夠支持高度復(fù)雜的基于Web的應(yīng)用。由于Jsp頁面的內(nèi)置腳本語言是基于Java編程語言的,而且所有的Jsp頁面都被編譯成為Java Servlet,Jsp頁面就具有Java技術(shù)的所有好處,包括健壯
17、的存儲(chǔ)管理和安全性。作為Java平臺(tái)的一部分,Jsp擁有Java編程語言“一次編寫,各處運(yùn)行”的特點(diǎn)。隨著越來越多的供應(yīng)商將Jsp支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,更改工具或服務(wù)器并不影響當(dāng)前的應(yīng)用。當(dāng)與Java 2平臺(tái),企業(yè)版(J2EE)和Enterprise JavaBean技術(shù)整合時(shí),Jsp頁面將提供企業(yè)級(jí)的擴(kuò)展性和性能,這對(duì)于在虛擬企業(yè)中部署基于Web的應(yīng)用是必需的。2.3 Myeclipse的安裝我是依照Myeclipse中文版本的安裝過程來講解和截屏的,如果你手里有的是Myeclipse的其它版本,也別擔(dān)心,因?yàn)闊o論是Myeclipse的哪個(gè)版本,安裝過程
18、幾乎都是一樣的,最多是在安裝功能選項(xiàng)中,有些版本功能多,有些版本功能少而已。由于沒有安裝光盤,我就下載了一個(gè)。雙擊下載的exe文件,即可進(jìn)行解包,這步所花時(shí)間較長,你會(huì)看到圖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è)計(jì)的背景信息是當(dāng)代最流行的詞語之一。翻開書報(bào)充滿眼簾的是“信息時(shí)代”、“信息科
19、學(xué)”、“信息技術(shù)”、“信息產(chǎn)業(yè)”、“信息就是財(cái)富”等等。“信息是物質(zhì)的基本屬性之一,是物質(zhì)間接存在性的自身顯示。信息的作用是消除不確定性?!?在經(jīng)濟(jì)日益全球化的今天,我們看到計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,利用因特網(wǎng)實(shí)現(xiàn)商務(wù)活動(dòng)的國際化、信息化和無紙化,已經(jīng)成為經(jīng)濟(jì)全球化發(fā)展的一大趨勢(shì)。電子商務(wù)正是為了適應(yīng)這種以全球?yàn)槭袌?chǎng)的變化而發(fā)展起來的,并已在國際貿(mào)易和商業(yè)領(lǐng)域得到廣泛應(yīng)用,而本課題正是對(duì)電子商務(wù)的具體化實(shí)際應(yīng)用。3.2 系統(tǒng)需求分析本畢設(shè)課題是要設(shè)計(jì)與開發(fā)一個(gè)在線的電腦銷售管理系統(tǒng),該系統(tǒng)主要包括用戶賬號(hào)注冊(cè),電腦信息的品牌分類、店主推薦機(jī)型、新上架機(jī)型、熱賣機(jī)型和熱賣機(jī)型榜的瀏覽,下訂單,管
20、理員對(duì)賬號(hào)、訂單、產(chǎn)品的上架與下架的管理等幾個(gè)部分。系統(tǒng)主要?jiǎng)澐譃橐韵聨讉€(gè)模塊:1)用戶注冊(cè)模塊:創(chuàng)建用戶進(jìn)入購買頁面的賬號(hào)。2)電腦信息瀏覽模塊:實(shí)現(xiàn)對(duì)不同品牌電腦的基本信息瀏覽。3)訂單模塊:收集用戶購買的電腦信息。4)管理員模塊:實(shí)現(xiàn)管理員的登錄以及對(duì)注冊(cè)用戶的賬號(hào)審核和刪除。5)電腦上架與下架:產(chǎn)品入庫與出庫的管理。6)訂單管理:送貨地址的審核以及進(jìn)行發(fā)貨操作。3.3 系統(tǒng)開發(fā)的目標(biāo)在軟件開發(fā)項(xiàng)目中,信息管理的影子隨處可見,但要真正使技術(shù)人員的積極性都發(fā)揮出來,并不是“影子”所能完成的。正所謂“知易行難”,信息管理并不僅僅是管理信息這么簡單。它有一套完備的目標(biāo)體系;它需要科學(xué)的方法,需
21、要一種對(duì)時(shí)間進(jìn)度、任務(wù)分解、績效控制的把握和判斷的過程。而該銷售系統(tǒng)開發(fā)的目標(biāo)就是為了讓更多的人能夠在線了解最新的電腦資訊,使他們能夠更加便捷的購買電腦。軟件的開發(fā)本身就是一件很好的事情,能夠讓技術(shù)人員開發(fā)研究一個(gè)比較完善的系統(tǒng),能夠更好的讓客戶使用,讓更多的人方便使用,了解和知道系統(tǒng)軟件的可行性和可操作性。3.4 數(shù)據(jù)庫分析什么是數(shù)據(jù)庫呢?當(dāng)人們從不同的角度來描述這一概念時(shí)就有不同的定義(當(dāng)然是描述性的)。例如,稱數(shù)據(jù)庫是一個(gè)“記錄保存系統(tǒng)”(該定義強(qiáng)調(diào)了數(shù)據(jù)庫是若干記錄的集合)。又如稱數(shù)據(jù)庫是“人們?yōu)榻鉀Q特定的任務(wù),以一定的組織方式存儲(chǔ)在一起的相關(guān)的數(shù)據(jù)的集合”(該定義側(cè)重于數(shù)據(jù)的組織)。
22、更有甚者稱數(shù)據(jù)庫是“一個(gè)數(shù)據(jù)倉庫”。當(dāng)然,這種說法雖然形象,但并不嚴(yán)謹(jǐn)。嚴(yán)格地說,數(shù)據(jù)庫是“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉庫” 5。在經(jīng)濟(jì)管理的日常工作中,常常需要把某些相關(guān)的數(shù)據(jù)放進(jìn)這樣“倉庫”,并根據(jù)管理的需要進(jìn)行相應(yīng)的處理。例如,在本次畢業(yè)設(shè)計(jì)中的電腦信息表,在該表中保存了電腦的基本參數(shù)(電腦編號(hào),屏幕尺寸,顯卡類型,產(chǎn)品定位,產(chǎn)品重量,Cpu類型,內(nèi)存大小,硬盤大?。?,這張表就可以看成是一個(gè)數(shù)據(jù)庫。有了這個(gè)“數(shù)據(jù)倉庫”我們就可以根據(jù)需要隨時(shí)查詢某類型電腦的基本情況,也可以查詢?cè)谀硞€(gè)特定內(nèi)存區(qū)間內(nèi)的電腦類型等等。這些工作如果都能在計(jì)算機(jī)上自動(dòng)進(jìn)行,那我們的人事管理就可以達(dá)到極高的
23、水平。此外,在財(cái)務(wù)管理、倉庫管理、生產(chǎn)管理中也需要建立眾多的這種“數(shù)據(jù)庫”,使其可以利用計(jì)算機(jī)實(shí)現(xiàn)財(cái)務(wù)、倉庫、生產(chǎn)的自動(dòng)化管理。4 系統(tǒng)設(shè)計(jì)4.1 總體設(shè)計(jì)在需求明確、準(zhǔn)備開始編碼之前,要做總體設(shè)計(jì),而詳細(xì)設(shè)計(jì)會(huì)在后一章節(jié)詳細(xì)說明與設(shè)計(jì)。因此,對(duì)于總體設(shè)計(jì)只要介紹系統(tǒng)軟件所需要實(shí)現(xiàn)的功能和操作,對(duì)后面的開發(fā)、測(cè)試、實(shí)施、維護(hù)工作起到關(guān)鍵性的影響6。在電腦銷售管理系統(tǒng)中,對(duì)特別而強(qiáng)的功能是不要求,只需簡單實(shí)現(xiàn)基本功能就可以了,因此以用戶注冊(cè),電腦瀏覽,訂單生成,管理員管理等操作功能作為基本功能來開發(fā)總體設(shè)計(jì)??傮w設(shè)計(jì)的界面也是很簡單的,就主要以電腦瀏覽頁面做為主頁面,其他功能的頁面作為子頁面。通
24、過對(duì)該系統(tǒng)簡單分析,所需總體設(shè)計(jì)的方面有以下幾個(gè):1)需要做好數(shù)據(jù)庫的準(zhǔn)備,通過Mysql數(shù)據(jù)庫來完成數(shù)據(jù)的輸入工作,通過SQL語句來實(shí)現(xiàn)簡單的儲(chǔ)存過程;2)前臺(tái)的頁面設(shè)計(jì)盡量簡單化、可視化、可操作化、可擴(kuò)充化;3)前臺(tái)頁面功能的設(shè)計(jì)通過在Myeclipse下編寫Jsp頁面來實(shí)現(xiàn);4)要求做到本系統(tǒng)的擴(kuò)充性和可更新性,就是在對(duì)數(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表中存儲(chǔ)用戶的基本信息,該表中的Email字段用來存儲(chǔ)登錄的賬號(hào),Is_email_verify用來查看是否通過郵箱驗(yàn)證,通過驗(yàn)證的該字段為1,未通過的則為0,其結(jié)構(gòu)如表4-1所示。表4-1 d_d_user表字段名類型意義Id整型(12)用戶編號(hào)Email文本(50)帳號(hào)名Nickname文本(50)昵稱Password文本(50)密碼Is_email_verify整型(1)是否通過郵箱驗(yàn)證Email_verify_code文本(50)郵箱的驗(yàn)證碼d_d_category表中存儲(chǔ)電腦的不同品牌信息,該表中的Turn字段用來存儲(chǔ)每個(gè)類別下子類別的個(gè)數(shù),Pare
26、nt_id中存儲(chǔ)的是父類的Id號(hào),方便分類存取,其結(jié)構(gòu)如表4-2所示。表4-2 d_d_category表字段名類型意義Id整型(12)類別編號(hào)Turn整型(3)子類序號(hào)En_name文本(50)英文名稱Cn_name文本(50)中文名稱Parent_id整型(12)所屬父類編號(hào)d_d_computer表中存儲(chǔ)電腦參數(shù)信息,其結(jié)構(gòu)如表4-3所示。 表4-3 d_d_computer表字段名類型意義Id整型(12)電腦編號(hào)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表中存儲(chǔ)電腦參數(shù)信息,該表中的Id為d_d_computer表的外鍵,并且兩表做了級(jí)聯(lián)操作,Category_id字段存儲(chǔ)的是該產(chǎn)品的類別號(hào),需用時(shí)可以直接通過取該產(chǎn)品的Category_id來達(dá)到取該產(chǎn)品信息的目的,其結(jié)構(gòu)如表4-4所示。 表4-4 d_d_product表字段名類型意義Id整型(12)電腦編號(hào)Category_id整型(12)類別號(hào)Product_name文本(100)產(chǎn)品名稱Add_time長整型(20)入庫時(shí)間Fixed_price雙進(jìn)度浮點(diǎn)型市場(chǎng)價(jià)Dang_price雙進(jìn)度浮點(diǎn)型會(huì)員
28、價(jià)Product_pic文本(200)電腦圖片d_d_order表中存儲(chǔ)訂單信息,該表中的User_id與Send_id是為了方便做表關(guān)聯(lián)查詢操作而設(shè)置的字段,他們分別表示在d_d_user表中的用戶Id和在d_d_receive_address表的Id,Status表示的是訂單的狀態(tài),為1時(shí)表示該訂單已發(fā)貨,為0時(shí)則表示還未發(fā)貨,由于在程序中調(diào)用的是系統(tǒng)的毫秒數(shù),所以在設(shè)計(jì)Order_time類型時(shí)采用的是長整形,其結(jié)構(gòu)如表4-5所示。表4-5 d_d_order表字段名類型意義Id整型(10)訂單編號(hào)User_id整型(10)用戶編號(hào)Send_id整型(12)送貨地址號(hào)Status整型(1
29、0)訂單狀態(tài)Order_time長整型(20)下訂單日期Total_price雙進(jìn)度浮點(diǎn)型訂單總價(jià)Send_time長整型(20)出貨日期d_d_order_detail表中存儲(chǔ)訂單詳細(xì)信息,表中的Order_id字段與表d_d_order中的Id相對(duì)應(yīng),方便對(duì)訂單詳細(xì)信息的了解,其結(jié)構(gòu)如表4-6所示。 表4-6 d_d_order_detail表字段名類型意義Id整型(12)編號(hào)Order_id整型(12)訂單編號(hào)Product_name文本(50)貨物名稱Num整型(50)貨物數(shù)量d_d_receive_address表中存儲(chǔ)送貨信息,表中的User_id字段與表d_d_user中的Id相
30、對(duì)應(yīng),方便對(duì)用戶信息表的關(guān)聯(lián)操作,其結(jié)構(gòu)如表4-7所示。 表4-7 d_d_receive_address表字段名類型意義Id整型(12)送貨編號(hào)User_id整型(10)用戶編號(hào)Receive_name文本(20)收貨人Full_address文本(200)送貨地址Postal_code文本(8)郵編Mobile文本(15)手機(jī)號(hào)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è)計(jì)最重要的部分是模塊的流程圖、狀態(tài)圖、局部變量及相應(yīng)的文字說明等。在這個(gè)階段,各個(gè)模塊可以分給不同的人去并行設(shè)計(jì),當(dāng)然設(shè)計(jì)就本人一個(gè)人全部實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)。在詳細(xì)設(shè)計(jì)階段,設(shè)計(jì)者的工作對(duì)象是一個(gè)模塊,根據(jù)總體設(shè)計(jì)賦予的局部任務(wù),設(shè)計(jì)并表達(dá)出模塊的流程、狀態(tài)轉(zhuǎn)換等內(nèi)容。該系統(tǒng)詳細(xì)設(shè)計(jì)的有幾個(gè)功能界面7。比如用戶注冊(cè),電腦瀏覽,訂單生成,管理員管理,其中把電腦瀏覽頁面作為
32、主界面進(jìn)行設(shè)計(jì)和功能實(shí)現(xiàn)。詳細(xì)設(shè)計(jì)主要是對(duì)總體設(shè)計(jì)進(jìn)行詳細(xì)的開發(fā)和設(shè)計(jì),其中設(shè)計(jì)包括前臺(tái)的界面設(shè)計(jì)和后臺(tái)數(shù)據(jù)庫的設(shè)計(jì)。后臺(tái)對(duì)數(shù)據(jù)庫的輸入,對(duì)其進(jìn)行分析,然后在前臺(tái)進(jìn)行控件的使用,代碼的編程。詳細(xì)設(shè)計(jì)主要包括界面的設(shè)計(jì),操作功能的初步實(shí)現(xiàn)如(添加、刪除、修改等功能)。以及實(shí)現(xiàn)每一個(gè)操作功能。4.2.1 功能設(shè)計(jì)界面對(duì)于用戶的功能設(shè)計(jì)界面分為以下幾個(gè)基本功能。如圖4-4所示。 圖4-4 系統(tǒng)的功能圖用戶主界面就是一個(gè)電腦瀏覽的頁面,用電腦瀏覽作為主界面,其他頁面作為子頁面。通過用戶主界面的鏈接來跳轉(zhuǎn)其他界面。通過跳轉(zhuǎn)的代碼編程來實(shí)現(xiàn)主頁面跳轉(zhuǎn)到其他子頁面。5 系統(tǒng)實(shí)現(xiàn)5.1 用戶注冊(cè)模塊的實(shí)現(xiàn) 在
33、該模塊中,采用Jsp頁面來獲取用戶輸入的信息,該模塊頁面如圖5-1所示。圖5-1 注冊(cè)界面在這個(gè)模塊中,主要做的工作有輸入格式的驗(yàn)證,帳號(hào)唯一性的驗(yàn)證還有驗(yàn)證碼類的編寫。對(duì)格式的驗(yàn)證采用了Struts框架中的Validator框架。使用該框架必須先導(dǎo)入Jakarta-oro.Jar和 Commons-validator.Jar這兩個(gè)Jar包。Validator采用基于兩個(gè)Xml文件的方式來配置驗(yàn)證規(guī)則,分別為Validation.xml,Validator-rules.xml。在Struts應(yīng)用中,需放到Web-inf目錄下。在Validator-rules.Xml這個(gè)文件包含了一組驗(yàn)證規(guī)則,
34、對(duì)所有Struts應(yīng)用都適用。一般情況不用修改這個(gè)文件,除非要修改或擴(kuò)展默認(rèn)規(guī)則。如果要給應(yīng)放到另一個(gè)Xml文件中,而不是直接添加到Validator-rules.xml文件中,這樣當(dāng)Validator升級(jí)時(shí),不用修改Validator-rules.xml文件8。Validator.xml這個(gè)文件是針對(duì)于具體Struts應(yīng)用的,他可以為應(yīng)用中的ActionForm配置驗(yàn)證規(guī)則。而不用編碼實(shí)現(xiàn)驗(yàn)證。其次是對(duì)帳號(hào)的唯一性進(jìn)行驗(yàn)證,避免同一帳號(hào)的重復(fù)注冊(cè)。該功能是通過Ajax來實(shí)現(xiàn)的。當(dāng)用戶在Email地址欄中填完帳號(hào),文本框失去焦點(diǎn)時(shí),就會(huì)由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); 該方法會(huì)將獲得的帳號(hào)信息傳給ajaxEmailAction.java中,
37、在該類中系統(tǒng)將會(huì)把獲取的帳號(hào)去數(shù)據(jù)庫的d_d_user表中去遍歷,若找不到則返回“該帳號(hào)可用”信息,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,該賬戶已被注冊(cè)"response.setContentType("text/plain;charset=utf-8");response.getWriter().write(email_exist);return null; 最后在該模塊中還寫了個(gè)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)對(duì)效果的改變,如果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)后顯示的就是這幾個(gè)大寫字母里的四個(gè)了。這個(gè)圖片型驗(yàn)證碼主要由兩塊組成,背景圖片以及圖片上的字符串9。大概的制作過程是這樣的,首先通過new BufferedImage()在內(nèi)存創(chuàng)建圖像區(qū),然后通過getGraphics()來獲得背景圖片,并通過setColor()和
43、fillRect()來設(shè)置圖片的顏色和位置。接著就是用數(shù)組font來存放所需的字符串,用setFont()和drawString()來設(shè)置字體和將字符串添加到背景圖片上去。這樣就完成了對(duì)圖片驗(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、為電腦的品牌,下一層為末品牌下的系列名稱,在系列名稱下還有各個(gè)系列的不同型號(hào)的電腦,如圖5-2所示。圖5-2 分類瀏覽 要實(shí)現(xiàn)這個(gè)功能,首先必須調(diào)用DAO包下的CategoryDao.Java這個(gè)類中的findById(Integer id)這個(gè)方法,它返回的是一個(gè)Category對(duì)象,代碼如下: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)用這個(gè)方法獲得Category對(duì)象并將它封裝在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>來取對(duì)象Category中的值,外面的<c:forE
48、ach></c:forEach>取的是電腦品牌的值,而內(nèi)部的取得則是不同品牌下的不同系列的值,并且為每個(gè)系列值都賦予了一個(gè)鏈接,點(diǎn)擊鏈接頁面將跳轉(zhuǎn)到該系列下的電腦列表中,頁面效果如圖5-3所示。圖5-3 電腦列表頁面在這系列下面的電腦列表的顯示頁面制作過程中比較耗時(shí)的是對(duì)列表的排序方式的編碼和記錄分頁的實(shí)現(xiàn)11。首先對(duì)排序方式的實(shí)現(xiàn)做一下分析,在這里主要做了對(duì)名稱和價(jià)格的升序和降序,主要實(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時(shí),該類的構(gòu)造函數(shù)便會(huì)被調(diào)用,從而調(diào)用了initHashMap()方法。因此,對(duì)應(yīng)的排序值與其對(duì)應(yīng)的Hql語句就被以鍵值對(duì)的形式綁定在HashMap中,而真正實(shí)現(xiàn)了排序的是findByCategoryId()這個(gè)方法,代碼如下: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被保存在一個(gè)名為ProductList的Session中,在頁面上同過EL表達(dá)式輸出從數(shù)據(jù)庫取來的相對(duì)應(yīng)的數(shù)據(jù)。其次是分頁顯示的實(shí)現(xiàn),這個(gè)主要還是在取數(shù)據(jù)庫數(shù)據(jù)時(shí)候做的操作。下面是實(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)部還有對(duì)頁面頁數(shù)的一個(gè)判斷語句if (totalRows % rowsPerPages = 0),如果totalRows % rowsPe
57、rPages = 0整除則返回整除后的那個(gè)數(shù)字,如果不能整除就返回加1后的那個(gè)數(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等.壓縮文件請(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級(jí)數(shù)學(xué)除數(shù)是兩位數(shù)的除法題過關(guān)測(cè)驗(yàn)練習(xí)題大全附答案
- 小學(xué)三年級(jí)數(shù)學(xué)100以內(nèi)整數(shù)除法計(jì)算能力作業(yè)例題大全附答案
- 二年級(jí)數(shù)學(xué)兩位數(shù)加兩位數(shù)計(jì)算題過關(guān)檢測(cè)訓(xùn)練題帶答案
- 江蘇省南京市協(xié)同體七校2024-2025學(xué)年高三上期中聯(lián)合考試語文試題及答案
- 企業(yè)員工書法培訓(xùn)合作協(xié)議書
- 蘇教版石榴課件
- 燃燒與滅火課件
- 《電子票務(wù)調(diào)研》課件
- 2025屆山西省太原市志達(dá)中學(xué)中考聯(lián)考生物試題含解析
- 河北省唐山市路北區(qū)2025屆中考四模生物試題含解析
- 工程力學(xué)課后習(xí)題答案1
- 6S視覺管理之定置劃線顏色管理及標(biāo)準(zhǔn)樣式
- 四年級(jí)數(shù)學(xué)(除數(shù)是兩位數(shù))計(jì)算題專項(xiàng)練習(xí)及答案
- 中考字音字形練習(xí)題(含答案)-字音字形專項(xiàng)訓(xùn)練
- 社區(qū)矯正個(gè)別教育記錄內(nèi)容范文
- 常見婦科三大惡性腫瘤的流行及疾病負(fù)擔(dān)研究現(xiàn)狀
- CTD申報(bào)資料撰寫模板:模塊三之3.2.S.4原料藥的質(zhì)量控制
- (正式版)JTT 1482-2023 道路運(yùn)輸安全監(jiān)督檢查規(guī)范
- 圍手術(shù)期血糖的管理
- 2024年度醫(yī)療器械監(jiān)督管理?xiàng)l例培訓(xùn)課件
- 100以內(nèi)不進(jìn)位不退位加減法練習(xí)題
評(píng)論
0/150
提交評(píng)論