基于bs架构的java考试系统的设计_第1页
基于bs架构的java考试系统的设计_第2页
基于bs架构的java考试系统的设计_第3页
基于bs架构的java考试系统的设计_第4页
基于bs架构的java考试系统的设计_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

1、泰 山 学 院本科毕业论文基于B/S架构的Java考试系统的设计DESIGN OF JAVA EXAMINATION SYSTEM BASED ON B/S STRUCTURE专 业 名 称 申请学士学位所属学科 指导教师姓名、职称 2012 年 5 月 1日摘 要近年来,随着因特网技术的发展,在线考试系统成为网络应用研究的热点之一,在线考试能很好地解决传统考试中存在的成本高、管理不方便等问题。Web开发语言的发展,也为在线考试系统提供一个可靠的技术支持。在线考试系统本身是一个很大的系统,完成一个真正可以使用的在线考试系统还需要更深入的研究和开发,本文主要是通过建立一个在线考试的原型系统,来讨

2、论如何实现考试系统中的管理考题、考卷、考试以及成绩的功能。本系统涉及到两类用户:教师和学生。教师负责出卷,考试负责考试。考试完成后,由系统评定学生成绩供教师和学生查看。本论文首先分析在线考试系统的优势,然后阐述如何运用Java技术实现基于B/S架构的在线考试系统,同时阐述Dojo这一开源JS框架在Java系统中的应用。关键词:考试系统,Java,Dojo,B/SABSTRACTIn recent years,with the development of the Internet,online examination has become one of the hotspot for the

3、network application.Online examinations solve many problems that existed in traditional exams, such as high costs and inconvenience in management. The development in web language also provides some reliable techical support for online examination systems.Online examination system itself is a great s

4、ystem. The completion of an online examination system which is truely useful needs in-depth research and explorement.This paper mainly discusses the question of how to achieve the function of managing examination tests, examination papers and examinations in the examination system by establishing an

5、 online examination of the prototype system. This system involves two categories of users: teachers and students. Teachers are responsible for the examination papers, and students are responsible for the examination. After the examination completed, the system can evanulate the result of students

6、9; examinations, and it is convenient for both teachers and students to check the results.This paper firstly analizes the advantage of the system of online exam, and then states how to used java technologies to develop system of online exam on the basis of the B/S frame. At the same time, it introdu

7、ces the application of Dojo, the open source JS frame in a Java application system.Key words: Examination System,Java,Dojo,B/S目 录1 引言12 在线考试系统的优势13 考试系统的分析和设计23.1 相关技术介绍23.2设计思想33.3运行环境43.4开发工具43.5业务构架43.6系统构架53.7实体对象分析63.8数据库设计分析84 考试系统的具体实现104.1 Dojo工具包的引入104.2系统各模块具体实现12数据库连接模块12登录模块14教师模块18学生模块2

8、85 结束语31参考文献32致 谢33INDEX1 Introduction12 Advantage of Online Examnation System13 Online Examnation Analysis And Design23.1 Related Technology23.2 System Design Thought33.3 Runntime Environment43.4 Devlop Tools43.5 Operation Architecture43.6 System Architecture53.7 Entity-Relation Analysis63.8 Databa

9、se Design84 Examination System to Achieve the Specific104.1 Import Dojo Toolkit104.2 Implement of Every Module12 Database Connection Module12 Login Module14 Teachers Module18 Students Module285 Tag31References32Thanks331 引言网络的脚印早已遍布全球的每个角落,也渗入了人们生活的方方面面,在线缴费、在线业务办理早已不是陌生的东西,在互联网上,人们可以很方便的处理各种事务,网络的优

10、势不言而喻。同样,便捷的网络也为在线考试系统实施提供了良好的环境。在线考试作为网上远程教育的重要组成部分,己经在国外一些发达国家得到蓬勃发展,学生选学课程和考试都是通过网络来进行。在因特网普及的今天,构筑在线考试平台,从技术条件上己经很成熟。Sun公司的Java认证考试,思科公司的CCNA考试都是基于在线考试的。在国内,在线考试还未形成规模,更多的只是局限于在线报名和成绩查询。而在国外,网上提交作业和网上考试已经相当普及了。传统的考试方式已经不能适应现代考试的需要,在线考试成为一个必要。随着国内网络教育的兴起,国内也涌现部分优秀的考试平台系统,如科教2000在线考试平台,该系统适用于局域网和I

