基于WORD上机考试自动评分算法的研究

2012-04-13 11:37梅红伟
科技视界 2012年26期
关键词:出题子程序调用

梅红伟

(云南大学旅游文化学院 云南 丽江 674100)

基于WORD上机考试自动评分算法的研究

梅红伟

(云南大学旅游文化学院 云南 丽江 674100)

本文主要通过对WORD的VBA对象结构的研究分析,并按WORD操作分类实现了相应的自动评分算法。在算法设计过程中着重分析了不同环境、不同操作的评分正确性,并根据该算法,提出了WORD考试系统中评分系统、试题数据库、出题系统的设计思想和要求。

评分算法;VBA对象;设计思想

0 前言

随着计算机技术的发展和应用的普及,计算机基础教育越来越重要,在小学、中学以及大学里大都设有计算机基础课程。同时,Microsoft office是一款在社会各界应用极为广泛的办公系列软件,其中的WORD、EXCEL、POWERPOINT等软件深受人们喜爱。故这三款软件的教学大多是计算机基础课程的主要教学环节。

软件教学注重实践操作,如何对软件操作进行上机考核是教学的一个重要研究内容。而上机考核研究中如何对相应操作做出快速、准确、客观、公正的评分是研究的一个必须解决的难题。在我校,为适应计算机基础课程的教学改革,提出了教考系统开发项目,笔者参与了该项目的研发,主要负责WORD操作自动评分算法的研究。

在研究过程中,笔者根据我校计算机基础课程的教学要求、WORD考试系统中出题、组题的特性以及学生操作中存在的各种可能的情况和问题,通过对WORD的内部机制、VBA技术的研究,将WORD的常规操作分为了不同类别,并就各个操作类别研制了相应的自动评分算法,本算法力求精准、客观、公正,适用于三本学校WORD教学考试要求。

1 WORD评分算法的研究规划

1.1 WORD操作试题分析

我校属三本院校,对于计算机基础课程的教育主要基于计算机操作常识的普及。WORD是基础课程的一个重要环节,其教学要求学生能够掌握文字编辑、排版、简单的表格应用以及特殊元素的插入、设置操作等。相应的考试系统对WORD的考查也应符合教学大纲的要求,并能对以后变动作出相应的调整。故而,我先对WORD考查的操作试题根据其操作特性进行了分类分析,以便评分算法的设计具有针对性、规范性,并与系统出题有效的联系匹配。具体分类如下:

①编辑操作:主要包括文档文字录入、复制、张贴、剪切、替换操作;

②格式设置:主要包括字体格式设置、段落格式设置、项目符号和编号、边框和底纹、分栏、首字下沉、更改大小写、背景等;

③页面视图:页面大小、页边距、打印纸张设置、页眉页脚设置等;

④插入操作:页码、时间和日期、符号、批注、脚注和尾注、题注、图片(包括艺术字)、书签、超链接等;

⑤表格:插入表格、行、列、单元格的增删改、表格文字录入等;

⑥绘图:指定图形的绘制(主要掌握文本框、自选图形、箭头、三维效果、阴影、图形组合等设置)。

以上操作是对WORD文档进行编辑、排版和美化时常用操作,属计算机基础教学大纲范畴。其后的自动评分算法主要依据以上操作进行分析,在算法设计过程中除实现对各种操作结果的评判外,还应注意操作之间的效果影响。同时对于试题的设计同样需要考虑各个操作的先后顺序对评分的影响,具体分析见下文。

1.2 VBA技术简介

VBA(Visual Basic for Applications)是一种标准宏语言。它具有跨越多种OFFICE应用软件并且控制应用软件对象的能力,该宏语言被EXCEL、WORD、ACCESS等OFFICE应用软件所共享并提供给用户开放使用。故而,在对WORD自动评分分析设计过程中,VBA将作为我们主要工具来研究使用。下面我们将了解认识下VBA的一些主要内容。

1.2.1 WORD对象

对象是代码和数据的组合,可以作为一个独立单位来处理。在WORD应用程序中一个WORD对象可以是WORD的一部分(如:文档、表格、段落等都可以用WORD对象表示),也可以是整个WORD应用程序 (如:Application对象即代表WORD应用程序本身)。因此,在WORD应用程序中所有的操作都将与WORD对象有关。

