版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 網(wǎng)上書店系統(tǒng)</b></p><p><b> 1.需求分析。</b></p><p> 參考設(shè)計(jì)要求,及可行性的分析,我們確定了如下的需求:</p><p> 1.數(shù)據(jù)庫(kù)設(shè)計(jì)科學(xué)合理。</p><p> 2.網(wǎng)站主頁(yè)面簡(jiǎn)潔美觀,可以天藍(lán)色為主色調(diào)。</p
2、><p> 3.網(wǎng)站主頁(yè)顯示各個(gè)分類的及總的暢銷表、新書榜、推薦榜,顯示論壇新帖。</p><p> 4.單本圖書的詳細(xì)資料頁(yè)面顯示同類圖書的暢銷榜,同一作者的暢銷榜,購(gòu)買了同一本書的讀者此外還購(gòu)買的圖書。</p><p> 5.可按作者,或者書名,或者出版社搜索圖書。</p><p> 6.用戶注冊(cè)登錄后可以使用購(gòu)物車、訂單等功能,可以
3、修改密碼、個(gè)人資料,還可以在論壇發(fā)表新帖、回復(fù)。</p><p> 7.具備友好的用戶界面,提供適當(dāng)?shù)牟僮魈崾?,如用戶登錄時(shí)的密碼錯(cuò)誤等。</p><p> 8.網(wǎng)站管理員可通過后臺(tái)管理界面,修改密碼,添加、刪除用戶,添加、刪除、修改圖書的詳細(xì)資料。</p><p> 2.總的設(shè)計(jì)思想、系統(tǒng)平臺(tái)、開發(fā)工具。</p><p> 團(tuán)隊(duì)工作
4、模式:以組長(zhǎng)為核心,充分溝通與交流,保證概念的完整性與進(jìn)度的良好控制。</p><p> 采用自頂向下的設(shè)計(jì)方法,策略上采取復(fù)用、分而治之。</p><p> 首先,清晰的結(jié)構(gòu)和表達(dá)方式更容易對(duì)需求和模塊功能進(jìn)行精確的描述。其次,模塊分割和模塊獨(dú)立性避免了系統(tǒng)級(jí)的bug。另外,細(xì)節(jié)的隱藏使結(jié)構(gòu)上的缺陷更加容易識(shí)別。第四,設(shè)計(jì)在每個(gè)精化步驟的層次上是可以測(cè)試的,所以測(cè)試可以盡早開始,并且
5、每個(gè)步驟的重點(diǎn)可以放在合適的級(jí)別上。 </p><p> 一次添加一個(gè)構(gòu)件(功能模塊)。在添加了新的構(gòu)件(功能模塊)之后,用它們來測(cè)試子系統(tǒng)。因?yàn)槟切┰瓉砜梢栽谧酉到y(tǒng)上成功運(yùn)行的用例,必須在現(xiàn)有系統(tǒng)上重新運(yùn)行,對(duì)系統(tǒng)進(jìn)行回歸測(cè)試。</p><p> 精確、完整地定義接口、功能模塊時(shí),將具有一定集成度并可以重復(fù)使用的模塊抽象出來,經(jīng)驗(yàn)證后發(fā)放給組員以供復(fù)用,盡可能地避免代碼的重
6、復(fù)生產(chǎn),提高代碼的重用率,從而合理化、并簡(jiǎn)化開發(fā)過程,減少總的開發(fā)工作量與維護(hù)代價(jià),提高生產(chǎn)率。</p><p> 通過QQ、郵箱、局域網(wǎng)內(nèi)的共享等,共享調(diào)試記錄。</p><p> 系統(tǒng)平臺(tái):Windows XP SP2 。</p><p> 開發(fā)工具:Tomcat,JDK 1.5,Eclipse,Access 2003,Macromedia Dreamw
7、eaver MX 2004。</p><p><b> 3.數(shù)據(jù)結(jié)構(gòu)。</b></p><p> 在 Microsoft Office Access 2003 中建立數(shù)據(jù)庫(kù)。</p><p> 表-1 book ,圖書的詳細(xì)資料。</p><p> 表-2 user , 用戶的詳細(xì)資料。</p>&
8、lt;p> 表-3 orderTotal ,訂單的整體屬性資料。</p><p> 表-4 orderItem ,訂單中的圖書條目資料。</p><p> 表-5 topic ,論壇的主帖的詳細(xì)資料。</p><p> 表-6 topic_follow ,主帖與回帖的對(duì)應(yīng)關(guān)系。</p><p> 表-7 follow ,回帖
9、的詳細(xì)資料</p><p> 表-8 hotSearch ,熱門搜索關(guān)鍵詞的詳細(xì)資料。</p><p><b> 4.功能模塊。</b></p><p> 4.1首頁(yè) index-main.jsp 部分代碼—1。</p><p> 變量、函數(shù)的聲明,網(wǎng)頁(yè)標(biāo)題的顯示。</p><p>
10、<%@ page language="java" contentType="text/html; charset=gb2312"</p><p> import="java.sql.*,myPk.*" %></p><p> <% request.setCharacterEncoding("gb23
11、12"); %></p><p> <html><head></p><p> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"></p><p> <link rel=&quo
12、t;stylesheet" type="text/css" href="blue.css"></p><p><b> <%! </b></p><p><b> //轉(zhuǎn)換字符集</b></p><p> public String toChi(Strin
13、g str)</p><p><b> {</b></p><p> if (str==null)</p><p> return "";</p><p><b> try</b></p><p><b> {</b><
14、;/p><p> String temp_p=str;</p><p> byte[] temp_t=temp_p.getBytes("ISO8859-1");</p><p> String temp=new String(temp_t);</p><p> return temp;</p><p
15、><b> }</b></p><p> catch(Exception e) { }</p><p> return str;</p><p><b> }</b></p><p><b> %></b></p><p><
16、b> <%</b></p><p> String sort=null;</p><p> String pageTitle="首頁(yè)";//網(wǎng)頁(yè)標(biāo)題</p><p> String bookHot="";//欄目的標(biāo)題</p><p> String sql=&
17、quot;select * from book";</p><p> Pageable rs=null;</p><p> Pageable rsNew=null;</p><p> Pageable rsHot=null;</p><p> Pageable rsCam=null;</p><p>
18、 if(request.getParameter("sort")!=null)</p><p><b> {</b></p><p> /*Javascript腳本中頁(yè)面跳轉(zhuǎn)時(shí)傳遞的參數(shù),</p><p> 以及HTML中鏈接(<a href="***.jsp?p1=z1">跳轉(zhuǎn)<
19、;/a>)時(shí)傳遞的參數(shù),</p><p> 即使在發(fā)送端用了 request.setCharacterEncoding("GB2312");</p><p> 接收時(shí),仍然要用自定義的函數(shù)轉(zhuǎn)換字符集,否則參數(shù)中的中文會(huì)顯示為亂碼。</p><p><b> */</b></p><p>
20、 sort=toChi(request.getParameter("sort"));</p><p> pageTitle="["+sort+"]";</p><p> bookHot=pageTitle;</p><p> sql=sql+" where bookSort='&qu
21、ot;+sort+"'";</p><p><b> }</b></p><p><b> %></b></p><p> <title><%=pageTitle %>--網(wǎng)上書店</title></head></p>&
22、lt;p> 4.2首頁(yè) index-main.jsp 部分代碼—2。</p><p> 顯示全局推薦、類別內(nèi)推薦的書目。</p><p> <table width="100%" border="0" cellspacing="0" cellpadding="0"></p>
23、<p><b> <tr></b></p><p><b> <td></b></p><p> <div id="titleBg"></p><p> <div id="titleText"><%=book
24、Hot %>推薦</div><br></div></td></tr></p><p><b> <tr></b></p><p> <td align="left"></p><p><b> <%</b&g
25、t;</p><p> Conn con=null;</p><p><b> try</b></p><p><b> {</b></p><p> String comSql="";</p><p> if(request.getParame
26、ter("sort")!=null)</p><p> comSql+=sql+" and bookCommend='inSort'";</p><p><b> else</b></p><p> comSql+=sql+" where bookCommend='
27、inAll'";</p><p> comSql+=" order by bookSold desc";</p><p> con=new Conn();</p><p> Pageable rsCom=con.getRs(comSql);</p><p> rsCom.setPageSize(1
28、0);</p><p> rsCom.gotoPage(1);</p><p> for(int i=0;i<rsCom.getPageRowsCount();i++)</p><p><b> {</b></p><p> if(sort==null)</p><p><b&
29、gt; {</b></p><p><b> %></b></p><p> <ahref='index-main.jsp?sort=<%=rsCom.getString("bookSort") %>'>[<%=rsCom.getString("bookSort&qu
30、ot;) %>]</a></p><p><b> <%</b></p><p><b> }</b></p><p><b> %></b></p><p> <ahref='book-information.jsp?id
31、=<%=rsCom.getString("bookId") %>'><%=rsCom.getString("bookTitle")%> </p><p> <%=rsCom.getString("bookAuthor")%> &
32、lt;/p><p> <%=rsCom.getString("bookDate").substring(0,10) %></a><br></p><p><b> <%</b></p><p> rsCom.next();</p><p><b>
33、 }</b></p><p> con.closeRs();</p><p> }catch(Exception e) { out.print(e.toString()); }</p><p><b> %></b></p><p> </td></tr></ta
34、ble></p><p> 4.3訂單處理文件 deal-order.jsp 的部分代碼—1。</p><p><b> 函數(shù)聲明。</b></p><p> <%@ page language="java" contentType="text/html; charset=gb2312"
35、 import="java.sql.*,myPk.*" %></p><p> <% request.setCharacterEncoding("gb2312"); %></p><p><b> <%!</b></p><p> /*訂單(session) order 形
36、如 -bookId,buyNum-bookId,buyNum- ,</p><p> 依次為 -圖書編號(hào),購(gòu)買數(shù)量-圖書編號(hào),購(gòu)買數(shù)量-*/</p><p> /* 如果字符串 str 的長(zhǎng)度小于 n ,則在其左邊填充足夠的 * 號(hào),使其長(zhǎng)度為 n 。<-左,右-> */</p><p> public String a
37、ppString(String str,int n)</p><p><b> {</b></p><p> int strLen=str.length();</p><p> if(strLen>=n)</p><p> return str;</p><p> String s
38、Tem="";</p><p> String sBlank="*";</p><p> for(int i=0;i<(n-strLen);i++)</p><p> sTem+=sBlank;</p><p> sTem+=str;</p><p> retur
39、n sTem;</p><p><b> }</b></p><p> /* 將 str 以 - 為標(biāo)志分段,于各小段中再以 , 分為兩段(形如段a,段b),在每個(gè)段a的左邊填充 * 號(hào),使每個(gè)段a的長(zhǎng)度均為 n */</p><p> public String appLongStr(String str,int n){</p&g
40、t;<p> String[] sTem=str.split("-");</p><p> String sRet="";</p><p> for(int i=0;i<sTem.length;i++){</p><p> String[] splitByDot=sTem[i].split(&quo
41、t;,");</p><p> splitByDot[0]=appString(splitByDot[0],n);</p><p> sTem[i]=splitByDot[0]+","+splitByDot[1];</p><p><b> }</b></p><p> if(sTe
42、m.length==1)</p><p> return sTem[0];</p><p> for(int i=0;i<(sTem.length-1);i++)</p><p> sRet+=sTem[i]+"-";</p><p> sRet+=sTem[sTem.length-1];</p>
43、;<p> return sRet;</p><p><b> }</b></p><p><b> %></b></p><p> 4.4訂單處理文件 deal-order.jsp 的部分代碼—2。</p><p> 放棄購(gòu)物車中的指定書本。</p>&
44、lt;p><b> <%</b></p><p> if(act.equals("del")){</p><p> //將某書從購(gòu)物車中移除</p><p> if(sOrderSession.indexOf("-")==-1)</p><p> sTem=&
45、quot;";//刪除的是 session order 中僅有的一個(gè)記錄項(xiàng)</p><p><b> else{</b></p><p> sSessionLeft=sOrderSession.substring(0,sOrderSession.indexOf(bookId+","));</p><p>
46、 sSessionRight=sOrderSession.substring(sOrderSession.indexOf(bookId+","));</p><p> if((sSessionLeft.indexOf("-")==-1)&&(sSessionRight.indexOf("-")!=-1))</p><
47、p> sTem=sSessionRight.substring(sSessionRight.indexOf("-")+1);//刪除的是 session order 中最左的記錄項(xiàng)。</p><p> else if((sSessionLeft.indexOf("-")!=-1)</p><p> &&(sSess
48、ionRight.indexOf("-")==-1))</p><p> sTem=sSessionLeft.substring(0,sSessionLeft.lastIndexOf("-"));//刪除的是 session order 中最右的記錄項(xiàng)</p><p><b> else</b></p>
49、<p> sTem=sSessionLeft.substring(0,sSessionLeft.lastIndexOf("-"))+sSessionRight.substring(sSessionRight.indexOf("-"));//刪除的是 session order 中間位置的記錄項(xiàng)</p><p><b> }</b>&
50、lt;/p><p> }//if(act.equals("del")</p><p><b> %></b></p><p><b> 5.運(yùn)行結(jié)果。</b></p><p><b> 5.1首頁(yè)。</b></p><p>
51、 5.2智能圖書搜索。</p><p> 搜索欄的輸入框的下邊有相應(yīng)搜索方式的熱門搜索關(guān)鍵詞??煞謩e按作者、書名、出版社搜索圖書,同時(shí)支持模糊搜索,如,按“出版社”搜索“長(zhǎng)江[空格]人民”可搜索到出版社名字中含有“長(zhǎng)江”、“人民”的圖書(全圖)。</p><p><b> 5.3購(gòu)物車。</b></p><p><b> 5.
52、4訂單列表。</b></p><p><b> 5.5論壇。</b></p><p><b> 5.6添加圖書。</b></p><p><b> 5.7管理圖書。</b></p><p><b> 6.總結(jié)。</b></p>
53、;<p> 伴隨著第一場(chǎng)雪的降臨,這個(gè)課程設(shè)計(jì)才接近了尾聲。在這次課程設(shè)計(jì)里,可以說是全身心地投入,――正式開始動(dòng)工之前,有很多關(guān)于網(wǎng)站架設(shè)的想法,覺得網(wǎng)站無非就是數(shù)據(jù)庫(kù)+標(biāo)簽,真正下手后,深刻體會(huì)到了其中的艱辛,特別是當(dāng)?shù)谝粓?chǎng)雪嘩啦啦地下下來,而我卻不得不坐在電腦前繼續(xù)調(diào)試時(shí)。</p><p> 雖然沒能趕在第一場(chǎng)雪的時(shí)候去堆雪人,不過現(xiàn)在看著埋頭做了一個(gè)多星期的設(shè)計(jì)結(jié)果,有點(diǎn)苦盡甘來的味道。
54、</p><p> 這次的課程設(shè)計(jì),有兩個(gè)方面的收獲,一個(gè)是心態(tài),一個(gè)是技術(shù)。</p><p> 在心態(tài)上,端正了之前的心浮氣躁、眼高手高,更加磨練了韌勁,增強(qiáng)了團(tuán)隊(duì)合作精神,提高了對(duì)軟件開發(fā)中的工程設(shè)計(jì)思路的認(rèn)識(shí)和理解。</p><p> 技術(shù)上,在JSP動(dòng)態(tài)網(wǎng)站開發(fā)方面積累了實(shí)踐經(jīng)驗(yàn)。對(duì)CSS有了新的認(rèn)識(shí),提高了對(duì)HTML的熟練程度及使用技巧,尤其是與Ja
55、vascript聯(lián)手打造胖客戶端的一些方法和思路。</p><p> 在做這個(gè)網(wǎng)上書店系統(tǒng)的論壇時(shí),帖子的發(fā)表功能采用的方法是UBB編輯器,通過開發(fā)UBB編輯器,接觸到正則表達(dá)式并可以靈活運(yùn)用。在開發(fā)的過程中,無意中發(fā)現(xiàn)UBB編輯器的一個(gè)不足之處,它在獲取當(dāng)前激活選中區(qū),即高亮文本塊,或文檔中用戶可執(zhí)行某些操作的其它元素的時(shí)候,用的是document.selection.createRange().duplic
56、ate() ,所以當(dāng)選中非編輯區(qū)的文本時(shí)(如同一個(gè)頁(yè)面內(nèi)的導(dǎo)航時(shí)),然后單擊UBB編輯器的功能按鈕,非編輯區(qū)的文本會(huì)響應(yīng)UBB編輯器,這是開發(fā)人員不想看到的--它會(huì)導(dǎo)致頁(yè)面凌亂。查找相關(guān)資料也未能找到解決辦法,除非摒棄UBB編輯器,改用HTML在線編輯器。</p><p> 在實(shí)現(xiàn)購(gòu)物車、訂單的功能時(shí),一開始想全部用數(shù)據(jù)庫(kù)實(shí)現(xiàn)??紤]到購(gòu)物車中的書本并不一定是讀者最終要購(gòu)買的,如果用數(shù)據(jù)庫(kù)實(shí)現(xiàn),那么購(gòu)物車的每次變
57、動(dòng)都要更新數(shù)據(jù)庫(kù),這必然會(huì)給數(shù)據(jù)庫(kù)增加無謂的負(fù)擔(dān)。思考再三,自定義了一個(gè)固定形式的session來保存購(gòu)物車的書目,當(dāng)讀者確定支付購(gòu)買時(shí),再將這個(gè) session“解密”后將購(gòu)買信息寫入數(shù)據(jù)庫(kù)。這個(gè)session的格式為:。。。。。。-圖書編號(hào),購(gòu)買數(shù)量-圖書編號(hào),購(gòu)買數(shù)量-。。。。。。 ,當(dāng)對(duì)購(gòu)物車中的書目進(jìn)行添加、更改、刪除時(shí),通過判斷需要添加、更改、刪除的書目在這個(gè)session中的位置(session為空,或是session中僅
58、有的一個(gè)書目,或是session中最左的一個(gè)書目,或是session中最右的一個(gè)書目)來作不同的操作。</p><p> 在測(cè)試中,發(fā)現(xiàn)這樣實(shí)現(xiàn)的購(gòu)物車功能有bug,原因是一本書的編號(hào)(如1)可能跟另一本書的編號(hào)(如21)的低位相同,于是我就想到,每次在操作這個(gè)session時(shí)先將其中的圖書編號(hào)從左邊用*號(hào)填充至10位,操作完成后去除所有*號(hào)還原。問題迎刃而解。</p><p> 整個(gè)
59、網(wǎng)站系統(tǒng)共用一個(gè)信息提示的處理頁(yè)面tip.jsp,該頁(yè)面通過讀取傳進(jìn)來的tip變量判斷輸出給用戶的友好提示信息,傳進(jìn)來的desPage變量則為tip.jsp頁(yè)面3秒倒計(jì)時(shí)后前往的頁(yè)面地址。</p><p> 網(wǎng)頁(yè)頭部頁(yè)面head.jsp中調(diào)用了包java.text,其中通過實(shí)例化SimpleDateFormat類獲取并格式化日期,所以在Eclipse中加載此項(xiàng)目時(shí),除了正確配置數(shù)據(jù)源,還需要在項(xiàng)目的配置中加載T
60、omcat\common\lib\servlet-api.jar 。</p><p><b> 7.參考資料。</b></p><p> 1.電子版網(wǎng)頁(yè)制作完全手冊(cè)(含DHTML參考、HTML參考、CSS屬性參考),手冊(cè)的內(nèi)容全部來自Microsoft MSDN Library,由 lemon 整理編輯,資料從http://clgigi.8u8.com下載。<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- jsp課程設(shè)計(jì)-- 網(wǎng)上書店系統(tǒng)
- 課程設(shè)計(jì)--網(wǎng)上書店管理系統(tǒng)
- 網(wǎng)上書店管理系統(tǒng)課程設(shè)計(jì)
- 網(wǎng)上書店系統(tǒng)jsp課程設(shè)計(jì)
- 網(wǎng)上書店課程設(shè)計(jì)--網(wǎng)上書店登錄界面的網(wǎng)頁(yè)設(shè)計(jì)
- 網(wǎng)上書店課程設(shè)計(jì)-- 網(wǎng)上書店登錄界面的網(wǎng)頁(yè)設(shè)計(jì)
- 課程設(shè)計(jì)論文—— 網(wǎng)上書店
- 網(wǎng)上書店管理系統(tǒng)-課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告---網(wǎng)上書店管理系統(tǒng)
- 課程設(shè)計(jì)論文——網(wǎng)上書店 (2)
- 個(gè)人課程設(shè)計(jì)報(bào)告---網(wǎng)上書店
- 基于jsp的網(wǎng)上書店系統(tǒng)課程設(shè)計(jì)
- web課程設(shè)計(jì)——網(wǎng)上書店管理系統(tǒng)報(bào)告
- java-web網(wǎng)上書店系統(tǒng)課程設(shè)計(jì)
- 網(wǎng)上書店信息管理系統(tǒng)課程設(shè)計(jì)
- web課程設(shè)計(jì)報(bào)告--網(wǎng)上書店管理系統(tǒng)
- web課程設(shè)計(jì)網(wǎng)上書店管理系統(tǒng)報(bào)告
- 《.net技術(shù)》課程設(shè)計(jì)報(bào)告--網(wǎng)上書店管理系統(tǒng)
- jsp+sql_網(wǎng)上書店課程設(shè)計(jì)
- 網(wǎng)上書店管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論