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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

trafficregulationstrafficregulationstrafficregulationstrafficregulations DriverManager.getConnection()方法獲得數(shù)據(jù)庫連接池。其中DriverManager.getConnection()的三個參數(shù)為別代表數(shù)據(jù)庫名稱,數(shù)據(jù)庫用戶名,數(shù)據(jù)庫密碼,將這三個參數(shù)傳入就可以通過conn變量操作數(shù)據(jù)庫了。具體代碼如下:publicclassConnDB{ publicConnectionconn=null;//聲明Connection對象的實(shí)例 publicStatementstmt=null;//聲明Statement對象的實(shí)例 publicResultSetrs=null;//聲明ResultSet對象的實(shí)例 privatestaticStringpropFileName="/com/connDB.properties"; privatestaticPropertiesprop=newProperties(); privatestaticStringdbClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver";//定義保存數(shù)據(jù)庫驅(qū)動的變量 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ù)庫鏈接失敗.\r\n\r\n鏈接類型:"+dbClassName+"\r\n鏈接位置:"+dbUrl+"\r\n用戶/密碼"+dbUser+"/"+dbPwd); } returnconn; }}newid()數(shù)據(jù)庫方法;該方法配合topn*將從select語句自定的查找范圍中隨機(jī)查找出n條記錄,完整的sql語句為"SELECTtop4*FROMtb_questionsAWHEREtaoTiIdin(SELECTtaoTiIdFROMtb_questionsWHEREA.id=id)orderbynewid()",返回記錄后將結(jié)果保留到名為questionsList的List中,供模擬考試頁面調(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ì)算剩余時間 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("剛開始考試時保存考試結(jié)果的SQL語句:"+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;}軟件測試(Softwaretesting)是軟件生存期(Softwarelifecycle)中的一個重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟。通俗地講,軟件測試就是在軟件投入運(yùn)行前,對軟件需求分析、設(shè)計(jì)規(guī)格說明和編碼進(jìn)行最終復(fù)審的活動。1983年IEEE提出的軟件工程術(shù)語中給軟件測試下的定義是:“使用人工或自動的手段來運(yùn)行或測定某個軟件系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別”。這個定義明確指出:軟件測試的目的是為了檢驗(yàn)軟件系統(tǒng)是否滿足需求。在G.J.Myers的經(jīng)典著作《軟件測試技巧》中,給出了測試的定義:"程序測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程"。測試的目的是發(fā)現(xiàn)程序中的錯誤,是為了證明程序有錯,而不是證明程序無錯。在軟件開發(fā)過程中,分析、設(shè)計(jì)與編碼等工作都是建設(shè)性的,惟獨(dú)測試是帶有"破壞性",測試可視為分析、設(shè)計(jì)和編碼3個階段的"最終復(fù)審",在軟件質(zhì)量保證中具有重要地位。為了確保軟件的質(zhì)量,較理想的做法應(yīng)該是對軟件的開發(fā)過程,按軟件工程各階段形成的結(jié)果,分別進(jìn)行嚴(yán)格的審查。當(dāng)設(shè)計(jì)工作完成以后,就應(yīng)該著手測試的準(zhǔn)備工作了,一般來講,由一位對整個系統(tǒng)設(shè)計(jì)熟悉的設(shè)計(jì)人員編寫測試大綱,明確測試的內(nèi)容和測試通過的準(zhǔn)則,設(shè)計(jì)完整合理的測試用例,以便系統(tǒng)實(shí)現(xiàn)后進(jìn)行全面測試。軟件測試主要分為白盒測試和黑盒測試。白盒測試也稱結(jié)構(gòu)測試或邏輯驅(qū)動測試,這種測試將測試對象看作一個透明的盒子,測試人員根據(jù)程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息設(shè)計(jì)測試用例,檢驗(yàn)程序中所有邏輯路徑是否都能按預(yù)定要求正確工作。黑盒測試也稱行為測試,這種方法把測試對象看作一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能需求。(1)頁面鏈接檢查:每一個鏈接是否都有對應(yīng)的頁面,并且頁面之間切換正確??梢酝ㄟ^Dreamweaver命令工具進(jìn)行鏈接檢查。(2)相關(guān)性檢查:增加/刪除一項(xiàng)會不會對其他項(xiàng)產(chǎn)生影響,如果產(chǎn)生影響,這些影響是否都正確。(3)檢查按鈕的功能是否正確:如修改、保存、取消、返回等按鈕功能是否正確。(4)檢查帶出信息的完整性:在查看信息和更新信息時,查看所填寫的信息是不是全部帶出,帶出信息和添加的是否一致。(5)信息重復(fù):在一些需要命名,且名字應(yīng)該唯一的信息輸入重復(fù)的名字或ID,看系統(tǒng)有沒有處理,會否報錯,重名包括是否區(qū)分大小寫,以及在輸入內(nèi)容的前后輸入空格,系統(tǒng)是否做出正確處理。(6)檢查刪除功能:在一些可以一次刪除多個信息的地方,不選擇任何信息,選擇“刪除”,看系統(tǒng)如何處理,是否會出錯;然后選擇一個和多個信息進(jìn)行刪除,看是否正確處理。(7)檢查添加和修改是否一致:檢查添加和修改信息的要求是否一致,例如添加要求必填的項(xiàng),修改也應(yīng)該必填;添加規(guī)定為整型的項(xiàng),修改也必須為整型。(8)檢查修改重名:修改時把不能重名的項(xiàng)改為已存在的內(nèi)容,看會否處理、報錯。同時,也要注意會不會報和自己重名的錯。(9)檢查多次使用返回鍵的情況:在有返回鍵的地方,返回到原來頁面,再返回,重復(fù)多次,看會否出錯。(10)必填項(xiàng)檢查:應(yīng)該填寫的項(xiàng)沒有填寫時系統(tǒng)是否都做了處理,對必填項(xiàng)是否有提示信息,如在必填項(xiàng)前加*。測試中根據(jù)程序中各個類中的各個方法分別設(shè)計(jì)用例并進(jìn)行測試,例如將一個數(shù)據(jù)保存入數(shù)據(jù)庫時,將編寫滿足正確保存條件的測試用例和各種不正確的保存條件的測試用例,進(jìn)而測試系統(tǒng)是否能正確識別該執(zhí)行保存的和不該執(zhí)行保存并給出出錯信息的情況。若不能正確執(zhí)行則需對程序進(jìn)行糾錯和修改。部分相關(guān)代碼將在附錄中給出。(1)頁面鏈接檢查:通過Dreamweaver命令工具進(jìn)行鏈接檢查,處理了斷掉的不正確的鏈接;再次運(yùn)行網(wǎng)站程序,依次點(diǎn)擊鏈接,鏈接全部正確。(2)相關(guān)性檢查:添加/刪除相關(guān)信息后,相關(guān)頁面能正常顯示。(3)檢查按鈕的功能:按鈕的功能正常。(4)檢查帶出信息的完整性:查看信息和更新信息時,所填寫的信息全部帶出,帶出信息和添加的信息一致,正確顯示。測試過程中,某些操作產(chǎn)生了一些異常(Exception),大部分已經(jīng)解決。系統(tǒng)中異常處理并未很完善是導(dǎo)致這些異常沒有友好提示和解決的主要原因。[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.自動評分的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","您的操作有誤!"); //將錯誤信息保存到error中 returnmapping.findForward("error"); //轉(zhuǎn)到顯示錯誤信息的頁面 } }//考生身份驗(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)考證號碼或密碼錯誤!"); 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"); } //添加考生注冊信息 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)注冊,直接登錄即可!"); returnmapping.findForward("error"); }elseif(ret.equals("miss")){ request.setAttribute("error","注冊失??!"); returnmapping.findForward("error"); }else{ request.setAttribute("ret",ret); returnmapping.findForward("studentAdd"); } }//修改考生信息時查詢 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)考證號不存在!"); returnmapping.findForward("error"); }else{ returnmapping.findForward("seekPwd1"); } }// 找回密碼(第二步) privateActionForwardseekPwd2(ActionMappingmapping,ActionFor

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論