在前面,我们提到过VBA能够控制对象,所以在我们的算法研究中我们将使用VBA来对WORD的各种操作所涉及的对象进行研究分析。要想掌握VBA在WORD中的应用,了解WORD的对象是必不可少的。在图1中给出WORD对象模型图,希望通过图示大家能对WORD对象之间的组织结构有一个清楚地认识,该结构决定了对象间的相互关系以及它们的访问方法。对各个对象的具体使用我们将在后面的设计中进行详细说明。

图1 WORD对象模型图

1.2.2 宏与Visual Basic编辑器

前面我们说过VBA是一种宏语言,可以编辑相应的宏程序以控制WORD的工作。WORD的宏程序是一系列组合在一起的WORD命令和指令,它们能代替人工实现任务的自动化执行,我们的算法设计就是使用宏来完成分析和评分实现的。

在WORD应用程序中宏的创建有两种方法:一是使用宏录制器(工具菜单中)录制一个宏;二是在Visual Basic编辑器中编辑一个宏。在我们的设计中前者主要用于对手工操作的分析,后者主要用于评分程序的编写。下面我们将通过两个实例来介绍这两种方法的运用:

实例宏的录制:通过录制宏来分析将文档word1.doc的第三段文字设为红色是怎样实现的。

操作:找到并打开word1.doc,选中第三段。通过【工具】→【宏】→【录制新宏】来启动宏录制器。将宏名命名为,“实例1”。然后按要求完成字体颜色的设置,停止宏录制。最后通过【工具】→【宏】→【宏】选择编辑宏“实例 1”,打开 Visual Basic编辑器进行分析即可,如图2录制的宏代码所示:

图2 录制的宏代码

从宏程序中不难看出,文字字体(Font)的设置涉及到多方面的属性操作。但本例只与颜色属性(Color)相关,其值被设为 “wdColorRed”(即红色,亦可设为255。具体转换查看Visual Basic编辑器的快速信息。)而其他属性的设置不变,在程序中可以忽略。

实例评分算法的实现:编写宏程序实现对文档word1.doc的第三段文字设为红色的操作是否正确。

编程设计:通过实图2的分析,我们知道判断文字字体颜色即判断选定内容的Font对象的Color属性值是否正确即可。如图3评分算法示例所示:

图3 评分算法示例

打开Visual Basic编辑器,并在代码窗口编写以上宏程序即可。值得注意的是,VBA宏代码是事件驱动的,且不能单独被执行,只能被OFFICE程序所调用。为运行方便可以将宏程序定义在专门的WORD文档中,并指定到工具栏、菜单或为其设定快捷键。当然根据考试系统设计的需要,也可以用其他高级程序语言来直接编写访问VBA对象的程序。

在其后的算法设计中,我们主要依靠以上的方法对word考点的各个操作进行分析研究,最后再形成可行的评分子程序。需要进行评分时,评分主程序根据试题操作类型调用相应得子程序即可。

1.3 评分算法设计规划

WORD操作类型繁多,操作方法各异,不同的操作按照不同的顺序进行时,操作的结果也会不同,我们研究设计工作将是一个非常烦琐的过程,因此为了保证评分算法设计的正确性、合理性、严谨性,我们必须在开始研究设计前先对整个评分程序做一个合理的规划。

1.3.1 算法程序的结构

根据VBA宏程序的特性,并保证算法程序的通用性和可移植性。我们的算法程序将以子程序结构来设计。即整个试题的评分程序为主程序,单一属性值改变的小操作的评分程序为子程序。主程序调用各个子程序,并为子程序传递相应的参数。

1.3.2 主程序的设计

主程序调用各个子程序,并为子程序传递相应的参数。本文主程序主要由3个部分组成:

①对WORD应用程序、文档进行检测、打开、关闭等操作,提供评分环境,保证评分顺利进行;

②对各种操作设置评判对象,为子程序调用提供参数;

③使用循环结构给出各步操作的得分及操作提示。

1.3.3 子程序的设计

子程序主要是通过一个分支结构完成单一属性值与指定的比较值之间的判定并赋予相应的分值,记录判定信息。子程序的实现主要有两个问题:

第一个问题是比较值的设置。这里有三种设置方法:

