基于VB.NET的计算机等级考试系统的设计与实现

2014-02-25 05:37胡绿慧
电脑知识与技术 2014年1期

胡绿慧

摘要:介绍了四川省计算机二级考试上机考试系统的设计思路和实现方法,针对四川省计算机二级考试的特点和具体实际,实现了考生自动登录、考试过程管理、交卷过程管理中的人性化和自动化管理,从而大大提高考试公平性和阅卷的方便性。

关键词:VB.NET;SQL Server;计算机等级考试系统

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

二十一世纪是信息化时代,掌握现代计算机知识和应用能力是社会对当代大学生提出的更高要求,为了适应经济和社会发展的需要,提高非计算机专业学生的计算机应用水平,四川省教育委员会从1994年开始举行高等学校非计算机专业学生计算机应用水平等级考试,分一、二、三级水平考试,目前省内大部分高校都要求学生毕业前至少通过计算机二级考试,因此二级考试参考人数多,监考阅卷工作量大。省二级考试分为笔试和上机考试两个环节,传统上机考试采用的是软盘单机考试模式。这种考试模式存在诸多问题:考试管理为人工操作,工作量大,易出错;软盘质量和软驱故障常导致考生磁盘存盘和读盘错误,给考生带来不必要的损失;考生在考场可能相互交换软盘或拷贝软盘带出考场,考生作弊现象较为严重;考试时间不能严格控制,给考试带来人为的不公平性。在传统的上机考试方式已不能满足现代信息化的需要的基础上,开发了适合于四川省计算机二级考试上机考试系统。该系统以SQL Server作为后台数据库引擎,以VB.NET为前台开发工具,包括考务数据管理和考试过程管理功能。简单易用,方便了监考过程管理和机试阅卷管理。

1 系统总体设计

针对四川省计算机等级考试的实际,基于考试的安全性和系统的稳定性,考试环境是由一台考试管理服务器与多台考试客户机通过TCP/IP协议互连成的一个局域网。采用三层模式开发,使用微软Microsoft.NET中的VB.NET编写服务器端和客户端程序,通过ADO.NET技术与数据库进行访问,后端数据库采用SQLServer 2000实现,系统可移植性强。总体设计思路:考试客户机用一个准考证号码通过网络登录考试服务器,服务器对该号码是否允许考试进行确认(只有数据库中有该准考证号码且目前处于“未考”状态才允许登录)。如果允许登录,服务器发回一个允许考试指令,并将考试初始化文件发给学生机,同时服务器自动记录登录的详细信息,考试客户机接到从服务器返回的指令后,进行考试环境初始化,然后进入考试界面,客户机进入正常考试状态。此后,客户机与服务器互不通信,直到客户机请求交卷。考试结束时(到规定时间客户机自动交卷或者考生提前主动交卷),考试客户机向服务器提出交卷请求,服务器响应该请求。考试客户机将考试文件夹发给服务器。将收到的考试包分类保存,然后返回一个确认信息。这样就完成了一个基本考试过程。

2 系统功能模块

系统主要功能模块包括:考生登录模块,时间控制模块,交卷模块,考试过程管理模块。一、考生登录,向服务器请求考试,服务器根据考生录入的考号和姓名确定是否允许该考生考试;二、系统自动为考生创建一个以该考生的考号加姓名的文件夹,并将考试原始数据文件放到文件中,考生在考试过程中形成的所有文件均保存在此文件夹中;三、系统根据考生所选择的考试语言如VFP,自动进入相应环境;四、系统提供时间控制功能,时间从服务器端读取可以保证考试的安全性和公正性,考试剩余5分钟时提醒,当达到规定时间,系统强行停止答卷,自动存盘退出;考生若提前结束考试,可点击“交卷”按扭,并对交卷是否成功给出提示。考生成功交卷,则删除本机该考生的考试文件夹,有效防止考生作弊;五、交卷时,服务器根据考生在登录时选择的考试语言和题套号将试卷分考试评语和题套号保存在相应文件夹中,以方便教师阅卷。

3 系统核心功能模块

3.1 强大的系统登录模块

考生登录、向服务器请求考试。首先考生进入考试系统后,在编辑框里输入自己的姓名、准考证号、选择考试语言和试题题套号后,服务器进行身份验证,如果不是本考场考生,系统将提示出错信息,如果是本考场考生则进入考生须知界面,系统记录下考生提供的基本信息,并为考生创建一个文件夹,同时根据考生选择的考试语言从服务器端对应数据库中提取考试原始文件到本机文件夹。当考生仔细阅读考生须知后,单击“开始考试”按钮,系统根据考生所选择的考试语言自动打开相应的考试环境,同时计时器开始计时。

实现该功能的VB.NET核心代码如下:

path1 = "c:\" & Trim(TextBox1.Text) & Trim(TextBox2.Text) '考生文件夹的创建路径

path2 = "\\server\test" '服务器考卷路径

If Len(Trim(TextBox1.Text)) <> 10 Then

MsgBox("请注意,考生考号为10位,考生姓名不能为空!")

TextBox1.SelectAll()

TextBox1.SelectionLength = Len(TextBox1.Text)

