1 概述
系统充分利用网络进行无纸化考试, 并能对学生的考试成绩进行有效地管理, 可以有效地节省考试成本; 能使教师从繁重考务工作中解脱出来, 提高阅卷效率; 增加考试的公正性。
2 编程思路
系统采用 ASP 和 Dreamweaver CS4 进行开发和设计, 以Access2003 做为后台数据库 。 系统的登录分为考生和管理员 ,考生操作前台, 可以在线考试, 查询某门课的考试成绩; 管理员负责后台, 主要包括科目管理、 试题管理、 用户管理、成绩管理、 自我测试等。
3 数据库
系统涉及到的 data 数据库包含多个表, 主要的表结构如表 1 所示。
说明: 试题表question用于存放录入的试题和试题答案, 也可以用几个表分别存放单选题、 多选题和判断题。 若要按章节进行练习和测试, 则可以添加章节字段用来存放章节信息。
表 2 说明: test 表中的信息由管理员生成, 管理员生成一份试卷对应唯一的试卷编号, 一门课程可以生成多份试卷,它们的课程名称是一样的, 但是它们的试卷编号不一样。
4 程序设计
4.1 登录模块
考生和管理员均需要从登录窗口进入相应的操作界面,主要通过函数 instr (gly," A") 来判断是否以管理员身份登录。
为了避免几位同学使用同一考号进行考试, 保证考试信息的公正性, 采用了 Application 变量来实时监控在线考试的考生信息, 考生进入系统, 则将其考号的信息加入变量队列, 由checkusr.asp 页面来实现 , 退出系统时 , 则将考号的信息从变量队列中删除, 由登录的主页面 index.asp 实现, 主要通过增加一个标志变量 session (" bz") 完成考号信息从 Application变量中删除。 具体实现的主要代码如下:
' 考生唯一的话,将考号信息加入队列
if flag=0 then
Application.Lock ( )
Application ( " ks" ) =Application ( " ks" ) + " ," +trim
(kh) ‘kh 为考号
Application.UnLock ( )
End if
' 退出系统时,将考号信息从队列中删除,删除时要分
' 多种情况。
if (session (" kh") <>"" and session (" bz") <>0)
then
kh=session (" kh")
s=Application (" ks")
a=split (s," ,")
flag=1
…
if (n>2 and k=n) then
nn=len (a (n))
nz=len (s)
ap=mid (s,1,nz-nn-1)
end if
if (n>2 and k<>n and k<>0) then
nk=len (a (k))
j=0
nz1=0
nz=len (s)
for j=0 to k-1
nz1=nz1+len (a (j))
next
nz1=nz1+k-1
nz2=nz-nz1-nk-1
ap1=mid (s,1,nz1)
ap2=mid (s,nz1+nk+2,nz2)
ap=ap1+ap2
end if
Application (" ks") =ap
end if
4.2 管理员操作模块
4.2.1 实现考生信息的批量导入
将考生的信息批量导入的思路是先下载格式文件, 再将考生信息按照指定的格式输入, 然后将此数据导入数库表 us-er_info 中 , 实现考生批量的导入文件 piliangdr.asp 中 , 关键代码如下:
<%
set conn=server.createobject (" adodb.connection")
provider=" provider=microsoft.jet.oledb.4.0;"
DBPath = " data source = " & Server.MapPath ( " ../
database/data.mdb")
conn.Open provider & DBPath
sql=" select * from User_info"
set rs=server.createobject (" adodb.recordset")
rs.open sql,conn,3,3
Set Conn1 = Server.CreateObject ( " ADODB.Connec-
tion")
Driver1 = " Driver = { Microsoft Excel Driver ( *.
xls)} ;"
Path1 = " DBQ=" &Server.MapPath (" piliang.xls")
Conn1.Open Driver1 &Path1
' 注意 表名一定要以下边这种格试 " [表名$]" 书写
Sql=" Select * From [Sheet1$]"
Set Rs1=Conn1.Execute (Sql)
IF Rs1.Eof And Rs1.Bof Then
response.write " <script language=javascript>alert (' 没有找到数
据 ') ;
history.go (-1) ;</script>"
Else
Rs1.Movefirst
do
rs.addnew
rs (" account") =Rs1 (" bh")
rs (" username") =Rs1 (" xm")
Rs1.MoveNext
Loop while NOT Rs1.Eof
Rs1.Close
Set Rs1=nothing
Conn1.Close
Set Conn1=Nothing
response.write " 数据导成功"
End IF
%>
4.2.2 同时删除多个考生信息
实现考生信息删除的文件 del_user.asp, 其中的关键代码如下:
dim i,j
idz=request (" idz") ' 获取多个考生的信息
idz=split (idz," ,") ' 将考生的信息放至一个数组中
i=ubound (idz)
k=0
for j=0 to i
sql=" select * from User_info where id=" & cint (idz (j))
set rs=server.createobject (" adodb.recordset")
rs.open sql,conn,3,2
if not rs.eof then
rs.delete
rs.update
rs.close
end if
next
response.redirect " User_admin.asp"
4.2.3 试题查看
试题的查询和查询结果的页面放在一起, 在查询结果中进行翻页时容易产生查询要求和查询结果不一致的情况。 需要在查询页面中加入代码<% session (" num") =0 %>, 在查询结果页面中加入下列的代码:
if session (" num") =0 then
…
if session (" typeadd") =" --题型--" or session
(" typeadd") ="" then
session (" typeadd") =" %"
end if
if session (" mykey") = " 关键字 " or trim (ses-
sion (" mykey")) ="" then
session (" mykey") =" %"
end if
end if
4.3 考生操作模块
4.3.1 防止考生多次提交试卷
考生操作中, 为防止学生多次提交试卷, 避免考试成绩混乱的现象发生, 需要将浏览器中的 “后退” 按钮禁用, 方法如下:
4.3.1.1 禁止缓存
禁止页面缓存, 在 paper.asp 页面文件的开头加入下列代码:
<meta http-equiv=" Expires" CONTENT=" 0" >
<meta http-equiv=" Cache-Control" CONTENT=" no-cache" >
<meta http-equiv=" Pragma" CONTENT=" no-cache"
说明: 只有在使用安全连接时 “Pragma: no-cache” 才防止浏览器缓存页面。
4.3.1.2 用 location.replace 实现
<A HREF=" PageName.htm" onclick=" javascript:loca-。
tion.replace (this.href) ;。
event.returnValue=false; " >。
说明: 用新页面的 URL 替换当前的历史纪录, 这样浏览历史记录中就只有一个页面, 后退按钮永远不会变为可用。
4.3.2 在线考试
考生通过管理员生成的账号和密码登录, 即可选择管理员生成的试卷在规定的时间段内进行考试, 若超过规定的时间段, 则不能进行考试, 负责实现在线考试的代码见 paper.asp 页面。
5 程序运行
5.1 运行环境配置
系统的运行环境 IIS+Acess2000 (或 2003)。 互联网上可以申请一个虚拟主机和一个域名, 用户可以在互联上使用; 在局域网中安装一个 WWW 服务器 (Windows Server2003 操作系统), 和 DNS 服务器, 在局域网中实现域名的访问。
5.2 程序维护
系统可以采用 DreamWeaver CS4 进行代码的修改, 利用FTP 上传软件可以将程序实时上传至服务器或虚拟机上。
6 结语
系统移植性好, 考生信息能批量导入, 学生可以自我测试。 目前已应用于学校部分专业的考核测试, 取得较好的效果, 但在试卷的生成策略方面、 考生试卷的保存及在线打印需要进一步完善和提高。
参考文献
[1] 吴明辉, 胡煜, 窦亮. ASP 网络办公及商务应用系统开发实例导航. 北京: 人民邮电出版社, 2003.
[2] 明日科技, 盖天宇, 孙明丽, 邹天思. ASP 程序开发范例宝典. 北京: 人民邮电出版社, 2006.
[3] 求是科技. ASP 信息管理系统开发实例导. 北京: 人民邮电出版社, 2005.