基于ASP的在线考试系统开发

2015-01-20 05:18申云成
电脑知识与技术 2014年36期

摘要:随着计算机网络的普及应用,对在线考试系统的需求与日俱增。利用 ASP (Active Server Pages)和ADO(ActiveX Database Object)技术,采用 B / S模式,开发出了在线考试系统。基于ASP技术的在线考试系统简单易行,具有很大的发展前景和开发价值,不仅可以大大减轻教师的工作量,而且更显其灵活性和科学性。

关键词:在线考试系统;ASP;ADO;B/S模式

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)36-8661-03

随着计算机技术和通信技术的迅速发展,人类进入了以网络为中心的信息时代,因而人们的生活方式、思维方式、工作方式、以及教育方式都将随之而改变。网络与教育的结合,将彻底改变传统的教育模式。传统的考试方式需要花费很多时间去出试卷,而且试卷都是同一份,并要花费很多时间去评阅试卷。基于网络的在线考试可以实现在线随机组卷,在线考试,在线评分,大大节省了考试费用,提高了考试的效率。大部分在线考试系统不能实现随机抽题,也不具备主观题考试,基本上只有客观题。基于此,该文旨在论述通过在ASP平台上搭建一个能实现随机抽题,并能实现主观题和客观题考试的在线考试系统,方便老师在线组卷,学生在线考试,系统在线评客观题的分,然后由老师在线评主观题的分,总分由客观地与主观题两个部分加起来。

1 需求分析

通过对目前一些在线考试系统的调查和分析,大部分在线考试系统存在这样的问题:

1) 只能从后台录入试题库,不能导入试题库。

2) 只能考客观题,不涉及主观题;

3) 只能按顺序抽题,不能随机抽题;

4) 不能实现二次登录,死机重启后考生试卷信息丢失。

针对以上问题,本系统旨在对以前的考试系统功能进行改进,使在线考试系统根据方便和有效,本考试系统应具备以下功能:

账户管理功能。本系统的账户分为三类,管理员,教师和学生。管理员具有最高权限,能够创建教师账户,并能导入学生信息。教师账户能够对某门考试课程创建考试数据库,包括组卷,设定考试时间,进行考试监控,进行在线评阅主观题。学生账户能够根据自己的账户密码登陆系统,并修改个人信息,进行在线考试,并能查阅考试成绩。

随机选题功能。为了防止考生作弊,保证考试的公平性,在线考试考试系统应该具备随机抽题的功能,让每个考生抽到的试题不一样,防止考试相互偷看和作弊。

二次登录功能。为了防止考试过程中突然断电或机器故障导致丢失考试试卷信息,必须将考生试卷间隔几秒自动保存,万一出现异常或故障,允许考试二次登录,恢复考试试卷信息,继续做题。

在线评分功能。考试时间到,系统自动交卷后,或考试自己提交试卷后系统自动评出客观题的分数,主观题的考试答案和参考答案都在系统后台自动生成,评卷教师登录系统后可以同时看到考生答案和参考答案,评卷教师可以在后台给出主观题分数,系统自动把主观题分数与客观题分数相加。

2 系统设计

本考试系统的设计旨在是利用网络环境实现无纸化在线考试,为学生提供高效、方便、快捷的无纸化在线考试。结合当前实际情况,基于简单、够用的原则,本系统采用中小型网站系统比较常用的开发平台ASP(Active Server Pages,动态网页)。ASP 是 基 于 DCOM Distributed Component Object Model,分布式组件对象模型)构架,所以程序构架可以在本地或网络上以分布方式执行。微软公司提供的web服务器组件IIS,能将脚本式编程语言直接嵌入 HTML 语言中,能够利用它建立和运行动态的、交互的、高效的网络服务器的应用程序。由于 HTTP浏览器本身具有跨平台的优势,是一种极好的客户端操作平台,因此可以很好地构建B/S(浏览器/服务器)模式。

