Office操作题自动阅卷组件设计

2013-09-03 08:53陈永松
实验室研究与探索 2013年8期
关键词:标准答案应用程序文档

陈永松

(广东松山职业技术学院计算机系,广东韶关512126)

0 引言

为满足计算机基础多元化实验教学需要,需要为学生提供“纸质教材-网络学习平台-学习辅助光盘-实验平台”四位一体的立体化教学资源[1]。为帮助学生及时了解知识点的掌握程度,网络、光盘及实验平台,都应实现自动阅卷,其中Office部分是阅卷的难点。由于网络、光盘及实验平台的载体各不相同,需要开发多个系统才能实现。目前,关于Office操作题自动阅卷的研究很多,但现有的阅卷方案普遍只针对某单一系统开发,如果使用传统的阅卷方案,则多个系统的开发不可避免地出现重复编码,由于Office自动阅卷编码工作量很大,重复编码的代价非常高。本文就Office文档的自动阅卷提供一个可行的方案,开发一个Office操作题阅卷组件,它具有中立接口[2]的特征,是一个松耦合[3]的系统,为多个需要实现自动阅卷功能的系统提供服务,不同的系统通过服务可以快速实现Office操作题的自动阅卷。

1 现行Office阅卷系统分析

我国关于Office阅卷系统的研究不少,其中主流的研究方案是通过引用Office相关组件,利用VBA技术[4-7]提取Office文档信息和标准答案比较,实现自动阅卷。这些研究多半是基于某个具体系统[4-6]的Office自动阅卷设计;将复杂的Office自动阅卷进行封装,使之用于不同的应用程序调用的研究非常少。有一种方案是将阅卷功能封装为ActiveX控件[7],不同开发语言可调用该控件进行阅卷,这是一种很好的阅卷方案。但该方案采取紧耦合方式,将界面和数据库操作也进行了封装,不适合开发不同风格的阅卷系统,也限制了阅卷系统只能使用一种数据库进行开发。本文提出了一种可行方案,将自动阅卷的操作封装为组件,通过中立性接口,灵活地结合应用程序,组成新软件实现不同需要的自动阅卷。组件内部不含任何界面和数据库操作,不同的阅卷系统可以使用不同风格的操作界面,也可以使用任何的一种数据库。

2 系统分析

2.1 系统功能需求

阅卷组件实现的主要功能:①Office文档评分,即将考生完成的Office文档(以下简称考生文档)和标准答案进行比较,实现对Office文档的评分;②标准答案生成,即从教师完成的具有标准答案性质的Office文档(以下简称样文)提取信息作为标准答案。

2.2 系统开发目标

阅卷组件的总体设计目标是在不同的应用程序和Office文档之间,开发出一个提供自动阅卷服务的组件。它适用于不同的开发模式、不同的程序设计语言和不同的数据库管理系统。阅卷组件和应用程序、Office文档的关系,如图1所示。

图1 阅卷组件、应用程序、Office文档关系图

3 系统设计

3.1 系统总体结构

(1)阅卷组件。阅卷组件实现Office文档评分和标准答案生成两大功能。本系统通过.NET“类库”[8]功能开发阅卷组件,最终生成动态链接库(DLL)[9]文件,并通过COM[10]接口,生成COM文件实现其他程序语言对.NET的DLL的调用。

(2)阅卷信息数据。阅卷组件中每个对象的每个属性都对应于一种特殊的含义,只有正确的输入各个属性的值,才能完成标准答案的录入和阅卷评分。在本系统中,各个属性的含义以表格形式进行存储。

3.2 系统功能设计

3.2.1 设计思路

阅卷组件的主要工作流程是通过VBA技术调用Word、Excel、PowerPoint的 COM 组件的不同对象和属性,达到自动阅卷和答案录入的目的。

目前,利用VBA技术实现Office阅卷功能,具有代表性的设计方案有四种:①针对每个试题编写相应的阅卷程序段[4],这种方案新增试题必须修改程序。②将每种Office对象都定义成一张数据表存储在数据库中,将记录中的数据和文档的对应知识点进行比较实现阅卷[5],这种方案新增考核点必须修改数据库结构。③定义测试点,同时打开考生文档和样文,进行比较评分[6],这种方案阅卷时需打开样文,系统的安全时较低。④通过标准阅卷语言读取相关文档,获取“阅卷标准值”和“操作结果值”,对两者进行比较评分[7],这种方案设计了两个可视化界面实现标准阅卷语言生成和自动阅卷两大功能,界面的封装影响了系统的可扩展性,也限制了不同风格的阅卷系统只能使用一种风格的操作界面。

