APP下载

Word操作题自动评分的实现

2009-12-11贾冬梅杨淼淇高卫红

计算机教育 2009年18期
关键词:书签

贾冬梅 杨淼淇 高卫红

摘要:本文从Word操作题自动评分实现的原理、Word文档的结构模型、Word文档的格式识别以及Word内容的查找与定位等几个方面,详细说明了自动评分实现的各个主要环节,并给出了具体的实现算法。

关键词:自动评分;书签;对象属性

中图分类号:G642文献标识码:B

计算机应用能力评测,最客观准确的方法是直接上机操作。但是,如果不能实现自动评分,就会大大增加评分的工作量,使上机评测难以进行。Office文档操作是上机考核的重要内容,通常是给出一篇Word文档或Excel工作簿等,并提出若干题目,要求学生对文档或表格进行编排,评分时则检查学生是否已按照题目要求完成了相关操作,并且是否达到题目要求的效果,这是最不容易实现自动评分的部分。

1自动评分实现原理

为了对Office文档进行自动评分,直接读取文档内容的方法显然不可取,而分析对应的RTF 格式文档的方法也存在两大麻烦:一是需要将文档存为不常用的RTF格式,二是从RTF 文档中获取数据也并不灵活。事实上,Office 是基于COM(Component Object Model:部件对象模型)技术构建的软件系统,具有COM自动化功能。而VBA通过COM机制能够方便地访问Office,并且Office所有的元素(如文件、字符、段落、单词、样式等)都属于VBA的对象,这意味着可以在程序语句中直接引用这些元素,使用这些对象的方法和属性,在Office中实现操作自动化。所以,自动评分实现的原理就是通过导入Office应用程序的对象库,利用COM技术,编程操作Office应用程序,并调用Office文档中的各个对象,有目的地取出各种对象的属性值,而依据这些属性值与操作要求进行比对,显然可以用来判断各种操作的正确与否。在访问Office对象之前,可以把对象属性进行分类,每一个类的属性包含固定参数项,所以可以针对每一个属性类编写自定义通用过程,以取得属性参数的值,并存放在数组中,比较对象属性值就转变成了比较数组对应元素的值。下面以Word为例介绍自动评分的实现。

2Word文档结构模型

Microsoft Office Word 对象是按层次顺序排列的,层次结构顶端的两个主类是Application类和Document类。这两个类非常重要。因为在大部分时间里,要么是在使用Word应用程序本身,要么是以某种方式处理Word文档。Application对象提供整个应用程序的包装,每个Document对象表示单个Word文档,Paragraph对象对应单个段落等。Word对象模型抽象图如图1所示。Word对象模型是一个有层次的对象的集合,这里的层次指的是对象之间的组织结构,例如,两个对象间是平行关系还是从属关系。Word对象模型的层次结构决定了对象间的相互关系以及访问它们的方法。Word对象模型中有许多重叠。例如,Document对象和Selection对象都是Application对象的成员,但Document对象同时也是Selection对象的成员。Document对象和Selection对象都包含Bookmark对象和Range对象。

3Word文档格式的识别

Visual Basic是Microsoft的主要图形界面开发工具,VBA则是Visual Basic的子集。在Microsoft office中集成了VBA(Visual Basic for Applications)标准宏语言,VBA提供了访问Word文档的接口,使用VBA编程可以识别、控制Word文档的格式。

在VBA中,对象是数据和代码的封装,对象的属性是封装在对象内部的数据,对象的方法是封装在对象中用来操作对象属性的代码段。用户在使用对象的方法时,只需关心方法的名称及参数,无须关心方法的具体实现过程。由于一个Word文档是由许多对象组成的,如果确定了各对象的属性即可了解Word文档的结构和格式。VBA与Office应用之间的通信是通过OLE自动化(OLE Automation)进行的。OLE自动化使得VBA与Office应用之间可以实现双向交互。利用VBA分析结果文档,实际上就是通过VBA调用Office应用程序本身的功能获取文档内容。VBA法分析结果文档可分为两步,首先根据Office VBA对象间的层次结构获得与目标操作相关的对象,然后分析对象的属性得到文档内容信息。具体操作需要四步,步骤如下:

首先,创建对使用对象的引用。在编程之前,需要先设置VB的“引用”属性。由于要对Word的对象和属性进行操作,“引用”选项中应增加Word的对象库Microsoft Word 11.0 Object Library。这样,在程序编制的过程中就可引用word对象及属性,调用对象的方法。

其次,定义应用程序对象变量和文档对象,并打开所要操作的文档。

Dim AppWord As Word.Application

Dim DocWord As Word.Document

Set AppWord = CreateObject("word.application")

Set DocWord = AppWord.Documents.Open(文件名)

然后,调用对象的属性、方法与事件编写代码,识别和控制Word文档的内容和格式。例如:要读取当前文档第三段范围的文本内容和字号。

T= AppWord.ActiveDocument.Paragraphs(3).Range.Text

S= AppWord.ActiveDocument.Paragraphs(3).Font.Size

最后,对象使用完毕,释放对象。

DocWord.Close

AppWord.Quit

Set DocWord=Nothing

Set AppWord=Nothing