①固定值,即根据具体的操作结果设定具体值。该方法简单但通用性差,操作值唯一固定,评分算法与试题唯一匹配;

②参数,由出题者直接给出,并记录在数据库中,评分子程序通过访问数据库获得比较值。由于不同属性值表示方式不同,出题者需要一一辨别,工作负担较重难度大且出题系统需要专门设计属性值的数据库表,系统结构复杂;

③标准文档提取。出题者不需要干涉具体的属性取值,只需要出题时制作一份标准文档,在比较时,同时提取待评文档和标准文档的同一选定对象的相同属性即可。相对来说第3种方法通用性强、灵活方便,能较好的适应试题的演变。故而为本文主要采用的方法。

第二个问题是参数的设置。为了使子程序结构统一,调用简单、方便管理,我们对子程序的参数也作了限制,各个子程序一般情况下统一有三个参数:

①待评文档的待评对象;

②标准文档的比较对象;

③得分。

2 评分算法的实现

根据上文所述研究方法和程序设计思想,笔者就WORD操作基本考点编制了相应的自动评分程序。现列举如下:

2.1 评分主程序

评分主程序是评分程序的整体框架,主程序要根据出题信息为评分活动提供评分环境,并根据出题要求调用相应的子程序,为子程序提供必要参数信息,最后还要将评分结果输出显示。具体设计如下:

2.1.1 设定评分环境

即打开WORD应用程序,查找并打开待评文档和试题对应的标准文档。在评分结束时应及时关闭相应文档和程序。

①WORD应用程序的打开和关闭:

在VBA中我们有专门的打开、关闭WORD应用程序的方法过程可以直接调用。例如图4打开WORD应用程序所示:

图4 打开WORD应用程序

注意,本文所有程序测试均在word2003中的Visual Basic编辑器进行,此时word应用程序已经打开,因此直接使用application对象(即当前word应用程序)。若需要在其他应用程序中嵌入使用该算法则如上例先打开word应用程序并定义为对象wd,再用wd代替所有application对象,评分结束时应关闭word应用程序并释放对象wd。

②待评文档的查找:

待评文档即考生文档是评分的主体对象,在实际考试结果中可能出现考生将文档删除或对文档命名出错,此时应终止评分,只有在指定位置查找到待评文档才能进一步对各个操作进行评分。文档的查找可以使用VBA所提供的FileSearch对象,笔者根据FileSearch对象编辑了一个文件查找子过程Searchfile(wname,wlujin),如下例图5 Searchfile(wname,wlujin)所示:

图5 Searchfile(wname,wlujin)

Searchfile(wname,wlujin)子过程调用示例:

图6 Searchfile(wname,wlujin)的调用

注意:

·Searchfile(wname,wlujin)子过程中使用了模块级变量wjcx,该变量要在调用程序(主程序前进行声明);

·为了测试方便,本文程序中使用Debug.Print方法在在Visual Basic编辑器的立即窗口中显示判定信息。读者可根据实际需要定义一个字符串数组存放各种判定信息,在专门的界面中显示;

·由于FileSearch对象的Execute()方法自身的原因,导致该过程存在一个非常严重的问题:当指定文件名为“aa.doc”,而待评文件名为“*aa.doc”(* 为任意字符)时不能正确判断!

③待评文档及标准文档的打开和关闭:

在评分过程中,需要从待评文档和标准文档中读取相应对象的属性值从而比较判定得分,因此,在评分前我们必须要先打开着两个文档,在评分结束后关闭文档。Word文档的打开和关闭可以直接使用VBA提供的open()和close()这两个方法。如图7文档的打开和关闭:

图7 文档的打开和关闭

2.1.2 设置判定对象

任何操作都有指定的操作对象,评分时也应先确定判定对象再对其属性进行评判。在评分程序中,我们需要在主程序里根据试题设定好判定对象,并将该对象作为参数传递给调用的评分子程序。操作不同,其对象也不同,对象的设定方法就有所差异。下面,我们将按操作对象分类举例说明。

①以文字为操作对象:

即试题要求对文档中指定的部分文字进行编辑或格式设置等操作,其操作对象为指定的文字。该类操作对象需要通文字匹配查询来设定,下面的程序段为笔者编写的文字匹配查找子程序:

图8 文字匹配查找子程序sel(sr.str)

为说明sel(sr,str)子程序的功能应用,我们通过示例试题2-1来分析讲解:

图9 示例试题2-1

示例试题2-1:将e盘根目录下的“st1,doc”正文最后一段“旅游业发达,……威尼斯。”文字添加阳文效果。

该宏代码同过调用sel子程序在分别在标准文档和待评文档上查找“旅游业发达,……威尼斯。”所在的位置,并将找到的位置区域作为参数传递给阳文评分子程序,这样若两文档选定操作区域不一致,但文字内容一致,依然能够正确评分。这就避免了使用段、行、句为判定对象时出现因操作失误,误删误增段、行、句而导致所有操作全部评定错误的情况。但该方法也存在一个缺陷:但区域中存在一些特殊元素如批注时,查找会失败。出题时应注意回避。

②以整篇文档为操作对象:

如页面设置中页边距、纸张大小、页眉页脚等的设置都是以整篇文档为操作对象的。因此,在调用相应的评分子程序时直接将待评文档和标准文档作为对象参数传递给子程序即可。如下示例:

示例试题2-2:将整篇文档页面设为上边距2厘米、下边距2厘米、左边距3厘米、右边距3厘米;页面垂直对齐方式为居中。

图10 示例试题2-2

③以插入的图片等外来元素为操作对象:

在word2003中,插入是一个非常重要,使用非常频繁的一种修饰美化操作。对插入的元素进行评分从原理上来讲非常简单,只要选中待评元素对象,比对相应的属性即可,但word对各种插入元素的标记是采用默认的索引号,该索引号可能因为操作的不同(顺序、修改、增减等)导致每个人的操作结果相同,但索引号不同,使评分程序无法准确选定待评元素对象。笔者通过研究,提出两种方法解决该问题:第一种方法是事先将所有元素插入到文档中并统一命名,考生只完成对各种元素进行设置和组合,禁止增删。这个方法虽然简单,但失去了考察插入操作的意义。第二种方法是在考试系统中制作一个对选定对象命名的命令按钮,其主要语句为:Selection.ShapeRange.Name=“对象名称”。要求考生对所有元素按题目要求命名。该方法也比较简单,但其操作超出了大纲要求,且元素较多时容易出错。如下示例:

示例试题2-3:在文档中插入图片p1并将图片p1的环绕方式设为上下型环绕,设置图片位置:水平对齐为相对于栏居中;垂直对齐的绝对位置为正文第一段下0.5厘米。(图片设置完成后使用命令对图片命名为p1)

图11 示例试题2-3

该示例,先以整篇文档为选定对象,调用txcz()子程序查找文档中是否存在命名为“p1”的图片元素,找到后再以该图片为选定对象,调用txsz()子程序对图片设置进行评分。

④以表格为操作对象:

表格也是word中的一个重要考查内容。表格的评分与上文插入操作的评分类似,不过表格有更加严谨的结构,在VBA 中 可 以 使 用 table(index)、Rows(index)、Columns(index)、Cell(row,column)或 Cells(index)来访问表格、行、列及单元格,虽然index索引号同样是默认生成,但其生成规则是按位置(从上到下,从左到右)形成,当发生增、删、改它能自动重新编码。因此在对表格进行评分时可直接使用上述对象作为对象参数传递给评分子程序。

2.2 评分子程序

评分子程序主要针对某一属性值的正确与否进行判断,笔者根据前文划分的WORD操作类型,分别编制部分子程序以供读者参考。

2.2.1 编辑操作自动评分

主要包括文档文字录入、复制粘贴、剪切、替换操作,其中录入、复制粘贴及剪切操作只需调sel(sr,str)子程序选定操作区域比较其文字内容即可,而替换操作涉及的区域为整篇文档,可采用循环比较的方式来判定。请看下列示例:

①示例修改操作的评分:在正文第二段“随着计算机技术在中国……统一、客观、公正的标准。”中的“决定举办等级考试”修改为“决定举办全国计算机等级考试”。

评分子程序如下:

图12 示例修改操作的评分子程序

wz(dr,br,f)调用如下:

图13 wz(dr,br,f)的调用