在ASP动态网页技术平台上,应用程序是在服务器端运行而不是在客户端运行。当用户访问一个 ASP 页面时,首先 WEB 服务器调用 ASP.dll 文件,对 ASP 文件中的所有 Script脚本语言进行解释执行,生成标准的HTML文件,再把这些 HTML文件传送到客户端。如图 1 所示。这样,用户只要通过客户端浏览器,就可以通过 ASP 页面与服务器端进行交互。

图 1 ASP动态网页执行过程

ASP 通过ADO接口组件能方便地地对数据库进行访问。 ADO是Microsoft软件所支持的数据进行操作的最有效、功能最强大的方法之一。它是一种功能强大的数据访问编程模式,能把大部分数据源可编程的属性直接扩展到 Active Server 上。

可以通过OLE DB对应用程序的数据源进行访问。OLE DB允许访问所有类型和大小的数据资源,不仅仅是数据库。而 ADO则是连接应用程序与OLE DB的桥梁。可以使用 ADO 编写简洁和可扩展的脚本,连接到与 OLE DB 兼容的数据源,OLE DB 是一个系统级的编程接口,它提供一套标准的 COM 接口,用来展示数据库管理系统的功能。通过ADO 对象模型,能够使用 VBScript 或 Jscript 等脚本语言访问这些接口,并将数据库功能添加到 WEB 应用程序中。

3 系统结构

图2 在线考试系统系统功能结构图

本在线考试系统(见图2) 由三个功能模块组成:管理员、教师和考生。先由管理员创建教师信息,创建班级和导入考生信息,创建考试数据库,再由教师编辑考试信息,包括安排考试时间及试题组卷,最后考生根据安排的考试时间进入考试,考试完毕后提交试卷或考试时间到后自动交卷,生成客观题分数,再由教师评定主观题分数,系统自动生成总分。

管理员模块的主要功能:进行用户管理,创建和删除用户,并给不同的用户设置不同的操作权限,保障系统的安全;进行数据库管理,包括新建题库、复制题库、删除题库、选择试卷批改成绩库,删除成绩库;进行教学班级管理,包括增加班级,修改班级信息,删除班级;进行考生信息管理,包括增加考生信息,修改考生密码,修改考生考试状态等。

教师模块的主要功能:编辑考试信息,包括设置考试课程,考试学期,考试类型,考试班级,考试题库,出题方式,考试时间及题型与分值设置;考试结束后在线批改主观试题。

考生模块的主要功能:维护个人信息,按时参加考试和查看考试结果。

4 系统实现

本系统前台涉及二十几个页面,后台涉及四十几个页面,包含一个ontest.mdb主数据库,一个学生数据库student.mdb,两个模板数据emptycour.mdb 和emptyscore.mdb以及每门课程的题库数据库和考试数据库。

由于涉及页面及代码太多,下面仅以最具代表性的几个页面的关键代码做说明。

由于数据库较多,下面只显示连接ontest.mdb数据库的代码,代码如下所示:

<%

Dim test_cnn '考试系统连接

set test_cnn = server.CreateObject("adodb.connection") ‘创建连接对象

curPath=ucase(server.mappath("."))

if right(curPath,5)="ADMIN" then 'ADMIN 为在线学习平台管理程序所在文件夹

test_cnn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.MapPath("..") & "\ontest.mdb" ‘打开数据库文件

else

test_cnn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.MapPath(".") & "\ontest.mdb"

end if

%>

本系统能实现考指定题,顺序出题,随机出题,而最具代表性的就是能实现随机出题,保证每个考生抽到的题不一样,保证考试的公平公正,下面给出随机出题页面的关键代码。

下面这个yz(x,n)函数的功能就是产生随机数。通过这个函数就可以实现随机产生一组不同的整数,这样我们在抽取试题信息是就是根据这个整数来排序,排序整数不一样,从题库的试题表里面抽出来的记录号也就不一样,这样就能实现不同考生的题目是不一样的。

<%

function yz(x,n) 'x为某范围数,n为产生的随机整数个数,此功能为随机出题时使用

dim y(10000),i,j,flag,t

randomize

for i=0 to n-1

do

flag=false

y(i)=fix(rnd*x)+1

for j=0 to i-1

if y(j)=y(i) then

flag=true

