1、在线考试系统的设计与实现毕业设计毕业论文在线考试系统的设计与实现摘要:本在线考试系统是利用Sun Microsystems公司倡导的JSP 和SQL2005数据库,利用了目前比较热门的JSP技术的JDBC与数据库连接和JSP+Servlet访问数据库,实现了在线考试系统的出卷,在线答题,在线批改和创建题库等四项基本的在线考试功能。该系统有应用简单、升级和部署方便、扩展性强等特点。并且对考生参加考试的设备要求很低,只需支持Web服务器访问就可以了。关键词:JSP, 考试系统,在线考试系统目录第一章 前言11.1 关于在线考试11.2 在线考试系统的发展趋势11.3 相关知识介绍21.3.1 JS
2、P、JavaBean 、ervlet、JDBC的概述2第二章 系统的分析与设计32.1需求分析32.2总体设计32.3功能设计4第三章 数据库设计4第四章 系统实现74.1出卷模块的实现74.2 在线考试模块的实现134.3 在线批改模块的实现244.4题库模块的实现26第五章 开发技巧30第六章 系统测试316.1 系统测试31第七章 结束语32参考文献33第一章 前言1.1 关于在线考试随着网络技术的飞速发展,现在很多国外的大学和社会其他部门都已经开设了远程教育,通过计算机网络实现异地教育和培训。现在,计算机硬件技术的发展已经达到了相当高的水平。但是,远程教育软件的开发目前还处于起步阶段,
3、随着这项技术的不断深入发展,就要求有更好、更完善的软件系统应用到远程教育当中去,这就给软件设计人员提出了更高的设计要求。远程教育包括很多环节,例如教学系统、答疑系统和考试系统等等。其中很重要的一个环节就是在线考试系统,同时它也是最难实现的环节。在我国,虽然远程教育已经蓬勃地发展起来,但是目前学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即人工出题、考生考试、人工阅卷、成绩评估和试卷分析。显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且其工作将是一件十分烦琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的
4、需要。1.2 在线考试系统的发展趋势随着计算机应用的迅猛发展,网络应用不断扩大,如远程教育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。人们迫切要求利用这些技术来进行在线考试,以减轻教师的工作负担及提高工作效率,与此同时也提高了考试的质量,从而使考试更趋于公证、客观,更加激发学生的学习兴趣。例如目前许多国际著名的计算机公司所举办的各种认证考试绝大部分采用这种方式。在线考试是现阶段研究开发的一个热点。它是建立在国际互联网上的应用系统,客户端的配置可以极为简单,使考试不受地域的局限。一个完备的在线考试系统可以使用户在网上学习过后及时检验自己的学习效果,已发现自己的不足,使得学习效率得到很大
5、提高。在线考试系统中题目的生成、试卷的提交、成绩的批阅等都可以在网络上自动完成。只要形成一套成熟的题库就可以实现考试的自动化。这样一来,教师所要做的只是精心设计题目、维护题库,而不是组织考试,从而大大减轻了教师的负担,这表明其经济性是相当可观的。为了适应新形势的发展,我进行了这一系统的初步设计工作,也可以说是做一个初步的探索,希望它能够在各类考试中发挥高效、便捷的作用,把老师从繁重的工作中解脱出来目前,网络应用软件运行的模式主要有二类:Client/server模式,Browser/Web模式。前者主要的缺点是维护、升级较麻烦,后者是近几年伴随Internet迅速发展起来的一种技术,它与客户/
6、服务器方式类似,客户端是一个标准的浏览器,服务器端是Web Server ,而Web Server与数据库和应用服务器的紧密结合,使得这种模式的应用范围不断扩大,它已不仅仅用于网上查询,有很多部门的业务系统、企业的MIS系统纷纷采用这种模式,它的主要优点是便于扩充应用、升级维护简便。另外,考试系统的软件也必将不断的更新;同时软件产品本身就要经过一个不断自我完善的过程。基于上述考虑,用JSP设计考试系统比较合适,现实了动态页面与静态页面的分离,脱离了硬件平台的束缚以及编译后运行等方式,大大提高了其执行效率而逐渐成为Internet上的主流工具。在美国,EJB+Servlet+JSP几乎成了电子商
7、务的开发标准,而在我国也正逐渐兴起,不少网站都采用JSP技术。 1.3 相关知识介绍该在线考试系统主要采用Microsoft .net Framework、JSP、 SQL Server数据库、My Eclipse7.5、Dreamweaver CS、Tomcat6.0等技术和工具,整体设计遵循软件工程的方法,经过需求分析、总体设计、文档和代码的编制、模块测试和系统实现几个阶段. 1.3.1 JSP、JavaBean 、ervlet、JDBC的概述 JSP的概述:JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
8、JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库,重新定向网页以及发送E-mail等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传给客户端仅仅是结果,对客户浏览器的要求最低。在Java的基础上开发的JSP实现了动态页面与静态页面的分离,脱离了硬件平台的束缚以及编译后运行等方式
9、,大大提高了其执行效率而逐渐成为了Internet上的主流开发工具。在美国,EJB+Servlt+JSP几乎成为了电子商务的开发标准,而在我国也正逐渐兴起,不少网站都采用了JSP技术。JavaBean的概述:JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 属性。用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造
10、的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。Servlet的概述:Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务
11、器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。Servlet的工作模式1. 客户端发送请求至服务器 2. 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器 3. 服务器将响应返回客户端4. JDBC是通用的SQL Server(结构化查询语言)数据库存取框架,带有 简单且功能强大的应用程序接口 (AP I)。利用JDBC API,Java 开发人 员可以在单一的标准化功能库中编码,生成独立 于数据库管理系统(D BMS) 的Java 应用系统。兼容JDBC的应用程序 可利用JDBC驱动器模块,反过来与后端数据源通信。 这些元件化的
12、JDBC驱动器可换入换出,以适应不同的数据库后端设备。第二章 系统的分析与设计2.1需求分析在线考试系统主要包括自动出卷,在线答题,在线批改和题库等功能。基本上包括了在线考试系统应该聚有的基本功能,。 根据在线考试系统的基本需求,系统需要完成以为的具体任务。 (1)自动出卷:一个完整的在线考试系统首先必须具有能够满足用户需要的试卷,并且针对不同的用户要有不同的试卷,自动出卷模块就能够满足用户的这个需求,可以由系统管路员对试卷格式进行设置,然后由系统自动从题库中选择题目生成试卷。 (2)在线答题:试卷生成以后,用户能够在系统中选择一份试卷进行答题。 (3)在线批改:用户答题完成以后,把试卷提交给
13、系统,系统能够在线批改,并及时的把结果返回给用户。 (4)题库:题库是生成试卷的基础,把所有收集到的题目分类存入题库中,生成试卷时随机的从题库中取出题目,组合成 一张试卷。图1.1 在线考试用例图自动出卷在线考试在线批改题库2.2总体设计2.2.1 UML业务逻辑图在线考试系统主要的操作:图2.1 在线考试系统逻辑图选择试卷自动出卷在线考试在线批改返回成绩2.2.2 系统结构表2.2 系统结构表出卷模块考试模块批改模块Chujuan.jspChujuan1.jspShijuanbianhao.jspKaoshi.jspXuanzeti.jspXuanzeti_view.jspPanduanti
14、.jspKaosh1.jsp 2.3功能设计根据系统的需求分析,明确系统的功能主要包括以为4个部分。(1)出卷,该模块实现试卷的生成功能。鉴于主观题的主观性,目前无法实现系统自动判卷,所以本系统只作客观题部分。一般情况下,单选题往往在四个供选的答案A、B、C、D中选择唯一正确的答案;(2)在线考试。该模块是用户考试的窗口,用户在此部分进行答题,并提交。(3)在线批改。该模块实现答题正误的判断和对试卷进行评分的功能。(4)题库。系统用该模块来存储考试试题,以备出卷时调用。第三章 数据库设计依据系统分析,数据库主要由以下几张表组成。 试卷信息表(shijuan).表名为shijuan,存放试卷题目
15、的信息。表3.1 试卷信息表字段说明类型备注Shijuanbiaohao试卷编号inttimu题目varchar(800)题目内容fenzhi分值int题目的分值timuleixing题型varchar 10不可为空id题目的IDint外键kaoshishijuan考试时间int单位:分创建试卷信息表的代码:CREATE TABLE shijuan ( shijuanbiaohao int NULL, timu varchar (800) COLLATE chinese_ PRC_CI_AS NULL, fenzhi int NULL, timuleixing varchar (10) COL
16、LATE chinese _PRC_CI_AS NULL, id varchar (10) COLLATE chinese _PRC_CI_AS NULL, kaoshishijuan int NULL) 选择题题库信息表(xuanzeti).表名为xuanzeti,存放选择题题库信息。表3.2 选择题题库信息表字段说明类型备注id题目idint主键timn题目varchar(800)不可为空daan正确答案varchar(200)不可为空zhang章节int题目所属章节aA选项varchar (50)不可为空bB选项varchar(50)不可为空cC选项varchar(50)不可为空dD选项
17、varchar(50)不可为空nandu难度系数int 创建选择题题库信息表的代码:CREATE TABLE xuanzeti (id int NOT NULL,tigan varchar (800) COLLATE chinese_PRC_CI_AS NOT NULL,daan varchar (200) COLLATE chinese_PRC_CI_AS NOT NULL,zhang int NOT NU LL,a varchar (50) COLLATE chinese_PRC_CI_AS_ NOT NULL, b varchar (50) COLLATE chinese_PRC_CI_
18、AS_ NOT NULL,c varchar (50) COLLATE chinese_PRC_CI_AS_ NOT NULL,d varchar (50) COLLATE chinese_PRC_CI_AS_ NOT NULL,nandu int NULL,CONSTRAINT pk_xunazeti PRIMARY KEY CLUSTERED( id) ON PRIMARY)判断题题库信息表(panduanti).表名为panduanti,存放判断题题库信息。表3.3 判断题题库信息表字段说明类型备注id题目idInt主键timn题目varchar(800)不可为空daan正确答案varc
19、har(200)不可为空zhang章节int题目所属章节nandu难度系数int创建判断题题库信息表的代码: CREATE TABLE panduanti (id int NOT NULL,tigan varchar (800) COLLATE chinese_PRC_CI_AS_ NOT NULL,daan varchar (200) COLLATE chinese_PRC_CI_AS_ NOT NULL,zhang int NULL,nandu int NULL,CONSTRAINT pk_panduanti PRIMARY KEY CLUSTERED( id) ON PRIMARY) 主
20、观题题库信息表(zhuguanti).表名为zhuguanti,存放主观题题库信息。表3.4主观题题库信息表字段说明类型备注id题目idInt主键timn题目varchar(800)不可为空daan正确答案varchar(200)不可为空zhang章节int题目所属章节nandu难度系数int 创建主观题题库信息表的代码:CREATE TABLE panduanti (id int NOT NULL,tigan varchar (800) COLLATE chinese_PRC_CI_AS_ NOT NULL,daan varchar (200) COLLATE chinese_PRC_CI_
21、AS_ NOT NULL,zhang int NULL,nandu int NULL,CONSTRAINT pk_zhuguantiti PRIMARY KEY CLUSTERED( id) ON PRIMARY) 用户考试信息表(students_xuanze)。表名为students_xuanze,存放用户考试信息。表3.5 用户考试信息表字段说明类型备注id用户IDInt主键uid用户名varchar(10)zhang章节intrightcount正确题数intdayntime考试时间varchar(30)创建用户考试信息表的代码:CREATE TABLE students xuanze
22、 (id int IDENTITY (1,1) NOT NULL,uid varchar (10) COLLATE chinese PRC CI AS NULL,zhang int NULL,rightcount int NULL,dayntime varchar (30) COLLATE chinese_PRC_CI_AS NULL)第四章 系统实现本系统是一个JSP,后台数据库用的是SQL Server,用Tomcat做Web 服务器,本系统实现了在线考试中的核心功能,程序在Windows环境下经过测试能够运行。 4.1出卷模块的实现该模块有chujuan.jsp和chujuan1.jsp
23、两个JSP页面来实现,其中chujuan.jsp页面主要负责出卷表单的填写和提交,chujuan1.jsp负责把chujuan.jsp页面提交的数据进行处理后插入数据库。 1. chujuan.jspchujuan.jsp页面的界面。图4.1 chujuan.jsp页面的界面 程序说明:出卷信息输入页面。 程序模块名称:chujuan.jsp。 相关数据库:无。 chujuan.jsp页面的代码 chujuan.jsp出卷 选择题数目: 每一题分值: 1 2 3 4 5 6 7 8 9 判断题数目: 每一题分值: 1 2 3 4 5 6 7 8 9 主
24、观题数目: 考试时间: 分钟 试卷编号: 1 2 3 4 单击chujuan.jsp页面的“提交”按钮,提交数据,然后由chujuan1.jsp进行处理。chujuan1.jsp页面的工作原理是根据chujuan.jsp提交的参数,从不同的题库中随机选出题目组成一份试卷。最后把选出的结果插入数据库。 2. chujuan1.jsp 程序明白:出卷结果提交页面。 程序模块名称:chujuan1.jsp。 相关数据库:试卷表shijuan。 chujuan1.jsp页面的代码。 function ba
25、ckward() history.back();function teacher()window.location=UntitledFrameset-5.htm;添加成功=0;c-) if(ai=ac)randomNum(a,i,j);%本试卷编号已经存在,请重新选择填写编号。%elseint xuanzeshumu=Integer.parseInt(request.getParameter(xuanzeshumu);int xuanzefenzhi=Integer.parseInt(request.getParameter(xuanzefenzhi);int panduanshumu=Int
26、eger.parseInt(request.getParameter(panduanshumu);int panduanfenzhi=Integer.parseInt(request.getParameter(panduanfenzhi);int zhuguanshumu=Integer.parseInt(request.getParameter(zhuguanshumu);int zhuguanfenzhi=0;int kaoshishijian=Integer.parseInt(request.getParameter(kaoshishijian);int i=0;int j=new in
27、t 30;System.out.println(4);for(i=0;ixuanzeshumu;i+) randomNum(j,i,30); sql=SELECT * from xuanzeti where id=+ji; rs=stmt.executeQuery(sql);/ while(rs.next()rs.next();int id=Integer.parseInt(rs.getString(id);String timu=rs.getString(tigan);System.out.println(timu);String timuleixing=xuanzeti;String sq
28、l1=insert into shijuan values(+shijuanbianhao+,+timu+,+xuanzefenzhi+,+timuleixing+,+id+,+kaoshishijian+);stmt.executeUpdate(sql1);/System.out.println(5);for(i=0;ipanduanshumu;i+)randomNum(j,i,20); sql=SELECT * from panduanti where id=+ji; rs=stmt.executeQuery(sql);rs.next();int id=Integer.parseInt(r
29、s.getString(id);String timu=rs.getString(tigan);String timuleixing=panduanti;String sql1=insert into shijuan values(+shijuanbianhao+,+timu+,+panduanfenzhi+,+timuleixing+,+id+,+kaoshishijian+);stmt.executeUpdate(sql1);System.out.println(6);for(i=0;i4.2 在线考试模块的实现该模块主要由shijuanbiao.jsp和kaoshi.jsp两个页面来实现。shijuanbiao.jsp页面是试卷选择页面,在IE中输入http:/localhost:8080/test/shijuanbiao.jsp,进入试卷选择页面,选择一份试卷,程序把试卷编号提交给kaosh.jsp页面,kaosh.jsp根据提交的试卷编号显示出试卷内容,考生即可进行考试了。1. kaosjh.jsp 程序说明:考试页面。 程序模块名称:kaoshi.jsp。 相关数据库:试卷表shijuan、题目类型表timuleixing. kaoshi.jsp页面的代码:在线考试%request.setC