




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
學生實驗報告書實驗課程名稱電子商務(wù)應(yīng)用技術(shù)開發(fā)開課學院經(jīng)濟學院指導(dǎo)教師姓名傅魁學生姓名梁少晴0121415710101姜雨竹0121415710229阮筱鈺0121415710230學生專業(yè)班級電商1401電商1402目錄一、系統(tǒng)概述………………………(3)二、系統(tǒng)需求分析…………………(3)三、系統(tǒng)總體設(shè)計…………………(6)四、詳細設(shè)計………………………(9)五、頁面設(shè)計及編碼實現(xiàn)…………(15)六、測試分析報告…………………(50)七、結(jié)束語…………(56)圖書館管理系統(tǒng)系統(tǒng)概述系統(tǒng)開發(fā)背景和意義圖書管理是每個高校必須切實面對的工作,但如今許多高校的圖書館管理系統(tǒng)還停留在以CS為結(jié)構(gòu)的系統(tǒng)上。隨著internet的應(yīng)用日趨廣泛,以及高校內(nèi)、高校與高校間信息的交流日趨密切,以CS為結(jié)構(gòu)的信息管理系統(tǒng)以不能滿足需求,所以,高校圖書館管理系統(tǒng)必須通過更新?lián)Q代,將BS為結(jié)構(gòu)的系統(tǒng)改為以CS為結(jié)構(gòu)的系統(tǒng),這樣會大大提高系統(tǒng)的維護性以及系統(tǒng)應(yīng)用的廣泛性。由于圖書這用特殊的物品,其表現(xiàn)在數(shù)據(jù)量非常龐大,所以對數(shù)據(jù)庫的要求比較嚴格,由于oracle數(shù)據(jù)庫其檢索迅速、查找方便、可靠性高、保密性好,所以,選擇oracle數(shù)據(jù)庫為其存取數(shù)據(jù)。隨著java技術(shù)在internet上的廣泛應(yīng)用以及java安全性高、執(zhí)行效率高的優(yōu)點,同時,java可以在任意平臺上應(yīng)用,所以可以任意組合硬件和操作系統(tǒng),既可以在windows下開發(fā),部署在linux下,極大了節(jié)省了操作系統(tǒng)的費用以及硬件的費用。開發(fā)環(huán)境硬件環(huán)境:服務(wù)器端/客戶端:處理器:InterPentium3以上內(nèi)存:512M以上推薦1G或更高硬盤空間:80G以上軟件環(huán)境:服務(wù)器端/客戶端:操作系統(tǒng):WindowsXP/Linux瀏覽器:InternetExplore7.0以上開發(fā)工具:MyEclipse+Tomcat7.0+MySQL在MyEclipse集成環(huán)境下進行圖書管理員系統(tǒng)的界面設(shè)計和程序開發(fā),在系統(tǒng)的后臺采用MySQL作為數(shù)據(jù)庫支持,使用時打開瀏覽器。在地址欄中輸入網(wǎng)址回車后即可進入圖書管理員系統(tǒng)的主頁,進行相應(yīng)的操作。二、系統(tǒng)需求分析2.1任務(wù)概述1.新書購進后,進行分類、同一編碼和入庫。2.學生借閱圖書后,記錄相關(guān)信息。3.學生歸還時,對比查看該書是否超期,超期后,按規(guī)定罰款。根據(jù)以上調(diào)查分析,給出業(yè)務(wù)流程圖,如圖:2.2數(shù)據(jù)描述(數(shù)據(jù)流圖+數(shù)據(jù)字典)經(jīng)過調(diào)查,我們了解了基本的業(yè)務(wù)程序,接下來給出系統(tǒng)的邏輯模型。構(gòu)造系統(tǒng)的邏輯模型的工具主要是數(shù)據(jù)流圖和數(shù)據(jù)字典,下面給出圖書館管理系統(tǒng)的基本模型,如圖:根據(jù)基本模型,對其逐步細化,得到數(shù)據(jù)流圖,如圖:根據(jù)系統(tǒng)流程圖,通過數(shù)據(jù)字典對數(shù)據(jù)進一步描述:圖書:圖書表結(jié)構(gòu)描述:記錄圖書的相關(guān)信息定義:圖書信息表圖書編號、圖書名稱、ISBN號、作者、出版社、類型、價格、庫存量、副本存量、總量位置:LibWeb表空間借書登記:借書登記表結(jié)構(gòu)描述:記錄圖書的借閱信息定義:借閱登記表借閱編號、學生編號、圖書編號、借閱時間、歸還時間、是否歸還位置:LibWeb表空間
學生信息:學生信息表結(jié)構(gòu)描述:記錄學生信息定義:學生信息表學生學號、學生姓名、性別、入校時間、畢業(yè)時間位置:LibWeb表空間歸還登記:歸還登記表結(jié)構(gòu)描述:記錄所有已歸還圖書的借閱情況定義:歸還信息表編號、圖書名稱、歸還時間、歸還學生編號、歸還學生姓名位置:LibWeb數(shù)據(jù)空間
用戶信息:用戶表結(jié)構(gòu)描述:記錄所有用戶定義:用戶信息表賬號、真實姓名、密碼、描述位置:LibWeb數(shù)據(jù)空間角色信息:角色表結(jié)構(gòu)描述:記錄所有角色定義:角色信息表角色名稱、角色描述位置:LibWeb數(shù)據(jù)空間2.3功能需求經(jīng)過以上詳細的調(diào)查和分析,在數(shù)據(jù)流程和數(shù)據(jù)分析的基礎(chǔ)上,確定達到的功能為一下幾點:新書入庫登記:對與需求入庫的書籍,進行數(shù)據(jù)登記,確認后書籍入庫。圖書信息的查詢和修改功能:當圖書資料發(fā)生變化、當圖書丟失,應(yīng)立即修改信息。圖書借閱和歸還登記:學生借閱圖書時需要登記,學生歸還圖書時也需要登記。學生的增加、修改、刪除等:新生入學時的信息和直接導(dǎo)入。用戶的增加、修改、刪除等:用戶可根據(jù)權(quán)限來操作。2.4性能需求為了保證系統(tǒng)能夠長期、高效、安全、穩(wěn)定、可靠的運行,圖書館管理系統(tǒng)應(yīng)滿足一下性能需求:1.系統(tǒng)處理數(shù)據(jù)的準確性和及時性:系統(tǒng)處理的準確性和及時性是系統(tǒng)的必要性能。在系統(tǒng)設(shè)計階段,就應(yīng)該充分考慮到,包括數(shù)據(jù)存儲量、訪問量等,是系統(tǒng)能夠滿足圖書管管理系統(tǒng)對數(shù)據(jù)的處理量。2.系統(tǒng)的開放性和系統(tǒng)的可擴充性:可擴充性是系統(tǒng)健壯性的重要體現(xiàn),系統(tǒng)開發(fā)中應(yīng)充分考慮到系統(tǒng)的可擴充性??蓴U充性包括系統(tǒng)設(shè)計和測試階段的擴充以及系統(tǒng)使用后的擴充。任何系統(tǒng)在開發(fā)階段對需求都是完全明確的,即使系統(tǒng)交付使用后,用戶也會提出增加功能,所以,在系統(tǒng)設(shè)計階段就應(yīng)該考慮到系統(tǒng)的可擴充性。系統(tǒng)的易用性和易維護性:圖書館管理系統(tǒng)由圖書館管理員和學生使用,而使用者對系統(tǒng)結(jié)構(gòu)并不了解,這就要求系統(tǒng)提供良好的用戶接口和友好的界面設(shè)計。要實現(xiàn)這一點,要求操作簡潔明了,數(shù)據(jù)校驗通俗易懂。系統(tǒng)的響應(yīng)速度:圖書管管理系統(tǒng)的響應(yīng)速度要求比較高,這就需要從一下幾個方面入手解決:校園網(wǎng)的帶寬、數(shù)據(jù)庫的快速穩(wěn)定、SQL語句執(zhí)行的高效率、瀏覽器的選擇。無論是哪方面,都會影響系統(tǒng)的響應(yīng)速度,所以,圖書館管理系統(tǒng)能夠擁有快速的響應(yīng)速度,必須做好其中的沒一點。系統(tǒng)總體設(shè)計系統(tǒng)架構(gòu)設(shè)計:本系統(tǒng)的整體架構(gòu)如圖所示,從邏輯上來看主要分為三層:模型層、控制層、視圖層。業(yè)務(wù)流程根據(jù)需求分析,以及反復(fù)的研究和探討,確認其流程圖如下:根據(jù)流程圖,現(xiàn)具體功能描述如下:1.用戶登錄:系統(tǒng)對用戶的合法性進行校驗,登錄后,系統(tǒng)會根據(jù)用戶所擁有的權(quán)限來分配權(quán)限。2.書籍入庫:填寫書籍信息,可通過excel批量導(dǎo)入到數(shù)據(jù)庫中。3.圖書借閱:對已經(jīng)入庫的數(shù)據(jù),學生可借閱。4.圖書歸還:對已經(jīng)歸還的書籍進行登記。5.管理措施:對定義系統(tǒng)規(guī)定的超期時間、超期處罰辦法、丟失賠償辦法。3.2系統(tǒng)功能模塊圖依據(jù)需求分析階段得到的數(shù)據(jù)流圖,在保證系統(tǒng)基本功能的前提下,結(jié)合系統(tǒng)設(shè)計流程,給出系統(tǒng)功能模塊圖,如圖:3.3系統(tǒng)的流程圖四、詳細設(shè)計4.1程序流程圖該設(shè)計階段的任務(wù)是根據(jù)需求具體實現(xiàn)所需要的程序。經(jīng)過這個階段的設(shè)計,應(yīng)該得出目標系統(tǒng)的精確描述,從而在系統(tǒng)實現(xiàn)階段可以把這個描述直接翻譯某種程序設(shè)計語言書寫的程序??傮w來說就是把各個模塊的細節(jié)加以描述。由于本系統(tǒng)采用的是j2ee來設(shè)計程序,java是面向?qū)ο蟮淖兂烧Z言,所以給出系統(tǒng)的主程序流程圖,如圖:4.2程序輸入輸出描述4.2.1用戶角色模塊1.輸入項目:用戶相關(guān)信息、角色相關(guān)信息2.輸出項目:相應(yīng)的頁面4.2.2學生管理模塊1.輸入項目:用戶相關(guān)信息、角色相關(guān)信息2.輸出項目:相應(yīng)的頁面4.2.3圖書管理模塊1.輸入項目:圖書相關(guān)信息2.輸出項目:圖書信息4.2.4借閱管理模塊1.輸入項目:學生學號、圖書編號2.輸出項目:借閱信息頁面4.2.5歸還管理模塊1.輸入項目:學生學號、圖書編號2.輸出項目:歸還信息頁面4.3程序接口描述4.3.1外部接口由于該系統(tǒng)可以部署在任何操作系統(tǒng),且系統(tǒng)界面采用瀏覽器方式實現(xiàn),所以該系統(tǒng)是跨平臺、跨操作系統(tǒng)的。4.3.2內(nèi)部接口通過面向?qū)ο蟪绦蛟O(shè)計模式實現(xiàn)低耦合高內(nèi)聚的程序設(shè)計思想,通過與數(shù)據(jù)庫之間的數(shù)據(jù)交換,實現(xiàn)對數(shù)據(jù)的處理和保存。數(shù)據(jù)庫的設(shè)計數(shù)據(jù)庫的邏輯設(shè)計在需求階段已經(jīng)完成該系統(tǒng)所有的數(shù)據(jù)分析。根據(jù)該階段建立的概念模型,已經(jīng)得出滿足系統(tǒng)設(shè)計要求的幾個關(guān)系描述,該階段的主要工作就是把前一階段的成果轉(zhuǎn)化為具體的數(shù)據(jù)庫。下面給出概念結(jié)構(gòu)設(shè)計的E-R圖,如圖所示:圖(一)圖(二)圖(三)實體:圖書(圖書編號,書名,作者,出版社,定價,圖書類別,圖書ISBN號,圖書存量)學生(學生學號,學生姓名,性別,入校時間,畢業(yè)時間)用戶(用戶名,真實姓名,密碼,描述)角色(角色名,角色描述)序號字段名稱字段說明類型位數(shù)屬性備注1ididnumber19非空1bookId編號varchar50非空2name名稱Varchar100非空3ISBNISBNvarchar50可為空4author作者varchar100可為空5publisher出版商varchar100可為空6type類型number2可為空和數(shù)據(jù)字典相關(guān)7price價格number10可為空8storeQuan存量number10可為空9leftQuan副本存量number10可為空10totleQuan總量number10可為空11createTime創(chuàng)建時間date非空12operateTime修改時間date可為空13creator創(chuàng)建者number19非空14operate操作人number19可為空15status狀態(tài)varchar1非空NorY16version版本number非空圖書信息表序號字段名稱字段說明類型位數(shù)屬性備注1id編號number10非空2userId用戶編號number10非空3bookId圖書編號varcher50非空4broTime結(jié)束時間date可為空5retime還書時間date可為空6ifReturn是否歸還number1非空7createTime創(chuàng)建時間date非空8operateTime修改時間date可為空9creator創(chuàng)建者number19非空10operate操作人number19可為空11status狀態(tài)varchar1非空NorY12version圖書歸還登記表序號字段名稱字段說明類型位數(shù)屬性備注1ididnumber19非空2createTime創(chuàng)建時間date非空3operateTime修改時間date可為空4creator創(chuàng)建者number19非空5operate操作人number19可為空6status狀態(tài)varchar1非空NorY7version版本number非空8name用戶名varchar60非空9relName真實姓名varchar60可為空11password密碼varchar64非空12description描述varchar1024可為空用戶表序號字段名稱字段說明類型位數(shù)屬性備注1ididnumber19非空2createTime創(chuàng)建時間date非空3operateTime修改時間date可為空4creator創(chuàng)建者number19非空5operate操作人number19可為空6status狀態(tài)varchar1非空NorY7version版本number非空8name角色名varchar32非空12descriptionvarchar1024非空角色表序號字段名稱字段說明類型位數(shù)屬性備注1ididnumber19非空2createTime創(chuàng)建時間date非空3operateTime修改時間date可為空4creator創(chuàng)建者number19非空5operate操作人number19可為空6status狀態(tài)varchar1非空NorY7version版本number非空8stuId學生編號varchar50非空12name學生姓名varchar100非空8sex性別number1非空12addTime入學時間date非空12endTime畢業(yè)時間date非空學生表圖書表用戶表五、頁面設(shè)計及編碼實現(xiàn)UI頁面設(shè)計系統(tǒng)登錄用戶注冊注冊成功圖書管理員登錄主界面編輯書目信息編輯書目信息刪除操作圖書管理參數(shù)維護主界面圖書管理參數(shù)編輯刪除操作圖書借閱審批主界面圖書借閱審批界面審批完成界面圖書類型管理主界面圖書類型編輯刪除操作圖書條碼管理主界面圖書條碼編輯刪除操作菜單管理主界面(系統(tǒng)管理)菜單編輯界面刪除操作角色管理主界面(系統(tǒng)管理)角色編輯界面刪除操作用戶管理主界面(系統(tǒng)管理)用戶編輯界面刪除操作用戶登錄——圖書借閱查詢1.系統(tǒng)的登錄設(shè)計與實現(xiàn)基于系統(tǒng)的和數(shù)據(jù)的安全性考慮,所有用戶進入系統(tǒng)之前必須經(jīng)過登錄頁面進行合法性驗證,身份驗證成功之后才能進入系統(tǒng)為每個用戶提供唯一的賬號和初始密碼,用戶輸入自己的用戶名和密碼之后,點擊【完成】按鈕登錄系統(tǒng)。系統(tǒng)后臺會對用戶輸入的登錄信息進行認證,如果用戶名或者密碼不合法時,后臺會返回錯誤信息并在前端頁面上進行顯示,提示用戶“用戶名或密碼不正確,請重新輸入!”注冊用戶,若信息已存在,注冊失敗,返回登錄頁面注冊用戶成功,返回登錄頁面登錄后主頁面示例代碼如下所示:1)注冊代碼:packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.sql.SQLException;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importbean.userBean;importdao.user;publicclassZhuceServletextendsHttpServlet{ /** *Constructoroftheobject. */ publicZhuceServlet(){ super(); } /** *Destructionoftheservlet.<br> */ publicvoiddestroy(){ super.destroy();//Justputs"destroy"stringinlog //Putyourcodehere } /** *ThedoGetmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ } /** *ThedoPostmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ Stringname=request.getParameter("name"); Stringpwd=request.getParameter("pwd"); usertest=newuser(); try{ userBeanuser=test.check(name); if(user==null){ userBeanuser1=newuserBean(name,pwd); test.register(user1); response.sendRedirect("ZhuceSuccess.jsp"); }else{ response.sendRedirect("ZhuceError.jsp"); } }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } /** *Initializationoftheservlet.<br> * *@throwsServletExceptionifanerroroccurs */ publicvoidinit()throwsServletException{ //Putyourcodehere }}2)登陸代碼:packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.sql.SQLException;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importdao.library;importdao.user;importbean.libraryBean;importbean.userBean;publicclassLoginServletextendsHttpServlet{ /** * */ privatestaticfinallongserialVersionUID=1L; /** *Constructoroftheobject. */ publicLoginServlet(){ super(); } /** *Destructionoftheservlet.<br> */ publicvoiddestroy(){ super.destroy();//Justputs"destroy"stringinlog //Putyourcodehere } /** *ThedoGetmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html"); Stringname=request.getParameter("name"); Stringpwd=request.getParameter("pwd"); //userBeanuser=newuserBean(name,pwd); usertest=newuser(); try{ userBeanuser=test.check(name); if(user!=null){ if(pwd.equals(user.getPWD())){ librarybookinfo=newlibrary();//Dao涓殑library List<libraryBean>list=bookinfo.selectall(); request.getSession().setAttribute("list",list);// response.sendRedirect(request.getContextPath()+"InfoServlet"); request.getRequestDispatcher("InfoServlet").forward(request,response); }else{ response.sendRedirect("error.jsp"); } }else{ response.sendRedirect("error.jsp"); } }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } /** *ThedoPostmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html"); doGet(request,response); } /** *Initializationoftheservlet.<br> * *@throwsServletExceptionifanerroroccurs */ publicvoidinit()throwsServletException{ //Putyourcodehere }}2.系統(tǒng)首頁設(shè)計及實現(xiàn)登錄后主頁面3.圖書管理模塊設(shè)計及實現(xiàn)圖書管理員登錄系統(tǒng)后可以進行圖書管理,圖書管理模塊包含了圖書增、刪、改、查管理和圖書管理參數(shù)等子功能。下面分別進行介紹:圖書的增、刪、改、查管理截圖如下所示:1)添加圖書信息2)刪除圖書信息3)以圖書類應(yīng)編號為主鍵,修改圖書信息:4)輸入書名,查詢圖書信息:示例代碼如下所示:增加代碼:packageservlet;importjava.io.IOException;importjava.sql.SQLException;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importbean.libraryBean;importdao.library;publicclassAddBookServletextendsHttpServlet{ /** *Constructoroftheobject. */ publicAddBookServlet(){ super(); } /** *Destructionoftheservlet.<br> */ publicvoiddestroy(){ super.destroy();//Justputs"destroy"stringinlog //Putyourcodehere } publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse){ librarylibrary=newlibrary(); libraryBeanbook=newlibraryBean(request.getParameter("pubname"), request.getParameter("bookname"), Integer.parseInt(request.getParameter("typeid")), request.getParameter("author"), Integer.parseInt(request.getParameter("storage")), Integer.parseInt(request.getParameter("borrownum"))); try{ library.add(book); request.getRequestDispatcher("InfoServlet").forward(request,response); }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(Exceptione){ e.printStackTrace(); } } /** *Initializationoftheservlet.<br> * *@throwsServletExceptionifanerroroccurs */ publicvoidinit()throwsServletException{ //Putyourcodehere }}刪除代碼:packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.sql.SQLException;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importdao.library;publicclassDeleteServletextendsHttpServlet{ /** *Constructoroftheobject. */ publicDeleteServlet(){ super(); } /** *Destructionoftheservlet.<br> */ publicvoiddestroy(){ super.destroy();//Justputs"destroy"stringinlog //Putyourcodehere } /** *ThedoGetmethodoftheservlet.<br> * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ librarylibrary=newlibrary(); inti=Integer.parseInt(request.getParameter("typeid")); try{ library.delete(i); request.getRequestDispatcher("InfoServlet").forward(request,response); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } @Override protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp) throwsServletException,IOException{ //TODOAuto-generatedmethodstub super.doPost(req,resp); } /** *Initializationoftheservlet.<br> * *@throwsServletExceptionifanerroroccurs */ publicvoidinit()throwsServletException{ //Putyourcodehere }}修改代碼:packageservlet;importjava.sql.SQLException;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importbean.libraryBean;importdao.library;@SuppressWarnings("serial")publicclassUpDateServletextendsHttpServlet{ /** *Constructoroftheobject. */ publicUpDateServlet(){ super(); } /** *Destructionoftheservlet.<br> */ publicvoiddestroy(){ super.destroy();//Justputs"destroy"stringinlog //Putyourcodehere } publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse){ Integerid=Integer.parseInt((request.getParameter("typeid"))); librarylibrary=newlibrary(); try{ List<libraryBean>book=library.getForValue(id); System.out.println(book); request.setAttribute("book",book); request.getRequestDispatcher("/UpDate.jsp").forward(request,response); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } /** *Initializationoftheservlet.<br> * *@throwsServletExceptionifanerroroccurs */ publicvoidinit()throwsServletException{ //Putyourcodehere }}查詢代碼:packageservlet;importjava.io.IOException;importjava.sql.SQLException;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importbean.libraryBean;importdao.library;publicclassEditServletextendsHttpServlet{ /** *Constructoroftheobject. */ publicEditServlet(){ super(); } /** *Destructionoftheservlet.<br> */ publicvoiddestroy(){ super.destroy();//Justputs"destroy"stringinlog //Putyourcodehere } publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ librarylibrary=newlibrary(); libraryBeanbook=newlibraryBean(request.getParameter("pubname"), request.getParameter("bookname"), Integer.parseInt(request.getParameter("typeid")), request.getParameter("author"), Integer.parseInt(request.getParameter("storage")), Integer.parseInt(request.getParameter("borrownum"))); System.out.println(book); try{ library.update(book); request.getRequestDispatcher("InfoServlet").forward(request,response); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } /** *Initializationoftheservlet.<br> * *@throwsServletExceptionifanerroroccurs */ publicvoidinit()throwsServletException{ //Putyourcodehere }}Librarydao:packagedao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.List;importDB.Dbconnection;importbean.libraryBean;publicclasslibrary{staticDbconnectiondb=newDbconnection();/***該方法向數(shù)據(jù)庫中插入一條信息*@parambook*@throwsException*/ publicstaticvoidadd(libraryBeanbook)throwsException{ Connectioncon=db.getConnection(); PreparedStatementps=con.prepareStatement("insertintolibraryvalues(?,?,?,?,?,?)"); ps.setString(1,book.getPubname()); ps.setString(2,book.getBookname()); ps.setInt(3,book.getTypeid()); ps.setString(4,book.getAuthor()); ps.setInt(5,book.getStorage()); ps.setInt(6,book.getBorrownum()); ps.executeUpdate(); ps.close(); con.close(); } /** *該方法刪除數(shù)據(jù)庫中指定信息 *@paramtypeid *@throwsClassNotFoundException *@throwsSQLException */ publicvoiddelete(inttypeid)throwsException{ Connectioncon=db.getConnection(); PreparedStatementps=con.prepareStatement("deletefromlibrarywheretypeid=?"); ps.setInt(1,typeid); ps.executeUpdate(); ps.close(); con.close(); } /** *執(zhí)行更新操作 *@parambook封裝的book對象 *@throwsClassNotFoundException *@throwsSQLException */ publicvoidupdate(libraryBeanbook)throwsException{ Connectioncon=db.getConnection(); PreparedStatementps=con.prepareStatement("updatelibrarysetpubname=?," +"bookname=?,author=?,storage=?,"+"borrownum=?wheretypeid=?"); ps.setString(1,book.getPubname()); ps.setString(2,book.getBookname()); ps.setString(3,book.getAuthor()); ps.setInt(4,book.getStorage()); ps.setInt(5,book.getBorrownum()); ps.setInt(6,book.getTypeid()); ps.executeUpdate(); ps.close(); con.close(); } /** *該方法是用來查詢數(shù)據(jù)庫中的所有記錄并返回一個List集合 *@return *@throwsClassNotFoundException *@throwsSQLException */ publicList<libraryBean>selectall()throwsException{ List<libraryBean>books=newArrayList<libraryBean>(); Connectioncon=db.getConnection(); Statementst=con.createStatement(); ResultSetres=st.executeQuery("select*fromlibrary"); while(res.next()){ Stringpubname=res.getString(1); Stringbookname=res.getString(2); inttypeid=res.getInt(3); Stringauthor=res.getString(4); intstorage=res.getInt(5); intborrownum=res.getInt(6); libraryBeanbook=newlibraryBean(pubname,bookname,typeid,author,storage,borrownum); books.add(book); } returnbooks; } /** *該方法是用typeId來查詢某一條記錄,并返回該記錄的一個libararyBean的對象,用在修改信息時,用id先提出信息,id不可修改 *@paramidtypeId *@return */ publicList<libraryBean>getForValue(Integerid)throwsException{ List<libraryBean>books=newArrayList<libraryBean>(); Connectioncon=db.getConnection(); Statementst=con.createStatement(); ResultSetres=st.executeQuery("select*fromlibraryWHEREtypeid="+id); while(res.next()){ Stringpubname=res.getString(1); Stringbookname=res.getString(2); inttypeid=res.getInt(3); Stringauthor=res.getString(4); intstorage=res.getInt(5); intborrownum=res.getInt(6); libraryBeanbook=newlibraryBean(pubname,bookname,typeid,author,storage,borrownum); books.add(book); } returnbooks; } /** *該方法是用bookName來查詢某一條記錄,并返回該記錄的一個libararyBean的對象 *@paramname *@return *@throwsClassNotFoundException *@throwsSQLException */ publicList<libraryBean>getWithName(StringbookName)throwsException{ List<libraryBean>books=newArrayList<libraryBean>(); Connectioncon=db.getConnection(); Statementst=con.createStatement(); ResultSetres=st.executeQuery("SELECT*FROMlibraryWHEREbooknameLIKE"+bookName); while(res.next()){ Stringpubname=res.getString(1); Stringbookname=res.getString(2); inttypeid=res.getInt(3); Stringauthor=res.getString(4); intstorage=res.getInt(5); intborrownum=res.getInt(6); libraryBeanbook=newlibraryBean(pubname,bookname,typeid,author,storage,borrownum); books.add(book); } returnbooks; }}Userdao:packagedao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importbean.userBean;importDB.Dbconnection;publicclassuser{ staticDbconnectiondb=newDbconnection(); publicuserBeancheck(Stringname)throwsSQLException,ClassNotFoundException{ Connectioncon=db.getConnection(); Statementstmn=con.createStatement(); ResultSetres=stmn.executeQuery("select*frommanagerwherename="+name); if(res.next()){ Stringname1=res.getString(1); Stringpassword1=res.getString(2); userBeanuser=newuserBean(name1,password1); returnuser; } else{ returnnull; } } publicvoidregister(userBeanuser)throwsClassNotFoundException,SQLException{ Connectioncon=db.getConnection(); PreparedStatementps=con.prepareStatement("insertintomanagervalues(?,?)"); ps.setString(1,user.getName()); ps.setString(2,user.getPWD()); ps.executeUpdate(); ps.close(); con.close(); } }六、測試分析報告軟件開發(fā)過程是一個極其復(fù)雜的過程,測試就是解決功能性差異和非功能性差異的一種有效的手段,他在軟件開發(fā)過程中有著十分的重要的作用,是保證軟件質(zhì)量的重要一環(huán)。在軟件開發(fā)的生命周期中有著十分重要的作用,它是保證軟件質(zhì)量的極其重要的一環(huán)。對于一個架構(gòu)復(fù)雜,功能繁多的應(yīng)用系統(tǒng),更離不開軟件測試,因為在設(shè)計或者編碼的過程中總會有各種各樣的情況未能考慮到,通過測試可以發(fā)現(xiàn)設(shè)計編碼中的疏忽,然后加以修正,使軟件更加穩(wěn)定可靠。由此可以快速定位并解決問題。軟件開發(fā)生命周期包含很多階段,各個階段都可能發(fā)生各種事先未能預(yù)料的問題,所以有必要在每個階段都對其進行針對性的測試,盡可能早地,盡可能多地發(fā)現(xiàn)軟件中的缺陷,然后對其加以修正。更改測試案例期望結(jié)果更改評價測試評價測試程序測試結(jié)果錯誤信息再評價再評價糾錯信息測試方法:(1)軟件黑盒測試是軟件測試的主要方法之一,也可以稱為功能測試、數(shù)據(jù)驅(qū)動測試或基于規(guī)格說明的測試。測試者不了解程序的內(nèi)部情況,只知道程序的輸入、輸出和系統(tǒng)的功能,這是從用戶的角度針對軟件界面、功能及外部結(jié)構(gòu)進行測試,而不考慮程序內(nèi)部邏輯結(jié)構(gòu)。(2)軟件白盒測試產(chǎn)生的測試用例能夠:1)保證一個模塊中的所有獨立路徑至少被使用一次;2)對所有邏輯值均需測試true和false;3)在上下邊界及可操作范圍內(nèi)運行所有循環(huán);4)檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性。這一方法是把測試對象看作一個打開的盒子,測試人員依據(jù)程序內(nèi)部邏輯結(jié)構(gòu)相關(guān)信息,設(shè)計或選擇測試用例,對程序所有邏輯路徑進行測試,通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預(yù)期的狀態(tài)一致。測試計劃和要點軟件測試的本質(zhì)是針對要測試的內(nèi)容確定一組測試用例。在討論之前,我先把要測試的各個模塊的計劃和要點列出:用戶角色測試要點模塊正常運行流程用戶查詢等操作異常輸入數(shù)據(jù)校驗(用戶唯一性、數(shù)據(jù)輸入范圍、數(shù)據(jù)類型等)數(shù)據(jù)是否添加到數(shù)據(jù)庫中數(shù)據(jù)庫連接異常的相應(yīng)情況圖書管理模塊測試要點模塊正常運行流程數(shù)據(jù)查詢等操作異常輸入數(shù)據(jù)校驗(圖書編號唯一、數(shù)據(jù)輸入范圍、數(shù)據(jù)類型等)數(shù)據(jù)是否保存在數(shù)據(jù)庫中數(shù)據(jù)庫連接異常的相應(yīng)情況6.1.3學生管理模塊測試要點模塊正常運行流程數(shù)據(jù)查詢等操作異常輸入數(shù)據(jù)校驗(學號唯一、數(shù)據(jù)輸入范圍、數(shù)據(jù)類型等)數(shù)據(jù)是否保存在數(shù)據(jù)庫中數(shù)據(jù)庫連接異常的相應(yīng)情況6.1.4借閱模塊測試要點模塊正常運行流程數(shù)據(jù)查詢等操作異常輸入數(shù)據(jù)校驗數(shù)據(jù)是否保存在數(shù)據(jù)庫中數(shù)據(jù)庫連接異常的相應(yīng)情況6.1.5圖書歸還模塊測試要點模塊正常運行流程數(shù)據(jù)查詢等操作異常輸入數(shù)據(jù)校驗數(shù)據(jù)是否保存在數(shù)據(jù)庫中數(shù)據(jù)庫連接異常的相應(yīng)情況6.2測試用例測試用例是為了特定目的而設(shè)計的測試數(shù)據(jù)及與之相關(guān)的測試規(guī)程的一個特定的集合,或稱為有效地發(fā)現(xiàn)軟甲缺陷的最小測試單元。通過測試要點,且測試時不可能窮舉的,
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 備戰(zhàn)2025年高考化學3年高考2年模擬1年原創(chuàng)專題03阿伏加德羅常數(shù)含解析
- 2025幼兒園膳食計劃(21篇)
- 市政管道檢測合同范本
- 跨境電子商務(wù)營銷策劃的挑戰(zhàn)與機遇
- 食品企業(yè)品牌形象塑造的關(guān)鍵-葡萄酒標設(shè)計
- 宜賓市屬國有企業(yè)人力資源中心宜賓臨港投資建設(shè)集團有限公司下屬子公司2025年第一批項目制員工公開招聘筆試參考題庫附帶答案詳解
- 跨國企業(yè)在智慧辦公領(lǐng)域的投資前景分析
- 跨文化視角下的學院心理援助實踐分析
- 氫氣購買合同范本
- 建筑電氣控制技術(shù)趙建偉55課件
- 行政或后勤崗位招聘筆試題及解答(某大型國企)2025年
- 2024年北京中考地理試卷
- 四川蜀道集團筆試題
- 零食門市轉(zhuǎn)讓協(xié)議書范本
- 電氣自動化工程師考試題庫
- 小學利潤問題應(yīng)用題100道附答案(完整版)
- 醫(yī)院智能化系統(tǒng)內(nèi)網(wǎng)、外網(wǎng)及設(shè)備網(wǎng)系統(tǒng)拓撲圖-可編輯課件
- 小學生心理健康主題家長會
- 社交禮儀-儀態(tài)禮儀
- 安徽省2024年中考語文真題試卷【附答案】
- QB/T 4031-2024 阻燃性汽車空氣濾紙(正式版)
評論
0/150
提交評論