贲黎明
(常熟理工学院 计算机科学与工程学院,江苏 常熟 215500)
Excel是计算机教学中最基本的也是必须熟练掌握的软件之一.此类课程的教学过程中,实践是相当重要的一个环节.每次考核后,教师都要花大量的时间和精力对学生提交的Excel文档进行评阅,因此必须有一套对Excel操作进行正确评价的软件,以减轻教师阅卷的工作量.
在现有的文献中,关于Excel自动阅卷方面的文献并不多,即使有也只是粗略、简单地介绍了实现的思路,并没有完整的实现方法[1-4].本文就现在考试系统中通用的Excel 2003操作题自动阅卷系统的设计与实现进行详细分析,提出了完整有效的实现方案,并给出了其中的关键代码.
Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要用来扩展Windows的应用程序功能,特别是Microsoft Office软件,也可说是一种应用程序视觉化的Basic Script.
(1)Application对象:Application对象是Excel对象模型中的顶级对象.使用Application对象可以确定或指定应用程序级属性或执行应用程序级方法.Application对象也是访问Excel对象模型其它部分的基础.
(2)Workbooks对象和Workbook对象:Workbooks对象包含Microsoft Excel中所有当前打开的Workbook对象,是Workbook对象的集合.Workbook对象是Workbooks集合的成员,对象代表Microsoft Excel工作簿.
(3)Worksheets对象和Worksheet对象:Worksheets对象包含工作簿中所有的Worksheet对象,是Worksheet对象的集合.Worksheet对象是Worksheets集合的成员,代表一张工作表.
(4)Range对象:Range对象代表某一单元格、某一行、某一列、某一选定区域(该区域可包含一个或若干连续单元格区域),或者某一三维区域.
(5)ChartObjects对象和ChartObject对象:ChartObjects对象为指定的图表工作表或工作表上所有ChartObject对象的集合.每个ChartObject对象代表一个嵌入图表.ChartObject对象的作用是作为Chart对象的容器.ChartObject对象的属性和方法控制工作表上嵌入图表的外观和尺寸.
本系统采用Microsoft Visual Basic 6.0作为开发工具,为了在VB中能访问Excel文档,必须在工程中引用“Microsoft Excel 11.0 Object Library”[5].
(1)定义应用程序对象变量和文档对象:
由于Excel中各种对象的属性很多,每个属性有各种各样的值,如设置单元格的前景色,其属性名为Font.ColorIndex,其颜色设置多达几十种,即其属性值有几十个,而现有的自动阅卷系统主要采用与标准属性值进行比较[1,2],这样在设置评分标准前就要先获取所有设置的属性值,工作量很大,而且极易出错.因此本文采用的方法是先按题目要求做好一份标准答案,在自动阅卷时只要分别将学生提交的Excel文档和标准答案中对象的属性值分别提取出来进行比较,根据比较结果判断是否正确.这样在设置标准答案时就只要按要求做好一份样卷,而不必关心具体对象的属性值是多少,极大地降低了工作量,而且不易出错.
操作过程中,有时学生在对一个范围内的单元格进行某些设置时可能只做对了一部分,现有的自动阅卷系统往往是把这个范围作为一个对象[3],再将该对象的属性值进行提取,而由于学生只做对了一部分,所以此对象的同一属性的值不止一个,也就无法提取出对象的属性值,自动阅卷系统就会将此题判断为错而不得分.本系统为了避免这种情况的发生,提出了按单元格进行逐一评阅的方法,根据做对的比例给出相应得分,增加了评阅结果的公平公正性.流程图如图1所示.
图1 自动阅卷系统流程图
对于公式编辑,由于公式的写法有多种多样,如对A1、A2、A3、A4四个单元格进行求和,其公式可以是“=SUM(A1:A4)”,也可以是“=SUM(A1,A2,A3,A4)”,还可以是“=A1+A2+A3+A4”等等[4]. 现有的自动评阅系统一般是在标准答案中列出几个常见的公式,将学生所写出的公式与标准答案中的公式进行比较,如果学生所写的公式正确但又在标准答案中不存在,自动阅卷系统也会将此题判断为错误.为了避免这种情况的发生,本系统采用的方法是:首先判断其是否有公式,如没有,则不得分;如有,再判断公式的正确性,即将单元格中的数据代入此公式进行计算,如计算出来的值正确也就说明公式正确,则得分.
本系统的设计与实现分成两个部分:题库设置和自动阅卷系统.
分析Excel操作题的情况,将Excel操作题分为五大类:获取外部数据;单元格格式的设置;公式编辑;图表制作;工作表操作.通过题库设置将每一小题的操作类型、操作对象(包括工作表和单元格地址)、操作属性名称以及分值存入数据库中.
先打开样卷以及考生文档,根据题库中每一小题的操作类型,分别提取样卷和考生文档中操作对象的对应属性值,然后进行比对,根据比对结果,给出每一小题的得分.
本系统采用的是Access2003数据库.试题库(stk)表用以存储每小题的操作类型、操作对象(包括工作表和单元格地址)、操作属性名称以及分值,其表结构如表1所示.
如“设置sheet1工作表A2:E2单元格水平居中,1分”,则在试题库中存储其各字段值分别为:单元格格式设置、1、$A$2:$E$2、HorizontalAlignment、1.
由于在题库中要求存储的是操作对象的属性名称,因此,为了在设置题库时方便直观,根据不同的操作对象,分别建立了单元格(dyg)、图表(tb)和工作表(gzb)三张表,用以存贮操作内容所对应的属性名称,其表结构如表2所示(三张表结构相同).学生(student)表中存储每个学生的信息(学号和姓名)及考试成绩,结构如表3所示.
表1 试题库表(stk)
运行题库设置,首先出现“打开”对话框,要求选择并打开样卷文件,如不选择,则结束程序运行,否则出现如图2所示界面.
由于Excel操作题主要分为五大类,因此在窗体上增加了一个选项卡控件,并设置其有五个选项卡,分别对应一类操作.“题型设置”下拉列表框中列出了五种操作的名称,当对其进行选择后,选项卡控件会自动切换到相应的选项卡上.“工作表名称”下拉列表框中列出了当前打开的样卷中所有工作表的名称,用以选择操作的工作表.“获取地址”命令按钮用以自动获取样卷当前工作表中选中的单元格地址.设置好操作类型及操作对象后,再在相应的选项卡中设置操作内容及分值.设置完后点击“确定”,根据相应的属性名称对照表自动将操作内容转换成属性名称存入下面的列表框中.由于可能会对相同的对象进行多种操作,为了防止反复设置操作对象,所以当设置好一个操作后,并不将其直接存储到“试题信息”列表框中,而是先存入选项卡中的列表框,当同一对象的所有操作设置好后点击“保存”,再将该列表框中的所有信息全部存入试题信息中,并清空该列表框中的内容.最后点击“存入题库”,将试题信息中的内容存入试题库表中,并清空试题信息中的所有内容.
表2 属性名称对照表(dyg、tb、gzb)
表3 学生成绩表(student)
运行自动阅卷系统,界面如图3所示,首先设置好样卷信息以及考生文件存储位置和文件名,然后按“评分”按钮进行评分.
如考生文件不存在,则通过打开对话框由阅卷老师手工查找考生文件,如找不到,则直接给零分,否则按照题库中的要求进行详细评分,具体步骤如下:
(1)定义变量cj,并赋初值0;
(2)将题库指针指向第一条记录;
(3)获取题库中操作工作表名称,并分别将样卷和考生文档中对应工作表激活,同时地址存入字符型变量dz中,该题的分值存入变量fz中;
(4)分解地址字符串;
(5)获取操作属性名称,按照操作类型对该题进行评分,计算出该题的得分并累加到cj变量中;
(6)题库指针向下移动一条记录,重复(3)—(6)的操作,直到题库指针指向文件尾,得到学生的成绩cj并存入学生成绩表中.
分解地址字符串过程代码如下:
图2 设置题库界面
图3 自动阅卷系统界面
在评分过程中,许多操作的评分具有相似性,因此采用以下过程进行评分.
对于公式编辑的评阅方法是:首先通过HasFormula属性判断其是否有公式,如没有,则得0分;如有,再将其单元格中计算出来的值与样卷中相应单元格的值进行比较,如相等,则得分.其主要代码如下:
图表数据源评分的代码如下:
为了测试系统的效果,由学生做了3套试卷(满分16分),然后分别进行手工和自动阅卷,得到数据如表4所示.
从测试结果可以看出,自动阅卷所花的时间要远远少于手工阅卷,而得分略高于手工阅卷,这是因为自动阅卷系统会对每项进行逐个比较,不会造成手工阅卷过程中因做错一部分而全部不得分的后果.因此该系统具有实际应用价值,极大地提高了教师的工作效率,评出的分数也是真实可靠的.
表4 两种阅卷方法比较
本文所设计的Excel操作自动阅卷系统,在实际考试系统中实现了快速、准确的自动评分,减少了人为因素的影响.由于图表的复杂性,有些属性的获取比较困难,因此在图表的评分上还有些不足,需要在实践中不断完善.
[1]陈志坚.VBA技术在计算机基础考试系统设计中的应用[J].电脑知识与技术,2009,5(17):4461-4463.
[2]李菲.考试系统中Excel操作题自动阅卷的实现[J].辽宁师专学报,2009,11(1):46,97.
[3]唐洪彬.Word、Excel自动阅卷系统的设计与实现 [J].宿州教育学院学报,2004,7(2):55-57.
[4]彭作民.Excel文档自动阅卷评分算法设计[J].南京师范大学学报(工程技术版),2007,7(3):70-73.
[5]贲黎明,施梅芳.自动阅卷系统中Word插入对象的识别与评分[J].电脑知识与技术,2011,7(15):3644-3645.