版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
trafficregulationstrafficregulationstrafficregulationstrafficregulations DriverManager.getConnection()方法獲得數(shù)據(jù)庫(kù)連接池。其中DriverManager.getConnection()的三個(gè)參數(shù)為別代表數(shù)據(jù)庫(kù)名稱,數(shù)據(jù)庫(kù)用戶名,數(shù)據(jù)庫(kù)密碼,將這三個(gè)參數(shù)傳入就可以通過(guò)conn變量操作數(shù)據(jù)庫(kù)了。具體代碼如下:publicclassConnDB{ publicConnectionconn=null;//聲明Connection對(duì)象的實(shí)例 publicStatementstmt=null;//聲明Statement對(duì)象的實(shí)例 publicResultSetrs=null;//聲明ResultSet對(duì)象的實(shí)例 privatestaticStringpropFileName="/com/connDB.properties"; privatestaticPropertiesprop=newProperties(); privatestaticStringdbClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver";//定義保存數(shù)據(jù)庫(kù)驅(qū)動(dòng)的變量 privatestaticStringdbUrl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_netExam"; privatestaticStringdbUser="sa"; privatestaticStringdbPwd="123"; publicstaticConnectiongetConnection(){ Connectionconn=null; try{ Class.forName(dbClassName).newInstance(); conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd); }catch(Exceptionee){ ee.printStackTrace(); } if(conn==null){ System.err.println("警告:DbConnectionManager.getConnection()獲得數(shù)據(jù)庫(kù)鏈接失敗.\r\n\r\n鏈接類型:"+dbClassName+"\r\n鏈接位置:"+dbUrl+"\r\n用戶/密碼"+dbUser+"/"+dbPwd); } returnconn; }}newid()數(shù)據(jù)庫(kù)方法;該方法配合topn*將從select語(yǔ)句自定的查找范圍中隨機(jī)查找出n條記錄,完整的sql語(yǔ)句為"SELECTtop4*FROMtb_questionsAWHEREtaoTiIdin(SELECTtaoTiIdFROMtb_questionsWHEREA.id=id)orderbynewid()",返回記錄后將結(jié)果保留到名為questionsList的List中,供模擬考試頁(yè)面調(diào)用。具體代碼如下:publicListqueryExam(intquestionsID,Stringflag){ ListquestionsList=newArrayList();QuestionsFormquestionsForm1=null;Stringsql="";if(questionsID==-1){if(flag.equals("0")){sql="SELECTtop4*FROMtb_questionsAWHEREtaoTiIdin(SELECTtaoTiIdFROMtb_questionsWHEREA.id=id)orderbynewid()";}elseif(questionsID==-2){ sql="SELECT*FROMtb_questionsWHEREidin(SELECTdistinctquesIdfromtb_WrongWHEREstuId='"+flag+"');}else{sql="SELECT*FROMtb_questionsWHEREtaoTiID="+questionsID+"}ResultSetrs=conn.executeQuery(sql);Stringtype="";intid=0;try{rs.last();intrecordNum=rs.getRow();rs.first();int[]idArr=newint[recordNum];for(inti=0;i<recordNum;i++){questionsForm1=newQuestionsForm();id=rs.getInt(1);questionsForm1.setID(id);questionsForm1.setSubject(rs.getString(2));type=rs.getString(3);questionsForm1.setType(type);questionsForm1.setLessonId(rs.getInt(5));questionsForm1.setTaoTiId(rs.getInt(6));questionsForm1.setOptionA(rs.getString(7));questionsForm1.setOptionB(rs.getString(8));questionsForm1.setOptionC(rs.getString(9));questionsForm1.setOptionD(rs.getString(10));questionsForm1.setAnswer(rs.getString(11))’questionsForm1.setIdArrS(idArr[i]=id;);questionsForm1.setNote(rs.getString(12));questionsList.add(questionsForm1);rs.next();}}catch(Exceptione){ e.printStackTrace(); //輸出異常信息}returnquestionsList;}//計(jì)算剩余時(shí)間 privateActionForwardshowRemainTime(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ HttpSessionsession=request.getSession(); StringstartTime=session.getAttribute("startTime").toString(); longa=Long.parseLong(startTime); longb=newjava.util.Date().getTime(); longr=20*60000-(b-a-1000); inth=(int)Math.abs(r/3600000); Stringhour=chStr.formatNO(h,2); intm=(int)(r)%3600000/60000; Stringminute=chStr.formatNO(m,2); ints=(int)((r)%3600000)%60000/1000; Stringsecond=chStr.formatNO(s,2); Stringtime=hour+":"+minute+":"+second; request.setAttribute("showRemainTime",time); returnmapping.findForward("showRemainTime"); }publicintSaveWrongResult(StringstudentID,intquesId){ Stringsql="INSERTINTOtb_Wrong(stuId,quesId)values('"+studentID+"',"+quesId+")"; System.out.println("剛開始考試時(shí)保存考試結(jié)果的SQL語(yǔ)句:"+sql); intret=conn.executeUpdate(sql); returnret;}//考試結(jié)束后保存考試結(jié)果publicintsaveResult(StringstudentID,intlessonID,intresSingle,intresMore){ Stringlesson=((LessonForm)lessonDAO.query(lessonID).get(0)).getName(); Stringsql="INSERTINTOtb_stuResult(stuId,whichLesson,resSingle,resMore)values('"+studentID+"','"+lesson+"',"+resSingle+","+resMore+")";resSingle="+resSingle+",resMore="+resMore+"WHEREstuId='"+studentID+"'ANDwhichLesson='"+lesson+"'"; System.out.println(sql); intret=conn.executeUpdate(sql); returnret;}軟件測(cè)試(Softwaretesting)是軟件生存期(Softwarelifecycle)中的一個(gè)重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟。通俗地講,軟件測(cè)試就是在軟件投入運(yùn)行前,對(duì)軟件需求分析、設(shè)計(jì)規(guī)格說(shuō)明和編碼進(jìn)行最終復(fù)審的活動(dòng)。1983年IEEE提出的軟件工程術(shù)語(yǔ)中給軟件測(cè)試下的定義是:“使用人工或自動(dòng)的手段來(lái)運(yùn)行或測(cè)定某個(gè)軟件系統(tǒng)的過(guò)程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別”。這個(gè)定義明確指出:軟件測(cè)試的目的是為了檢驗(yàn)軟件系統(tǒng)是否滿足需求。在G.J.Myers的經(jīng)典著作《軟件測(cè)試技巧》中,給出了測(cè)試的定義:"程序測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程"。測(cè)試的目的是發(fā)現(xiàn)程序中的錯(cuò)誤,是為了證明程序有錯(cuò),而不是證明程序無(wú)錯(cuò)。在軟件開發(fā)過(guò)程中,分析、設(shè)計(jì)與編碼等工作都是建設(shè)性的,惟獨(dú)測(cè)試是帶有"破壞性",測(cè)試可視為分析、設(shè)計(jì)和編碼3個(gè)階段的"最終復(fù)審",在軟件質(zhì)量保證中具有重要地位。為了確保軟件的質(zhì)量,較理想的做法應(yīng)該是對(duì)軟件的開發(fā)過(guò)程,按軟件工程各階段形成的結(jié)果,分別進(jìn)行嚴(yán)格的審查。當(dāng)設(shè)計(jì)工作完成以后,就應(yīng)該著手測(cè)試的準(zhǔn)備工作了,一般來(lái)講,由一位對(duì)整個(gè)系統(tǒng)設(shè)計(jì)熟悉的設(shè)計(jì)人員編寫測(cè)試大綱,明確測(cè)試的內(nèi)容和測(cè)試通過(guò)的準(zhǔn)則,設(shè)計(jì)完整合理的測(cè)試用例,以便系統(tǒng)實(shí)現(xiàn)后進(jìn)行全面測(cè)試。軟件測(cè)試主要分為白盒測(cè)試和黑盒測(cè)試。白盒測(cè)試也稱結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,這種測(cè)試將測(cè)試對(duì)象看作一個(gè)透明的盒子,測(cè)試人員根據(jù)程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息設(shè)計(jì)測(cè)試用例,檢驗(yàn)程序中所有邏輯路徑是否都能按預(yù)定要求正確工作。黑盒測(cè)試也稱行為測(cè)試,這種方法把測(cè)試對(duì)象看作一個(gè)黑盒子,測(cè)試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說(shuō)明書,檢查程序的功能是否符合它的功能需求。(1)頁(yè)面鏈接檢查:每一個(gè)鏈接是否都有對(duì)應(yīng)的頁(yè)面,并且頁(yè)面之間切換正確??梢酝ㄟ^(guò)Dreamweaver命令工具進(jìn)行鏈接檢查。(2)相關(guān)性檢查:增加/刪除一項(xiàng)會(huì)不會(huì)對(duì)其他項(xiàng)產(chǎn)生影響,如果產(chǎn)生影響,這些影響是否都正確。(3)檢查按鈕的功能是否正確:如修改、保存、取消、返回等按鈕功能是否正確。(4)檢查帶出信息的完整性:在查看信息和更新信息時(shí),查看所填寫的信息是不是全部帶出,帶出信息和添加的是否一致。(5)信息重復(fù):在一些需要命名,且名字應(yīng)該唯一的信息輸入重復(fù)的名字或ID,看系統(tǒng)有沒(méi)有處理,會(huì)否報(bào)錯(cuò),重名包括是否區(qū)分大小寫,以及在輸入內(nèi)容的前后輸入空格,系統(tǒng)是否做出正確處理。(6)檢查刪除功能:在一些可以一次刪除多個(gè)信息的地方,不選擇任何信息,選擇“刪除”,看系統(tǒng)如何處理,是否會(huì)出錯(cuò);然后選擇一個(gè)和多個(gè)信息進(jìn)行刪除,看是否正確處理。(7)檢查添加和修改是否一致:檢查添加和修改信息的要求是否一致,例如添加要求必填的項(xiàng),修改也應(yīng)該必填;添加規(guī)定為整型的項(xiàng),修改也必須為整型。(8)檢查修改重名:修改時(shí)把不能重名的項(xiàng)改為已存在的內(nèi)容,看會(huì)否處理、報(bào)錯(cuò)。同時(shí),也要注意會(huì)不會(huì)報(bào)和自己重名的錯(cuò)。(9)檢查多次使用返回鍵的情況:在有返回鍵的地方,返回到原來(lái)頁(yè)面,再返回,重復(fù)多次,看會(huì)否出錯(cuò)。(10)必填項(xiàng)檢查:應(yīng)該填寫的項(xiàng)沒(méi)有填寫時(shí)系統(tǒng)是否都做了處理,對(duì)必填項(xiàng)是否有提示信息,如在必填項(xiàng)前加*。測(cè)試中根據(jù)程序中各個(gè)類中的各個(gè)方法分別設(shè)計(jì)用例并進(jìn)行測(cè)試,例如將一個(gè)數(shù)據(jù)保存入數(shù)據(jù)庫(kù)時(shí),將編寫滿足正確保存條件的測(cè)試用例和各種不正確的保存條件的測(cè)試用例,進(jìn)而測(cè)試系統(tǒng)是否能正確識(shí)別該執(zhí)行保存的和不該執(zhí)行保存并給出出錯(cuò)信息的情況。若不能正確執(zhí)行則需對(duì)程序進(jìn)行糾錯(cuò)和修改。部分相關(guān)代碼將在附錄中給出。(1)頁(yè)面鏈接檢查:通過(guò)Dreamweaver命令工具進(jìn)行鏈接檢查,處理了斷掉的不正確的鏈接;再次運(yùn)行網(wǎng)站程序,依次點(diǎn)擊鏈接,鏈接全部正確。(2)相關(guān)性檢查:添加/刪除相關(guān)信息后,相關(guān)頁(yè)面能正常顯示。(3)檢查按鈕的功能:按鈕的功能正常。(4)檢查帶出信息的完整性:查看信息和更新信息時(shí),所填寫的信息全部帶出,帶出信息和添加的信息一致,正確顯示。測(cè)試過(guò)程中,某些操作產(chǎn)生了一些異常(Exception),大部分已經(jīng)解決。系統(tǒng)中異常處理并未很完善是導(dǎo)致這些異常沒(méi)有友好提示和解決的主要原因。[5]鄭阿奇,劉啟芬,顧韻華.SQLServer教程[M].北京:清華大學(xué)出版社,2005.8.[6]栗菊民.JavaWeb應(yīng)用程序設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2007.9.[7]陳天河等.Struts,Hibernate,Spring集成開發(fā)寶典[M].北京:電子工業(yè)出版社,2007.1.自動(dòng)評(píng)分的actionpackagecom.wgh.action;importjava.util.*;importjavax.servlet.http.*;importorg.apache.struts.action.*;importantlr.collections.List;importcom.wgh.actionForm.StudentForm;importcom.wgh.actionForm.TaoTiForm;importcom.wgh.dao.StudentDAO;publicclassStudentextendsAction{ privateStudentDAOstudentDAO=null; publicStudent(){ this.studentDAO=newStudentDAO(); } publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ Stringaction=request.getParameter("action"); System.out.println("獲取的查詢字符串:"+action); if("studentQuery".equals(action)){ returnstudentQuery(mapping,form,request,response); }elseif("login".equals(action)){ returnstudentLogin(mapping,form,request,response); }elseif("studentAdd".equals(action)){ returnstudentAdd(mapping,form,request,response); }elseif("studentDel".equals(action)){ returnstudentDel(mapping,form,request,response); }elseif("modifyQuery".equals(action)){ returnmodifyQuery(mapping,form,request,response); }elseif("studentModify".equals(action)){ returnstudentModify(mapping,form,request,response); }elseif("seekPwd1".equals(action)){ returnseekPwd1(mapping,form,request,response); }elseif("seekPwd2".equals(action)){ returnseekPwd2(mapping,form,request,response); }else{ request.setAttribute("error","您的操作有誤!"); //將錯(cuò)誤信息保存到error中 returnmapping.findForward("error"); //轉(zhuǎn)到顯示錯(cuò)誤信息的頁(yè)面 } }//考生身份驗(yàn)證 publicActionForwardstudentLogin(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ StudentFormstudentForm=(StudentForm)form; intret=studentDAO.checkStudent(studentForm); System.out.print("驗(yàn)證結(jié)果ret的值:"+ret); if(ret==2){ request.setAttribute("error","您輸入的考生準(zhǔn)考證號(hào)碼或密碼錯(cuò)誤!"); returnmapping.findForward("error"); }else{ HttpSessionsession=request.getSession(); session.setAttribute("student",studentForm.getID()); returnmapping.findForward("studentLoginok"); } } //查詢考生信息 privateActionForwardstudentQuery(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ request.setAttribute("studentQuery",studentDAO.query(null)); returnmapping.findForward("studentQuery"); } //添加考生注冊(cè)信息 privateActionForwardstudentAdd(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ StudentFormstudentForm=(StudentForm)form; Stringret=studentDAO.insert(studentForm); System.out.println("返回值ret:"+ret); if(ret.equals("re")){ request.setAttribute("error","您已經(jīng)注冊(cè),直接登錄即可!"); returnmapping.findForward("error"); }elseif(ret.equals("miss")){ request.setAttribute("error","注冊(cè)失??!"); returnmapping.findForward("error"); }else{ request.setAttribute("ret",ret); returnmapping.findForward("studentAdd"); } }//修改考生信息時(shí)查詢 privateActionForwardmodifyQuery(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ System.out.println("獲取的ID:"+request.getParameter("ID")); StudentFormstudentForm=(StudentForm)(studentDAO.query(request.getParameter("ID")).get(0)); System.out.println("從Bean中獲取的ID:"+studentForm.getID()); request.setAttribute("modifyQuery",studentForm); returnmapping.findForward("modifyQuery"); }//找回密碼(第一步) privateActionForwardseekPwd1(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ StudentFormstudentForm=(StudentForm)form; StudentForms=studentDAO.seekPwd1(studentForm); request.setAttribute("seekPwd2",s); if(s.getID().equals("")){ request.setAttribute("error","您輸入的準(zhǔn)考證號(hào)不存在!"); returnmapping.findForward("error"); }else{ returnmapping.findForward("seekPwd1"); } }// 找回密碼(第二步) privateActionForwardseekPwd2(ActionMappingmapping,ActionFor
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新形勢(shì)下工藝品行業(yè)可持續(xù)發(fā)展戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)生活性服務(wù)行業(yè)資本規(guī)劃與股權(quán)融資戰(zhàn)略制定與實(shí)施研究報(bào)告
- 自動(dòng)扶梯施工方案
- 中學(xué)教學(xué)常規(guī)要求
- 測(cè)你在床上的真實(shí)風(fēng)格究竟是啥
- 真空采血管使用情況調(diào)研
- 無(wú)塵室系統(tǒng)行業(yè)行業(yè)發(fā)展趨勢(shì)及投資戰(zhàn)略研究分析報(bào)告
- 2024-2027年中國(guó)超休閑游戲行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略研究報(bào)告
- 監(jiān)控器安裝知識(shí)培訓(xùn)課件
- 車輛汽修知識(shí)培訓(xùn)課件
- (八省聯(lián)考)河南省2025年高考綜合改革適應(yīng)性演練 思想政治試卷(含答案)
- 綜合測(cè)試 散文閱讀(多文本)(解析版)-2025年高考語(yǔ)文一輪復(fù)習(xí)(新高考)
- 鈑金設(shè)備操作培訓(xùn)
- 2024駕校經(jīng)營(yíng)權(quán)承包合同
- 福建省能化集團(tuán)筆試題目
- 快遞公司與驛站合作協(xié)議模板 3篇
- 水利工程招標(biāo)文件樣本
- 品質(zhì)管控培訓(xùn)質(zhì)量管理與質(zhì)量控制課件
- 小數(shù)加減乘除計(jì)算題大全(300題大全)-
- 2023-2024學(xué)年小學(xué)語(yǔ)文四年級(jí)素養(yǎng)檢測(cè)復(fù)習(xí)試題附答案
- 露天礦山全員安全教育培訓(xùn)
評(píng)論
0/150
提交評(píng)論