以上评分示例首先打开待评文档和标准文档,并通过调用sel()子程序查询选定操作区域(第二段),再调用wz()子程序进行文字匹配,从而完成评分。需注意的是wz()的文字匹配时对整个选定区域的匹配,所以试题中不应出现在同一区域的其他编辑操作,以免不同操作的相互影响。

②示例替换操作的评分:将文档中所有“的”字,修改为“地”,并设字体为仿宋。

评分子程序如下:

图14 示例替换操作的评分子程序

th(dr,br,n,zf,f)调用如下:

图15 th(dr,br,n,zf,f)的调用

该示例中,替换后的字符为“地”,总计替换了71次,故使用循环结构查询“地”71次,每次查询都将评判.found的值是否为真,若为真则71次替换文字都正确,反之则不正确。另外,替换操作还可以进行格式替换,如本例要求字体为“仿宋”,故在程序中引入.Font.NameFarEast的判定。其他格式亦可类似添加。添加了格式替换的子程序不会影响不需要格式替换操作的评分(判定原则为与标准文档比对)。

2.2.2 格式设置自动评分

主要包括字体格式设置、段落格式设置、项目符号和编号、边框和底纹、分栏、首字下沉、更改大小写、背景等;这些操作同编辑操作的评分方法基本一致,但大多数设置都会涉及多项属性的改变,如字体格式可能同时涉及字体大小、字体名称、字形等,边框可能涉及边框样式、线条颜色、大小、类型等。在评分时应对所有涉及的属性进行评比。故我们可以用两种方法来实现,一者是对所有属性都编写评分子程序,根据试题选择调用;该方法子程序数量过多,系统结构比较繁琐和复杂,短期内难以实现;另外一种方法是按操作,将多个属性的评比编写在一个子程序中,由于评比过程是与标准文档对比,对于试题未作要求的属性,只要考生不擅自修改,则不影响评分。该方法比较简洁直观,但子程序参数较多(不同的属性对应不同的分值),对考生操作的要求也相对较高。示例如下:

示例字体格式设置评分:将标题“计算机二级考试”设为居中、仿宋字体、二号字号、加粗。

图16 示例字体格式设置的评分

图17 gsh(dr,br,f1,f2,f3,f4,f5)的调用

在本示例中,西方字体的设置未作要求,故调用评分子程序时其对应的分值为0。

2.2.3 视图页面设置自动评分

页面大小、页边距、打印纸张设置、页眉页脚设置等。对于页面设置评分时选择的对象为整个文档,其他按上述方式对相应属性进行比对即可。特别是页眉页脚有特定的对象属性,设计分析时注意区分。如下示例:

示例页眉设置的评分:为文档设置页眉,奇数页页眉为“地理知识”,偶数页页眉为“意大利”。

图18 示例页眉设置的评分

图19 ymyj(dr,br,f1,f2,f3)的调用

在以上示例中,页眉页脚的判定需要按节进行,Sections(1)即为文档第一节,Headers(1)表示奇数页眉,Headers(3)表示偶数页眉,若是页脚可用属性footers。

2.2.4 插入操作、表格操作及绘图操作的自动评分

这类操作较为复杂,涉及大量外来元素对象,对对像的选定尤为关键,可参看2.1.2设置判定对象来操作。具体的评分细节与其他操作类似。如下示例:

示例插入图片并设置的评分:在文档中插入图片tp1并将图片tp1的环绕方式设为上下型环绕,设置图片位置:水平对齐为相对于栏居中;垂直对齐的绝对位置为正文第一段下0.5厘米。(图片设置完成后使用命令对图片命名为p1)

图20 图形查找

txcz(dr,na,f)子程序主要完成查找指定名称的图形存不存在。其判定过程为首先统计该文挡的图形个数,若个数为0则不存在图形,接下来在使用循环查看是否存在指定名称(na)的的图形。

图21 图形设置评分

在确定了待评图形后即可直接调用其相关属性进行比对评分。

图 22 txcz(dr,na,f)及 txsz(dr,br,f1,f2,f3)的调用

在对图形进行评分时应先调用txcz()子程序确定待评图形,再调用txsz()子程序对各个属性进行对比评分。这种评分算法基本能满足图形的评分,其正确性在于要求考生能准确对图形命名。其他插入元素对象(批注、题注、表格、绘图)等都可使用类似方式进行评分

