基于Excel VBA的计算机理论知识无纸化考试系统设计
基于excel vba的计算机理论知识无纸化考试系统设计
引言
在当今飞速发展的信息化社会中,计算机已在各行各业被广泛应用,计算机应用能力已成为现代人必须具备的一种能力,所以各级学校都开设了计算机基础的公共课程。为了加强学生对计算机知识掌握,在日常教学过程中对学生的测试是必不可少的。而对于计算机理论知识,传统的做法是用纸质试卷测试,但教本文由论文联盟收集整理师阅卷的工作量较大,为减轻教师的工作量,便用excel vba设计了一个无纸化的计算机理论知识自动抽题、自动阅卷的考试系统。
1 系统实现的关键技术
excel是microsoft office 家族成员,它应用非常广泛,具有方便的表格式数据综合管理、强大计算统计分析和图表功能。此外,excel还提供了一种的宏语言visual basic for application(简称vba),它是一种完全面向对象体系结构的编程语言,它又一种寄生于应用程序不能单独存在的编程语言。由于其在开发方面的易用性和强大的功能,为广大用户提供了一个新的、更高层次的二次开发平台,它不但可以设计出个性化的程序,也可以使程序具有自动功能,减少大量重复繁琐的操作,提高工作效率。
2 系统的实现
2.1 系统功能模块
该系统主要有4个功能模块:
(1)登录模块。学生和教师分别不同身份登录。学生只能进入考试界面,教师可以取得全部权限,可以查看评分情况,并可以修改题库内容和学生信息和基本设置。wwW.11665.CoM
(2)自动抽题。该模块从题库中随机抽取规定数量的题传送到“测试题”表中,并将所抽取题目的标准答案传送到评分表。
(3)系统定时。抽题结束后,系统将在考试系统的状态栏中显示倒计时。并在规定的考试时间到达时,系统自动关闭并自动保存学生的所做题目。
(4)自动判分。学生所选择的答案传送到“评分表”中和标准答案对比,自动判断对错并给出分数。
2.2 系统功能的实现
新建一个excel工作薄,本系统共有4个工作表,分别命名为“测试题”、“评分表”、“题库”、“学生信息表”。在“题库”表将所需的题目输入其中,“题库”表的a列每隔4行填充题目序号1、2、3、4……,对应序号这行的b列的单元格输入题干,题干下方4行,每行输入相应的4个备选答案,序号对应的c列输入对应题目的标准答案。
2.2.1 登录模块设计
登录模块设计关键主要考虑系统的安全性,在打开考试系统后,“评分表”、“题库”,“学生信息表”这3个表将会自动隐藏,只有空的“测试题”表出现,而被隐藏的表无法用“窗口”菜单中“取消隐藏命令”显示。同时将会弹出一个“选择登录”的对话框,此对话框分别有学生登录、教师登录和退出3个按钮,学生和教师以不同路径登录系统,取得不同的权限。在此界面下退出必须按“退出”按钮退出,而无法选择标题栏上的红色“关闭”按钮退出。
(1)学生登录界面。在点击“学生登录”按钮后出现“学生登录”对话框,此对话框中的三个组合框中分别是选择相应的班级、学号和姓名(“班级”、“学号”和“姓名”这3个组合框的数据源事先将学生的各种信息输入到“学生信息表”中的a列、c列和d列依次存放)。为了防止学生关闭系统后再次进入系统修改答案,在系统初始化时确定“评分表”中是否有内容,如有学生信息,学生再次登录系统时,“学生登录”对话框中三个组合框将和“确定”这几个控件将不可用。
(2)老师登录界面。在点击“选择登录”对话框中的“教师登录”按钮后将出现“教师登录”对话框,教师需输入密码才能进入系统(在文本框中输入的密码需与“学生信息表”中j1单元格内容一致的即可登录。),进入系统后可以看到“测试题”表和“评分表”(“评分表”从隐藏变为可见),而在“评分表”表中用控件工具箱增加两个按钮。分别是“显示题库”和“显示学生信息表”按钮。用于显示已隐藏的两个表,便于修改表中的信息。
2.2.2 自动抽题模块设计
在点击“学生登录”对话框的“确定”按钮后就会进入考试界面,自动抽题形成试卷,所抽之题的标准答案也将依次赋给“评分表”的c列。同时,“学生登录”组合框中信息将会被赋给“评分表”的g1、g2、g3单元格。其代码如下 :
private sub combton_xs_ok_click()
dim a(100) as integer: dim i as integer: dim rng as range: dim rng2 as range
dim tm as string: dim da1 as string: dim da2 as string: dim da3 as string
dim da4 as string
‘此是将学生所选信息赋给“评分表”中
if (combobox1.text "" and combobox2.text "" and combobox3.text "") then
sheets("评分表").range("g1") = me.combobox1.text
sheets("评分表").range("g2") = me.combobox2.text
sheets("评分表").range("g3") = me.combobox3.text
unload 学生登录
‘从题库中随机自动抽100道题赋给“测试题”表
for i = 1 to 100
randomize (now): a(i) = int(rnd * 400 + 1)
with sheets("题库").range("a1:a2000")
set rng = .find(what:=a(i), after:=.cells(.cells.count), lookin:=xlvalues, _lookat:=xlwhole, searchorder:=xlbyrows, searchdirection:=xlnext, matchcase:=false)
tm = rng.offset(0, 1).value: da1 = rng.offset(1, 1).value:da2 = rng.offset(2, 1).value
da3 = rng.offset(3, 1).value: da4 = rng.offset(4, 1).value
sheets("评分表").cells(i, 3) = rng.offset(0, 4).value
end with
with sheets("测试题").range("b3:b500")
set rng2 = .find(what:=i, after:=.cells(.cells.count), lookin:=xlvalues,_
lookat:=xlwhole, searchorder:=xlbyrows, searchdirection:=xlnext, _
matchcase:=false)
rng2.offset(0, 1).value = tm: rng2.offset(1, 1).value = da1: rng2.offset(2, 1).value = da2
rng2.offset(3, 1).value = da3: rng2.offset(4, 1).value = da4
end with
next
msgbox "点击确定后,考试将正式开始!计时50分钟"
‘调用计时模块
call ct
elseif combobox1.text = "" then msgbox "班级不能为空"
elseif combobox2.text = "" then msgbox "学号不能为空"
elseif combobox3.text = "" then msgbox "姓名不能为空"
end if
end sub
2.2.3 倒计时模块设计
为使学生在规定的时间内完成考试,并提示学生考试的剩余时间,系统将在抽题结束后在“测试题”表的状态栏中出现倒计时时间的显示,其语句如下。
public tn '秒
public tnm '剩余时间
sub runtimer()'时间运行
application.ontime now + timevalue("00:00:01"), "js"
end sub
sub js() '计时
on error resume next
if tn > 0 then
tn = tn - 1
application.statusbar = "正在考试....剩余时间: " & tnm & ":" & tn
else
tn = 60
if tnm > 0 then
if tnm = sheets("学生信息表").range("j3").value then
msgbox "离考试结束还有" & sheets("学生信息表").range("j3").value & "分钟!!!"
end if
thisworkbook.save
tnm = tnm - 1
else
msgbox "考试结束!!" & chr(10)
thisworkbook.save
application.quit
end
end if
end if
sheets("学生信息表").range("j4").value = tnm
call runtimer
end sub
sub ct() '设置初值
tnm = sheets("学生信息表").range("j2").value - 1 '
tn = 60 '
call runtimer '时间运行
end sub
2.2.4 自动判分模块设计
“测试题”表事先设置好预定的格式,b列为题号和备选答案的标号a、b、c、d。c列为题干和备选答案区。学生在选定b列中每题的备选答案前有字母的单元格时,在a列的题号前有填充色单元格就会显示学生所选答案(如需改变答案则只重新选中的备选答案前的字母,在答案区显示新选答案),如图1所示。
private sub worksheet_selectionchange(byval target as range)
r = target.row
if (r r1) then
msgbox "此处不能选择!"
application.enableevents = false: range("b4").select
application.enableevents = true : exit sub
end if
x = r
if (target.column = 2 and range("a" & r).interior.colorindex = -4142) then
for i = 1 to 10
x = r - i
if (range("a" & x).interior.colorindex -4142) then exit for
next
cells(x, 1) = target.value '赋值
elseif (target.column = 1) then
if (range("a" & r).interior.colorindex = -4142) then
for i = 1 to 10
x = r - i
if (range("a" & x).interior.colorindex -4142) then exit for
next
end if
application.enableevents = false: range("a" & x).select: application.enableevents = true
end if
end sub
学生所选答案将用跨表引用的方法引用到“评分表”b列依次显示,它和“评分表”c列对应的标准答案一一比较进行判分。最后得分显示在“评分表”的g4单元格中。
3 结束语
本系统可作为教师日常课堂单元测验所用,大大减轻了教师批改试卷的工作量,只要打开系统,以教师身份登录,即可看到学生所考的成绩。也可以稍加改进作为学生平时练习自测用,及时让学生自己得到答案及评分,便于学生巩固、加强所学知识。
上一篇:大学生毕业生求职信范文
下一篇:【动漫达人圈】考核问卷