由于以上方案都存在一定缺陷,阅卷组件采取内外有别的一种设计方案。在内部设计方面,将每种文档的所有对象定义为一个实体类,通过类型(ClassNo)属性,识别不同的对象。系统内部采用实体类封装操作数据[11],操作类操作实体类的模式实现阅卷服务。在对外接口方面,将实体类数据进行自定义序列化,生成阅卷字符串序列,采用中立的方式定义对外接口,使之独立于编程语言和数据库管理系统,为不同的应用程序提供阅卷服务。这种方案避免了安全性、界面封装、重复定位等问题,同时多答案、多定位的处理都比较容易。

3.2.2 阅卷实体类设计

为了保证在后期设计中对外接口始终保持不变[12]。本系统只设计了三个实体类:Word类、Excel类和PowerPoint类,通过classNo属性区分不同的操作对象,不同对象的操作点属性名使用统一名称,如第m个操作点属性用x[m]。由于三个实体类有不少属性是相同的,因此设计一个classData类为父类,然后通过继承生成Word类、Excel类和PowerPoint类。阅卷组件实体类图如图2所示。实体类图属性说明:score:操作实例总得分;err:错误信息;arg0、arg1:特殊参数;location:阅卷点地点(位置);Sheetn:工作表序号;Address:单元格地址或范围;SlideNo:幻灯片序号;Position:对象序号;n[m]:第m个操作点分值。特殊参数用于特殊阅卷信息的输入。

3.2.3 阅卷操作类设计

操作类目的是对实体类进行操作。由Word操作类、Excel操作类和PowerPoint操作类组成,由于三者的设计方法相似,本文以Word操作类为例进行介绍。

图2 阅卷组件实体类图

Word操作类分为Word评分类和Word标记类。评分类用于考生文档评分,标记类用于标准答案的生成和检验。由于标准答案的生成只需在评分的基础上增加少数语句就可实现,而且这些语句的执行对性能几乎无影响,为了提高编写代码的效率,系统在设计时,通过同一个操作来实现,该操作用活动图表示,如图3所示。

图3 打分操作活动图

3.2.4 阅卷接口设计

本系统内部采用面向对象方法构建自动阅卷服务,但为了使不同的应用程序都能利用服务,在对外接口上需要对实体类数据进行序列化[13],以实现外部应用程序和阅卷组件的联系松耦合。本系统中采取自定义序列的方法。

系列化是将同一题的若干几个实体对象转换为字符串。例如检验隶书20号新建样式,并将新建样式应用到文档第3段,每个操作点1分。实体类数据如表1所示(省略了非阅卷属性)。经过系列化结果为ClassNo11||x0,新建||n0,1||x1,隶书||1||x4,20||1||<split>Location3||ClassNo1||x29,新建||1||。

本系统以系列化的数据作为接口,外部应用程序只需要传递系列化的数据,不需要了解阅卷组件的实现过程就可以实现阅卷。在组件内部,将数据反序系列化,形成实体类数据,利用内部功能实现阅卷。

表1 阅卷点实体类数据

3.2.5 阅卷数据生成接口设计

手工输入阅卷数据容易出错,系统通过对外接口,提供检测点生成阅卷数据功能。例如要生成上述样式的阅卷数据,检测点数据输入ClassNo11||arg0新建||x0||1||x1||1||x4||1||<split>Location3||ClassNo1||x29||1||,然后系统就可以自动从样文中获取隶书等信息,生成阅卷数据。

4 外部实现

4.1 外部数据库设计

阅卷组件内部没有进行任何数据库操作,但提倡外部应用程序通过数据库存储阅卷数据,即提供一个字段存储阅卷系列化数据,至于使用何种数据库、数据库的具体结构如何完全由外部程序员决定。图4为我院考试系统数据库关系图(省略了与阅卷无关的表及字段)。

图4 考试系统阅卷数据库关系图

关系图中MarkSeries为阅卷系列化数据。这种设计方法,由于阅卷数据保存在一个字段中,因此不必为每个试题编写阅卷程序段[4],也不需要将Office对象都定义成一张数据表[5],阅卷时也不需要打开样文[6]。

4.2 外部程序开发

4.2.1 自动生成阅卷数据

