基于excel vba的计算机理论知识无纸化考试系统设计
引言
在当今飞速发展的信息化社会中,计算机已在各行各业被广泛应用,计算机应用能力已成为现代人必须具备的一种能力,所以各级学校都开设了计算机基础的公共课程。为了加强学生对计算机知识掌握,在日常教学过程中对学生的测试是必不可少的。而对于计算机理论知识,传统的做法是用纸质试卷测试,但教本文由论文联盟http://收集整理师阅卷的工作量较大,为减轻教师的工作量,便用excel vba设计了一个无纸化的计算机理论知识自动抽题、自动阅卷的考试系统。
1 系统实现的关键技术
excel是microsoft office 家族成员,它应用非常广泛,具有方便的表格式数据综合管理、强大计算统计分析和图表功能。此外,excel还提供了一种的宏语言visual basic for application(简称vba),它是一种完全面向对象体系结构的编程语言,它又一种寄生于应用程序不能单独存在的编程语言。由于其在开发方面的易用性和强大的功能,为广大用户提供了一个新的、更高层次的二次开发平台,它不但可以设计出个性化的程序,也可以使程序具有自动功能,减少大量重复繁琐的操作,提高工作效率。
2 系统的实现
2.1 系统功能模块
该系统主要有4个功能模块:
(1)登录模块。学生和教师分别不同身份登录。学生只能进入考试界面,教师可以取得全部权限,可以查看评分情况,并可以修改题库内容和学生信息和基本设置。wwW.133229.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
end if