exit for

end if

next

loop while (flag=true)

next

for i=0 to n-1

t=y(i)

k=i

for j=i+1 to n-1

if y(j)

t=y(j)

k=j

end if

next

t=y(k)

y(k)=y(i)

y(i)=t

next

yz=y

end function

%>

每种题型都可以随机抽取出不同的题号,下面具体以其中的判断题为例来进行说明,具体代码如下:

<%

if method=2 then ‘method=2,指的是随机抽题

qnum0=0 ‘设置判断题题目数初始值为0

sql0="select * from subject where type=0 order by type,id " & va ‘type=0,指的是判断题,从表subject表中根据类型和id号排序

set rs0=courCnn.execute(sql0)

if rs0.eof then response.Redirect("index.asp")

while not rs0.eof ‘表里的记录没有结束,继续循环

qnum0=qnum0+1 ‘记录数累加

rs0.movenext

wend

rs0.movefirst

if vqnum0>qnum0 or vqnum0<0 then vqnum0=qnum0

if isarray(session("slarr0")) then

larr0=session("slarr0") '防止用户刷新后改变试题

else

larr0=yz(qnum0,vqnum0) ‘调用前面提到的yz(x,n)函数产生随机数

session("slarr0")=larr0 '登记到session中

end if

else

vqnum0=-1

end if

%>

5 结束语

本系统可以实现随机抽题,题型包括客观题和主观题,客观题包括判断题、单选题、多选题,主观题包括填空题、简单题。客观题由系统根据考生答案与标准答案比对进行自动评分,主观题由教师根据考生答案和标准答案在系统里评分,最后由系统算出总分,这是本系统与大部分系统不同的地方,因为很多系统只包括客观题,也只能顺序出题。本系统也存在不足的地方需要进一步改进,比如因为使用的是小型数据库Access,考生的同时登录人数就会受到限制,还有就是本系统只是在线考试,没有提供在线练习的功能,这些都是以后需要改进的地方。

参考文献:

[1] 吴教育.Web开发技术——ASP[M].北京:清华大学出版社,2009.

[2] 黄玉春.ASP动态网页设计[M].2版.北京:清华大学出版社,2012.

[3] 吴幸,赵声妹.应用ASP和ADO实现计算机远程在线考试系统[J].南京邮电学院学报,2005(4):61-64.

[4] 董丹丹,邵雪辉.基于ASP技术的在线考试系统的开发与实现[J].河北北方学院学报,2009(2):60-64.

管理员模块的主要功能:进行用户管理,创建和删除用户,并给不同的用户设置不同的操作权限,保障系统的安全;进行数据库管理,包括新建题库、复制题库、删除题库、选择试卷批改成绩库,删除成绩库;进行教学班级管理,包括增加班级,修改班级信息,删除班级;进行考生信息管理,包括增加考生信息,修改考生密码,修改考生考试状态等。

教师模块的主要功能:编辑考试信息,包括设置考试课程,考试学期,考试类型,考试班级,考试题库,出题方式,考试时间及题型与分值设置;考试结束后在线批改主观试题。

考生模块的主要功能:维护个人信息,按时参加考试和查看考试结果。

4 系统实现

本系统前台涉及二十几个页面,后台涉及四十几个页面,包含一个ontest.mdb主数据库,一个学生数据库student.mdb,两个模板数据emptycour.mdb 和emptyscore.mdb以及每门课程的题库数据库和考试数据库。

由于涉及页面及代码太多,下面仅以最具代表性的几个页面的关键代码做说明。

由于数据库较多,下面只显示连接ontest.mdb数据库的代码,代码如下所示:

<%

Dim test_cnn '考试系统连接

set test_cnn = server.CreateObject("adodb.connection") ‘创建连接对象

curPath=ucase(server.mappath("."))

if right(curPath,5)="ADMIN" then 'ADMIN 为在线学习平台管理程序所在文件夹

test_cnn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.MapPath("..") & "\ontest.mdb" ‘打开数据库文件

else

test_cnn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.MapPath(".") & "\ontest.mdb"

end if

%>