现有Office阅卷方案关于自动生成阅卷数据的研究非常少,有一种方法是利用可视化阅卷标准语言生成器自动生成阅卷数据[7],这种方法需要根据不同类型设置不同输入界面,通过界面输入不同考核点的标准答案。这种方法界面设置复杂,手工录入答案费时费力、容易出错。建立基于组件的自动生成阅卷数据程序的基本设计流程如下:根据阅卷信息表数据动态生成文本框等用户界面[14],用户选择考核点、输入考核点分数和相关参数,生成检测点数据,根据检测点数据调用组件,读取样文生成阅卷序列化数据并保存到数据库。和阅卷标准语言生成器通过手工输入标准答案[7]的方法相比较,这种方法操作效率高、正确率高,所有类型操作都可以采用统一界面进行设计,简化了界面设计的过程。

4.2.2 自动阅卷

生成阅卷系列化数据之后,建立基于组件的自动阅卷程序,只需利用组件内部功能打开考生文档,返回评分信息并保存到数据库就可以完成。我院考试系统工作流程如下:考生进入考试后自动抽题,生成若干条不含成绩的选题记录,考生考完交卷,根据选题记录,提取阅卷系列化数据,调用组件读取考生文档答题信息,通过组件内部功能进行比较评分,并将评分结果写入到得分字段中。本系统自动阅卷功能主要通过组件内部功能完成,外部应用程序只要编写少量代码就可以实现自动阅卷,外部应用程序和组件的关系为松耦合,当组件升级时,由于接口未变,外部应用程序不需要修改就可以实现阅卷功能的扩充。和紧耦合的阅卷方案相比较,通用性和可移植性都更高[15]。

5 结语

通过对现行Office阅卷系统进行分析,提出Office

阅卷组件方案,它是一种松耦合的系统,实现了跨模式、跨语言、跨数据库应用。针对现有方案的不足,提出一种内外有别的设计方案,内部采用面向对象方式实现阅卷,对外通过实体类数据序列化实现中立性接口,使系统在整体上具有面向服务的特征。这种阅卷方案可以为多个不同系统提供自动阅卷服务,以满足多元化实验教学的需要。

[1] 杜炫杰.叶惠文.胡钦太.大学计算机基础课程多元立体化教学资源的设计[J].中国大学教学,2011(5):53-54.

[2] 杨智勇,赵瑞锋,何 盼,等.基于AJAX的自定义报表中间件平台的研究与实现[J].计算机工程与设计,2009,30(3):713-715.

[3] 陈萱华,杨 玲.服务构件技术在实验室管理平台的应用[J].实验室研究与探索,2009,28(6):185-187.

[4] 于志奇.Office操作题自动阅卷的探讨与实现[J].电脑知识与技术,2009,5(9):2268-2269.

[5] 朱克武.Office办公软件改卷系统的研究[J].计算机与现代化,2011(4):145-148.

[6] 汤克明,陈 崚.Word自动阅卷系统的设计与实现[J].计算机工程与应用,2008,44(35):69-72.

[7] 郭嘉喜.基于ActiveX的Office操作自动阅卷控件的设计[J].煤炭技术,2010,29(4):45-47.

[8] 桑玉真,陈军华.提高基于.NET Web服务类库的信息交换平台的可靠性和安全性方案[J].计算机应用与软件,2010,27(4):194-196.

[9] 姜林美.利用WIN32动态链接库的TFTP服务器的设计与实现[J].华侨大学学报(自然科学版),2011,32(2):178-181.

[10] 李美满,夏汉铸,易德成.基于COM技术的通用考试系统的设计与实现[J].计算机工程与应用,2007,43(1):245-248.

[11] 宁跃飞,李艳萍.探析实体类数据库访问技术[J].中国科技博览,2009(19):115.

[12] 丁立新,王建中,林岳松.基于组件的算法测试系统的建模与实现[J].计算机应用与软件,2008,25(5):38-39.

[13] 高立群,俞家文,丁俊松.NET Framework中序列化与反序列化方法的分析与应用[J].微计算机应用,2007,28(11):1178-1182

[14] 侯彦娥,党兰学,魏 丹,等.Web用户界面动态生成工具的设计与实现[J].河南大学学报(自然科学版),2011,41(6):641-644.

[15] 刘 冰.最大化Java代码可重用性的策略研究[J].福建电脑,2010,26(3):64-65.

猜你喜欢
标准答案应用程序文档
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
李耀进:没有标准答案,唯有用心用情
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
丢失了标准答案
“标准答案”阅卷实录
基于RI码计算的Word复制文档鉴别
标准答案的反思
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat