毕业论文-基于JavaWeb的在线考试系统的设计与实现_第1页
毕业论文-基于JavaWeb的在线考试系统的设计与实现_第2页
毕业论文-基于JavaWeb的在线考试系统的设计与实现_第3页
毕业论文-基于JavaWeb的在线考试系统的设计与实现_第4页
毕业论文-基于JavaWeb的在线考试系统的设计与实现_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

PAGE\*ROMANPAGE\*ROMANII摘要摘 要在线考试特别是基于Web本次毕业设计的题目是在线模拟考试系统的设计与实现,系统采用浏览器/服务器模式开发,包括登录注册、在线考试、试卷设置、试题管理、分数的统计以及成绩查询等功能。系统运行在Windows7操作系统上,以Tomcat作为Web服务器,使用JSP技术和MySQL数据库实现。论文首先对在线考试系统做了需求分析,然后给出系统的设计与实现过程,最后,针对系统的各个功能进行了测试。关键词:在线考试;浏览器/服务器;JSP;MySQL;JDBC;AbstractAbstractWiththedevelopmentofnetworkingtechnology,onlineexaminationanddistanceeducationisanaspectintheapplicationofinternet.Inrecentyearstheon-lineexaminationespecialofWeb-basedexaminationismoreandmorepopular.Thegraduationproject’ssubjectistodesignandrealizationoftheonlineexaminationsystem.Thesystemusesthebrowser/servertodevelop.Itincludeslogin,newuserregistration,on-lineexamination,examinationpaperset,examinationpapermanagement,scorestatistics,queryresultsandotherfunctional.ThesystemtakestheWindows7astheOS,TomcatasthewebServer,usesJSPtechnologyandMySQLastheDatabaseServerdevelopmenttoolstorealizethesystem.Inthispaper,therequirementanalysisabouttheonlineexaminationsystemisintroduced,andthengivethesystemdesignandimplementation.Finally,allofthefunctionsofthesystemistested.Keywords: On-lineExamination;Browse/Server;JSP;MySQL;JDBC;目录目录PAGE\*ROMANPAGE\*ROMANIV目录摘 要(中文) I(英文) II第一章系统概述 1系统开发背景 1系统开发意义 1系统开发工具 1第二章系统分析 5现状分析 5可行性分析 5设计目标 6功能要求 6系统开发环境配置 7第三章系统设计 9数据库设计 9系统结构设计 11用户界面设计 12第四章系统实现 15数据库连接的实现方法 15登陆注册模块 16考生模块 18教师模块 23管理员模块 31第五章系统测试 33什么是软件测试 33软件测试的目标与方法 33测试内容 33系统的不足和展望 34结束语 35参考文献 36JavaWebJavaWebPAGEPAGE10第一章系统概述系统开发背景这是一个繁杂的过程,需要大量人力、;现在远程教育类学校的增多,虽然利用了网传统的考试方式已经不能适应现在新兴Internet无国界的特点,在互联网上在线考试。在线考试系统可以减轻教师的工作负担、提高工作效率,也减少了因考试而消耗不必要的人力和物力。在线考试的题目由计算机从题库中随机抽取,提高了考试的质量,考试的评判由计算机自动完成,这样使考试更趋于公证、客观。随着社会的发展和我国互联网的普及,我们的生活中的已经有很多方面都运用到了网络,比如网上购物,网上交友等,甚至现在很多人看新闻都是通过网络阅读的,在阅读新闻这个事件上,已经不仅仅局限于纸质化的报纸上了;而要把考试趋于无纸化的模式,需要在线模拟考试系统来完成,这个也是现在高等教育发展的一个需求。在国内,试题库系统理论与技术的研究在最近几年取得了很大的进步。我国许多企业和高校都投入量大量的人力物力到各门课程的试题库中,并取得了一定的成就。现在的生活中已经有越来越这些已经充分说明,在线考试系统是今后我们的考试生涯中的一个发展趋势。系统开发意义考试是教育中一个非常重要的环节,但在以前的很长时间里,全球所有的国家都是以笔试的方式来检查焦距教学成果的,随着网络的发展,互联网已经普及的非常广泛,随着这些周围环境的改变,人们开始去寻找新的方式来去达到更客观,更方便快捷的去达到考试的目的。近些年来,在国外,已经投入使用的考试系统有著名的TOEFL,GRE网上考试系统,还有微软、思科等大公司的国际认证考试等,这些考试系统在全球范围内有众多的使用者。网络化考试系统对节约考试成本,实现远距离的同步考试,提高考试效率,确保考试结果的公平、公正、科学、及时等具有重要的意义,不仅可以动态地管理考试信息,而且还提高了教学的灵活性,相信随着技术的不断发展和网络覆盖面的不断扩大,在不断完善该考试系统的同时也会在更大的范围上应用。系统开发工具本系统是基于Tomcat为服务器,JSP+MySQL数据库技术实现的一个简单的在线考试系统,以下对JSP技术、MySQL数据库和TomCat作简要的介绍。动态网页开发技术—JSP(JavaServerPage)JSP(JavaServerPagesSunMicrosystemsJSPASPHTMLJava程序段和JSP标记,从而形成JSPJSPWebLinux操作系统上运行。JSPJavaXMLtagsscriptlets,来封装产生动态网页的处理逻辑。网页还能通过tagsscriptletsJSPWebWebJSPJSPHTMLJavaJSPJavaservlet是一个HTMLJSP页面由HTMLJavaJavaservletJSP大型的WebJavaservletJSPJSPJavaJSPJavaPHPASP/PHP强大的可伸缩性。从只有一个小的Jar文件就可以运行servlet/JSP群和负载均衡,到多台Application显示了一个巨大的生命力。多样化和功能强大的开发工具支持。这一点与ASPJava工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。JSP与ASPJava度的伸缩能力,所以极大的增加了产品的复杂性。Javaclass.java文件和.class数据库—MySQLMySQLMySQLAB2008116SunMySQLInternet体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQLGoogleMySQLMySQLSQL,MySQLMySQL1、可移植性使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。2、可扩展性和灵活性MySQLUNIX、Linux和SUNOSWindowsMySQL3、强大的数据保护功能MySQLSSHSSI接。MySQL4、支持大型的数据库虽然对于用PHP编写的网页来说,只要能够存放数百条以上的记录数据就是够了,但MySQL可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库,MySQL可以针对不同的应用进行相应的修改。5、超强的稳定性MySQLCMySQLCPU。6、强大的查询功能MySQLselect和where不同数据库的表,从而使得查询变得快捷、方便。Tomcat介绍Tomcat服务器是一个免费的开放源代码的Web应用服务器,是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、SunSun的参Servlet和JSPTomcat5Servlet2.4和JSP2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。自从JSPJSPApacheGroupGNUJSP1.0始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet,这样TomcatTomcatjakartaJavaWorld杂志的编辑选javasunservlet和jspTomcat也是完全免费的软件,任何人都可以从互联网上自由地下载。第二章系统分析现状分析传统的考试方式是教师提前命题、印刷试卷、组织学生考试、学生在统一时间和地点考试、收卷后教师阅卷、成绩统计。如图2.1教师提前命题教师提前命题印刷试卷组织学生考试成绩统计成绩统计教师阅卷学生统一考试图2.1传统考试模式这种模式存在有较多的问题:命题:由于是同意的时间进行考试,所以考生的试卷都是一样的,这样对教师命题带来的很大还要担心试题是否被泄漏的等问题(现在已经有类似问题的出现,才会有现在说的花卷。印刷试卷:组织考试,印刷试卷费工费时,成本高,而且对于纸张资源也是一种浪费,而且印刷的时候,也会担心试题被泄漏的问题。组织学生考试:监考人资源的浪费,和教师资源的匮乏,如何调配也是一个难题,如果是全国统一考试,还要涉及不同区域同时考试的问题。学生统一考试:由于是同一时间,同一地点,同一张试题,考生作弊问题便会出现,而且是非常难解决的问题,再加上每个监考员监考的严格程度不同,这些人为因素难控制,使考试难公平,公正。教师阅卷:教师阅卷比较容易出错,会造成人为的不公正性。成绩统计:当成绩录入时,数字的混乱会导致录入者输入错误或者看错。可行性分析可行性分析也称为可行性研究,即是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、管理的方面进行分析和研究,以避免投资失误,保证新该系统的可行性分析包括以下几个方面的内容。经济可行性在线考试必然会在今后的教学管理上成为主要的考试形式。开发一套能满足一般考试的需要,也可以让教师的工作量得以减少,有更多的时间去备课教学。本系统如果用在一些辅助教育类的网站上,那经济效果是很明显的;如果是用在学校的教学管理上,会得以发挥其潜在的经济效益,比如印刷试卷的费用等。因此,本系统在经济上是可行的。技术可行性技术上的可行性分析主要分析技术条件是否能顺利完成开发工作,硬、软件能否满足开发者的需要等。硬件方面,硬件的更新速度之快,可靠性越来越高,目前一般的硬件平台均能满足次系统的需要。WebMySQL存储大量的数据,MySQL因此,系统的软件开发平台已经成熟可行。设计目标在线考试系统的总体目标:试卷,查询成绩。考试数据的存放和处理过程必须保密,需要一定的安全性保障若考生需要查卷,经审核方可以。次考试对每一个考生是公平的,随机性可以避免作弊的发生。学生类用户不允许对试题进行更新。实现现代考试网络化。功能要求系统具备的基本功能:用户登录及注册-对用户进行识别、验证;没有注册的用户跳转到用户注册页面;考试成绩。目,也可以对现在有的题目进行修改或者删除处理。库中的题目难以水平,并可以在以后的维护中做出适当调整。增加操作。统的登录密码。管理员教师管理考生管理登录教师考生注册管理员教师管理考生管理登录教师考生注册试题维护在线考试试卷设置历史成绩历史成绩管理修改密码图2.2在线考试系统的UseCase图系统开发环境配置操作系统:Windows7内存:4GCPU:2.00GHZJavaJDK5.0WebTomcat6.0数据库服务器:MySQLMyEclipse6.0第三章系统设计数据库设计在对网上考试系统数据库部分进行设计的过程中,通过对系统功能进行需求分析得到系统的基本信息表,详细设计过程如下介绍。数据库需求分析需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。对于本系统而言,系统的角色分为管理员、教师、学生,这需要3个表,而考生考试,需要一个存放题库的表,考试的类别不同,也需要一个存放类别的表,考生考试完毕后,需要一个存放考试成绩的表。综合以上分析,要实现上面的所有功能模块,数据库共要设计六个表,它们分别是:试卷类别表、用户表、用户成绩表、教师表、管理员表、题库表。数据库表设计用户信息表,用来存放考生信息,如表3-1所示:表3-1用户信息表字段名类型长度是否为主键可否为空说明user_idint11是否用户的idusernamevarchar20否否登录用户名passwordvarchar20否否用户登录密码realnamevarchar20否否用户真实姓名教师信息表,存放教师信息,如表3-2所示:表3-2教师信息表字段名类型长度是否为主键可否为空说明teacher_idint11是否教师的idteachernamevarchar20否否教师登录名passwordvarchar20否否教师登录密码realnamevarchar20否否教师真实姓名管理员信息表,存放管理员信息,如表3-3所示:表3-3管理员信息表字段名类型长度是否为主键可否为空说明adusernamevarchar20是否管理员登录名passwordvarchar20否否管理员登录密码realnamevarchar20否否管理员真实姓名题库信息表,存放考试题目以及答案等信息,如表3-4所示:表3-4题库信息表字段名类型长度是否为主键可否为说明question_idint10是空否试题编号category_idint10否否试题分类编号subjectvarchar300否否题目choice_avarchar100否否选项Achoice_bvarchar100否否选项Bchoice_cvarchar100否否选项Cchoice_dvarchar100否否选项Danswerchar10否否正确答案成绩表,存放考生考试时间以及成绩等信息,如表3-5所示表3-5成绩表字段名类型长度是否为主键可否为空说明record_idint10是否考试记录编号usernamevarchar20否否考试用户名category_idchar10否否试题分类编号test_timechar14否否考试时间test_resultint11否否考试成绩试卷类别表,存放试卷类别信息,包括试卷分类名称、试卷题目等,如表3-6所示表3-6试卷类别表字段名类型长度是否为主键可否为空说明category_idint11是否试题分类编号category_namevarchar20否否试题分类名称question_numberint10否否试题数目JavaWeb应用开发——在线模拟考试系统的设计与实现数据库逻辑结构设计关系图本系统各表之间的关系如下图3-1示:图3-1关系图完整性设计完整性要求用于描述各种信息之间的制约关系以及关联关系,各个数据项的取值范围以及各个数据项是否可以取值。根据实际需要,采取一定的手段来满足用户的完整性需求。域完整性约束要求属性值必须在域中。实体完整性约束要求主键必须唯一且不能为空。如用户信息表中的用户名设置为主键,并且要求唯一且不能为空。系统结构设计网上考试系统是一个典型的数据库应用程序,主要有管理员、教师和学生三大模块组成,各模块功能如下:24功登录该系统后,能够进行修改个人信息,添加、修改、删除试题、试卷类别操作,也可对考生的成绩进行统计。3统后,能够进行考试、查询成绩、修改密码。系统功能结构如图3-2所示:11JavaWebJavaWebPAGEPAGE16历修试试历修考教史改题卷史改生师成密维设成密管管绩码护置绩码理理系统功能学生模块系统功能学生模块教师模块管理员模块开始考试用户界面设计页面上部采用一个Logo模块的链接按钮,右边是页面的主要操作区域,不同页面的不同显示主要在此体现。学生角色的模版页面如图3-3所示:在线考试系统在线考试系统Logo帮助退出登录欢迎您!XXX开始考试图3-3学生角色模版每个模块都包含多个页面,再次挑选几个比较低型或者重要的页面进行详细描述。其他的页面结构比较类似或者比较简单,不一一详述。学生开始考试的时候,首先需要选择试卷类型,或者也可以叫做试题分类。在此页面中采用下拉列表框的形式进行,如图3-4所示:在线考试系统在线考试系统Logo。。。帮助退出登录欢迎您!XXX请选择试题的分类:开始考试会计基础确定历史成绩修改密码图3-4试题分类选择页面草图选择试题分类以后,即是学生答题页面。答题页面的主体应该是试题和试题的选项。考虑到本系统需要在题目结束以后立即知道考试结果,所以决定采用所有试题的形式都是ABCD页面应该针对这些题目选项设置单选按钮。几道题,使得考生可以把握整个考试进度。同时考虑到考生在时间允许的情况下,需要在题目间前后迁移,所以在题目的下方,还应该有前后翻页的按钮。对应教师角色的模版略有不同,模块多了几个,而且页面顶端的标识也有所区别。对应的模版页面如图3-5所示。在线考试系统(管理界面)在线考试系统(管理界面)Logo图片。。。。帮助退出登录欢迎您!XXX试题维护修改密码3-11教师角色模版页面图3-5管理员角色模版页面第四章系统实现3包括:考试模块,修改密码,成绩查询模块。教师的功能包括:试卷类别管理、试题管理、修改密码、成绩管理。管理员的功能包括:教师管理和考生管理。数据库连接的实现方法从系统功能模块划分中可以看出,各模块虽然是独立的,但又统一于同一数据库中,便于管理员管理维护数据库,同时也便于教师和学生的操作。在介绍系统各模块的实现方法之前,首先介绍系统与MySQL数据库的连接方法,再介绍系统主要部分的实现方法。创建与数据库的连接:①:首先要将mysql的驱动包放在tomcat/lib目录下;②:利用语句进行对数据库的操作,以下仅是对用户表查询的语句:<%@pagecontentType="text/html;charset=gb2312"%><%@pagelanguage="java"import="java.sql.*"%><%//Connectionconn=null;Statementstmt=null;ResultSetrs=null;try{//载入MySQL的JDBC驱动类Class.forName("com.mysql.jdbc.Driver");//获得数据库连接StringsConn="jdbc:mysql://localhost/Myexam?user=root&password=890427";conn=DriverManager.getConnection(sConn);//创建Statement对象stmt=conn.createStatement();//执行SQL语句Stringquery="select*fromuser";rs=stmt.executeQuery(query);%>catch(Exceptione){//获得数据库连接出错System.out.println("erroroccured!!");}finally{//释放数据库连接rs.close();stmt.close();conn.close();}%>登陆注册模块登录模块用户登录页面比较简单,为防止用户登录的操作错误,应设置错误处理页面,在登录操作过程中,一般发生的错误有:用户输入了错误的用户名或密码、用户直接单击了登录按钮,对上述情况的判断就要通过Servletjavascript验证输入不为空的脚本代码<scripttype="text/javascript">定义了一个名为checkForm的查询表单函数functioncheckForm(form){、如果value为空,会提示帐号不能为空if(form.teachername.value==""){alert("账号不能为空");让forteachernam控件获得焦点(光标form.teachername.focus();returnfalse;}if(form.password.value==""){alert(}returnture;}</script>在登录页面时,当用户提交了登录资料后,就由“loginvc.jsp”这个页面进行验证,它的工作JavaWeb应用开发——在线模拟考试系统的设计与实现主要是连接到数据库,从数据中找出输入的用户名和密码并判断其是否一致。如果用户输入了错误的用户名和密码,就会跳出一个登录失败的页面。JSPresponse.sendRedirect()跳转到相应的主界面。教师以及管理员的登录验证跟考生相似,只是查询条件和连接的数据库表不同,以及登陆成功之后,跳转的页面不同。考生注册模块在此模块,考生需要填写用户名、密码、确认密码、真实姓名。如若填写中缺少一项,那么会javascript4-1图4-1注册提示页面当用户填写的内容完全符合注册标准后,点击注册按钮,会转到注册成功的页面;如若用户名已经被注册,会转到注册失败页面,提醒注册用户可能是该用户名已经注册。在此只以注册成功的页面为例,如图4-2所示:图4-2注册成功页面17JavaWeb应用开发——在线模拟考试系统的设计与实现完成注册模块的主要代码如下所示:首先获取上个页面传过来的数据,用户名、密码、真实姓名Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");Stringrealname=request.getParameter("realname");out.println(username);//username其次开始连接数据库try{Class.forName("com.mysql.jdbc.Driver").newInstance();Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/myexam?user=root&password=890427&useUnicode=true&characterEncoding=gbk");Statementstmt=conn.createStatement();ResultSetrs=null;查询user表,看用户名是否存在Stringsql="select*fromuserwhereusernamelike rs=stmt.executeQuery(sql);如果存在,提示“您好,您注册的用户名已经存在,请重新输入”,如果不存在,把接收过来的值付给新的变量:Strings_username=request.getParameter("username");Strings_password=request.getParameter("password");Strings_realname=request.getParameter("realname");执行SQL插入语句,把得到的值插入到user表中sql="insertintouser(username,password,realname)value('"+username+"','"+password+"','"+realname+"')";如果插入成功,提示:“恭喜您注册成功!”考生模块考生登录系统并且用户名也密码正确后,会直接跳转到学生主页,本页面中,考生可以在左侧选择自己下一步要做的事情,有开始考试、历史成绩查询、修改密码。在页面中间,有提示语,告诉考生每个按钮都可以操作什么功能;若考生对考试流程不太熟悉,可以点击帮助,来查询相关问题的答案。如图4-3所示:18JavaWeb应用开发——在线模拟考试系统的设计与实现开始考试模块

图4-3考生主页考生点击开始考试,会首先弹出关于所选考试科目的一些介绍,比如考试时间和总共有多少道题目等,然后点击开始考试,倒计时开始,考生选择上一题,下一题进行答卷,当考生答到最大题成绩通过后台,插入到数据库中。如图4-4图4-4考生考试页面执行的具体代码如下所示:<%HttpSessionsess=(HttpSession)request.getSession(true);intcategory=(Integer)sess.getAttribute("category");Stringusername=request.getParameter("username");MysqlDjtDaomd=newMysqlDjtDao();//引进包19JavaWeb应用开发——在线模拟考试系统的设计与实现intvalid=md.selectTestRecordByuser(username,category);//去test_record表查询有无考试记录valid=0;//控制返回值,自己可以自由修改。if(valid==0){Calendarcl=Calendar.getInstance();//javautil包表提供的系统时间Calendarlongstarttime=cl.getTimeInMillis();//得到当前时间的毫秒数longendtime=starttime+1800000; sess.setMaxInactiveInterval(3600);设置session的存活时间 sess.setAttribute("username",username);sess.setAttribute("endtime",endtime);List<Integer>tmid=newArrayList<Integer>();//指定传入的类型 建立一个集合 备存放抽到的题目ID号tmid.add(0);//0sess.setAttribute("tmid",tmid);intfenshu=0;sess.setAttribute("fenshu",fenshu);List<Integer>ddcount=newArrayList<Integer>();sess.setAttribute("ddcount",ddcount);List<Question>allwts=newArrayList<Question>();//建立问question对应的实类 来存放查到的题目信息List<Integer>listsId=md.selectQInfoCount(category);//某个科有多少个问题intqnum=md.selectQNum(category);//共需要几个问题sess.setAttribute("qnum",qnum);Randomrand=newRandom();//Java提供的得到数字的类for(inta=0;a<qnum;a++){//开始抽题inthao=rand.nextInt(listsId.size()-1);//取一个随机数,不超过题目的总数rand.nextInt()取一个随机数for(Integervd:tmid去掉重复的题 泛型循环 if(vd==hao){hao=rand.nextInt(listsId.size()-1);//如果重复再重新抽,即重新生成一个随机数}}intbcid=listsId.get(hao);//根据抽到的数得到该题目的Id号Questionqs=md.selectQInfoByid(bcid);//根据Id号查询题目的信息allwts.add(qs);//把查到的题目的信息插入到allwts集合中tmid.add(hao);//把已经用过的随机数放入集合,防止重复抽题}sess.setAttribute("allwts",allwts);%><jsp:forwardpage="questionEnter.jsp"/><%}else{request.setAttribute("errorInfo","已经答过题了,不能重复答题!");20JavaWeb应用开发——在线模拟考试系统的设计与实现%><jsp:forwardpage="endQDG.jsp"/><%}%>历史成绩模块然后点击确认,会从数据库中提取出考生的成绩,然后在表格中显示。点击左下角的返回按钮,回到考试科目选择页面,继续查询其他科目成绩,如图4-5图4-5考生成绩查询页面成绩查询页面主要代码如下所示:接收上个页面传过来的值Stringcategory=request.getParameter("category");String[]result=null;intcount=0;开始连接数据库Class.forName("com.mysql.jdbc.Driver").newInstance();Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost/Myexam?user=root&password=890427&useUnicode=true&characterEncoding=gbk");21JavaWeb应用开发——在线模拟考试系统的设计与实现Statementstmt=conn.createStatement();数据库结果集的数据表ResultSetrs=null;ResultSetrr=null;执行sql语句,查询test_record表中是否有与接收的值相同项Stringsqlcount="selectcount(*)fromtest_recordwhere(category_id='"+category+"'andusername='"+s+"')";rr=stmt.executeQuery(sqlcount);if(rr.next()){将rr.getString字符类型数据转换为Integer整型数据count=Integer.parseInt(rr.getString(1));}定义一个新的字符串数组result=newString[count];执行sql语句,查询test_record表Stringsql="select*fromtest_recordwhere(category_id='"+category+"'andusername='"+s+"')";执行刚建立的SQL语句,并把结果返回到结果集对象中rs=stmt.executeQuery(sql);inti=0;把结果集数据表中的数据附到数组中while(rs.next()){result[i++]=rs.getString(1)+":"+rs.getString(2)+":"+rs.getString(3)+":"+rs.getString(4)+":"+rs.getString(5);循环输出所有项<%for(intk=0;k<result.length;k++){%>查询category表,显示出科目名称<%Stringsql2"selectcategory_namefromcategorywherecategory_id='"+category+"'";SQL语句,并把结果返回到结果集对象中rs=stmt.executeQuery(sql2);Stringrs1=null;if(rs.next()){rs1=rs.getString(1);打印出结果out.println(rs1);22JavaWeb应用开发——在线模拟考试系统的设计与实现}%><tdwidth=80><%out.println(rs1);%></td><tdwidth=400>取出表的第4列并显示出来<%=result[k].split(":")[3]%></td><tdwidth=100>取出表的第5列并显示出来<%=result[k].split(":")[4]%>4.3.2修改密码模块考生可以通过修改密码模块,来修改自己登录本考试系统的登录密码。在修改页面中,需要填写原密码、新密码和确认新密码。当考生忽略其中一项没有填写或者输入的新密码和确认密码不一致,会有提示信息,某项不能为空或密码不一致;当考生都输入完毕后,点击修改按钮,系统通过后台,连接数据库来确认考生输入的原密码和用户名是否匹配,如果匹配,那么更新数据库,把原密码替换掉,然后转到修改密码成功页面;若不匹配,则直接转到修改密码失败页面,修改密码页面如图4-6所示:图4-6考生修改密码页面教师模块教师登录系统后,若用户名和密码正确,直接跳转到教师首页,在此页面,教师可以选择试题维护、试卷设置、历史成绩、修改密码;根据页面中间的操作提示,可以知道每个选项都可以进行什么操作。如试题维护可以对试题进行添加、修改、删除操作。如下图4-7所示:23JavaWeb应用开发——在线模拟考试系统的设计与实现图4-7教师主页试题维护模块页面会显示您选择的类别下的所有题目,在该页面下,教师可以进行对试题的修改,删除和添加操作,当点击不同的操作,会跳转到不同的页面中,下面是教师对题目进行增、删、改的具体界面以4-8图4-8试题列表页面教师对题目的修改页面24JavaWeb的操作,如点击进入教师主页或点击进入试题列表页面。如图4-9图4-9教师修改试题页面修改试题操作主要代码:Stringquestion_id=request.getParameter("question_id");通过session把question_id传到下个页面session.setAttribute("question_id",question_id);接收传过来的值并付值给新的变量Stringcategory=request.getParameter("category");String[]result=null;intcount=0;开始连接数据库Class.forName("com.mysql.jdbc.Driver").newInstance();加载JDBC驱动程序Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost/Myexam?user=root&password=890427");Statementstmt=conn.createStatement();结果集初始化为空ResultSetrs=null;ResultSetrr=null;执行sql语句,查询question表Stringsqlcount="selectcount(*)fromquestionwherequestion_id='"+question_id+"'";25JavaWeb应用开发——在线模拟考试系统的设计与实现rr=stmt.executeQuery(sqlcount);if(rr.next()){count=Integer.parseInt(rr.getString(1));}建立一个新的字符串数组result=newString[count];执行sql查询语句Stringsql="select*fromquestionwherequestion_id='"+question_id+"'";rs=stmt.executeQuery(sql);inti=0;把结果集数据表中的数据附到数组中while(rs.next()){result[i++]=rs.getString(1)+":"+rs.getString(2)+":"+rs.getString(3)+":"+rs.getString(4)+":"+rs.getString(5)+":"+rs.getString(6)+":"+rs.getString(7)+":"+rs.getString(8)+":"+rs.getString(9);}验证页面接收上个页面传来的值Strings=(String)session.getAttribute("question_id");Stringcategory_name=request.getParameter("category_name");Stringchoice_a=request.getParameter("choice_a");Stringchoice_b=request.getParameter("choice_b");Stringchoice_c=request.getParameter("choice_c");Stringchoice_d=request.getParameter("choice_d");Stringanswer=request.getParameter("answer");开始连接数据库try{Class.forName("com.mysql.jdbc.Driver").newInstance();Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/myexam?user=root&password=890427&useUnicode=true&characterEncoding=gb2312");Statementstmt=conn.createStatement();ResultSetrs=null;执行sql更新语句Stringsql="updatequestionsetchoice_a='"+choice_a+"',choice_b='"+choice_b+"',choice_c='"+choice_c+"',choice_d='"+choice_d+"',subject='"+subject+"',answer='"+answer+"'wherequestion_id='"+s+"'";26JavaWeb应用开发——在线模拟考试系统的设计与实现如果修改成功,会提示:“修改试题成功!”教师对题目的删除操作库,删除选中的项,当删除成功后,会直接跳转到成功页面。以下是删除的sqlStringsql="deletefromquestionwherequestion_id='"+question_id+"'";教师对题目的添加操作4-10图4-10教师添加试题页面执行添加试题的主要代码如下:接收上个页面传过来的值Stringcategory_id=request.getParameter("category");Stringsubject=request.getParameter("subject");Stringchoice_a=request.getParameter("choice_a");Stringchoice_b=request.getParameter("choice_b");Stringchoice_c=request.getParameter("choice_c");Stringchoice_d=request.getParameter("choice_d");Stringanswer=request.getParameter("answer");开始连接数据库try{Class.forName("com.mysql.jdbc.Driver").newInstance();27JavaWeb应用开发——在线模拟考试系统的设计与实现加载JDBC驱动程序Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/myexam?user=root&password=890427&useUnicode=true&characterEncoding=gb2312");Statementstmt=conn.createStatement();ResultSetrs=null;执行查询sql语句,验证在该类别下该题目是否存在Stringsql="select*fromquestionwherecategory_idlike'"+category_id+"'andsubjectlike'"+subject+"'";rs=stmt.executeQuery(sql);如果存在,提示:“您好,该题目已经存在,请确定后再次加入试题!”,如果表中不存在,那么执行插入SQL语句sql="insertintoquestion(category_id,subject,choice_a,choice_b,choice_c,choice_d,level,answer)values('"+category_id+"','"+subject+"','"+choice_a+"','"+choice_b+"','"+choice_c+"','"+choice_d+"','"+level+"','"+answer+"')";inttemp=stmt.executeUpdate(sql);插入成功后,提示:“恭喜您添加试题成功!”4.4.3历史成绩模块所示:图4-11教师成绩统计页面28JavaWebJavaWebPAGEPAGE30执行成绩统计主要代码如下:接收上个页面传过来的值Stringas=request.getParameter("category");开始连接数据库Class.forName("com.mysql.jdbc.Driver").newInstance();加载JDBC驱动Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost/Myexam?user=root&password=890427");Statementstmt=conn.createStatement();结果集初始化为空ResultSetra=null;ResultSetrb=null;ResultSetrc=null;ResultSetrd=null;ResultSetre=null;ResultSetrs=null;执行查询语句统计小于60分的人数Stringsqlcount="selectcount(*)fromtest_recordwherecategory_id='"+as+"'test_result<'60'";ra=stmt.executeQuery(sqlcount);Stringresult=null;while(ra.next()){result=ra.getString(1);}执行查询语句并统计大于等于60分小于等于69分的人数Stringsqlcount1="selectcount(*)fromtest_recordwherecategory_id='"+as+"'ANDtest_result<='69'andtest_result>='60'";rb=stmt.executeQuery(sqlcount1);Stringresult1=null;while(rb.next()){result1=rb.getString(1);}执行查询语句并统计大于等于70分小于等于85分的人数Stringsqlcount2="selectcount(*)fromtest_recordwherecategory_id='"+as+"'ANDtest_result<='85'andtest_result>='70'";rc=stmt.executeQuery(sqlcount2);Stringresult2=null;while(rc.next()){result2=rc.getString(1);}执行查询语句并统计大于等于86分小于等于99分的人数Stringsqlcount3="selectcount(*)fromtest_recordwherecategory_id='"+as+"'ANDtest_result<='99'andtest_result>='86'";rd=stmt.executeQuery(sqlcount3);Stringresult3=null;while(rd.next()){result3=rd.getString(1);}执行查询语句并统计大于等于100分的人数Stringsqlcount4="selectcount(*)fromtest_recordwherecategory_id='"+as+"'ANDtest_result='100'";re=stmt.executeQuery(sqlcount4);Stringresult4=null;while(re.next()){result4=re.getString(1);}显示各成几段的人数

<tdwidth="204"bgcolor="#bbddee">60分以下</td><tdwidth="383"bgcolor="#bbddee"><%=result%></td></tr><tr><tdbgcolor="#bbddee">60~69分</td><tdbgcolor="#bbddee"><%=result1%></td></tr><tr><tdbgcolor="#bbddee">70~85分</td><tdbgcolor="#bbddee"><%=result2%></td></tr><tr><tdbgcolor="#bbddee">86~99分</td><tdbgcolor="#bbddee"><%=result3%></td></tr><tr>JavaWeb应用开发——在线模拟考试系统的设计与实现<tdbgcolor="#bbddee">100分</td><tdbgcolor="#bbddee"><%=result4%></td></tr>管理员模块管理员验证密码成功登录系统后,进入管理员首页如下图4-12所示:图4-12管理员主页管理员登录到管理员主页后,会看到有2个权限,一个为考生管理,另一个为教室管理。在页面中央,管理员可以看到相关操作的一些说明,对系统的操作有个初步的了解。考生管理管理员在该模块中,可以对已经注册过的考生进行删除操作,对还未注册的,可以直接添加该考生。如图4-13所示:31JavaWeb应用开发——在线模拟考试系统的设计与实现图4-13考生管理页面点击删除,会弹出提示框,点击确定按钮,后台连接数据库,从user表中删除该考生,执行代码与教师删除试题类似,只是连接数据库表不同。删除学生的sqlStringsql="deletefromuserwhereuser_id='"+user_id+"'"删除教师的sqlStringsql="deletefromteacherwhereteacher_id='"+teacher_id+"'";点击添加新用户按钮,会跳转到添加页面,在此页面中,需要管理员

温馨提示

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

评论

0/150

提交评论