本系统能实现考指定题,顺序出题,随机出题,而最具代表性的就是能实现随机出题,保证每个考生抽到的题不一样,保证考试的公平公正,下面给出随机出题页面的关键代码。

下面这个yz(x,n)函数的功能就是产生随机数。通过这个函数就可以实现随机产生一组不同的整数,这样我们在抽取试题信息是就是根据这个整数来排序,排序整数不一样,从题库的试题表里面抽出来的记录号也就不一样,这样就能实现不同考生的题目是不一样的。

<%

function yz(x,n) 'x为某范围数,n为产生的随机整数个数,此功能为随机出题时使用

dim y(10000),i,j,flag,t

randomize

for i=0 to n-1

do

flag=false

y(i)=fix(rnd*x)+1

for j=0 to i-1

if y(j)=y(i) then

flag=true

exit for

end if

next

loop while (flag=true)

next

for i=0 to n-1

t=y(i)

k=i

for j=i+1 to n-1

if y(j)

t=y(j)

k=j

end if

next

t=y(k)

y(k)=y(i)

y(i)=t

next

yz=y

end function

%>

每种题型都可以随机抽取出不同的题号,下面具体以其中的判断题为例来进行说明,具体代码如下:

<%

if method=2 then ‘method=2,指的是随机抽题

qnum0=0 ‘设置判断题题目数初始值为0

sql0="select * from subject where type=0 order by type,id " & va ‘type=0,指的是判断题,从表subject表中根据类型和id号排序

set rs0=courCnn.execute(sql0)

if rs0.eof then response.Redirect("index.asp")

while not rs0.eof ‘表里的记录没有结束,继续循环

qnum0=qnum0+1 ‘记录数累加

rs0.movenext

wend

rs0.movefirst

if vqnum0>qnum0 or vqnum0<0 then vqnum0=qnum0

if isarray(session("slarr0")) then

larr0=session("slarr0") '防止用户刷新后改变试题

else

larr0=yz(qnum0,vqnum0) ‘调用前面提到的yz(x,n)函数产生随机数

session("slarr0")=larr0 '登记到session中

end if

else

vqnum0=-1

end if

%>

5 结束语

本系统可以实现随机抽题,题型包括客观题和主观题,客观题包括判断题、单选题、多选题,主观题包括填空题、简单题。客观题由系统根据考生答案与标准答案比对进行自动评分,主观题由教师根据考生答案和标准答案在系统里评分,最后由系统算出总分,这是本系统与大部分系统不同的地方,因为很多系统只包括客观题,也只能顺序出题。本系统也存在不足的地方需要进一步改进,比如因为使用的是小型数据库Access,考生的同时登录人数就会受到限制,还有就是本系统只是在线考试,没有提供在线练习的功能,这些都是以后需要改进的地方。

参考文献:

[1] 吴教育.Web开发技术——ASP[M].北京:清华大学出版社,2009.

[2] 黄玉春.ASP动态网页设计[M].2版.北京:清华大学出版社,2012.

[3] 吴幸,赵声妹.应用ASP和ADO实现计算机远程在线考试系统[J].南京邮电学院学报,2005(4):61-64.

[4] 董丹丹,邵雪辉.基于ASP技术的在线考试系统的开发与实现[J].河北北方学院学报,2009(2):60-64.

管理员模块的主要功能:进行用户管理,创建和删除用户,并给不同的用户设置不同的操作权限,保障系统的安全;进行数据库管理,包括新建题库、复制题库、删除题库、选择试卷批改成绩库,删除成绩库;进行教学班级管理,包括增加班级,修改班级信息,删除班级;进行考生信息管理,包括增加考生信息,修改考生密码,修改考生考试状态等。

教师模块的主要功能:编辑考试信息,包括设置考试课程,考试学期,考试类型,考试班级,考试题库,出题方式,考试时间及题型与分值设置;考试结束后在线批改主观试题。

考生模块的主要功能:维护个人信息,按时参加考试和查看考试结果。

4 系统实现