Else

Try

System.IO.Directory.CreateDirectory(path1) '創建考生文件夹

newfrm.zhonglei = ComboBox1.SelectedIndex '获取考试语言的种类

newfrm.titaohao = ComboBox2.SelectedIndex '

'从服务器拷贝相应原始数据到考生文件夹

If newfrm.zhonglei = 0 Then

fso.CopyFolder(path2 & "\vf", path1 & "\")

ElseIf newfrm.zhonglei = 1 Then

fso.CopyFolder(path2 & "\c", path1 & "\")

ElseIf newfrm.zhonglei = 2 Then

fso.CopyFolder(path2 & "\vb", path1 & "\")

End If

newfrm.Show()

newfrm.str1 = TextBox1.Text

newfrm.str2 = TextBox2.Text

path1 = "c:\" & newfrm.str1 & newfrm.str2

Me.Close()

Catch ex As Exception

MsgBox("连接服务器失败,请重试!")

End Try

End If

End Sub

3.2 严格的考试过程控制

系统根据考生选择的不同考试语言,系统自动启动相应的编程环境。省二级考试语言主要有VB语言、C语言、VFP数据库,考生根据自己报名时选择的科目任选一门,系统将自动启动相应的考试环境,并且默认路径就是考生文件夹,以防考生做题时不能准确保存文件到考生文件夹。考试过程中,界面提示考试剩余时间,考试时间到,系统强行停止答卷,自动存盘退出;计时器核心代码如下:

t = t - 1 '考试时间计时器

m = Int(t / 60)

s = t Mod 60

mform.Text = "离考试结束还剩:" & m & "分" & s & "秒"

If (t = 0) Then

tmrtest.Enabled = False

mform.Close()

' Timer1.Enabled = False

If zhonglei = 0 Then

myProcesses = Process.GetProcessesByName("vfp6")

For Each myProcess In myProcesses

myProcess.Kill()

Next

ElseIf ……根据考生考试不同语言结束相应应用程序,下同(略)

End If

Timer1.Enabled = True

jieshu.Enabled = False

t1 = 10 '设置延迟时间

MsgBox("考试时间到,请考生离开考场!")

End If

End Sub

3.3 准确的交卷控制

在考试做题界面顶端,显示考试剩余时间,考生可以根据时间提示决定自己的答题进度,做完题考生可以提前交卷,通过点击考试界面上的交卷按钮,系统将提示考生是否确认交卷,以防误交卷导致考试不及格。当时间到了考生还未主动交卷,系统将自动为考生交卷,这样可以避免传统机考时监考老师不停的提醒考生交卷离开座位。交卷时系统将考生文件夹上传到服务器,并删除本地考生文件夹,清除本机考生做过的信息。为了防止考生多次交卷,系统将先验证服务器上是否有考生交过卷的信息,如果已交过一次卷,在考生二次登录交卷时将提醒他已交过卷不能再交卷。实现该功能的核心代码如下:

If MsgBox("你确定要交卷吗?", MsgBoxStyle.OKCancel) = MsgBoxResult.OK Then

If zhonglei = 0 Then

myProcesses = Process.GetProcessesByName("vfp6")

For Each myProcess In myProcesses

myProcess.Kill()

Next

ElseIf……根據考生考试不同语言结束相应应用程序,下同(略)

……

End If

mform.Close()

'MsgBox("交卷成功,请考生离开考场!")

End If

End Sub

'时间到,交卷后,将考试结果复制到考生文件夹下面

If t1 = 0 Then

If (zhonglei = 0) And (titaohao = 0) And Not (fso.FolderExists("\\server\shijuan\vf\1\" & str1 & str2 & "\")) Then

fso.CopyFolder("c:\" & str1 & str2, "\\server\shijuan\vf\1\" & str1 & str2)

If fso.FolderExists("\\server\shijuan\vf\1\" & str1 & str2 & "\") Then

fso.DeleteFolder("c:\" & str1 & str2) '如果成功复制,删除本地磁盘上的文件夹

MsgBox("交卷成功,请考生离开考场!")

End If

……根据考生考试不同语言结束相应应用程序,下同(略)

Else

MsgBox("你已交过一次卷了,不能再次交卷")

End If

Me.Close()

End If

4 结束语

本系统主要针对四川省每年两次的计算机二级考试上机考试设计开发,系统功能强大,可操作性强,信息化程度高。系统实施后对上机考试带来极大的方便,有效地防止学生作弊,能够更加准确地限定考试时间,让考试更公平,大大地节省考试成本,更科学,信息化程度更高。

参考文献:

[1] 王灿辉,俞建家.用三层模式开发计算机等级考试系统[J].福州大学学报,2001(3):28-30.

[2] 李琦.基于C/S模式的计算机等级考试上机考试系统[J].重庆大学学报,2004(7):143-145.

[3] 王鹰,赵跃龙,刘中宇.基于C/S模式的计算机等级考试系统的设计[J].计算机与现代化,2006(2):70-72.

[4] 许洋,李胜.基于VB的计算机二级考试练习系统设计[J].徐州师范大学学报,2006(3):27-29.