摘要:
目前国内基于B/S、C/S结构的在线考试系统产品已经有许多,本文首先介绍了这些考试系统的形成和发展过程,大致结构。然后通过仔细分析,提出了目前的这些系统还存有系统更新和维护等种种弊端,仍不够成熟。基于对现有产品的思考,结合J2EE的成熟技术,我们想到了是否可以将该技术运用在在线考试系统中,提出了一个基于J2EE架构的在线考试系统。通过将该架构与已有结构的在线考试系统进行比较,分析了该架构的优势,重点介绍了该框架的整体构造以及相关的概念和技术。并通过设计了一个基于J2EE架构的在线考试系统对该架构做了一个比较深入的剖析。最后,对J2EE技术做了一个总结性的展望,认为该技术有着良好的发展空间和广阔的前景。
关键词:J2EE,在线考试系统,b/s,JavaBean,jsp,数据池
1 引言
现阶段,学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即出卷、考生考试、阅卷、成绩评估和试卷分析。显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且其工作将是一件十分繁琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的需要。随着计算机应用的迅猛发展,网络应用不断扩大,如远程教育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。人们迫切要求利用这些技术来进行在线考试,以减轻教师的工作负担及提高工作效率,从而提高了考试的质量,使考试更趋于公证、客观、激发学生的学习兴趣。例如目前许多国际著名的计算机公司所举办的各种认证考试绝大部分采用这种方式。
为了适应新形势的发展,目前国内有很多公司团体研究开发了基于Web的考试系统。而我们知道网络应用软件运行的模式主要有二类:Client/Server模式、Browser/Server模式。前者主要的缺点是维护、升级较麻烦,后者是近几年伴随Internet迅速发展而应运而生的一种技术,在这种模式下,客户端需要一个浏览器,服务器端是Web Server ,而Web Server是与数据库和应用服务器的紧密结合,可见,这种模式是瘦客户端,即对客户端的要求不高.如今,很多部门的业务系统、企业的MIS系统纷纷采用这种模式,它的主要优点是便于扩充应用、升级维护简便。然而,随着技术的发展,更先进的模式纷纷被提出并时兴起来,其中J2EE就是比较成熟的一种。
2 在线考试系统构架
2.1 在线考试系统一般需求分析
在线考试系统应具有以下要求:
1)由于考试对应的是特定的对象,所以系统需要经过有效的身份验证才可以登陆。并且系统需要有可以管理会话的功能。以便在考试过程中全程跟踪考试状态。
2)系统的权限一般分为两种:管理员和学生。不同的身份使用不同的权限和功能。
3)管理员需要对试题和考生进行有效的管理,负责试题的录入及更新和修改,对试题的分类,每次考试前,需要对试场环境和考生状态进行考前初始化工作。要注意的是, 鉴于考试环境一般为机房,考试者之间的距离很近,为了在线考试做到规范,对于每个应试者来说,试卷的试题和题量都应是相同的,但试题并不相同。
4)系统要有良好的试卷上传和回收功能,确保信息传送的正确性。
5)系统要有一个友善的界面,确保考生考试的顺利进行。
6)因为试卷中的主观题需要老师批改,可能需要一段时间才能查询到成绩。但如果试卷是由客观题型组成的,考生就可以在考试结束后查询到自己的成绩了。
7)系统提供对考生成绩的统计和查询等管理功能。
8)系统应具有良好的安全性管理。
2.2 当前在线考试系统现状分析
当前考试系统中,仍有许多是基于c/s模式的,每一次伴随着系统的升级,都要在每个客户端更新软件,耗时耗力。可喜的是,随着技术的发展,基于b/s模式的在线考试系统越来越多,逐渐占据了主导地位。它克服了c/s模式下的许多缺点,从传统的基于C/S模式的考试系统转变到基于B/S模式的考试系统,可以使用户在任何一台电脑上,只要可以上网,就可以使用该服务,大大简化了操作,为用户提供了方便。另一方面,也为教师的管理和批阅工作提供了方便,提高了效率。但是据我多方的观察和研究,发现大多数的在线考试系统都是采用基于页面的模式开发,每个页面中都包含了要用到的所有功能逻辑,导致代码重复率高,结构不够清晰,维护升级起来也很费时间和人力。鉴于这种情况,所以我们将J2EE的概念加入到在线考试系统中来,使得该系统更易于升级和维护。
2.3 基于J2EE的在线考试系统架构介绍及拥有的优势
2.3.1 结构总体介绍
J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。事实上,sun设计J2EE的初衷正是为了解决两层模式(client/server)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想,而且经常基于某种专有的协议――通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。现在J2EE 的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层,以下是 J2EE 典型的四层结构:
l运行在客户端机器上的客户层组件
l运行在J2EE服务器上的Web层组件
l运行在J2EE服务器上的业务逻辑层组件
l运行在EIS服务器上的企业信息系统(Enterprise information system)层软件
图1 J2EE 典型的四层结构
第三章 考试系统的数据库设计、构成模块及特点
3.1 考试系统的数据库设计
考试系统离不开数据库系统的支持,不论是试题、答案,还是考生信息都需要存放在数据库中,而且数据库独立于程序而存在,具有较好的安全性。本系统使用的数据库软件为SQL Server 2000。首先建立一名为ksxt的数据库,主要表格介绍如下:
3.1.1 考生信息表(stuinfo)
列名 | 数据类型 | 长度 | 允许空 |
Id | Nvarchar | 10 | |
Name | Nvarchar | 8 | |
State | Nvarchar | 6 | √ |
该表主要存放考生的信息,其中Id表示考生的准考证号;Name表示考生的姓名;State表示考生状态,分为三种:已交卷、未交卷(正在考试中)、缺考。考生登录的时候输入准考证号,从该表中检查是否存在该准考证号,如果存在,显示该考生姓名,允许进入考试界面;否则显示“无此考生”。State字段有助于统计缺考人数。
3.1.2 各类试题表(xuanze,tiankong,panduan,chengxtk,chengxts,chengxsj)
主要包括选择题表、判断题表、概念填空题表、程序填空题表、程序调试题表、程序设计题表共6张表,每张表中存放了各类试题的题号和题目。下面以程序设计题表为例说明:
列名 | 数据类型 | 长度 | 允许空 |
TH | Char | 2 | √ |
XTH | Char | 2 | √ |
TM | Ntext | 16 | √ |
Ole | Image | 16 | √ |
其中TH表示该试题在第几套题目中;XTH表示该试题的题号,即这套题目中的2个程序设计题中的第几题;TM表示该试题的题目描述;Ole字段存放的为考试时要读出来,解压,供考生下载的压缩文件。如果是选择题表,还有A、B、C、D四个字段分别表示该试题四个选项的内容。除了程序设计题以外,其他试题表没有Ole字段。之所以设TH字段,是因为试题是按套分的,每一套中又有若干题目。每套中的题目事先就定好的,但是每次抽到该套题目时,试题的顺序是打乱的,以减少出现一模一样试卷的概率。
3.1.3 考试信息表(testresult01—testresult99)
列名 | 数据类型 | 长度 | 允许空 |
Id | Nvarchar | 10 | |
Xuanzth | Char | 2 | √ |
Pandth | Char | 2 | √ |
Tiankth | Char | 2 | √ |
Chengxtkth | Char | 2 | √ |
Chengxtsth | Char | 2 | √ |
Chengxsjth | Char | 2 | √ |
Xuanzda | Nvarchar | 40 | √ |
Panda | Nvarchar | 20 | √ |
Tiankda | Nvarchar | 100 | √ |
Chengxtkda | Nvarchar | 100 | √ |
Chengxtsda | Image | 16 | √ |
chengxsjda | Image | 16 | √ |
Lasttime | Int | 4 | √ |
考试信息表共有99张,根据考生准考证号后两位来决定把该考生的考试信息放入哪张表中,比如该考生准考证号末两位为28,则放入表testresult28中。其中Id表示考生的准考证号;Xuanzth、pandth、Tiankth、Chengxtkth、Chengxtsth、Chengxsjth分别表示选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题的题号;Xuanzda、pandda、Tiankda、Chengxtkda、Chengxtsda、Chengxsjda分别表示选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题的正确答案。Lasttime用于记录考试时间,如果时间到了还没有交卷,则回收答案,停止考试。
3.1.4 回收表(reclaim,result)
回收表共有两张,一张记录回收的答案,另一张记录回收是否成功。
表1
列名 | 数据类型 | 长度 | 允许空 |
Id | Nvarchar | 10 | |
Xuanzth | Char | 2 | √ |
Pandth | Char | 2 | √ |
Tiankth | Char | 2 | √ |
Chengxtkth | Char | 2 | √ |
Chengxtsth | Char | 2 | √ |
Chengxsjth | Char | 2 | √ |
Xuanzda | Nvarchar | 40 | √ |
Panda | Nvarchar | 20 | √ |
Tiankda | Nvarchar | 100 | √ |
Chengxtkda | Nvarchar | 100 | √ |
Chengxtsda | Image | 16 | √ |
chengxsjda | Image | 16 | √ |
这张表主要用来记录回收的答案,其中Xuanzth、Pandth、Tiankth、Chengxtkth、Chengxtsth、Chengxsjth分别表示选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题的题号,Xuanzda、Pandda、Tiankda、Chengxtkda、Chengxtsda、Chengxsjda分别表示考生的选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题的答案,可与考试信息表中各题的正确答案做比较。
表2
列名 | 数据类型 | 长度 | 允许空 |
Id | Nvarchar | 10 | |
Name | Nvarchar | 8 | √ |
Xuanze | Char | 2 | √ |
Pand | Char | 2 | √ |
Tiank | Char | 2 | √ |
Chengxtk | Char | 2 | √ |
Chengxts | Char | 2 | √ |
Chengxsj | Char | 2 | √ |
这张表主要用来判断回收是否成功。其中Id表示考生的准考证号;Name表示考生的姓名;Xuanze、Pand、Tiank、Chengxtk、Chengxts、Chengxsj分别表示选择题、判断题、概念填空题、程序填空题、程序调试题、程序设计题是否回收成功,如果成功,则为OK,否则为空。
3.1.5管理表(setting)
列名 | 数据类型 | 长度 | 允许空 |
Dbname | Nvarchar | 10 | √ |
Servername | Nvarchar | 10 | √ |
Sqlpwd | Nvarchar | 10 | |
Testdir | Nvarchar | 40 | √ |
Testtype | Nvarchar | 4 | √ |
Relaimdir | Nvarchar | 40 | √ |
redopwd | Nvarchar | 10 |
其中Dbname表示数据库名称;Servername表示服务器名称;Sqlpwd表示SQL Server服务器密码;Testdir表示考试目录;Testtype表示考试类型;Relaimdir表示回收目录;redopwd表示重做密码。有些考生考试时可能会因为误操作而退出了系统,这时候要再次进入系统进行考试,就需要输入密码,以防止作弊行为。重做密码是在考生第一次进入系统时从该表中获得的。
3 测试系统具体设计
3.1 基于J2EE的E-nettest在线考试系统构架概要
3.1.1 E-nettest系统结构
我们的系统结构是针对了J2EE的四层架构进行设计的
图4 系统结构
如图所示,客户层负责提供用户界面接口,包括试题的显示和考生答案的输入。
Web层负责将得到的考生登陆和题目上传的信息送交给业务层,同时,将从业务层处得到考试的相关信息输出到html页面为考生提供相关服务。
业务层负责系统的具体逻辑实现,主要是得到数据池中的数据源,向数据库中提交和获得数据等。
信息系统层主要采用了Microsoft sql2000数据库对数据进行存贮管理。
图5 系统流程
图6 系统模块
如果您在计算机领域有任何疑虑或不确定的地方,请毫不犹豫地与老师交流噢,我们期待着为您提供有针对性的建议和指导。您的问题和讨论对我们来说都非常重要。