Web技术网络考试

时间:2022-07-26 12:03:08

Web技术网络考试

一、网络考试系统概述

在网络技术逐渐渗入社会生活各个层面的今天,传统的考试方式也面临着变革,而网络考试则是一个很重要的方向。基于Web技术的网络考试系统可以借助于遍布全球的因特网进行,因此考试既可以在本地进行,也可以在异地进行,大大拓展了考试的灵活性。试卷可以根据题库中的内容即时生成,可避免考试前的压题;而且可以采用大量标准化试题,从而使用计算机判卷,大大提高阅卷效率;还可以直接把成绩送到数据库中,进行统计、排序等操作。所以现在较好的考试方法为网络考试,试题内容放在服务器上,考生通过姓名、准考证号码和口令进行登录,考试答案也存放在服务器中,这样考试的公平性、答案的安全性可以得到有效的保证。因此,采用网络考试方式将是以后考试发展的趋势。

网络考试系统的实现技术有多种,可以采用传统的客户机/服务器型的MIS型架构,即试题内容放在远程的服务器上,在考试机上安装考试应用程序和数据库客户机配置,因此每次考试时要对机器进行安装、配置,考务工作比较烦琐,而且考试程序放在客户机上,安全性也受到一定影响,因此本文讨论的网络考试系统采用Web技术实现。Web技术超越了传统的"客户机/服务器"两层结构,采用了三层体系结构:用户界面层/事务层/数据库层,因此Web结构有着更好的安全性,在用户机上不需要安装任何应用程序,应用程序可以安装在事务层所在的计算机上,试题存放在数据库服务器上,当然,事务层和数据库可以是同一台机器(如果条件允许,还是应该把这两层分开在不同的计算机上),所以,本文所讨论的考试系统采用Web技术实现。

本系统的数据库采用IBM公司的大型数据库DB2,网站服务器采用IIS4,网页设计采用FrontPage2000和ASP,阅卷系统采用Borland公司的Delphi5.0。

二、网络考试系统的构成

网络考试系统的结构如图1所示,下面我们对该图作一下简单的描述:

图1网络考试系统结构图

(一)考试子系统

考试子系统是网络考试系统的核心部分,它的工作流程如图2所示,由于采用Web技术实现,所以从理论上讲,考试可以在任何时候、任何地方进行,但是为了使考场易于组织和管理,所以本系统对考试时间作了严格的限制,因此在进入网站时首先判断当前时间是否为考试规定的时间,由于判断的时间是服务器端的时间,所以跟考试机器的时间无关,即使考生修改所在机器的时间,也无济于事。如果时间符合要求,则显示登录页面,考生在这个页面输入自己的信息,如姓名、身份证号码、密码等等,单击"提交"后进入信息处理程序(在服务器端执行),如信息不正确(包括有些考生试图绕过登录页面,直接进入试卷页面的情况,此时由于没有登录信息,系统也会认为是非法考生),系统给出提示信息,并重新定位到登录页面;如信息正确,则显示试卷页面,试卷页面上的试题内容根据考生输入的试卷代号从数据库中取出符合条件的记录动态地生成。同时在页面上动态地显示考试所剩时间,当考试时间到或考生点击"交卷"按钮时,则系统把考生答案传送至服务器的数据库中保存起来,并把数据库中标记考生是否参加过某门课程考试的标记置"1"(它的初始值为"0")。

图2考试子系统流程图

(二)成绩查询子系统

为了能让考生及时、方便地了解自己的考试成绩,查询子系统也采用Web方式实现,考生在页面输入自己的信息后,服务器就能把成绩信息传送到考生的机器上。

(三)阅卷子系统

本系统对考生来说是不可见的,用DELPHI和DB2实现。它是一个应用程序,不能通过WEB方式访问。

1、评分模块

该模块能调出学生答案并自动给出客观题的成绩,教师根据学生的答案给出每题得分并输入计算机。

2、成绩统计、排序模块

计算机能根据学生的成绩进行各类统计,生成成绩分布图等,还能按照给定的条件进行排序。

3、信息维护模块

本模块能对试题、考生信息进行维护,教师可以增、删、改、查题目、考生信息,是阅卷子系统的重要组成部分。

(四)数据库子系统

网络考试系统离不开数据库系统的支持,不论是试题、答案,还是考生信息都需要存放在数据库中,而且数据库独立于程序而存在,具有较好的安全性,本例中的数据库采用IBM公司的大型数据库系统DB2实现,数据库名为test_net,其中主要表结构的描述如下:

kaosheng表:用来记录考生信息,其中有一字段jsjjc_dl,如果其值为0,则表明该考生还没参加过《计算机基础》的考试,如果为1:则表示已经参加过该门课程的考试,jsjjc_cj字段存储了《计算机基础》课程的成绩;

kaosda表:记录考生的选择题、填空题以及问答题答案,这三类答案分别用三个字段描述,每题答案之间用"$$$"分隔;

xuanzt表:存放选择题题目,其中有题目字段、四个选项字段、试卷代号字段以及答案字段;

tiankt表:存放填空题的题目、试卷代号及答案(问答题的处理与填空题类似,这里不作描述)

在ASP程序中,与数据库相关的典型语句如下:

<%exec_xzt="select*fromxuanzt"

setconn=server.createobject("adodb.connection")

conn.open"dsn=test_net;uid=db2admin;pwd=db2admin"

setrs_xzt=conn.execute(exec_xzt)%>

在上述四行语句执行完后,rs_xzt中为符合条件的记录集。

三、考试系统的实现方案

考试子系统是网络考试系统的核心部分,下面就该系统中一些常见问题的程序设计方案作一下具体说明。

(一)安全性考虑

1、考试时间

