【正文】
碼階段可以把這個(gè)描述直接翻譯成用JSP網(wǎng)頁設(shè)計(jì)語言書寫的程序。 系統(tǒng)頁面的實(shí)現(xiàn)如果將網(wǎng)站比作一個(gè)人的話,服務(wù)器就像大腦,數(shù)據(jù)庫就像五臟六腑,其內(nèi)嵌的Java和JavaScript組合起來就像是細(xì)胞與神經(jīng),而網(wǎng)頁就是這個(gè)人的皮肉。網(wǎng)頁將網(wǎng)站的各個(gè)組成部分包裹起來,形成易懂并且美觀的外表展示給大家,瀏覽者登陸網(wǎng)站后看到的就是一個(gè)個(gè)網(wǎng)頁的組合。所以設(shè)計(jì)和實(shí)現(xiàn)每一個(gè)網(wǎng)頁也是非常重要的工作。隨著科技的高速發(fā)展,眾多網(wǎng)頁制作的應(yīng)用軟件應(yīng)運(yùn)而生。相對(duì)于傳統(tǒng)的動(dòng)態(tài)網(wǎng)頁開發(fā)工具而言,由于繼承了Java語言的許多優(yōu)點(diǎn),用JSP開發(fā)動(dòng)態(tài)網(wǎng)站十分方便,開發(fā)效率較高。此外,JSP還具有強(qiáng)大的組件(JavaBean)支持功能,可以方便地實(shí)現(xiàn)組件復(fù)用,進(jìn)一步提高了開發(fā)效率。在整個(gè)網(wǎng)頁的制作過程中,都是結(jié)合使用HTML語言來實(shí)現(xiàn)設(shè)計(jì)的。系統(tǒng)的頁面設(shè)計(jì)決定了網(wǎng)站的風(fēng)格,制作好的網(wǎng)站不僅提供給營銷商,更多的要供瀏覽者瀏覽。所以整個(gè)網(wǎng)站系統(tǒng)應(yīng)注重的是:易導(dǎo)航性、易操作性和友好的交互界面。因此,網(wǎng)站的設(shè)計(jì)最好要簡(jiǎn)潔、明了、格調(diào)清新、實(shí)用、易于使用和維護(hù)。在頁面的風(fēng)格上應(yīng)保持統(tǒng)一,這里采用CSS樣式表將所有頁面的字體、字號(hào)、顏色以及超鏈接的樣式做統(tǒng)一定義。 前臺(tái)功能模塊實(shí)現(xiàn)整個(gè)系統(tǒng)分為了前臺(tái)功能模塊和后臺(tái)功能模塊。下面詳細(xì)討論主要的幾個(gè)功能模塊的程序?qū)崿F(xiàn)。在每個(gè)模塊的介紹中,將具體說明一些涉及要點(diǎn)。前臺(tái)功能模塊分為用戶管理模塊、訂單查詢模塊、購物車模塊3個(gè)部分。前臺(tái)首頁主要有以下幾個(gè)部分:(1)網(wǎng)站導(dǎo)航:主要用戶顯示網(wǎng)站的旗幟廣告、各功能模塊導(dǎo)航;(2)用戶登錄:用戶在此注冊(cè)、登錄或找回密碼;(3)商品分類搜索:用戶按商品類別進(jìn)行搜索顯示;(4)銷售排行榜:按照商品的銷售數(shù)量顯示銷售排行信息;(5)商品展示區(qū):按后臺(tái)添加商品的時(shí)間順序展示商品;(6)友情鏈接:顯示友情鏈接信息;(7)后臺(tái)登錄入口:管理員可以通過該入口登錄后臺(tái)。用戶管理模塊主要實(shí)現(xiàn)用戶的注冊(cè)、登錄等功能。(1)用戶注冊(cè)當(dāng)用戶第一次登錄時(shí)首先要在網(wǎng)站上注冊(cè),成為會(huì)員用戶才可以在網(wǎng)站上購物,注冊(cè)頁面必須填寫一些用戶的基本信息,如用戶名、密碼、聯(lián)系電話等信息。開 始否是是結(jié) 束接收注冊(cè)信息數(shù)據(jù)是否為空兩次密碼是否一致查詢數(shù)據(jù)庫用戶名是否被占用是否否注冊(cè)成功注冊(cè)失敗 。 用戶注冊(cè)頁面用戶注冊(cè)信息提交。 用戶注冊(cè)成功頁面為了便于網(wǎng)站對(duì)用戶的管理,在用戶注冊(cè)頁面接收到的注冊(cè)信息要經(jīng)過嚴(yán)格的過濾,保證注冊(cè)用戶名的唯一性,在提交表單后需要對(duì)數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行查詢,如果沒有找到,則在插入數(shù)據(jù)表時(shí)提示注冊(cè)成功,否則提示此用戶已被占用請(qǐng)重新注冊(cè),注冊(cè)時(shí)如果輸入郵箱,也會(huì)有唯一性的限制。(2)用戶登錄用戶登錄窗口設(shè)置在首頁上,主要用來接收用戶錄入的用戶名及密碼。單擊“注冊(cè)”按鈕時(shí),會(huì)提交到用戶登錄頁面執(zhí)行;單擊“登錄”按鈕時(shí),系統(tǒng)將對(duì)輸入的用戶名和密碼進(jìn)行驗(yàn)證,如果數(shù)據(jù)表中用戶名和密碼存在就顯示登陸成功,并返回首頁,否則彈出錯(cuò)誤提示信息。開 始結(jié) 束接收登錄信息查詢數(shù)據(jù)庫數(shù)據(jù)是否正確否是登錄失敗登錄成功 登錄的代碼如下Private Sub mand1_click() dim conn as new dim rs as new dim str as string Static logintimes As Integer dim sql as string str = If Right(str, 1) \ Then str = str + \ End If str = Provider=。Persist Security Info=False。Data Source= amp。 str amp。 \ str =aduseclient sql=select * from user where 用戶名=39。 amp。 amp。 39。 sql,conn, if and then msgbox 沒有此用戶 else if trim()=(密碼).velue then else msgbox 密碼錯(cuò)誤,請(qǐng)重試! 。購物車模塊中,主要包含以下幾個(gè)功能,即:添加購物車、查看購物車、生成訂單和清空購物車。(1)添加購物車添加購物車就是把用戶選中的商品暫時(shí)存放在購物車中,當(dāng)用戶在前臺(tái)首頁中單擊商品展示區(qū)的“購買”按鈕時(shí),系統(tǒng)會(huì)將該商品的詳細(xì)信息展示在查看物品清單頁面中。用戶在單擊物品清單頁面下方的“放入購物車”鏈接,便可以將該商品放入購物車中。添加商品的代碼流程是從session中讀取shop對(duì)象,如果為空則說明還沒有進(jìn)行購物或者已經(jīng)清空了購物車,需要新建購物車對(duì)象;將商品名稱與購物車列表中的商品名稱對(duì)比,如果已經(jīng)存在,則把商品數(shù)量加1。在這段代碼流程中,還使用了集合類型。集合類型在Java中又稱為向量,是一元集合,可以加入重復(fù)數(shù)據(jù),它的作用和數(shù)組相同,可以保存一系列數(shù)據(jù),但集合類型也有它獨(dú)特的優(yōu)點(diǎn),就是可以方便地對(duì)集合內(nèi)的數(shù)據(jù)進(jìn)行查找、增加、刪除和修改等操作。(2)查看購物車為了方便用戶隨時(shí)查看購物情況,在網(wǎng)站的首頁加入了查看購物車的鏈接,通過它可以將用戶所有選中的商品信息放入購物車中顯示出來。在程序中使用了一組文本框記錄用戶購買的商品數(shù)量,用戶可以在文本框中輸入想要購買的數(shù)量然購單擊“修改”按鈕。如果欲刪除該商品,可以在數(shù)量文本框里輸入“0”,并需要單擊“修改”按鈕來更新購物車中商品的數(shù)量。系統(tǒng)每次只會(huì)將1個(gè)商品放入購物車中,如果用戶需要多個(gè)同種商品,可以通過修改商品信息右側(cè)相應(yīng)文本框的值來完成。操作完成后需要通過單擊“修改”按鈕來保存操作。(3)生成訂單生成訂單時(shí)網(wǎng)上購物商城的最終目的,前面所有功能的實(shí)現(xiàn)都是為最后生成一個(gè)用戶滿意的訂單作基礎(chǔ),在此要生成一個(gè)可供用戶隨時(shí)查詢的訂單號(hào),還要保存用戶訂單中所購買的商品信息。當(dāng)用戶確認(rèn)對(duì)購物車不再改變以后,就可以到收銀臺(tái)結(jié)帳并生成訂單。結(jié)帳的流程為:從購物車中讀取商品名稱,商品數(shù)量,商品價(jià)格信息,生成一個(gè)唯一的訂單號(hào),同時(shí)也把用戶注冊(cè)的基本信息讀取出來,形成一個(gè)完整的訂單寫入數(shù)據(jù)庫。在生成訂單模塊中主要使用了調(diào)出用戶信息并生成唯一訂單號(hào),調(diào)出用戶信息就是完全的對(duì)數(shù)據(jù)庫進(jìn)行操作,利用session對(duì)象把登錄后的用戶名保存起來,在訂單生成時(shí)把保存的用戶名從數(shù)據(jù)庫的用戶標(biāo)中取出即可;生成唯一訂單號(hào)方法有很多,只要確保訂單號(hào)碼的唯一性及方便用戶記錄以便于查詢自己訂單的執(zhí)行狀態(tài)即可。訂單生成后,用戶單擊“提交”按鈕,便可以將錄入的訂單信息保存到數(shù)據(jù)庫中。(4)清空購物車清空購物車是指當(dāng)用戶訂單生成后,倘若還想繼續(xù)購物一定要清空購物車再進(jìn)行選購商品,這樣防止重復(fù)購物,其實(shí)清空購物車實(shí)現(xiàn)起來非常簡(jiǎn)單,只需要將session中存儲(chǔ)的shop對(duì)象清空即可。開 始查詢數(shù)據(jù)庫數(shù)據(jù)是否存在顯示商品的信息是是否放入購物車購物車是否為空是沒有該商品否否購物車中已存在該商品新建購物車該商品數(shù)量加1將商品添加入購物車是否顯示購物車信息是否修改商品數(shù)量否是否清空購物車是刪除購物車中商品是是否繼續(xù)購物否是否去收銀臺(tái)接收填寫的訂單信息數(shù)據(jù)是否為空訂單信息存入數(shù)據(jù)庫更新是否成功是否是否是修改商品數(shù)量是結(jié) 束否否否 購物車模塊流程圖 訂單查詢模塊用戶提交訂單后,通過產(chǎn)生的訂單號(hào)查詢訂單信息及執(zhí)行狀態(tài)。用戶在購物中心首頁中單擊“訂單查詢”超鏈接,就可以進(jìn)入輸入訂單號(hào)頁面,在頁面的文本框中輸入訂單號(hào)并單擊“提交”按鈕,如果訂單號(hào)輸入無誤,系統(tǒng)將根據(jù)用戶錄入的訂單號(hào)在數(shù)據(jù)表中查詢處對(duì)應(yīng)的貨品信息并轉(zhuǎn)到訂單查詢顯示頁面將貨品信息顯示出來。開 始結(jié) 束接收訂單號(hào)信息查詢數(shù)據(jù)庫訂單號(hào)是否存在否是顯示出訂單信息無該訂單號(hào) 訂單查詢模塊流程圖 后臺(tái)功能模塊的實(shí)現(xiàn)后臺(tái)功能只允許具有管理員權(quán)限的用戶使用,它是實(shí)現(xiàn)前臺(tái)功能的基礎(chǔ)。后臺(tái)包括管理員身份驗(yàn)證、添加商品模塊、訂單信息管理模塊、查詢用戶信息管理模塊。后臺(tái)首頁主要有以下幾個(gè)部分。(1)后臺(tái)導(dǎo)航區(qū):放置管理員可操作項(xiàng)目的鏈接;(2)操作區(qū):顯示所有后臺(tái)導(dǎo)航的鏈接信息。在前臺(tái)首頁單擊用戶入口,將轉(zhuǎn)到用戶登錄頁面,該頁面的功能是對(duì)用戶身份進(jìn)行驗(yàn)證。在用戶錄頁面中,是通過JavaScript來實(shí)現(xiàn)錄入數(shù)據(jù)完整性驗(yàn)證的。用戶輸入登錄ID和密碼后單擊“登錄”按鈕時(shí),如果錄入數(shù)據(jù)完整性驗(yàn)證通過,系統(tǒng)會(huì)將數(shù)據(jù)提交到用戶管理頁面,該頁面用來判斷輸入信息在數(shù)據(jù)庫中d_user表是否存在提交的用戶名和密碼,如果登錄ID及密碼有效,就保存用戶名信息,反之則提示錯(cuò)誤。開 始否是是結(jié) 束接收登錄信息數(shù)據(jù)是否為空數(shù)據(jù)是否有效查詢數(shù)據(jù)庫否登錄成功 用戶管理流程圖單擊導(dǎo)航區(qū)中的“添加商品”超鏈接,系統(tǒng)將打開添加商品頁面,該頁面主要用于將商品信息添加到數(shù)據(jù)庫中,以提供前臺(tái)首頁商品展示所需要的數(shù)據(jù)依據(jù)。為了減少人為錯(cuò)誤,在提交商品信息時(shí),需要對(duì)數(shù)據(jù)的合法性進(jìn)行驗(yàn)證,輸入的商品價(jià)格不能使字符型,而輸入的圖片只支持Gif格式等,這些任務(wù)由腳本語言JavaScript的函數(shù)check()來完成。為了確保商品在數(shù)據(jù)表中的唯一性,在用戶提交表單時(shí),需要先根據(jù)用戶輸入的商品名稱對(duì)數(shù)據(jù)表進(jìn)行查詢,確保此商品在數(shù)據(jù)表中不存在后,方可執(zhí)行插入操作。開 始結(jié) 束接收商品信息查詢數(shù)據(jù)庫數(shù)據(jù)是否為空是否信息插入數(shù)據(jù)庫是否重復(fù)錄入是否數(shù)據(jù)是否正確否是插入是否成功是否添加商品失敗添加商品成功 添加商品信息模塊流程圖用戶在前臺(tái)購物所產(chǎn)生的訂單并不能立即執(zhí)行,需要系統(tǒng)管理員在后臺(tái)進(jìn)行訂單信息管理審核以確認(rèn)它的執(zhí)行性。用戶單擊導(dǎo)航區(qū)中的“訂單信息管理”超鏈接進(jìn)入用戶訂單處理頁面,該頁面上會(huì)顯示近期所有沒被處理的訂單。用戶訂單處理頁面顯示的是用戶基本信息,要想知道訂單中所涉及的商品,需要單擊對(duì)應(yīng)訂單號(hào)的超鏈接打開商品訂購詳單頁面才行。商品訂購詳單主要通過提交的訂單號(hào)從d_order表中查詢處對(duì)應(yīng)的商品并顯示在頁面中,管理員審核后可通過復(fù)選框來設(shè)置訂單是否執(zhí)行。當(dāng)選中“是/否”復(fù)選框時(shí),系統(tǒng)會(huì)根據(jù)提交的訂單號(hào)更新數(shù)據(jù)表。開 始是否查詢數(shù)據(jù)庫是結(jié) 束否顯示全部未處理的訂單信息是否刪除訂單數(shù)據(jù)庫是否為空更新數(shù)據(jù)庫更新數(shù)據(jù)庫是否成功刪除訂單成功沒有未處理的訂單是否查看訂購詳單是否執(zhí)行否更新數(shù)據(jù)庫更新是否成功是是否訂單執(zhí)行成功 訂單信息管理模塊流程圖查詢用戶信息模塊用來完成對(duì)注冊(cè)用戶的瀏覽及刪除功能。如果用戶蓄意性注冊(cè)或者在很長(zhǎng)時(shí)間內(nèi)沒有訂單產(chǎn)生,管理員就可以將該用戶信息刪除。單擊導(dǎo)航區(qū)中的“查詢用戶信息”超鏈接進(jìn)入用戶信息頁面,就可以看到用戶信息。在這一部分的設(shè)計(jì)中,也使用了分頁顯示功能。對(duì)于一些失信用戶只需要單擊右側(cè)的“刪除”超鏈接,即可轉(zhuǎn)到刪除頁中做刪除處理。6 系統(tǒng)調(diào)試與實(shí)施 系統(tǒng)測(cè)試原理及測(cè)試準(zhǔn)則在完成某一功能模塊后,都要進(jìn)行一下系統(tǒng)測(cè)試。檢驗(yàn)所完成的這一模塊是否能實(shí)現(xiàn)預(yù)計(jì)的功能。其目的是方便整個(gè)系統(tǒng)的實(shí)現(xiàn)。測(cè)試主要依據(jù)是被試系統(tǒng)的研制任務(wù)書和技術(shù)規(guī)格書,是對(duì)軟件功能和性能的綜合測(cè)試與評(píng)估。測(cè)試原理是軟件測(cè)試活動(dòng)的理論基礎(chǔ),測(cè)試方法是測(cè)試原理的實(shí)際應(yīng)用和獲得測(cè)試數(shù)據(jù)的手段?;谲浖墓残裕瑢?duì)于軟件的測(cè)試要遵循一般軟件的測(cè)試原理和方法。同時(shí),針對(duì)軟件的特性,必須找到合適的測(cè)試方法。測(cè)試用例的合理性對(duì)于軟件的測(cè)試與評(píng)估具有關(guān)鍵作用,而如何使設(shè)計(jì)的用例、合理并且典型有效并不容易。所以應(yīng)該與軟件的研制人員以及最終用戶一起,有針對(duì)性地研究實(shí)際操作環(huán)境并加以描述,形成合理的測(cè)試用例集。另一方面,軟件運(yùn)行環(huán)境的復(fù)雜程度對(duì)軟件評(píng)估具有重要作用,所以應(yīng)產(chǎn)生盡量逼真的運(yùn)行背景以便于研究。 需求分析 系統(tǒng)設(shè)計(jì) 編制程序 單元測(cè)試 集成測(cè)試 系統(tǒng)測(cè)試 確認(rèn)測(cè)試使用維護(hù)測(cè)試階段開發(fā)階段 軟件測(cè)試周期示意圖程序員應(yīng)避免測(cè)試自己編寫的程序;測(cè)試用例的設(shè)計(jì)必須包括預(yù)期的輸出結(jié)果;測(cè)試用例應(yīng)包括有效的和期望的輸入情況,也要包括無效的和不期望的輸入情況;所有的測(cè)試都應(yīng)追溯到用戶需求,所有測(cè)試活動(dòng)都應(yīng)該是有計(jì)劃的,并且計(jì)劃能夠得到保障。只檢查程序是否做了它應(yīng)該做的事這僅完成了測(cè)試工作的一半,另一半則是要檢查程序是否做了它不該做的事;一段程序中存在錯(cuò)誤的概率與在這段程序中已發(fā)現(xiàn)的錯(cuò)誤數(shù)成比例;測(cè)試上作必須有明確的目標(biāo);盡早地和不斷地進(jìn)行軟件測(cè)試;窮舉測(cè)試是不可能的,充分覆蓋程序邏輯是有可能的。 系統(tǒng)測(cè)試的方法軟件測(cè)試的方法和技術(shù)是多種多樣的。對(duì)于軟件測(cè)試技術(shù),可以從不同的角度加以分類:從是否需要執(zhí)行被測(cè)軟件的角度,可分為靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試。從測(cè)試是否針對(duì)系統(tǒng)的內(nèi)部結(jié)構(gòu)和具體實(shí)現(xiàn)算法的角度來看,可分為白盒測(cè)試和黑盒測(cè)試。(1)黑盒測(cè)試黑盒測(cè)試也稱功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試或基于規(guī)范的測(cè)試,它是在己知產(chǎn)品所應(yīng)具有的功能的前提下,通過測(cè)試來檢測(cè)每個(gè)功能是否都能正常使用,在測(cè)試時(shí),把程序看作一個(gè)不能打開的黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下