11、nternet,无需安装客户端,即可实现网上考试和作业、自动判分、成绩查询和结果分析等功能。该系统还可自动出卷并输出至Word文档中,可以同时满足传统考试的需要。目前,电脑阅卷在主观题的判定方面还存在一定的困难,所以本系统主要是基于客观题(选择题)的考试。2 在线考试系统的优势 目前在各类考试中,传统的考试方式还是占主流。传统考试是基于纸质试卷,一次考试基本是由以下几个过程组成:教师出卷、复印考卷、学生考试、教师阅卷、统计分析成绩。教师出卷后,需要复印考卷,这对于用电子试卷的在线考试来说,这根本不会存在的,电子试卷不仅保存方便,更节省纸质材料,为保护森林做贡献,同时也节省复印所需的油墨等耗材。

12、纸质试卷在分发过程也存在诸多不便,国家级的考试,试卷需要从中央分发到全国各地,中间难免消耗大量财力物力,也不能保证运送准时和安全,而电子试卷无需分发,各地只要登录某个网站就能直接开始考试。在考试环节,使用电子试卷可以随机抽取试卷给学生,相邻学生的试卷重复概率减少,减少舞弊现象。教师阅卷过程,这一环节相当辛苦,老师们要奋斗很多个夜晚,人工阅卷过程出现错误和主观判断也是难免的。使用电子试卷的话,情况大不一样了,阅卷这一艰难的任务就交给电脑了,电脑基本能在学生交卷后马上阅卷完毕,阅卷过程也相当准确,也不会出现主观判断的错误,减少阅卷过程出现的错误。统计分析成绩,这也是个相当累人的体力活,统计每一张试

13、卷,再用公式计算统计结果,效率低,成本高,也很容易出错,电子试卷统计相当快捷准确,能更好的反映考试结果,方便考生和教师查看考试结果。总的来说,在线考试与传统考试相比有这几个优点:节约成本,方便快捷,公正客观。3 在线考试系统的分析和设计3.1 相关技术介绍1、DojoDojo是基于JavaScript语言开发的Ajax开源开发包,2004年9月完成了第一个版本的Dojo代码,Dojo的目标是解决DHTML开发过程中长期困扰人们的问题(如:跨浏览器问题等),它是 Ajax 开发框架中的重量级产品,适合企业级应用。Dojo基金会得到了IBM、AOL、SUN这些大公司的支持,同时,WebWork、T

14、apestry、Open Laszlo等开源团队都是dojo基金会的成员,雄厚的后盾保证了Dojo可以持续地发展下去。2、JDBCJDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序。 3.2设计思想1、B/S结构开发思想基于浏览器和服务器的开发模式,逻辑上一般分三次:客户端层、服务端层、数据库层。

15、只需把应用安装在服务端,客户端通过操作系统自带的浏览器,访问服务端地址,就能访问服务端应用,再由服务端操作数据库,并将相应的信息返回给客户端。客户端无需安装其他软件,升级软件也只需升级服务端应用即可,节省成本,与C/S开发模式相比,具有相当的优势。2、面向对象设计思想面向对象设计思想主要是抽象出系统中的对象,围绕这对象定义的接口来组织程序。面向对象的模型在组织方式上有:抽象、封装、继承和多态的好处。在系统确定需求后,开始抽象系统所需要的类,本系统涉及的类主要有学生类、试题类、试卷类、考试类和成绩类等。3、代码分层思想在利用Java语言开发Web应用程序中,主要用到这三个技术:JSP、servl

