模拟驾校考试系统(论文范文,JSP,JAVA,毕业设计)_第1页
模拟驾校考试系统(论文范文,JSP,JAVA,毕业设计)_第2页
模拟驾校考试系统(论文范文,JSP,JAVA,毕业设计)_第3页
模拟驾校考试系统(论文范文,JSP,JAVA,毕业设计)_第4页
模拟驾校考试系统(论文范文,JSP,JAVA,毕业设计)_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

trafficregulationstrafficregulationstrafficregulationstrafficregulations DriverManager.getConnection()方法获得数据库连接池。其中DriverManager.getConnection()的三个参数为别代表数据库名称,数据库用户名,数据库密码,将这三个参数传入就可以通过conn变量操作数据库了。具体代码如下:publicclassConnDB{ publicConnectionconn=null;//声明Connection对象的实例 publicStatementstmt=null;//声明Statement对象的实例 publicResultSetrs=null;//声明ResultSet对象的实例 privatestaticStringpropFileName="/com/connDB.properties"; privatestaticPropertiesprop=newProperties(); privatestaticStringdbClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver";//定义保存数据库驱动的变量 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()获得数据库链接失败.\r\n\r\n链接类型:"+dbClassName+"\r\n链接位置:"+dbUrl+"\r\n用户/密码"+dbUser+"/"+dbPwd); } returnconn; }}newid()数据库方法;该方法配合topn*将从select语句自定的查找范围中随机查找出n条记录,完整的sql语句为"SELECTtop4*FROMtb_questionsAWHEREtaoTiIdin(SELECTtaoTiIdFROMtb_questionsWHEREA.id=id)orderbynewid()",返回记录后将结果保留到名为questionsList的List中,供模拟考试页面调用。具体代码如下: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;}//计算剩余时间 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("刚开始考试时保存考试结果的SQL语句:"+sql); intret=conn.executeUpdate(sql); returnret;}//考试结束后保存考试结果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)中的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。在G.J.Myers的经典著作《软件测试技巧》中,给出了测试的定义:"程序测试是为了发现错误而执行程序的过程"。测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。在软件开发过程中,分析、设计与编码等工作都是建设性的,惟独测试是带有"破坏性",测试可视为分析、设计和编码3个阶段的"最终复审",在软件质量保证中具有重要地位。为了确保软件的质量,较理想的做法应该是对软件的开发过程,按软件工程各阶段形成的结果,分别进行严格的审查。当设计工作完成以后,就应该着手测试的准备工作了,一般来讲,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。软件测试主要分为白盒测试和黑盒测试。白盒测试也称结构测试或逻辑驱动测试,这种测试将测试对象看作一个透明的盒子,测试人员根据程序内部的逻辑结构及有关信息设计测试用例,检验程序中所有逻辑路径是否都能按预定要求正确工作。黑盒测试也称行为测试,这种方法把测试对象看作一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能需求。(1)页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。可以通过Dreamweaver命令工具进行链接检查。(2)相关性检查:增加/删除一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。(3)检查按钮的功能是否正确:如修改、保存、取消、返回等按钮功能是否正确。(4)检查带出信息的完整性:在查看信息和更新信息时,查看所填写的信息是不是全部带出,带出信息和添加的是否一致。(5)信息重复:在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否做出正确处理。(6)检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,选择“删除”,看系统如何处理,是否会出错;然后选择一个和多个信息进行删除,看是否正确处理。(7)检查添加和修改是否一致:检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型。(8)检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理、报错。同时,也要注意会不会报和自己重名的错。(9)检查多次使用返回键的情况:在有返回键的地方,返回到原来页面,再返回,重复多次,看会否出错。(10)必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*。测试中根据程序中各个类中的各个方法分别设计用例并进行测试,例如将一个数据保存入数据库时,将编写满足正确保存条件的测试用例和各种不正确的保存条件的测试用例,进而测试系统是否能正确识别该执行保存的和不该执行保存并给出出错信息的情况。若不能正确执行则需对程序进行纠错和修改。部分相关代码将在附录中给出。(1)页面链接检查:通过Dreamweaver命令工具进行链接检查,处理了断掉的不正确的链接;再次运行网站程序,依次点击链接,链接全部正确。(2)相关性检查:添加/删除相关信息后,相关页面能正常显示。(3)检查按钮的功能:按钮的功能正常。(4)检查带出信息的完整性:查看信息和更新信息时,所填写的信息全部带出,带出信息和添加的信息一致,正确显示。测试过程中,某些操作产生了一些异常(Exception),大部分已经解决。系统中异常处理并未很完善是导致这些异常没有友好提示和解决的主要原因。[5]郑阿奇,刘启芬,顾韵华.SQLServer教程[M].北京:清华大学出版社,2005.8.[6]栗菊民.JavaWeb应用程序设计[M].北京:机械工业出版社,2007.9.[7]陈天河等.Struts,Hibernate,Spring集成开发宝典[M].北京:电子工业出版社,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"); //转到显示错误信息的页面 } }//考生身份验证 publicActionForwardstudentLogin(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ StudentFormstudentForm=(StudentForm)form; intret=studentDAO.checkStudent(studentForm); System.out.print("验证结果ret的值:"+ret); if(ret==2){ request.setAttribute("error","您输入的考生准考证号码或密码错误!"); 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","您已经注册,直接登录即可!"); 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","您输入的准考证号不存在!"); returnmapping.findForward("error"); }else{ returnmapping.findForward("seekPwd1"); } }// 找回密码(第二步) privateActionForwardseekPwd2(ActionMappingmapping,ActionFor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论