




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第一章引言1.1 設(shè)計(jì)開(kāi)發(fā)的意義隨著ernet 的發(fā)展,電子商務(wù)越來(lái)越流行。很多企業(yè)都已不滿足于一個(gè)簡(jiǎn)單的僅僅能夠發(fā)布信息的靜態(tài),現(xiàn)代企業(yè)需要的是一個(gè)功能強(qiáng)大的,能提供完善的電子商務(wù)服務(wù)的動(dòng)態(tài)商務(wù)。同時(shí)人們的生活方式也在隨著發(fā)生改變,傳統(tǒng)的購(gòu)物方式已不能滿足人們的需求,人們?cè)絹?lái)越傾向于網(wǎng)上購(gòu)物,用戶可以在網(wǎng)上搜索到自己想要的各種商品,初步讓人們體會(huì)到了足不出戶,便可隨意購(gòu)物的。1.2 所設(shè)計(jì)應(yīng)用系統(tǒng)的任務(wù)及目標(biāo)JSP 即 Java Servage,是 Sun 公司推出的一種開(kāi)發(fā)技術(shù),借助 Java,它可數(shù)據(jù)庫(kù)課以在 Servlet 和 JavaBean 的支持下,完成功能強(qiáng)大的 Web 應(yīng)用程
2、序。所以,在程設(shè)計(jì)中,我采用了 JSP 作為開(kāi)發(fā)工具,構(gòu)建了一個(gè)能實(shí)現(xiàn)基本的電子商務(wù)的小型動(dòng)態(tài)商網(wǎng)站網(wǎng)店系統(tǒng)。該系統(tǒng)能實(shí)現(xiàn)用戶的、登錄功能;能夠?qū)崿F(xiàn)商品的查詢,訂購(gòu)等功能。該系統(tǒng)基本上具備一個(gè)網(wǎng)上商品銷售系統(tǒng)應(yīng)該具備的常用功能,該設(shè)計(jì)項(xiàng)目基本上體現(xiàn)了構(gòu)建一個(gè)動(dòng)態(tài)商務(wù)所需要的技術(shù),可以說(shuō),目前的大型商務(wù)也就是這個(gè)小型在內(nèi)容上的擴(kuò)充和完善。在這次的設(shè)計(jì)中,我和同學(xué)共同合作完成,共同完成需求分析和數(shù)據(jù)庫(kù)的設(shè)計(jì),后期的 JAVA 設(shè)計(jì)由我完成,頁(yè)面設(shè)計(jì)由完成。1.3 設(shè)計(jì)開(kāi)發(fā)及運(yùn)行的軟硬件環(huán)境硬件:PC機(jī),服務(wù)器:系統(tǒng)客戶端運(yùn)行在 Windows下,服務(wù)器端可以運(yùn)行在 Windows或者 Unix下,
3、sql server2005,tomcat 6.0, myEclipes第二章系統(tǒng)分析與設(shè)計(jì)2.1 系統(tǒng)需求分析通過(guò)對(duì)電子商務(wù)及網(wǎng)店的、分析,本系統(tǒng)應(yīng)該具有以下功能:友好的操作界面,能保證系統(tǒng)的易用性。規(guī)范、完善的基礎(chǔ)信息設(shè)置。分類詳盡,可按不同類別查看商品信息。按大類及名稱進(jìn)行模糊查詢。實(shí)現(xiàn)網(wǎng)上購(gòu)書。2.2 數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)針對(duì)網(wǎng)店系統(tǒng)的需求分析,得出如下需求信息。一個(gè)用戶可以多本。一個(gè)用戶對(duì)應(yīng)一張訂單。一個(gè)列表對(duì)應(yīng)多張訂單。針對(duì)本系統(tǒng)功能分析,總結(jié)出如下的需求信息。用戶,包括數(shù)據(jù)項(xiàng):用戶ID、用戶名、。,包括數(shù)據(jù)項(xiàng):、名、價(jià)格、介紹。訂單列表,包括數(shù)據(jù)項(xiàng):訂單、購(gòu)書數(shù)量。、下單時(shí)間。訂單
4、,包括數(shù)據(jù)項(xiàng):訂單、用戶2.2.1 數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)從本系統(tǒng)中規(guī)劃出的實(shí)體有:用戶信息實(shí)體、管理員信息實(shí)體、體、訂單實(shí)體、訂單列表實(shí)體。實(shí)體之間關(guān)系的E-R 圖如圖 2.1 所示。管理員實(shí)體的E-R 圖,如圖 2.2 所示。分類實(shí)體的E-R 圖,如圖 2.3 所示。用戶信息實(shí)體的E-R 圖,如圖 2.4 所示。實(shí)體的E-R 圖,如圖 2.5 所示。訂單實(shí)體的E-R 圖,如圖 2.6 所示。訂單列表實(shí)體的E-R 圖,如圖 2.7 所示。實(shí)體、分類實(shí)提交受理屬于管理屬于管理屬于圖 2.1 實(shí)體之間的E-R 圖用戶名分類名稱分類圖 2.2管理員實(shí)體的 E-R 圖圖 2.3分類實(shí)體E-R 圖用戶名地
5、址真名用 戶時(shí)間IP圖 2.4 用戶實(shí)體 E-R 圖分類管理員分類訂單列表管理管理員訂單用戶名稱分類封面作者剩余數(shù)量圖 書總數(shù)量?jī)?nèi)容介紹價(jià)格圖 2.5 書實(shí)體 E-R 圖用戶時(shí)間訂單總價(jià)格訂單IP 地址內(nèi)容是否付款是否發(fā)貨圖 2.6 訂單實(shí)體 E-R 圖用戶號(hào)訂單號(hào)訂單列表購(gòu)書數(shù)量圖 2.7 訂單列表實(shí)體的 E-R 圖2.3 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)表 4.1 為信息列表,書店現(xiàn)有的表 4.1信息。Book 表列名數(shù)據(jù)類型長(zhǎng)度允許空注釋ID4BookNamevarchar40否名稱BookClass4否分類AuthorVarchar25是作者PublishVarchar150是BookNoVarch
6、ar30是書號(hào)Contenttext300是內(nèi)容Pricefloat8是價(jià)格Amount4是總數(shù)量Leav_number4是剩余數(shù)量RegTimeda ime8是時(shí)間Picturevarchar60是封面表 4.2 為書店管理員信息表,表 4.2管理員的帳號(hào)和。BookAdmin 表列名數(shù)據(jù)類型長(zhǎng)度允許空注釋AdminuserVarchar20否管理員AdminPassVarchar20否管理員表 4.3 為用戶信息表,用戶的基本信息。表 4.3 用戶表列名數(shù)據(jù)類型長(zhǎng)度允許空注釋ID2否用戶UserNameVarchar50否用戶名passWordVarchar50否NamesVarchar5
7、0否真名SexVarchar50是AddressVarchar50是地址PhoneVarchar50是tVarchar50是Varchar50是電子郵件RegTimeDa ime50是時(shí)間RegIPAddressvarchar50是IP 地址表 4.4 為訂單總表,某個(gè)用戶的訂單總信息。表 4.4 訂單總表列名數(shù)據(jù)類型長(zhǎng)度允許空注釋ID4否總訂單OrderID4否訂單號(hào)BookNo4否書號(hào)Amount4是數(shù)量表 4.5 為訂單表,但張訂單的具體信息。表 4.5 訂單表列名數(shù)據(jù)類型長(zhǎng)度允許空注釋ID4否訂單 IDOrderIDVarchar50否總訂單UserIdVarchar50否用戶 IDS
8、ubmitTimeDa ime8是提交時(shí)間ConsignmentTiDa ime8是時(shí)間meTotalPriceFloat16是總價(jià)格contentText300是描述IpaddressVarchar50是Ip 地址IspayoffVarchar50是是否付款I(lǐng)sAddressvarchar20是是否發(fā)貨表 4.6 為分類表,書店現(xiàn)有的分類。表 4.6 Bookclass 表列名數(shù)據(jù)類型長(zhǎng)度允許空注釋IDVarchar30否分類Claamevarchar30否分類名2.4 數(shù)據(jù)庫(kù)創(chuàng)建create table My_Book(-表Id IDENTITY (1,1)primary NULL,-ke
9、y , -類別序列號(hào)主鍵BookName varchar(40) NOT名BookClassnot null,Author varchar(25) NULL,Publish varchar(150) NULL, BookNo varchar(30) NULL,-作者-書號(hào)-內(nèi)容介紹-書價(jià)Content varchar(4000)Prince float NULL,NULL,Amount Leav_number);NULL,NULL,-總數(shù)量-剩余數(shù)量create Id Clatable My_BookClass(-類別表 IDENTITY (1, 1) Not Null primary key
10、,-類別序列號(hào)主鍵ame varchar(30) not null-類別名);create table My_BookAdminuser(-管理員表AdminUser varchar(20), AdminPass varchar(50);create table My_Users (-管理員名-管理員-用戶表Id IDENTITY (1, 1)primarynull,key, -序列號(hào)主鍵-用戶名-用戶UserName varchar(20) notPassWord varchar(50) Names varchar(20),Sex varchar(2), Address varchar(15
11、0), Phone varchar(25),t varchar(8),varchar(50),notnull,-用戶聯(lián)系-用戶-用戶聯(lián)系地址-用戶-用戶聯(lián)系-用戶電子郵件RegTimeDateTime,-用戶-用戶時(shí)間時(shí)IP地址RegIpAddress varchar(20);create table My_Indent(-購(gòu)物車訂單號(hào)表primary key, -序列號(hào)主鍵Id IDENTITY (1, 1)varchar(20) not not null,IndentNoUserId null,-訂單-用戶序列號(hào)-提交訂單時(shí)間-交貨時(shí)間SubmitTime datetime not nul
12、l,ConsignmentTime varchar(20),TotalPrice float,content varchar(400), IPAddress varchar(20),-總金額-用戶備注-下單時(shí)IP-用戶是否已付款-是否已發(fā)貨IsPayoff IsSales );create table null, nullMy_IndentList(-訂單列表IdIDENTITY (1, 1) primarykey,-序列號(hào)主鍵IndentNo BookNo Amount ); not null, not null,-訂單號(hào)表序列號(hào)-訂貨數(shù)量表序列號(hào)系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)系統(tǒng)設(shè)計(jì)目標(biāo)對(duì)于像電子商務(wù)這
13、樣的數(shù)據(jù)流量特別大的網(wǎng)絡(luò)管理系統(tǒng),必須要滿足使用方便、操作靈活等設(shè)計(jì)要求。本系統(tǒng)在設(shè)計(jì)時(shí)應(yīng)該滿足以下幾個(gè)目標(biāo):采用人機(jī)的操作方式,界面設(shè)計(jì)美觀友好、信息查詢靈活、方便、快捷、準(zhǔn)確、數(shù)據(jù)安全可靠。全面展示書店內(nèi)所有的,并可展示及特價(jià)。為顧客提供一個(gè)方便、快捷的采用模糊查詢查詢數(shù)據(jù)。實(shí)現(xiàn)網(wǎng)上購(gòu)物。信息查詢功能。商品銷售決策。,以方便顧客了解本商城內(nèi)的熱銷商品及幫助企業(yè)者做出相應(yīng)的查看商城內(nèi)的公告信息。用戶隨時(shí)都可以查看自己的訂單。對(duì)用戶輸入的數(shù)據(jù),系統(tǒng)進(jìn)行嚴(yán)格的數(shù)據(jù)檢驗(yàn),盡可能排除人為的錯(cuò)誤。系統(tǒng)最大限度地實(shí)現(xiàn)了易性和易操作性。系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。2.5.2 系統(tǒng)設(shè)計(jì)本系統(tǒng)采用三層架構(gòu)設(shè)計(jì)4,
14、它的工作原理如圖 2.8 所示。圖 2.8 三層結(jié)構(gòu)原理圖采用三層構(gòu)架以后,用戶界面層通過(guò)的接口向業(yè)務(wù)層發(fā)送請(qǐng)求,業(yè)務(wù)層按自己的邏輯規(guī)則將請(qǐng)求處理之后進(jìn)行數(shù)據(jù)庫(kù)操作,然后將數(shù)據(jù)庫(kù)返回的數(shù)據(jù)封裝成類的形式返回給用戶界面層。這樣用戶界面層甚至可以不知道數(shù)據(jù)庫(kù)的結(jié)構(gòu),它只要即可。2.5.3 系統(tǒng)功能模塊劃分與業(yè)務(wù)層之間的接口根據(jù)需求分析及三層架構(gòu)設(shè)計(jì)的,設(shè)計(jì)出客戶系統(tǒng)功能如圖 2.9圖 2.9 客戶端系統(tǒng)管理的系統(tǒng)功能圖如圖 2.10管理員登陸用戶管理現(xiàn)有圖書添加新圖添加圖書訂單管理用戶管理查看圖書資料修改圖書資料刪除圖書添加新圖書添加圖書分類刪除圖書分類查看訂單詳細(xì)刪除訂單查看用戶資料查看用戶詳細(xì)
15、修改用戶資料刪除用戶購(gòu)買察看圖書詳細(xì)資購(gòu)買查看訂單詳細(xì)繼續(xù)購(gòu)書清空購(gòu)物車提交購(gòu)物車刪除已經(jīng)選購(gòu)的修改購(gòu)買數(shù)量在線購(gòu)書查看購(gòu)物察看訂單圖書查詢購(gòu)買察看圖書用戶注冊(cè)購(gòu)書用戶登錄圖 2.10管理系統(tǒng)功能圖第三章系統(tǒng)開(kāi)發(fā)及實(shí)現(xiàn)我主要負(fù)責(zé)的是支持各模塊的 JAVA 類的編寫。3.1 數(shù)據(jù)庫(kù)連接 Bean 的編寫數(shù)據(jù)庫(kù)操作的 JavaBean 是一個(gè)公共類,放在 bookshop 下的 util 包中,通常包括連接數(shù)據(jù)庫(kù)的方法 getConnection、執(zhí)行查詢語(yǔ)句的方法 executeQuery、執(zhí)行更新操作的方法 executeUpdate、關(guān)閉數(shù)據(jù)庫(kù)連接的方法 close。其實(shí)現(xiàn)代碼如下:pack
16、age bookshop.util;/將該類保存到 package bookshop.util 包中/*/數(shù)據(jù)庫(kù)連接包 Copyright: wxy Copyright (c) 2007Company:Ling Du bookshop online import java.sql.*; public class DataBase public Connection conn;/導(dǎo)入提供基本的數(shù)據(jù)庫(kù)編程服務(wù)的包/定義一個(gè) Connection 對(duì)象public Sement stmt;/定義一個(gè) Sement 對(duì)象public publicpublicResultSet rs=null; Str
17、ing sqlStr=;DataBase() /定義一個(gè) ResultSet 對(duì)象/定義一個(gè)字符串,用來(lái)保存 SQL 語(yǔ)句this.connect();publicconnect()tryClass.forName(com.jdbc.sqlserver.SQLServerDriver).newInstance();/加載 SQL Server 2005 數(shù)據(jù)庫(kù)驅(qū)動(dòng)String url =jdbc:sqlserver:/localhost:1433;DatabaseName=bookshop;/保存連接數(shù)據(jù)庫(kù)的 URL 地址的變量conn=DriverManager.getConnection(
18、url,”sa”,”);/建立數(shù)據(jù)庫(kù)連接Sement stmt= conn.createScatch(Exception ee)ement ();System.out.prln(connect db error:+ee.getMessage();/檢測(cè)數(shù)據(jù)庫(kù)連接是否成功return false;return true;public sic void main(String args) tryDataBase db = new DataBase(); db.connect();catch(Exception e)e.prStackTrace();5.3.2 字符處理 Bean 的編寫在 JSP
19、開(kāi)發(fā)中經(jīng)常會(huì)涉及有關(guān)字符串的處理,例如:把字符串轉(zhuǎn)換成適合于網(wǎng)頁(yè)顯示的文本、八字符串轉(zhuǎn)換成適合 SQL 語(yǔ)句的字符串等等,所以把這些字符串處理方法集中到一個(gè)類中。這也是一個(gè)公共類3。關(guān)鍵代碼如下:package bookshop.util;/* 負(fù)責(zé)字符串的處理 */importimportjava.lang.*;java.util.*;publicclass dataFormat public dataFormat() /*把字符串轉(zhuǎn)換成適合于網(wǎng)頁(yè)顯示的文本param sreturn*/public sic String toHtml(String s) if (s=null) s=strR
20、epla s=strRepla s=strReplas=strReplareturn s;,&,&;);,);,);s=parseReturn(s,n&return s;&;&;&;);/*把字符串sBody中的sFrom用sTo替換paramparam paramsBodysFrom sToreturn*/public sic String strReplatring sBody, String sFrom, String sTo) i,j,k,l;if (sBody=null | sBody.equals() return ;i =j =k =0;sFrom.length(); sTo.l
21、ength();StringBuffer sss = new StringBuffer(sBody.length();b=true;l = i;while (sBody.indexOf(sFrom,i)!=-1) i = sBody.indexOf(sFrom,i); sss.append(sBody.substring(l,i); sss.append(sTo);i += j; l = i;sss.append(sBody.substring(l); return sss.toString();/* 把字符串中的rn轉(zhuǎn)換成nparamparam*/ public sString sBody
22、: 要進(jìn)行替換操作的字符串String sEndwith : 要替換成為的字符串ic String parseReturn(String sBody, StringsEndwith) StringTokenizer t = new StringTokenizer(sBody, rn);StringBuffer sss = new StringBuffer(sBody.length();b=true;if (sEndwith.trim().equals() sEndwith=n; while (sMoreTokens() String s=t.nextToken();s=s.trim();whi
23、le (s.startsWith( ) s=bstring(2);if (!s.equals() if (b b else) =false;sss.append(sEndwith);sss.append(s);return sss.toString();/*將字符串格式化成 HTML 代碼輸出只轉(zhuǎn)換特殊字符,適合于 HTML 中的表單區(qū)域param str 要格式化的字符串return 格式化后的字符串*/public sic String toHtmlInput(String str)if (str = null)return null;String html = new String(st
24、r);html htmlhtml= strReplace(html,= strReplace(html,= strReplace(html,&,&;););return html;/*將普通字符串格式化成數(shù)據(jù)庫(kù)認(rèn)可的字符串格式*param str 要格式化的字符串return 合法的數(shù)據(jù)庫(kù)字符串*/public sic StringtoSql(String str) String(str);ql, , );String sql = newreturn strRepla3.3 實(shí)現(xiàn)用戶實(shí)體的 Bean1)用戶實(shí)體 Bean,這個(gè)類是對(duì)用戶實(shí)體的抽象,它包含了用戶實(shí)體的所有屬性及用戶對(duì)象初始化構(gòu)造
25、方法。它們都是和數(shù)據(jù)庫(kù)里的 shop_user 表相對(duì)應(yīng)的,在這個(gè) Bean 里封裝的方法也主要是對(duì)這個(gè)8表進(jìn)行操作.這些屬性都被定義為類的私有成員,外界不可privaong id;privateprivate privateStringString StringuserName;usassword;Names;private privateprivateString StringStringSex; Address; Phone;t;private private privateprivateString String StringStringRegTime;RegIpAddress;2)構(gòu)
26、造函數(shù)里對(duì)以上私有成員進(jìn)行初始化:Public user()Id=0;UserName=”; Password=”; Names=”;Sex=”;Address=”; Phone=”;t=”;=”;RegTime=”;RegIpAddress=”;.其中的 seter 和 geter 方法用來(lái)設(shè)置和獲取以上各屬性的值。在 jsp 頁(yè)面中通過(guò)3.4 實(shí)現(xiàn)實(shí)體的 Bean引入。應(yīng)用面象的把具有共性的實(shí)體抽象成一個(gè)類。這個(gè)Bean 就是對(duì)實(shí)體的抽象,對(duì)象的初始化構(gòu)造方法,里面的屬性和表 Book 表對(duì)應(yīng)8。部分代碼如他包含了下:package/* */實(shí)體的所有屬性及bookshook;類 publ
27、ic class book priva private private private private private private private private private private privateprivateong Id;/ID序列號(hào)String BookName;BookClass;/書名/類別類別名String String String StringStringclaame;Author; Publish; BookNo ;Content/作者/書號(hào)/內(nèi)容介紹/書價(jià)/總數(shù)量/剩余數(shù)量/登記時(shí)間;float Prince ;Amount ; Leav_number;St
28、ring RegTime ;String picture ;/樣圖文件的名稱/*/ public的初始化book() Id = 0;BookName = ;BookClass = 0;claame = ;Author = ; Publish = ; BookNo = ; Content = ; Prince = 0;Amount = 0;Leav_number = 0; RegTime = ;publicvoid setId(long newId)this.Id = newId;publiclong getId()其中的 seter 和 geter 方法用來(lái)設(shè)置和獲取以上各屬性的值。在 jsp
29、 頁(yè)面中通過(guò)引入。3.5 實(shí)現(xiàn)分類實(shí)體 Bean這個(gè)類是對(duì)分類實(shí)體的抽象,他包含了分類實(shí)體的所有屬性及分類對(duì)象的初始化構(gòu)造方法,它的屬性和表Bookclass對(duì)應(yīng),部分代碼如下:package booksh/*ook;* 分類類*/public class bookclass privateId;/ID序列號(hào)private String Cla public bookclass()Id = 0;ame;/類別Claame =;public bookclass(Id = newId; Claame =newId, String newname) newname;3.6 實(shí)現(xiàn)訂單實(shí)體 Bean這個(gè)
30、類是對(duì)訂單實(shí)體的抽象,它包含了訂單實(shí)體的所有屬性及訂單對(duì)象的初始化構(gòu)造方法??蛻裘看我环N商品都會(huì)產(chǎn)生一次訂購(gòu)單,它包括訂單號(hào),所的書號(hào),所這種書的數(shù)量等,這些了這個(gè)類的私有屬性,這些屬性和表Order對(duì)應(yīng)。package bookshook;/* 訂單類 */代碼如下:publicclass order priva private priva private private private private private privateprivateong Id;String orderId; ong UserId;String SubmitTime;/ID序列號(hào)/訂單/用戶序列號(hào)/提交訂單時(shí)
31、間String ConsignmentTime;float TotalPrice;/交貨時(shí)間/總金額/用戶備注/下單時(shí)IP/用戶是否已付款/是否已發(fā)貨StringStringcontent; IPAddress; IsPayoff; IsSales;public order()/在構(gòu)造方法里初始化變量Id = 0;orderId = ; UserId = 0; SubmitTime = ; ConsignmentTime = TotalPrice = 0; content = ; IPAddress = ; IsPayoff = false;IsSales = false;public lon
32、g getId() return Id;其中的 seter 和 geter 方法用來(lái)設(shè)置和獲取以上各屬性的值。在 jsp 頁(yè)面中通過(guò)引入。3.7 實(shí)現(xiàn)訂單列表的 Bean這個(gè)類是對(duì)訂單列表實(shí)體的抽象,它包含了訂單實(shí)體的所有屬性及訂單列表對(duì)象的初始化構(gòu)造方法,它的屬性和表 Allorders 對(duì)應(yīng),部分代碼如下:package bookshook;/* Title: */public class allorder priva priva privaprivateong Id;ong orderId;ong BookNo; Amount;/ID序列號(hào)/訂單號(hào)表序列號(hào)/表序列號(hào)/訂貨數(shù)量public
33、 allorder() Id = 0;orderId = 0;BookNo = 0;Amount = 0;public long getId() return Id;其中的 seter 和 geter 方法用來(lái)設(shè)置和獲取以上各屬性的值。在 jsp 頁(yè)面中通過(guò) 引入。3.8 實(shí)現(xiàn)購(gòu)物車實(shí)體的 Bean在現(xiàn)實(shí)生活中,人們?nèi)コ匈I東西,都是把商品放在一個(gè)購(gòu)物籃里,等到把所有要買的東西選購(gòu)?fù)戤吅螅黄鹉玫绞浙y臺(tái)前付錢。我在程序里定義的購(gòu)物車實(shí)體就是模擬這個(gè)功能.作為購(gòu)物車,購(gòu)物時(shí)間,所購(gòu)書的總價(jià)格都是必不可少的,這個(gè)類是對(duì)購(gòu)物車實(shí)體的抽象,它包含了購(gòu)物車的所有屬性及購(gòu)物車對(duì)象的初始化構(gòu)造方法。部分代碼
34、如下:package bookshook;/* Title: */public class shopcar privaong bookId;/ID/選購(gòu)數(shù)量privatequanlity;public shopcar() bookId = 0;quanlity = 0;public long getBookId() return bookId;3.9 管理用戶登錄 Bean 的編寫這是一個(gè)以客戶為中心的交易,只有成為了系統(tǒng)的合法用戶才有使用本系統(tǒng)的權(quán)利,因此需要檢測(cè)每個(gè)用戶的,管理用戶登錄這個(gè) Bean:Login.java 就是要完成這能。圖 3.1 為 Login 類的類圖其中只是關(guān)鍵的幾
35、個(gè)方法。圖 3.1從圖 5-1 中可以看出 Login 具有的屬性和方法,其中 login() :void 構(gòu)造函數(shù),getismin 為取得屬性 isadmin 的值的方法,即判斷登陸用戶是否是管理員。其它的是設(shè)置和獲取屬性的方法。其中有兩個(gè)重要的方法介紹如下:getSql()方法根據(jù)用戶的不同獲得不同的查詢 SQL 語(yǔ)句。判斷登陸用戶是否是管理員,如果是則從管理員信息表中查詢數(shù)據(jù),否則則從普通用戶表中查詢數(shù)據(jù)。實(shí)現(xiàn)代碼如下:/*獲得查詢用戶信息的 sql 語(yǔ)句return*/public String getSql() if (isadmin) sqlStr = select * from
36、 BookAdmin where adminuser = + dataFormat.toSql(username) + and adminpass = + dataFormat.toSql(passwd) + ;else sqlStr = select * from shop_user where username = + username + and password = + passwd + ;return sqlStr;Execute()方法/*執(zhí)行查詢r(jià)eturnthrows java.lang.Exception*/publicexcute() throws Exceptionfla
37、g = false;DataBase db = new DataBase();db.connect();/獲取一個(gè)數(shù)據(jù)庫(kù)連接LoginExecute(): getIsadmin(): getSql():StringIsadmin: Passwd:String userId:longSement stmt = db.conn.createSement ();rs = stmt.executeQuery(getSql();/rs 里返回查詢結(jié)果集if (rs.next()if (!isadmin)userid = rs.getLong(id);flag = true;rs.close(); ret
38、urn flag;從以上代碼中可以看出,構(gòu)造數(shù)據(jù)庫(kù)連接 DataBase 類的對(duì)象,調(diào)用其 connect()方法獲得連接,調(diào)用 getsql()方法獲得 SQL 語(yǔ)句,然后從數(shù)據(jù)庫(kù)中查得用戶所需信息。3.10 管理該類負(fù)責(zé)Bean 的編寫的管理,包括的修改、查詢、刪除、和添加等,圖 5.2 為該類的類圖5,其中省去了部分方法,這里只介紹幾個(gè)重要的方法。圖 3.2 管理op_book 類的類圖1)getRequest()方法該方法負(fù)責(zé)從頁(yè)面接收到的表單資料分解,并設(shè)置true 表示成功,反之表示失敗。部分代碼如下:實(shí)體的相應(yīng)屬性,它的返回值為類型,publicgetRequest(javax.
39、servlet.http.HttpServletRequest newrequest) flag = false;tryrequest = newrequest;String ID = request.getParameter(id); long bookid = 0;trybookid = Long.parseLong(ID);catch (Exception e)abooks.setId(bookid);String bookname = request.getParameter(bookname); if (bookname=null | bookname.equals()Book_se
40、arch(): Delete(): Getonebook(): Getsql():String Getsqlflag(): Insert():Op_booksqlStr:String abooks:bookBooklist:Vector Page: Pagecount: Pagesize:Recordcount:longbookname = ;sqlflag = false;abooks.setBookName(to_String(bookname); String author = request.getParameter(author); if (author=null | author.
41、equals()author = ; sqlflag = false;abooks.setAuthor(to_String(author);String publish = request.getParameter(publish); if (publish=null)publish = ;abooks.setPublish(to_String(publish);String bookclass = request.getParameter(bookclass);bc =egarse(bookclass);abooks.setBookClass(bc);String bookno = requ
42、est.getParameter(bookno); if (bookno = null)bookno = ;abooks.setBookNo(to_String(bookno);String picture = request.getParameter(picture); if (picture = null)picture = images/01.gif;abooks.setPicture(to_String(picture); float price;tryprice =new Float(request.getParameter(price).floatValue(); catch (E
43、xception e)price = 0; sqlflag = false;abooks.setPrince(price); amount;tryamount = newcatch (Exception e)eger(request.getParameter(amount).Value();sqlflag = false;amount = 0;abooks.setAmount(amount);String content = request.getParameter(content); if (content = null)content = ;abooks.setContent(to_Str
44、ing(content); if (sqlflag)flag = true;return flag;catch (Exception e)return flag;2)book_search()方法該方法負(fù)責(zé)查詢,包括的分類,分頁(yè)、關(guān)鍵字查詢。首先通過(guò) getRequest()方法獲得頁(yè)面表單參數(shù)值,根據(jù)參數(shù)值判斷是何種查詢,然后根據(jù)相應(yīng)的 SQL 的語(yǔ)句從數(shù)據(jù)庫(kù)里查詢相應(yīng)的值。這里需要用到分頁(yè)技術(shù)。部分代碼如下:/*完成查詢,包括分類,分頁(yè)查詢param res returnthrows java.lang.Exception*/publicbook_search(HttpServletReq
45、uest res) throws Exception DataBase db = new DataBase();db.connect();Sement stmt = db.conn.createSement ();request = res;String String Stringif (claPAGE = request.getParameter(page);cla= request.getParameter(cla/頁(yè)碼);/分類ID號(hào)/查詢keyword = request.getParameter(keyword);=null) cla=;if (keyword=null) keywo
46、rd = ;keyword = to_String(keyword).toUpperCase(); try page =egarse(PAGE);catch (NumberFormatException e) page = 1;/取出數(shù)if (!cla.equals() & keyword.equals() ) sqlStr = select count(*) from book where bookclass=+cla+ ;else if (!keyword.equals() if (cla.equals()sqlStr = select count(*) from book where u
47、pper(bookname) like %+keyword+ % or upper(content) like % + keyword +%; else sqlStr = select count(*) from book+ and (upper(bookname) upper(content) like % + else where bookclass= like % +keyword+keyword + %);+ cla% or+sqlStr = select count(*) from book;rscount = pageSize; try ResultSet rs1 = stmt.e
48、xecuteQuery(sqlStr);if (rs1.next() recordCount = rs1.get rs1.close();catch (SQLException e)(1);System.out.prreturn false;ln(e.getMessage();/設(shè)定有多少pageCount if (recordCount 1)pageCount = 0;elsepageCount = ()(recordCount - 1) / pageSize + 1;/檢查查看的頁(yè)面數(shù)是否在范圍內(nèi) if (page pageCount)page = pageCount;rscount =
49、(/sql為倒序取值) recordCount % pageSize;/ 最后一頁(yè)數(shù)sqlStr = selecta.id,a.bookname,a.bookclass,b.claame,+a.author,a.publish,a.bookno,a.content,a.prince,a.amount,+ a.Leav_number,a.regtime,a.picture from book a,bookclass b+ where a.Bookclass = b.Id ;if (!cla.equals() & keyword.equals() ) /如果類別不為空,非查詢 if (page =
50、 1)sqlStr order else sqlStr= sqlStr + and a.bookclass= + claby a.Id desc;+ += sqlStr + and a.bookclass= + cla+ limit +(recordCountSize * page)+,+(recordCountSize* (1);else if (!keyword.equals() /如果是查詢資料if (page = if (!clasqlStrcla1).equals() /查詢某一類= sqlStr + and a.Bookclass= + and (upper(a.bookname)
51、 like % +keyword+ % or upper(a.content) like % +keyword else sqlStr = keyword+ %) order by a.Id desc;/查詢所有類sqlStr + and (upper(a.bookname) like % + % or upper(a.content) like % +keyword +%) order by a.Id desc; else if (!clasqlStrcla.equals()= sqlStr + and a.Bookclass= + and (upper(a.bookname) like %
52、 +keyword+ % or upper(a.content) like % +keyword + %) limit +(recordCountSize * page)+,+ (recordCountSize * (1); else sqlStr = sqlStr + and (upper(a.bookname) like % + keyword+ % or upper(a.content) like % +keyword + %) limit +(recordCountSize * page)+,+ (recordCountSize * (1);else /非查詢,也類瀏覽if (page
53、 = 1)sqlStr = sqlStr + order by a.Id desc limit 0,+pageSize; else sqlStr = sqlStr + limit +(recordCountSize * page)+,+ (recordCountSize * (1);try rs = stmt.executeQuery(sqlStr); booklist = new Vector(rscount); while (rs.next()book book = new book(); book.setId(rs.getLong(id);book.setBookName(rs.getS
54、tring(bookname);book.setBookClass(rs.get(bookclass);book.setClaame(rs.getString(claame);book.setAuthor(rs.getString(author); book.setPublish(rs.getString(publish); book.setBookNo(rs.getString(Bookno);book.setContent(rs.getString(content);book.setPrince(rs.getFloat(prince);book.setAmount(rs.get(amoun
55、t);book.setLeav_number(rs.get(leav_number);book.setRegTime(rs.getString(regtime);book.setPicture(rs.getString(picture); booklist.addElement(book);rs.close(); return true;catch (Exception e)System.out.pr return false;ln(e.getMessage();3)insert()方法該方法負(fù)責(zé)的添加,返回類型為型,true表示成功,反之失敗。首先從對(duì)象中獲得屬性,組裝相應(yīng)的SQL語(yǔ)句并執(zhí)行
56、,返回執(zhí)行結(jié)果。代碼如下:/*完成return添加throws java.lang.Exception*/publicsqlStr =insert() throws Exception inserto book (Bookname,Bookclass,Author,Publish,Bookno,+Content,Prince,Amount,Leav_number,Regtimcture) values (;sqlStr sqlStr sqlStr sqlStr sqlStr sqlStr sqlStr sqlStr sqlStr sqlStrsqlStr=sqlStr sqlStr sqlSt
57、r sqlStr sqlStr sqlStr sqlStr sqlStr sqlStr sqlStrsqlStr+dataFormat.toSql(abooks.getBookName() + ,; abooks.getBookClass() + ,; dataFormat.toSql(abooks.getAuthor() + ,; dataFormat.toSql(abooks.getPublish() + ,; dataFormat.toSql(abooks.getBookNo() + ,;dataFormat.toSql(abooks.getContent() + ,;abooks.ge
58、tPrince() abooks.getAmount() abooks.getAmount()now()+ ,;+ ,;+ ,;+ ,;abooks.getPicture()+);trySystem.out.pr(sqlStr);DataBase db = new DataBase();db.connect();stmt =db.conn.createS stmt.execute(sqlStr); return true;catch (SQLException sqle)ement ();System.out.pr(sqle.getMessage();return false;的修改和刪除方法
59、和上面類似,省略講解。3.11 管理分類 Bean由于分類實(shí)體的存在,需要對(duì)進(jìn)行分類查詢、添加、刪除等操作方法,為了方便,把這些方法集合到一個(gè)類中,即 Op_bookclass 類,圖 3.3 為該類的類圖,其中也省略了部分方法。該類的方法和管理Bean 中的方法類似,所以在次就不多講。圖 3.3 管理分類的 Op_bookclass 類圖3.12 管理用戶的 Bean為了使用上的方便,我把對(duì)用戶的管理,包括用戶的添加、刪除、修改、查詢等集即 Op_user 類。圖 3.4 為該類的類圖,其中只是關(guān)鍵的幾個(gè)方法。一個(gè)管理類,圖 3.4 管理用戶 op_user 類的類圖有類圖可以看出該類具有以
60、下屬性:private user user = new user();/新的用戶對(duì)象private javax.servlet.http.HttpServletRequest request;/建立頁(yè)面請(qǐng)求private Vector userlist;/顯示用戶列表向量數(shù)組/顯示的頁(yè)碼/每頁(yè)顯示的/頁(yè)面總數(shù)/查詢的private private privateprivapage = 1; pageSize=8; pageCount =0;ong recordCount =0;數(shù)總數(shù)private String message = ;private String username = ;/出錯(cuò)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 破產(chǎn)管理人信息化管理計(jì)劃
- 2025小學(xué)數(shù)學(xué)學(xué)生評(píng)價(jià)體系心得體會(huì)
- 四年級(jí)數(shù)學(xué)作業(yè)輔導(dǎo)復(fù)習(xí)計(jì)劃
- 2025年度地鐵消防培訓(xùn)計(jì)劃
- 小學(xué)生國(guó)慶詩(shī)歌朗誦配樂(lè)范文
- 2024年特殊教育第一學(xué)期教學(xué)工作計(jì)劃
- 高三第二學(xué)期課堂教學(xué)計(jì)劃
- 初三班主任校際交流計(jì)劃
- 兒科創(chuàng)傷危重癥搶救流程
- 以康??h幼兒園為例探究教學(xué)活動(dòng)中隨機(jī)教育的實(shí)踐與優(yōu)化
- 2025益陽(yáng)市赫山區(qū)中小學(xué)教師招聘考試試題及答案
- 發(fā)動(dòng)機(jī)質(zhì)保協(xié)議書合同
- 防串味施工方案Deepseek2025
- 光伏發(fā)電工程螺旋鉆孔灌注樁施工方案
- 云南省昆明市 2022-2023學(xué)年高一下學(xué)期期末英語(yǔ)試題(含答案)
- 2025年中國(guó)頭孢克肟開(kāi)環(huán)側(cè)鏈酸市場(chǎng)現(xiàn)狀分析及前景預(yù)測(cè)報(bào)告
- 2025年全國(guó)低壓電工作業(yè)證(復(fù)審)考試練習(xí)題庫(kù)(600題)附答案
- 軟件開(kāi)發(fā)文檔-電子政務(wù)云服務(wù)平臺(tái)系統(tǒng)招標(biāo)文件范本
- 抖音本地生活服務(wù)方案
- PET考試培訓(xùn)課件
- 2022年寧夏回族自治區(qū)7月普通高中學(xué)業(yè)水平測(cè)試生物試卷會(huì)考試題及答案
評(píng)論
0/150
提交評(píng)論