16、et、Java Bean,JSP主要负责展现,将返回的结果返回给用户,并将用户的请求提交到服务器,JSP属于展现层,也就是View层。Servlet是中间层,负责把请求交给相应的Java Bean来处理,并将返回的结果交给JSP展现,属于控制层。Java Bean就属于模式层,主要处理servlet提交过来的请求。考虑到系统的大小,本系统中主要采用JSP和Java Bean层。3.3运行环境1、客户端环境:浏览器:Microsoft Internet Explorer 6.0或更高版本2、服务端环境:数据库:MySQL 5.0或更高版本服务器:Tomcat 或更高版本3.4开发工具Java文件

17、编辑工具:Eclipse 3.2Jsp 文件编辑工具:UltraEdit 14.03.5业务构架本系统构的业务构架图如图3-1所示。系统登录教师登录学生登陆试题管理增加试卷考生管理成绩查询试卷管理考试管理进入考试成绩管理修改密码删除试题增加试题增加考试增加考生删除试卷删除考生删除考试选择考试图3-1 业务框架系统有两个登录入口:教师登录和学生登录。教师作为系统的管理员,可以对试题、试卷、考试、考试进行增加、删除等操作,可以查询所有学生的成绩。学生可以进行考试、查询成绩、修改密码的操作。考试时可以选择不同的考试进行考试,查看成绩时只能查看到本人的成绩。3.6系统构架本系统构的系统构架图如图3-2

18、所示。客户端浏览器(教师和考生通过浏览器访问系统)服务端Servlet容器(Tomcat)控制器(Jsp或Servlet,包括教师登录页面、学生考试页面等)视图Jsp(展现返回的数据,如试卷内容、试卷列表、提示信息等)模型 (JavaBean,包括试题类、试卷类、考试类等)Web 数据库(MySQL数据库)模型 (JavaBean)(JavaBean,包括试题类、试卷类、考试类等)图3-2 系统框架首先由客户端浏览器发起请求,服务端的Servlet响应请求,将请求交予控制器,控制器再调用相应的模型,来访问Web数据库,模型取得数据后,再交由Jsp展现,服务器将Jsp的效果返回到发出请求的客户端

19、。3.7实体对象分析1、数据库连接对象图3-3 数据库连接对象类图作用:负责连接数据库,执行相应的增删改查操作。属性:无方法:getConn 获得连接close 关闭连接2、学生对象图3-4 学生对象类图属性:userName 用户名password 密码方法:Save 保存一条学生记录Delete 删除一条学生记录getStudents 获得所有学生列表checkPassword 修改密码时判断原始密码是否正确3、试题对象图3-5 试题对象类图属性:Context 题干A 选项a的内容B 选项b的内容C 选项c的内容D 选项d的内容Key 答案方法:Sava 保存一道试题Delete 删除一

20、道试题delAble 判断试题能否被删除getQuestions 获得所有试题列表getQuestionById 通过id来获得某道试题4、试卷对象图3-6 试卷对象类图属性:Name 试卷名称Questions 属于本试卷的试题列表QuestionIds 属于本试卷的试题Id列表方法:getPapers 获得所有的试卷列表save 保存一条试卷记录delete 删除一条试卷记录delAble 判断试卷能否被删除getPaperById 通过Id获得某试卷5、考试对象图3-7 考试对象类图属性:Name 考试名称paperIds 属于本考试的试卷Id列表papers 属于本考试的试卷对象列表方

21、法:Save 保存一条考试记录Delete 删除一条考试记录getQuestions 获得本考试的所有试题getExamById 通过Id获得一条考试记录6、成绩对象图3-8 成绩对象类图属性:studentId 学生IdexamId 考试Idmark 分数方法:Save 保存一条成绩记录getMarks 获得所有成绩记录getMarksByStudentId 通过学生Id获得学生的所有考试成绩3.8数据库设计分析1、教师表(teacher)表3-1 教师表字段名称数据类型说明是否为主键IdIntId是UsernameVarchar用户名NameVarchar教师姓名PasswordVarch

22、ar密码2、学生表(student)表3-2 学生表字段名称数据类型说明是否为主键IdIntId是UsernameVarchar用户名NameVarchar教师姓名PasswordVarchar密码3、试题表(question)表3-3 试题表字段名称数据类型说明是否为主键IdIntId是ContextVarchar试题题干内容AVarchar选项A内容BVarchar选项B内容CVarchar选项C内容DVarchar选项D内容KeyChar正确答案,所填的内容为a,b,c,d中的一个4、试卷表(paper)表3-4 试卷表字段名称数据类型说明是否为主键IdIntId是NameVarchar