(1)进入考试网站时首先检查当前时间是否为考试时间,以控制考生在规定的时间内参加考试;

<%dimtime_cur

time_cur=now''''time_cur为当前时间

iftime_cur>=cdate("2000-06-088:30:00")andtime_cur<=cdate("2000-06-0810:30:00")then%>

''''显示登录页面…………

<%else%>

<fontface="隶书"color="#0000FF"size="6">现在不是考试时间</font>

<%endif%>

(2)在进入试卷页面后还要控制考试的总时间,在卷面上动态显示目前剩余时间,当总时间已到,系统会自动提交考生的答案,并且把数据库中的相关字段,如jsjjc_dl设置为1,这样他就不能再次进入试卷页面,这段程序利用客户端程序实现,而且在试卷页面加载时就要设置timeout()的参数,本例中设它为1000ms,即每隔1秒timeout过程执行一次。

<scriptlanguage="vbscript">

''''客户端程序,求出剩余时间,利用timeout(每1000ms产生一次事件)

dimcounter,t,fen,miao

counter=61''''这里假设考试时间为1分,即60秒

''''页面的加栽事件

subwindow_onload

t=settimeout("timeout()",1000)''''每隔1000毫秒timeout过程被执行一次

endsub

subtimeout

counter=counter-1

ifcounter>=0then''''还有剩余时间

''''根据counter的值求出剩余的分、秒,并把它显示在页面上

fen=counter\60:miao=countermod60:T1.value=fen:T2.value=miao

t=settimeout("timeout()",1000)

else

form1.submit''''假如考试时间已到,则自动提交表单中的内容

endif

endsub

</script>

2、身份验证

根据考生的姓名、身份证号码、密码到数据库中查找相应记录,如果库中有该考生的记录,则允许进入,并且把考生信息记录在session中,否则给出信息,不允许进入。

<%dimxm,sfzhm,dw,mm,sjdh,exec1,xm_tj,sfzhm_tj,mm_tj,condition,exec2

''''(略)……根据上一个页面中的信息查询库中是否有该考生的记录记录

if(notrs.eof)then''''如果条件为真,则表示库中有该考生的记录

ifrs("jsjjc_dl")=0then''''如果库中有该考生记录,则继续判断该考生是否参加过这门课程的考试

''''如果该考生没有参加过这门课程的考试,则用session记录下考生信息

session("xingming")=xm:session("shenfzh")=sfzhm:session("mima")=mm%>

''''…………显示试卷页面

<%else

response.write"您已经参加过测试,不能再次进入"''''如果rs("jsjjc_dl")<>0则表明考生已经

endif''''参加过考试

else%>

<scriptlanguage=vbscript>

alert("您输入的信息不对,请重新输入!")''''如果表中没有查到该考生的记录,则显示提示窗口

setw2=open("default.asp")''''并且重新定位到登录页面,使考生重新输入信息。

</script>

<%endif%>

(二)试卷的生成:

试卷页面是采用ASP技术动态生成的。数据库中有一个字段,标记试卷代号,可以根据考生输入的试卷代号从数据库中选取相应记录,并把它按照一定的布局显示在页面上。从前面我们可以知道,选择题有一个表,先从选择题表中取出相应记录,同时动态生成表单域。然后从填空题表中选取符合条件的记录,本例以生成选择题为例说明试卷页面的生成。

<%''''……从数据库中取出符合条件的记录,并存放在rs_xzt中

<p><%i=1''''I为题号

dowhile(notrs_xzt.eof)%><p>

<%=i%>、<%=rs_xzt("timu")%><%rb_name="rb"&i%>

</p><p><inputtype="radio"value="a"name="<%=rb_name%>"><fontcolor="#3333CC">A</font>:<%=rs_xzt("xuanxa")%>&nbsp;&nbsp;&nbsp;

<inputtype="radio"name="<%=rb_name%>"value="b"><fontcolor="#3333CC">B</font>:<%=rs_xzt("xuanxb")%>&nbsp;&nbsp;&nbsp;<inputtype="radio"name="<%=rb_name%>"value="c"><fontcolor="#3333CC">C</font>:<%=rs_xzt("xuanxc")%>&nbsp;

&nbsp;&nbsp;<inputtype="radio"name="<%=rb_name%>"value="d"><fontcolor="#3333CC">D</font>:<%=rs_xzt("xuanxd")%></p>

<%i=i+1:rs_xzt.movenext:loop

rs_xzt.close%>

(三)答案的存放

先从试卷页面中收集选择题、填空题及问答题答案,并把它们分别保存在三个字符串中,然后利用SQL语句向数据库中存放,如果数据库已经有该考生的答案记录,则用UPDATE语句更新,否则用INSERT语句插入。程序略。

四、结束语

综上所述,基于Web技术的网络考试系统易用、灵活,也具有良好的安全性,由于采用了大型的数据库系统,所以试题、答案也具有较好的安全性,阅卷系统采用DELPHI实现,限于篇幅,这里没有对这部分作深入的剖析,用DELPHI实现的阅卷系统界面友好、功能完善,生成的统计图直观、正确,可以为教师的命题、教学提供有益的参考,当然,还可以在本系统的基础上进一步完善,如本方案的题目基本上是试卷库,而不是试题库,可以进一步做成试题库,在表中加两个字段,一个字段记录知识点,一个字段记录分值,在生成试卷页面时按照一定的规则、算法(知识点、分值)从表中取出相应的记录,这样考试系统就能再上一个台阶。

本文是笔者对网络考试系统研制工作的一个总结,读者朋友如对其有兴趣,笔者很愿意跟各位一起探讨,一起提高。

上一篇:旅游名山形成历史 下一篇:GTK图形编程