3 评分系统与出题系统的设计构思

通过上文的描述,我们已经可以对WORD的大部分常规操作进行评分。但就一个考试系统而言,其应包含多套试题,各套试题又含有或相同或不同的操作,且系统在使用过程中亦可通过添加试题对试题库进行累积完善。若每一套题目都唯一对应一套评分算法,那系统的使用就显得不灵活,对出题老师的要求太高。所以笔者考虑系统开发者可根据评分算法的要求设计出题系统,使用者通过出题系统提供相关数据,评分系统又根据提供的数据自动选择调用子程序,生成配套的评分程序。

3.1 评分系统的设计思想

通过累积,我们将完成所有操作评分子程序的设计,而所有子程序都通过一个主程序进行调用。对每个子程序都设定一个调用标志,主程序使用分支结构根据标志信息选择是否对相应操作进行评分。子程序所需要的数据,由主程序访问数据库获取。

3.2 试题数据库的设计思想

试题信息应统一存放在数据库中,试题数据库可以有两种设计方法,一种是将评分算法中所需要的所有数据全部做完数据表属性构成一张数据表,数据表的一行代表一个小操作。这样的组织方式使出题系统能够以最小操作为单位出题,再根据已有的题目,自动组题。但笔者不建议这样做。就word文档而言,不同的题目可能需要不同的试题文档,不同的操作在同一文档上也可能产生评分的冲突。且不同操作所需要的数据项目也不尽相同,数据表结构复杂,容易产生数据冗余。第二种方式是,按前文所述将操作归类,不同类别的操作对应不同的数据表,出题系统按套题出题。在数据表中除了操作所需数据外,还应包含试题ID,套题ID,调用标志等信息,便于评分系统的访问。

3.3 出题系统的设计思想

出题系统都主要的功能是向出题者提供相应的出题界面,根据试题数据库和评分系统的设计,出题系统可以根据操作分类形成多个出题界面。每个界面应能提供对应数据表所需数据。同时,根据评分系统,出题系统对一套试题的出题尽可能作一些必要的限制,主要是避免对同一区域做不同的操作。例如:在一套试题中存在一个操作是对部分文字进行编辑修改,而另一个操作也会对该部分文字进行编辑修改或格式设置。那若前一个操作未完成正确,后一个操作即便是作对了评分系统也会因找不到准确的操作对象而导致评分出错!

4 结论

总上所述,笔者通过对WORD操作进行分类,使用VBA对各类操作所涉及的对象及其属性进行研究,提出对WORD操作进行自动评分算法设计的主要思想和具体规划,并对一些典型的操作的特点进行分析,实现正确评分。最后,笔者根据评分算法的特点要求,对考试系统的评分系统、试题数据库、出题系统提出了具体的设计思想。由于WORD应用程序本身的复杂性、论文篇幅及时间关系,本论文未能将所有操作的评分实现,对已实现的评分程序也不可能进行所有情况的下的正确性测试,故在实际应用过程中可能存在部分出入,还请广大读者给予指正。

[1]WORD2002 VBA 一册通[OL].博库网.

[2]OFFICE编程手册合集[OL].大家学习网.

The Automatic Scoring Algorithm Research Based on WORD Computer Examination

In this paper,through research and analysis on the WORD VBA object structure,press the word operational taxonomic achieve the automatic scoring algorithm.Analyzed the ratings of different environments and operating the correctness of the algorithm design process,and according to the algorithm,the word examination system in the scoring system,the item database,the topic and design ideas and requirements.

Scoring algorithm;VBA object;Design ideas

云南省教育厅科学研究项目——基于独立学院计算机应用水平的教考系统的设计与实现。

梅红伟(1982—),男,助教,从事信息管理与信息系统专业教学。

王洪泽]

猜你喜欢
出题子程序调用
民生实事 请人大代表“出题”“阅卷”
核电项目物项调用管理的应用研究
我只出题,不管证明
LabWindows/CVI下基于ActiveX技术的Excel调用
棉和绵
基于系统调用的恶意软件检测技术研究
子程序在数控车加工槽中的应用探索
利用RFC技术实现SAP系统接口通信
简化编程与子程序嵌套的应用