基于VBA的Word操作题自动阅卷方法的研究与实现

时间:2022-09-20 09:00:54

基于VBA的Word操作题自动阅卷方法的研究与实现

摘要:本文在查阅文献和实践的基础上,对Word操作题的自动阅卷方法进行了研究,并提出了解决方案。从Word操作题的数据存储结构、操作题的录入、以及自动阅卷方案的主要算法及其实现等给出了详细的阐述。

关键词:操作题;自动阅卷;形式语言;VBA

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

文章编号:1672-5913 (2007) 24-0146-04

0引言

计算机应用基础是我国高校的一门公共基础课。我校每年有约2000左右的新生开设这门课。由于Office软件内容丰富、操作方式多样,面对上千份试卷,如果进行人工阅卷,不但工作时间长、效率低,而且对阅卷的公正性、准确度也提出了更高的要求。针对这一问题,通过利用Office软件自带的VBA宏指令编程,实现了操作题的自动阅卷。本文以Word为例,详细介绍了操作题自动阅卷方案的实现思路。本阅卷方案是在查阅很多相关资料并在实践的基础上提出的。它集众多方案的优点于一起,注重提高阅卷速度和评分灵活性,对没有全作对但已经作过的适当记分,使阅卷方案趋于人性化。

1Word操作题的存储结构

Word操作题的考试内容主要包括排版文档和编辑表格以及表格中公式的计算。排版文档主要有字体格式化、段落格式化、页面设置等;编辑表格主要有对表格的单元格边框属性和行、列属性等的设置;计算主要包括在表格中进行算术运算和利用统计函数进行运算等。因此,Word操作题的考点内容具体包括:字符格式化、段落格式化、项目符号、边框和底纹、分栏、首字下沉、艺术字、图片、文本框、页码、特殊符号、页眉页脚、查找替换、页面设置、表格、表格中的公式计算、函数计算等。考试时为考生提供一个包括若干段落或表格的标准Word文档,将要求考生完成的操作显示在屏幕上。

Word操作题的存储结构是整个阅卷方案的基础,与系统自动评分密切相关。本方案中的存储结构如表l所示。

表中的评分形式语言[1]的格式为:书签名、考核点、各属性分值。出题者录入试题时,在每道Word小题要操作的位置,标准文档、答案文档中都设置一个名称相同的隐藏书签。这个书签用于定位每道Word小题要操作的对象[2]。考核点有文字、段落、页面、单元格、行、列六类,分别使用保留字char、para、page、cell、row、column。对应不同的考核点,给出了相关属性的分值。如考核点为文字,依次给出字体、字号、颜色、粗体、斜体、下划线、字符间距、字符位置、动态效果、阴影、缩放、上标、下标、隐藏等属性的分值。如以“将文中‘非常好’设置为楷体(1分)、四号(1分)、红色(1分)、加粗(1分)、斜体(1分)、波浪下划线(2分)”为例,假设在标准文档和答案文档中设置的书签名为bookmark1。则这道Word 小题的评分形式语言为bookmarkl char 11111200000000。

表l Word操作题表结构

2 Word操作题的录入

本系统为了简化录入工作。采用了一些默认的约定,试题自动编号,标准文档和答案文档的文件名与试题号相对应,名称分别为bzfile(i)和dafile(i),其中i为试题号。这样,在录入模块只需录入试题描述和评分细则,系统根据录入的评分细则形成评分形式语言,存储到题库。

2.1Word文档排版部分

Word排版部分录入[3]时每部分各以一页显示,其中待考核的属性项以列举的方式置于页面中,通过单击选定考核项内容并在右边填入分值来录入。这种方法简单、全面、直观,同时又避免了一大堆Word枚举常量,提高了试题生成的效率。

在自动生成形式语言时,文字属性用char表示,后跟若干数字,表示文字属性中各选项(约15项)的分值。如果某些选项未选中,则其分值为零。单击确定后,试题描述、考生操作文件、标准答案文件、文字内容、试题总分及各种考核属性的分值便以固定的组织形式存入试题库中,供自动阅卷程序使用的形式语言也随之自动生成。