4Word文档内容的查找与定位

通过上一节的分析,我们知道Word文档的格式和内容通过使用VBA宏语言读取对象属性或使用对象的方法或事件来获得。那么又该如何确定要操作的对象呢?这是Word操作题评分的又一关键点,即Word文档内容的查找与定位问题。这个问题可以通过在Word文档中设置“标记”来确定操作对象解决。

假设有文档A、B,A代表标准文档(未经考生操作的文档),B是考生答题结果文档,评分时通过查找到A、B中对象并获得对象的属性确定得分。A、B均由许多对象组成,为确定要查找和定位的对象,可事先在标准文档A中做好标记,标记处就是题目要求操作的对象。考试时考生对标准文档A进行操作,操作之后另存为考生答题结果文档B,评分时,评分程序在A文档中查找标记处相应的对象,并读取它们需要考核的属性,同时,评分程序还要在B文档中对应的标记处也查找到已经操作过的对象,并读取它们的相应属性,然后进行比较,给出得分即可。

在实际使用中,设置文档的标记可以使用Word文档中的“书签”即Bookmark对象来实现。在题库中的每一个源文件中,在需要进行操作的位置,设置若干隐藏书签,在题库的标准答案中,也要在对应的位置设置相同的书签。程序读出源文件供考生操作,操作完成,文档保存为考生答题文档。评分时,评分程序分别从三个文档中同一个标签处找到同一个对象,分别读取对象的考核属性。

在建立数据库时,每一道Word操作题都有一个“信息表”,用来描述评判的内容、待查找定位的对象和定位标记“书签”等。“信息表”中并没有包含标准答案中的所有信息,只包含了每个评分点的分值、定位标记等,起到了一个桥梁的作用,告诉评分系统应该查找和比较考生答题文档、源文件和标准答案中的哪些内容。

5操作题自动评分的实现

考生答题完毕,把文档保存在指定的位置。评分系统通过使用VBA来读取对象的属性进行比较,从而得出正误,给出分数。

5.1获取对象属性

Word操作题的考核内容可以按照对象属性分为字符属性类、页面属性类、段落属性类等12类操作,为了提高代码的通用性和重用性,可以编写若干通用过程,分别用来获取不同对象的属性值,并且把这些属性值存放在数组中,要获取不同文档的相同对象属性时,可以调用同一个通用过程,传递不同的参数,以获取所需的属性值。以获取字符属性类参数值为例,通过使用Word中的宏操作,可知字符的属性参数共有28项,定义一个包含28个元素的数组来存放各个属性值。通过调用zifushuxing过程,可以分别得到源文件、考生答案和标准答案的字符属性,并分别存入三个数组中。

5.2自动评分算法

(1) 打开“评分信息表”,通过文件名,找到相应记录,读出书签名、标签索引值、考核点等信息。

(2) 打开考生答题文档,检查考生答题文档中是否存在“评分信息表”中的书签。不存在,说明考生将考核点错误地删除了,该题记为0分;存在,则进入下一步。

(3) 按照书签名称,定位到书签位置,按照书签索引号,调用通用子过程,获得对象属性值,并存入相应数组。

(4) 再分别打开源文件和标准答案,定位到同样的书签位置,调用子过程,获得对象属性值,分别存入相应数组。

(5) 先比较源文件和标准答案属性数组中对应元素的值,如果相同,则该属性没有要求操作,如果不同,则该属性要求有操作。再与考生答题文档数组中的相应元素比较是否相同,相同给满分;不同,进一步与源文件中对应属性数组元素比较,相同则说明该属性考生没有操作,记为0分,不同说明考生对该属性有操作,只是操作结果不对,给一半分值。

(6) 查找是否还有下一个书签,有,则执行第3步;没有,则执行第7步。

(7) 给出最后成绩,并写入成绩表。

在我们开发的计算机应用能力自动评测系统中,使用本文中的方法实现了Word操作题的自动评分,并且使用相同的评分原理实现了Office操作题的自动评分,评分准确,运行良好。

参考文献:

[1] 姚利国,姚晖.计算机基础考试中Office操作题自动阅卷的实现[J].四川教育学院学报,2003,19(12).

[2] 于淑香,徐汀荣.基于COM技术的Office自动评分系统的设计与实现[J].沙洲职业工学院学报,2007,10(3).

[3] 马占欣,周文刚.利用VBA实现对Office文档的自动评分[J].周口师范学院学报,2003,20(5).

[4] 刘文浩,房培玉.Office宏在考试自动阅卷中的应用[J].烟台师范学院学报,2005,21(3).

[5] 晶辰工作室.Word 2000中文版VBA开发实例指南[M].北京:电子工业出版社,2000.

[6] 何克抗,许骏.计算机辅助评价(CAA)研究的新进展——技能性非客观题的评价[J].开放教育研究,2005(4).

[7] 杜少杰.基于形式语言的Word操作题自动阅卷方案及其实现[J].唐山师范学院学报,2006,28(2).

猜你喜欢

书签
透明书签
书签
十二月书签
十一月书签
十月书签
八月书签
萌萌哒小猫书签
风筝书签
贰月书签
四叶草书签