本系统前台涉及二十几个页面,后台涉及四十几个页面,包含一个ontest.mdb主数据库,一个学生数据库student.mdb,两个模板数据emptycour.mdb 和emptyscore.mdb以及每门课程的题库数据库和考试数据库。

由于涉及页面及代码太多,下面仅以最具代表性的几个页面的关键代码做说明。

由于数据库较多,下面只显示连接ontest.mdb数据库的代码,代码如下所示:

<%

Dim test_cnn '考试系统连接

set test_cnn = server.CreateObject("adodb.connection") ‘创建连接对象

curPath=ucase(server.mappath("."))

if right(curPath,5)="ADMIN" then 'ADMIN 为在线学习平台管理程序所在文件夹

test_cnn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.MapPath("..") & "\ontest.mdb" ‘打开数据库文件

else

test_cnn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.MapPath(".") & "\ontest.mdb"

end if

%>

本系统能实现考指定题,顺序出题,随机出题,而最具代表性的就是能实现随机出题,保证每个考生抽到的题不一样,保证考试的公平公正,下面给出随机出题页面的关键代码。

下面这个yz(x,n)函数的功能就是产生随机数。通过这个函数就可以实现随机产生一组不同的整数,这样我们在抽取试题信息是就是根据这个整数来排序,排序整数不一样,从题库的试题表里面抽出来的记录号也就不一样,这样就能实现不同考生的题目是不一样的。

<%

function yz(x,n) 'x为某范围数,n为产生的随机整数个数,此功能为随机出题时使用

dim y(10000),i,j,flag,t

randomize

for i=0 to n-1

do

flag=false

y(i)=fix(rnd*x)+1

for j=0 to i-1

if y(j)=y(i) then

flag=true

exit for

end if

next

loop while (flag=true)

next

for i=0 to n-1

t=y(i)

k=i

for j=i+1 to n-1

if y(j)

t=y(j)

k=j

end if

next

t=y(k)

y(k)=y(i)

y(i)=t

next

yz=y

end function

%>

每种题型都可以随机抽取出不同的题号,下面具体以其中的判断题为例来进行说明,具体代码如下:

<%

if method=2 then ‘method=2,指的是随机抽题

qnum0=0 ‘设置判断题题目数初始值为0

sql0="select * from subject where type=0 order by type,id " & va ‘type=0,指的是判断题,从表subject表中根据类型和id号排序

set rs0=courCnn.execute(sql0)

if rs0.eof then response.Redirect("index.asp")

while not rs0.eof ‘表里的记录没有结束,继续循环

qnum0=qnum0+1 ‘记录数累加

rs0.movenext

wend

rs0.movefirst

if vqnum0>qnum0 or vqnum0<0 then vqnum0=qnum0

if isarray(session("slarr0")) then

larr0=session("slarr0") '防止用户刷新后改变试题

else

larr0=yz(qnum0,vqnum0) ‘调用前面提到的yz(x,n)函数产生随机数

session("slarr0")=larr0 '登记到session中

end if

else

vqnum0=-1

end if

%>

5 结束语

本系统可以实现随机抽题,题型包括客观题和主观题,客观题包括判断题、单选题、多选题,主观题包括填空题、简单题。客观题由系统根据考生答案与标准答案比对进行自动评分,主观题由教师根据考生答案和标准答案在系统里评分,最后由系统算出总分,这是本系统与大部分系统不同的地方,因为很多系统只包括客观题,也只能顺序出题。本系统也存在不足的地方需要进一步改进,比如因为使用的是小型数据库Access,考生的同时登录人数就会受到限制,还有就是本系统只是在线考试,没有提供在线练习的功能,这些都是以后需要改进的地方。

参考文献:

[1] 吴教育.Web开发技术——ASP[M].北京:清华大学出版社,2009.

[2] 黄玉春.ASP动态网页设计[M].2版.北京:清华大学出版社,2012.

[3] 吴幸,赵声妹.应用ASP和ADO实现计算机远程在线考试系统[J].南京邮电学院学报,2005(4):61-64.

[4] 董丹丹,邵雪辉.基于ASP技术的在线考试系统的开发与实现[J].河北北方学院学报,2009(2):60-64.