Word排版中的段落属性和页面属性的录入方法与字符属性的录入方法类似。其中,段落属性用para表示,考核内容有行间距、左缩进、右缩进、首行缩进、对齐方式、段前、段后等。页面属性用page表示,考核内容有页边空白、装订线、纸张高度、纸张宽度、每页的行数、每行字符数等。

2.2Word制表部分

Word制表部分的考核内容分为单元格属性和表格行、列属性两部分。录入方法与排版部分的录入方法类似。单元格属性用cell表示,考核内容有边框的线型、颜色和线宽以及底纹的背景填充、图案式样和图案颜色等。表格行属性用row表示,考核内容有对齐方式、左缩进和行高度等。表格列属性用column表示,考核内容有列间距和列宽度等。

Word排版、Word制表2部分试题录入完后,对应的试题描述可根据这2部分的录入情况直接录入描述性文字,或指定试题描述文件的文件名。2个页面内容全部录入存盘后,单击页面右上角“完成”按钮,将保存Word操作题录入的全部内容。并且,试题描述内容自动合并成试题描述文件。

3Word操作题答题界面的处理[4]

考生在进行操作题的测试时必然会涉及到该系统窗体和考试题所用软件之间的切换。由于VB 6.0生成的普通窗体在失去焦点后将自动隐藏到Windows的任务栏中,这样就给考生带来了诸多不便。因此,需要寻求一种方法,能使该系统中的上机测试窗体失去焦点后仍停留在屏幕上。为了解决这个问题,笔者借助了Windows的一个API函数― SetWindowpos(),将API函数中的常量HwND―TOPMOST (值为一1)赋给hwndlnsertAfter参数,并给其他参数赋予确定值来实现该功能。同时,笔者在上机操作的窗体上增加了一个“最小化”按钮,使考生在不需要查看上机题目时将其窗体最小化来节省屏幕空间。窗体最小化之后使其体积缩小到只显示测试剩余时间的大小,并使其仍停留在屏幕上,当考生需要看题时只需单击“恢复”按钮,窗体便恢复到原来的大小。

4启动Word应用软件环境的技术处理

文字编辑操作题型需要在该系统中调用其自己的Word应用程序。由于系统无法事先预料其应用程序的存放位置,因此,测试前必须由考生给出所使用应用程序正确的路径。怎样能使考生准确快速的提供该路径呢?笔者在上机测试窗体中添加了一个CommonDialog控件,将该控件的Action属性设置为1,即在窗体中添加了一个“打开”应用对话框。当调用数据库应用程序需要考生输入路径时,显示该对话框,考生找到正确的“.exe”文件后便进入该应用程序。笔者在该系统的数据库中设立了一个Path表来存放不同应用程序的路径,当考生通过“打开”对话框选择正确路径后该路径将保存在Path表中,以便下次打开该应用程序时会自动使用该路径来节省考生的时间。

5自动阅卷方案的主要算法

在VB6.0中新增了最新文件系统对象(FSO)模型,它提供了一整套对文件系统进行管理和操作的方法和属性[5]。FSO功能比较强大,通过它的成员函数和方法,可以创建目录、拷贝文件、创建文件、对文本文件进行读写,轻松地完成对驱动器、目录和文件的操作。

由于Office各应用系统(包括Word、Excel、PowerPoint以及Access)中,文档存储采用对象数据流的方式进行存储,包括摘要信息、表数据流、主数据流、非文本数据流等,结构非常复杂,因此,从外部很难可靠地访问到这些数据。而VBA由于带有大量专门针对于Office文件的函数、对象,通过它们可以方便地访问到文档中的各个元素,并对它们的状态进行识别判断,因此非常适合于用来编写自动阅卷的相关程序。

Word排版和Word制表的自动阅卷方式基本相同,主要采用如下算法:

(1) 根据试题编号,读取答案文档的内容(即形式语言),并正确分离出每个考核知识点。例如有如下形式语言:Char 11111200000000,它表示考核Word排版中的字符属性,其中字体属性1分、字号属性1分、颜色属性1分、粗体属性1分、斜体属性1分、下划线属性2分、其他属性为0分。