23、试卷名称qestionIdsVarchar试题Id列表,以“,”隔开5、考试表(exam)表3-5 考试表字段名称数据类型说明是否为主键IdIntId是NameVarchar考试名称paperIdsVarchar试卷Id列表,以“,”隔开6、成绩表(mark)表3-6 成绩表字段名称数据类型说明是否为主键IdIntId是studentIdVarchar学生IdexamIdVarchar考试IdMarkFloat分数以上各表均是基于单表设计,各表之间没有通过外键等进行关联,各实体间相互独立,故不做E-R图的分析。4 在线考试系统的具体实现4.1 Dojo工具包的引入本系统使用Dojo最为前台组件

24、,要在系统中使用Dojo工具包,首先需要从Dojo的官网(/)下载该开发包。本系统选用的是Dojo 版本。在下载页面中能看到如图4-1所示信息:图4-1 Dojo下载页面每个文件名都有两个“-”号,第一个“-”之后的内容是版本号,第二个“-”之后的内容是这个开发包所包含的组建,具体对应关系如表4-1所示:表4-1 Dojo版本与组件对照表Dojo-ajax包含事件系统,I/O,用户界面Dojo-kitchen包含所有功能Dojo-event仅包含事件系统Dojo-minimal最小版本Dojo-widget包含widget版本开发的时候可以选择kitc

25、hen版本,它包含了dojo所有的功能,但是在发布的时候要选择合适的包,节省网络流量。如果发布用的是kitchen 版本,而客户端没安装Flash的话,客户端会一直出现正在加载页面,影响用户体验。本系统中是用的是Dojo-ajax,下载后解压到应用的根目录下,并将文件夹名称改成dojo。Dojo是在Jsp页面和html页面中引用的,引用方式如下所示:<script type="text/javascript">var djConfig = isDebug: false;</script><script type="text/javas

26、cript" src="dojo/dojo.js"></script><script language="JavaScript" type="text/javascript">dojo.require(“dojo.widget.Button”)dojo.require("dojo.widget.*");</script>其中 var djConfig = isDebug: false;作用是设置Dojo运行参数,这里设置不显示调试信息。<script typ

27、e="text/javascript" src="dojo/dojo.js"></script>“src” 所指向的就是Dojo核心代码dojo.js的路径,要使用Dojo工具包,必须把它引入页面。dojo.require(“dojo.widget.Button”)上一句的实际是将src / widget / Button.js 这个文件引入页面中,这样就可以在页面中使用Dojo的Button组件,该语句类似Java语言中的import语句。至于dojo.require("dojo.widget.*");实际上Doj

28、o会依照_package_.js 这个文件中定义的通配符代替的语句, 根据当时的环境而决定加载所需的模块。4.2系统各模块具体实现数据库连接模块本系统采用JDBC连接MySQL数据库,连接步骤如下:1. 得到数据库驱动程序MySQL的JDBC驱动程序名称是,通过Class.forName("com.mysql.jdbc.Driver");注册这个驱动程序。这样就能使用这个驱动来连接MySQL数据库。2. 创建数据库连接数据库连接是由DriverManager这个工厂类的getConnection方法获得的。getConnection方法在获得连接过程中,需要数据库连接字符串

29、、用户名和密码,MySQL数据库的连接字符串格式如下:jdbc:mysql:/dbip:port/databasename其中dpip是数据库所在主机的ip,如果在本机,可以填写localhost或port 是数据库的端口,MySQL默认端口是3306dabatasename 是所用的数据库实例名称3. 执行SQL语句得到数据库连接后,可以通过连接对象的createStatement方法来创建一个Statement对象,Statement是用于执行SQL语句的接口。有了Statement对象后,可以调用executeQuery或execute方法执行给定的SQL语句。4. 得到结果集State

