模擬駕??荚囅到y(tǒng)(論文范文,JSP,JAVA,畢業(yè)設(shè)計(jì))_第1頁(yè)
模擬駕??荚囅到y(tǒng)(論文范文,JSP,JAVA,畢業(yè)設(shè)計(jì))_第2頁(yè)
模擬駕校考試系統(tǒng)(論文范文,JSP,JAVA,畢業(yè)設(shè)計(jì))_第3頁(yè)
模擬駕??荚囅到y(tǒng)(論文范文,JSP,JAVA,畢業(yè)設(shè)計(jì))_第4頁(yè)
模擬駕校考試系統(tǒng)(論文范文,JSP,JAVA,畢業(yè)設(shè)計(jì))_第5頁(yè)
已閱讀5頁(yè),還剩51頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論