(2) 如果考生答案文档中不存在考核点,则该项记零分;若答案文档中不存在指定考核点,则该项记满分。若两个文档中都存在考核点, 执行下一步。

(3) 根据每一个考核点,调用相应的子程序。

(4) 各子程序获取答案文档和考生答案文档中相应的考核点的内容(如某字符的字体值),并进行比较,根据一定比例(答对因子)给出相应分值。

(5) 阅卷结束后,生成阅卷报告表,其中包括各部分试题的得分情况 、扣分原因等,并将成绩记入考生档案中。

在上述算法实现的过程中,需要注意以下几点:

(1) 考核点为文字时,检查答案文档中有几个文字包含在考生答案文档中,根据文字数目得出答对因子,用来确定该小题的最后得分。

(2) 考核点的众多属性可分为要求考生进行操作的属性和不要求考生进行操作的属性两大类,不要求考生进行操作的属性对应分值为0。当考生答案文档与答案文档中某个属性值相同时,记该项分值,满分或0分。满分说明考生对要求操作的属性设置正确,0份说明考生对要求操作的属性未进行操作。

(3) 当考生答案文档与答案文档中某个属性值不同时,进一步比较考生答案文档与标准文档中该属性值是否相同,若相同,记0分,说明考生对要求操作的属性未进行操作;若不同,记二分之一分值,说明考生对要求操作的属性进行了操作[6],但是操作结果不正确。

6自动阅卷方法的技术实现

控制一个自动化应用程序的关键在于对应用程序的对象模型要有一个较好的理解。每一个应用程序的对象模型是不同的。微软在Office程序组中每一个应用程序的每一个函数都可以通过应用程序的对象模型被程序员访问。我们系统中常用到的

Word对象有:Appliation、Document、Range、Paragraph、Shape 、InlineShape 、Font、ParagraphFormat、Shading 、Find、PageSetup、Borders、Table等。这些对象的定义及详细的使用方法在VBA的联机帮助里有阐述。

本系统的主要工作是解决word操作的自动批阅。VBA技术是解决这一问题的最好选择。VBA是Visual Basic For Applications的简写。它是Windows应用软件的通用控制语言。使用VBA进行的程序设计保存在Word文档中,因此可以边操作Word文档边进行代码编写。VBA全面采用了面向对象编程技术,提供了许多Word对象。利用VBA技术,可以方便地获取Word文档中的各种对象模型,如书签Bookmark,段落Paragraph,文字Font以及对象模型的属性,如字体Font.Name,字号Font.Size[7]。VBA编程的同时仍然可以方便地对文档进行操作。其代码可以移植到多种编程语言中。通过比较考生答案文档和答案文档中对象的某一属性值是否相同,即可很容易地判定学生的操作是否准确。

开发工具选用VB6.0为宜。使用OLE自动化可以将VBA编写的代码不加修改地移植到VB应用程序中。

用VB访问Word的方法是,首先,创建一个Document对象,并利用它打开目标Word文档;随后,访问对象的属性。以下是对Word文档中第一段的格式进行判断的实例:

Dim ksdafl As document ‘定义一个document对象f1,用来描述一个文档

Set ksdafl=CreateObject(“Word.Document”) ‘创建一个document对象

Set ksdaf1=Word.Documents.0pen (File_name:=”d:\kaosheng\pb.Doc”,ReadOnly,True) ‘以只读方式打开一个文档,返回一个document对象

Dim p As Paragraph,r as Range ‘定义一个paragraph对象p,表示一个段落,定义range对象r,描述文档中有效范围的选定。

Set p=ActiveDocument.Paragraphs(1) ‘设置文档第一段为p指向的段落

If p.Range.Font.Name=”楷体_GB2312” And p.Range.Font.Color=wdColorRed_

And p.Range.Font.Bold = True And p.Range.Font.Italic = True And P.Range.Font.Size=14 Then ‘检测段落字体、字型、字号及颜色