30、ment执行executeQuery或execute方法后,返回一个Resultset对象,Resultset是用于指向结果集对象的接口,遍历该对象就能遍历结果集。5. 对结果集做相应的处理这一步骤主要是遍历结果集取出相应的记录,根据业务需要对这些记录进行展现等处理。6. 关闭结果集,关闭Statement,关闭连接当连接完成了,就要关闭相应的资源以释放内存,后打开的资源应该先关闭,所以关闭顺序为:结果集 > Statement > 数据库连接。使用JDBC连接MySQL数据库具体实现主要代码如下:Connection conn = null;Statement stmt = nu

31、ll;ResultSet rs = null;Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql:/localhost/lindent", "root", "");stmt = conn.createStatement();rs = stmt.executeQuery("Select * from student");while (rs.next() System.out.pr

32、intln(rs.getString("id");rs.close();stmt.close();conn.close();登录模块1、主要界面系统登录界面如图4-2所示。图4-2 登录界面登录模块的作用是根据用户选择的登录通道,相应展现输入用户名和密码的页面,再根据用户提供的用户名和密码到系统中验证用户身份是否合法,合法的话将根据用户身份转向相应的操作页面,不合法的话将跳转回登录页面,让用户重现登录。2、视图层设计和实现登录模块的主页面是Login.jsp。登录模块提供了两个登录通道:教师登录通道和学生登录通道。页面中隐藏着学生登录窗口和教师登录窗口,当点击页面中的学生登

33、录按钮,将展现学生登录页面,同时主页面将失去焦点。当取消登录时,焦点回到主页面,可以重现选择登录通道。由于一个页面中隐藏了两个登录通道,为了保证系统的友好性,需要在不同的登录通道中,加入了不同的提示。登录时,用户名和密码均是必填项,这就需要在用户确定登录时进行用户名和密码是否为空的验证,当用户名或密码为空时将给出相应的提示,并将光标移动到相应的位置,用户不用再手动定位到相应的位置,为用户完善登录信息提供方便。同时,这种验证是在客户端浏览器进行的,不涉及服务端,前台的这种初步验证减轻了系统后台和数据库的负担,从一定程度上提高了系统性能。登录通道的主要代码如下:<td><butt

34、on dojoType="button" onclick="sLogin()">学生登录</button></td><td><button dojoType="button" onclick="tLogin()">教师登录</button></td>点击不同的登录按钮,可以通过执行以下代码分别进入不同的登录通道:/显示学生登录页面function sLogin()dlg0.show();document.all("logTitl

35、e").innerHTML="<font color='#ff0000'>学生登录</font>"document.all("logrole").value="student"document.all("userName").value=""document.all("password").value=""/显示教师登录页面function tLogin()dlg0.show();document.all(

36、"logTitle").innerHTML="<font color='#ff0000'>教师登录</font>"document.all("logrole").value="teacher"document.all("userName").value=""document.all("password").value=""其中 dlg0 是Dojo的一个对话框组建。Logorole 是登录表单中的

37、一个隐藏域,用于标识是学生登录还是教师登录。在登录页面中填写了用户名和密码后,按回车键或点击登录按钮,将执行是否为空的校验工作。function keyDown() /响应按下回车事件if(event.keyCode=13|event.keyCode=42) /回车doLogin();设置回车键后,用户通过键盘输入用户名和密码后不用再离开键盘再去移动鼠标,提高系统友好性,这种回车键在搜索引擎、邮箱登录中应用相当广泛。用户名和密码是否为空的验证代码如下:function doLogin()var vuserName=document.forms0.userName;var vPassword =

38、document.forms0.password;if(vuserName.value="")alert("请输入用户名");vuserName.focus();return; if(vPassword.value="")alert("请输入密码");vPassword.focus();return; document.forms0.submit();是否为空的验证放到前台完成,不用向应用服务器提交和发送到数据库验证,减少应用服务器和数据库的负担,同时也减少用户等待时间。现在应用当中,用户体验越来越被重视,本系统的

39、登录页面中增加了另一个登录入口,用户可以点击页面顶部的Fisheye按钮来进入学生登录窗口或教师登窗口。Fisheye是dojo的一个特效组件,通过简单的代码就可以构建出类似Mac操作系统中的fisheye效果,其中构建dojo fisheye效果的代码如下:<div dojoType="FisheyeList"itemWidth="50" itemHeight="50"itemMaxWidth="200" itemMaxHeight="200"orientation="hori

40、zontal"effectUnits="2"itemPadding="10"attachEdge="top"labelEdge="bottom"enableCrappySvgSupport="false"><div dojoType="FisheyeListItem" onClick="sLogin();" iconsrc="images/student.png" caption="学生登录"&

41、gt;</div><div dojoType="FisheyeListItem" onClick="tLogin();"iconsrc="images/teacher.png" caption="教师登录"></div>当密码和用户名不为空时,表单提交到 检查用户名和密码的页面(checkUser.jsp)。进入该页面后,首先进行用户名、密码和登录角色这三个参数的获取。获得参数的代码如下:String message="", logrole="&qu

42、ot;,userName="",password=""logrole=request.getParameter("logrole");if(logrole=null) logrole=""logrole=codeString(logrole);userName=request.getParameter("userName");if(userName=null) userName="" userName=codeString(userName);password=request

43、.getParameter("password");if(password=null) password=""password=codeString(password);checkUser.jsp页面中调用了checkUser这个类,checkUser这个类的作用是根据提供的用户名、密码以及登录角色来返回登录信息。调用checkuser这个类的代码如下:<jsp:useBean id="login" class="lindent.CheckUser" scope="session">

44、checkUser.jsp取得参数后,将参数传给checkUser类,checkUser类获得参数后,根据不同的登录角色,从不同的数据库表中查询是否有同时符合用户名和密码的记录,查询结果不为空的话,就证明用户名和密码正确,并返回用户名和密码正确的信息给checkUser.jsp,否则返回登录失败的信息。checkUser类的主要代码如下:if(logrole.equals("teacher") sql = "select * from teacher where username='" + userName + "'"

45、 + "and password = " + "'" + password + "'" else sql = "select * from student where username='" + userName + "'" + "and password = " + "'" + password + "'" rs = stmt.executeQuery(sql); System.out.

46、println("sql=" + sql); if(rs.next() message = "OK" name = String.valueOf(rs.getString("name"); id=String.valueOf(rs.getShort("id"); else message = "u8F93u5165u7684u7528u6237u540Du6216u5BC6u7801u4E0Du6B63u786E" checkUser.jsp取得相应的验证信息后,开始判断验证是否通过,通过的话,

47、将根据用户角色转向不同的页面,如果登录失败将转向登录页面,要求用户重新登录。转向主要代码如下:if(logrole.equals("teacher")response.sendRedirect("teacher/index-frames.jsp"); else if(logrole.equals("student") response.sendRedirect("student/studentMain.jsp"); <SCRIPT language="javascript">aler

48、t("用户名或密码错误,请重新登录");window.location = "login.jsp"</SCRIPT>登录角色为教师的话,将转向teacher/index-frames.jsp 页面,如果登录角色是学生的话,将转向student/studentMain.jsp页面。教师模块1、总体页面框架设计教师登录成功后,将进入如图4-3所示界面:图4-3 教师主界面页面采用左右分栏模式,右分栏中又分上下分栏。左分栏用于展现教师所具有的操作列表;右上分栏用于展示各操作项的详细列表;右下分栏的作用是展现新增操作的页面。该分栏模式采用的Dojo中

49、的分栏框架,三个分栏是同一个页面,不是像传统的frameSet或iframe那样将三个不同的页面嵌入一个页面中。该分栏框架支持Ajax,在拉动左右或上下分界线时,将发现页面局部重新加载。教师主要职能是对整个考试系统的管理,包括对以下五个方面的管理:试题管理、试卷管理、考试管理、成绩管理、考生管理。管理过程主要是对各项的增加和删除。增加过程是先增加试题,再增加试卷,最后增加考试。因为试卷是由试题构成的,增加试卷过程,需要选取必要的考题,所以在增加试卷前,需要先有试题,没有试题的试卷也就没意义。同理,考试需要试卷,在增加考试时,需要选取该考试需要的试卷,所以在增加考试前要先增加试卷。至于删除,要先

50、从考试删除起,再删除试卷,最后删除考题。如果先从试题删除起,使用了该考题的试卷在读取考题时将出现所要读取的试题不存在的错误。所以在删除考题和试卷时,系统都要进行判断,判断该考试或试卷是否使用中,使用的话将不予删除。2、试题管理功能点试题管理的作用是查询所有的试题列表、增加新的试题和删除不用的试题。目前的设计思考思路是,试题仅支持选择题,这是出于评分公正性考虑,语义学刚刚起步,对于汉语语义的识别存在很大的困难,所以目前主观题的评分还不成熟,本系统也主要是进行客观题的考试,试题管理也主要是对客观题的管理。进入试题管理页面时,系统将展现所有的试题列表,展现内容包括每道试题的题目、四个选项的内容以及试

51、题的答案。在每条试题记录前都有一个dojo的复选按钮,当选中某条记录是,可以对本条记录进行操作。对试题的操作主要是增加和删除。点击增加按钮时,右下将展现增加操作界面。在增加页面中可以输入试题的题目、各个选项,以及从下拉选择框中选中相应的答案。在试题列表页面中选中一条记录后,点击删除按钮,系统将判读该试题是否在某张试卷使用,如果未被使用,可以删除,否则不予删除。查询试题所有列表页面(questionList.jsp)主要代码如下:questionList.jsp 中首先引入 question 类,如下代码所示:<% page import="lindent.Question&qu

52、ot;%>然后调用question类的getQuestions()方法,调用过程如下所示:List questions = Question.getQuestions();Question类的getQuestions()的作用的从数据库的question表中查询出所有的记录,然后通过每条记录来构建Question对象,最后将这些试题集合保存到List中。getQuestions()的主要代码如下所示:public static List getQuestions() List questions = new ArrayList();DBConn dbconn = new DBConn()

53、;Connection conn = dbconn.getConn();String sql = "select * from question"Statement stmt = DBConn.getStatement(conn);ResultSet rs = DBConn.getResultSet(stmt, sql);try while (rs.next() Question q = new Question();q.setId(rs.getInt("id");q.setContext(rs.getString("context"

54、);q.setA(rs.getString("a");q.setB(rs.getString("b");q.setC(rs.getString("c");q.setD(rs.getString("d");q.setKey(rs.getString("key");questions.add(q); catch (SQLException e) e.printStackTrace(); finally DBConn.close(rs);DBConn.close(stmt);DBConn.close(

55、conn);return questions;取得所要查询的试题列表后,questionList.jsp页面遍历List,取出List中的每个quesiton对象,将对象的各个值用表格的形式展现,展现过程的代码如下所示:<%for(int i=0;i<questions.size();i+)Question q=(Question)questions.get(i);%><tr><td><input type="checkbox" dojoType="Checkbox" value=<%=q.getId

56、()%>></td><td><%=q.getContext()%></td><td style="display:none"><%=q.getId()%></td></tr><%>至此,完成了试题列表的展现部分。在试题列表展现页面中,教师可以对增加试题和删除试题。点击增加试题按钮时,分栏框架的右下将展现试题增加页面。试题增加页面主要展示试题输入页面和保存试题,它通过获得页面中的一个隐藏域来识别,如下所示:<input type="hidde

57、n" name="action" value="add"/>如果是填好考题信息后点保存,该页面获取这个参数时将为add,将执行考题的保存操作,如果获得该参数不为add时,将执行展现试题输入框的操作,所以在打开页面时,会先进行这个参数的获取并判断该执行哪个操作,如下所示:String action = request.getParameter("action");if(action != null && action.trim().equals("add")因为试题中难免包含中文,所以

58、在页面提交后还要执行设置编码为gb2313,代码如下所示:request.setCharacterEncoding("gb2312");当输入完考题信息点击保存后,页面的action参数将被设置成add,此时将执行试题的保存操作,主要实现代码如下:if(action != null && action.trim().equals("add") String context = request.getParameter("context");String a = request.getParameter("a");String b = request.getParameter("b");String c = request.getParameter("c");St

温馨提示

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

评论

0/150

提交评论