df=df+l ‘如果正确则累计得分

End If

容错处理。我们要考虑到考生在实际考试操作过程中,不同考生的操作有一定随机性,例如考生可能在文档中增加回车换行符,理论上这种操作不应影响考生成绩,但实际利用VBA对象进行自动阅卷时,会影响对段落的定位,第2段会错误地定位成第3段。所以要进行一定的容错处理,对这种情况只要用Delete方法删除考生答案文档中的空段(只有空格和回车的段)即可。

关键语句如下:

Myword.Documents(1).Paragraphs(j).Range.Delete

其他例如首字下沉、中英文混排的编码问题等也应做相应容错处理。

7结语

本文讨论的阅卷方案,利用书签做标记,实现了考核点的快速定位,提高了阅卷的速度。对考生进行的操作,即使与答案并不完全一致,该方案也能酌情给分,具有很大的灵活性。答对因子的提出,使阅卷更加通情理。系统的创新点在于引入了一种全新的阅卷方案。阅卷重点在于学生做了什么,而不仅仅是做对了什么。本系统非常适合于学校教学使用,因其工作量较小,可以由学校组织任课教师根据自己的实际情况进行开发设计。

一项研究成果性能的强弱是衡量该科研价值的重要标准。上机测试题的测试都是通过知识点的“属性值”进行动态测试的。对于每一个知识点的测试都要通过一个测试过程(子程序)来完成。知识点“属性值”的测定是一项较复杂且麻烦的工作,因此,增大了本系统测试子程序的编写难度,工作量很大。到目前为止,本系统已经能测试Windows操作系统中的31个适合机上测试操作知识点中的24个、能测试word文字编辑操作的36个适合机上测试知识点中的29个、能测试Excel电子表格操作的33个适合机上测试知识点中的28个、能测试PowerPoint演示文稿操作的30个适合机上测试知识点(考核点)中的20个,其他知识点的测试过程正在编写中。虽然现在没有实现全部知识点的测试,但用“属性值”进行计算机操作题型动态测试,为今后对新一代考试系统的继续研究奠定了基础。对于数据库操作题现今只能对FoxPro For Windows数据库管理系统的中基本命令操作和程序改错题目的自动测试.由于编程题目的答案是多解的,即每个参测生的编程答案都不一样,因此增大了该种题型的测试难度。目前,该系统只能通过测试运行结果进行评分。

A Word―operated Scheme and Its Research and Implementation of Automatic Marking Based-on VBA

LIU Hong-mei

Abstract:On the basis of checking the cultural heritage and practice to have proposed a new scheme of automatic examination paper marking under word operation ;To have given the storage structure and input method of word operation ;the main algorithm in this scheme is analyzed in detail. To have introduced briefly the VBA technique to implement the scheme and to have found some key codes.

Keywords:operation paper; automatic examination-paper marking; modality language; VBA

参考文献

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

[2] 朱江,谢深泉.考试系统中Word操作题自动阅卷的实现[J].湘潭大学自然科学学报,2002,(9):49-51.

[3] 李桂成,张永奎,闫锐.Word操作题自动阅卷的设计与实现[J].计算机工程与设计,2002,23(4):29-31.

[4] 许洪杰.新一代测试系统(FGTS)的研究与实现[J].天津师范大学学报(自然科学版),2003,23(2):52-53.

[5] 龚沛曾,陆慰民,杨志强.Visual Basic程序设计教程(6.0版)[M].出版地(北京):高等教育出版社,2000:243-249.

[6] 廖恩扬.面向对象对Office文档操作自动评分[J].计算机应用,2002,(8):119-120.

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

作者简介:刘红梅(1969-),女(汉族),山西昔阳人,太原理工大学阳泉学院讲师,工学硕士,研究方向为软件开发环境与工具,主要从事计算机教学与研究。

导师简介:段富,硕士生导师,教授,研究方向为软件开发环境与工具。

上一篇:工学结合在“动态Web技术(JSP)”课程中的深度... 下一篇:虚拟现实技术在计算机实验教学中的应用