通用阅卷系统的研究及其实现 - 开发心得 - 江边

(这条文章已经被阅读了 27 次) 时间:2001-06-20 19:17:05 来源:江边 (sagartm) 原创-IT

通用阅卷系统的研究及其实现

【摘 要】
随着计算机应用的日益普及和深入,计算机考试系统实现无纸化考试已经成为一种重要的考试方式。 本文探讨了通用阅卷系统的设计与实现。重点介绍了作者开发的通用阅卷系统的实现技术和设计思想。简要的介绍了这个系统的基本功能与使用方法。该系统使用当前最流行的面向对象的设计思想,应用组件编程技术进行开发,具有高度的通用性、开放性、智能化。为当前计算机阅卷系统的实现提出了一种简便、高效的方法。

【关键词】
阅卷系统 组件ActiveX COM/DCOM 文档格式识别 代码复用

Designing And Implementation of Universal Examination System

【Abstract】
It popularizes and deepen day by day with what computer used the computer examination realizes systematically that had an examination and already become a kind of important test way with no paper at all. This text has been probed into and goes over examination papers interchangeably the systematic design and realized. Introduce what author develop in common use to go over examination papers systematic implementation technique and design philosophy especially. Brief introduction this systematic basic function and operation method . This system use prevailing facing design philosophy of target most at present, use technology develop programming package, commonability, openning, intelligent with height. Go over examination papers systematic realization propose one simple and convenient, high-efficient method for present computer.

【Keywords】
Computer Examination System , Component , ActiveX, COM/DCOM , Document Format , Code replied

目录
摘要与关键字——————————————————————————–2
目录—————————————————————————————-3
1. 引言————————————————————————————4
2. 开发通用阅卷系统可行性——————————————————————4
3. 阅卷系统的架构————————————————————————–5
3.1 阅卷系统的组成———————————————————————–5
3.2 阅卷系统的基本框架——————————————————————-5
3.3 标准答案数据库的结构—————————————————————–6
3.4 试题生成系统简介———————————————————————6
4. 阅卷系统的关键技术———————————————————————-7
4.1 代码复用技术(ActiveX.DLL)———————————————————-7
4.2 类在阅卷系统中的应用—————————————————————–8
4.3 VB特殊数据类型———————————————————————–9
4.4使用字符串名调用属性和方法————————————————————9
4.5 应用OLE技术通过VBA代码识别Office格式————————————————-9
5. 阅卷系统的实现————————————————————————–9
5.1 阅卷主程序的设计——————————————————————–10
5.2 参数的传递————————————————————————–11
5.3 文字输入题模块的设计—————————————————————-11
5.4 Windows操作题的设计—————————————————————–11
5.5 Office操作题的设计——————————————————————11
结束语————————————————————————————-12
参考文献———————————————————————————–12

1.引言
随着计算机技术的高速发展,计算机应用基础的内容正在不断迅速地更新和充实,计算机基础教育日趋普及,从单纯的理论考试逐步过渡到理论考试+操作考试。如何快速、准确的完成操作考试结果的评阅已经成为当前计算机操作考试急需解决的问题。针对当前的上机操作考试建立水平高,功能全.智能化程度高的通用阅卷系统。目前仍有一些理论问题和实际问题有待解决。本文根据我们的研究实际给出了一个通用阅卷系统的实现方案,介绍了阅卷系统的阅卷流程,给出了实现时的数据结构。为了验证本文的正确与可靠性,我们针对文献[1]中描述的上机考核系统利用组件编程、智能匹配等技术,研制了一种基于Windows平台具有开放、智能化、高效性、可靠性、通用性的计算机上机考核阅卷系统。 本文探讨的也就是对基于这些技术实现这个阅卷系统的一点研究及实现。这个系统在阅卷的过程中模仿了人工的阅卷的过程并将其用计算机自动化实现。对与最后的成绩进行了初步的统计管理。

本文着重介绍“通用阅卷系统”的阅卷理论以及有关的实现的技术和流程。具体内容介绍如下:
一、 结合目前阅卷系统的现状,阐述了建立“通用阅卷系统”的必要性与可能性。
二、 对“通用阅卷系统”进行整体概述,详细介绍了系统的结构、功能、特点。
三、 对“通用阅卷系统”所涉及的技术进行了详细的介绍说明。
四、 简要介绍“通用阅卷系统”的软件实现,包括“通用阅卷系统”的界面与流程。

2.开发通用阅卷系统可行性
随着计算机的普及,计算机的操作练习考试已经成为一种初学者迅速获得了一定的计算机知识的软件。对于计算机操作练习与考试系统已经比较成熟。但是对与无纸化考试结果的评阅系统当前市场上还比较少。由于操作考试可以分为客观题、主观题。针对客观题,应用一一对应的比较技术是很容易实现的。但是对与象Word、Excel 等操作题,评卷工作就很难把握。当前实现具有主观性质的操作题评卷的方法无非是以下几中方法

1. 直接读取文件的格式。比较标准文件与考生的答案文件的格式。这是最直接、最简单、最方便的方法。但是由于Microsoft Office 的文件格式没有公布,这给计算机自动批阅操作题造成了一定的困难。因此,有些单位 就用其他的文件格式替代的Microsoft Office 的格式进行批阅。
2. 运用Windows自带OLE技术,通过引用Office 对象进行批阅。这中方法实现的技术方便、有效。软件升级快、通用性好。有些单位 就是这一类型。

这几中方法各有优缺点。其中第一中方法中Office 中的有些内容是不能够批阅的。这是它的致命弱点。第二中方法,由于是直接把OLE引用的代码书写在程序当中,这样不利于软件的继续开发。软件开发人员的工作量相当大。
由于Microsoft Visual Basic 6.0 中新增加了一项重要的功能。这就是CallByName 。通过她可以指定一个包含属性或方法名称的字符串来访问该属性或方法,而不用在代码中显式地指定属性或方法的名称。这样我们可以使用类型二中的技术进行评阅。不过,我们只把要批改的知识点写到了数据库中。然后通过我们的通用阅卷系统可以评阅所需要的内容。如果需要添加知识点,只要增加知识点数据库就可以了。这样的阅卷系统不但针对性强,而且容易升级,利用我们开发的试题生成系统,可以自己添加试题,更新考试、练习题库。更重要的是这样的阅卷系统减少了重复开发的必要,增强了可靠性。

3.阅卷系统的架构
3.1 阅卷系统基本组成。
(1)阅卷应用程序。
阅卷应用程序是主要是处理了考生的考试信息。通过调用阅卷阅卷子模块得到考生的各项成绩。并对成绩加以管理。
(2)阅卷子模块。
阅卷子模块主要是每一中题型的通用阅卷程序。有Office阅卷模块、Windows阅卷模块等等。
(3)标准答案数据库。
标准答案数据库是一个存放着各个题型所有的标准答案。在这个数据库中有“标准答案表”、“评分细则表”。这个标准答案数据库是由标准答案生成系统生成的。

3.2 标准答案数据库的结构
标准答案数据库默认文件名为: KeyData.mdb。在我们的通用阅卷系统中可以重新指定标准答案文件名。
(1)标准答案表的结构
字段名 数据类型 说明
Topic_ID 文本 题号
Choice_Answer 文本 选择题答案
Chinese_Answer 备注 文字输入答案
Windows_Answer OLE对象 Windows操作题答案
Word_Answer OLE对象 Word操作题答案
Excel_Answer OLE对象 Excel 操作题答案
PowerPoint_Answer OLE对象 PowerPoint操作题答案
Internet_Answer OLE对象 Internet操作题答案

(2)Windows 评分细则表的结构
字段名 数据类型 说明
Topic_ID 文本 题号
Question_ID 文本 这一题中的知识点编号
KeyWord 文本 知识点关键字
MarkValue 文本 批改的内容(如:路径)
MarkPostion 文本 批改内容的位置
Score 数字 这一知识点的得分

(3)Office评分细则表的结构
字段名 数据类型 说明
Topic_ID 文本 题号
Question_ID 文本 这一题中的知识点编号
WordObject 文本 知识点所对应的对象关键字
WordProperty 文本 知识点所对应的属性
MarkValue 文本 标记
MarkPostion 数字 标记位置(从后向前第几个)
Score 数字 得分

3.3 阅卷系统的基本框架
我们先来分析一般的阅卷程序。首先取标准答案,然后取出考生的试卷,最后,进行一一的比较。这个阅卷系统针对不同的题型采取了不同的阅卷方法。A.选择题使用了一一对应的比较方法。B.文字输入题,应用了智能匹配的算法—只要考生有正确输入的文字就算对。不需要一一对应.C. Windows 操作题、Internet 操作题通过与标准数据库中的信息相比较,分步给分。D .Office 操作题。由评分细则表生成阅卷信息表。由评分细则表告诉阅卷系统应该比较考生文本和标准答案文本的哪些内容,其中包含了每个考点的分值、可能出现的多种答案、模糊判别等情况。下面就是我们开发的通用阅卷系统的基本框架图:

在这个阅卷系统中由试题生成系统生成考试所需要的试题,当然这是在人机交互的方式下生成的(参见4.4)。阅卷系统只负责根据标准答案与评分细则表,比较考生的答题结果是否与答案标准相一致。我们在这里采用了模糊匹配、智能比较技术进行阅卷 ,这样可以增加阅卷系统的可靠性。阅卷所得分值由阅卷系统加以处理产生各项总分写入成绩数据库(参看5.1)。

4.4 试题生成系统简介
我们开发的试题生成系统主要是实现了以下几个功能。
(1)生成考试用试题。实现用户可以自己添加试题。
(2)对已有试题可以进行修改。
(3)生成标准答案文件。
(4)生成与标准答案相对应的评分细则信息。这些内容都将通过试题生成系统自动添加到标准答案数据库与考题数据库。下图就是在生成Word标准答案时的一项功能。

用户就象编辑Word文档一样,只要选择所需要批阅的内容,然后指定相关的知识点与分值,这样就实现了一个知识点的添加。

3.阅卷系统的关键技术分析
1. 代码复用技术(ActiveX.DLL)
为了实现阅卷系统的可通用化及其扩展性我们应用了当今流行的ActiveX技术。ActiveX 部件是一段可重复使用的编程代码和数据,它是由用 ActiveX 技术创建的一个或多个对象所组成。应用程序可以使用现有的部件,比如包含在 Microsoft Office 应用程序中部件、各种各样制造厂商所提供的代码部件、ActiveX 文档或 ActiveX 控件(通常称为 OLE 控件)中含有的部件。.ActiveX.DLL部件提供了对象形式的可复用代码。要使用部件的代码,应用程序可以创建对象并调用对象的属性及方法。这种应用程序被称作一个客户应用程序。对于使用部件对象的客户应用程序,部件可分为进程内运行的和进程外运行的。图(1)说明进程内外的区别。进程内部件,或者说 ActiveX DLL,运行在另一个应用程序的进程之中。客户可以是应用程序本身,也可以是该应用程序正在使用的其它进程内的部件。比如说: 我们在阅卷系统中引用的Word、Excel、PowerPoint对象。
我们把阅卷的主要部分开发成可以组装的DLL文件。DLL 是一种过程库,应用程序可以在运行时链接并使用它,这种链接不同于编译时的静态链接。这这意味着DLL 库的更新可以独立地进行,而且许多个应用程序可以共享同一个 DLL。这样我们的系统可以很容易的升级,而且由于实行了分块开发代码的可靠性就更高了。

2. 类的使用。
对象是 Visual Basic 程序设计的核心。窗体和控件都是对象。数据库也是对象。到处都有对象存在,能接受用户个性的用户定义类型变成类。类是具有态的用户定义类型。封装将代码和数据组织在同一个模块中,使得对象能保护和验证其中数据的。面向对象的编程技术可以通过类把数据和过程结合成一个单一实体如下图所示。

从已定义的类中创建自己的对象非常容易,而且使用对象能简化编码,并增强代码的重用,而且不容易出错。我们在构件阅卷系统模块通过创建类模块并赋以属性和方法,定义类,利用类创建阅卷对象。这样我们只要在主调程序当中创建一定的阅卷对象就可以批改指定的题型了。

3 应用了VB的特殊数据类型。
(1) Variant 数据类型
Variant 变量能够存储所有系统定义类型的数据。如果把它们赋予 Variant 变量,则不必在这些数据的类型间进行转换; Visual Basic 会自动完成任何必要的转换。例如:
Dim SomeValue ‘缺省为 Variant。
SomeValue = “17” ‘SomeValue包含 “17”(双字符的串)。
SomeValue = SomeValue – 15 ‘现在, SomeValue 包含数值 2。
SomeValue = “U” & SomeValue ‘现在, SomeValue 包含 “U2” (双字符的串)。
不必过多关注 Variant 变量中数据的类型就可对 Variant 变量进行操作。注意:Variants 还包含三种特定值:Empty,Null 和 Error。
(2) Object 数据类型
Object 变量存储为 32 位(4 个字节)的地址形式,其为对象的引用。利用 Set 语句,声明为 Object 的变量可以赋值为任何对象的引用。注意 虽然以 Object 类型声明的变量足以适应包含对各种对象的引用,但是绑定到变量引用的对象总是在晚期(运行时)绑定。要强迫在早期(编译时间)绑定的话,须将对象的引用赋值给用特定类名称声明的变量。在 Set 语句中使用 CreateObject 或 GetObjec 给变量赋值对象引用。

4. 使用字符串名调用属性和方法
在我们的阅卷系统中主要是应用了动态的处理所传入的字符串。通过传递一个运算符到服务器程序来计算由用户输入的表达式。使用 CallByName 函数把新运算符当作字符串来传递,而不需要更改应用程序。CallByName 函数允许您使用一个字符串在运行时指定一个属性或方法。CallByName 函数的用法如下:
Result = CallByName(Object, ProcedureName, CallType, Arguments())
CallByName 的第一个参数包含要对其执行动作的对象名。第二个参数,ProcedureName,是一个字符串,包含将要调用的方法或属性过程名。CallType 参数包含一个常数,代表要调用的过程的类型:方法 (vbMethod)、property let (vbLet)、property get (vbGet),或 property set (vbSet)。最后一个参数是可选的,它包含一个变量数组,数组中包含该过程的参数。

5.应用OLE技术通过VBA代码识别Office格式
由于Microsoft 公司没有公布Office文件格式,这给我们用计算机自动批阅Office操作题造成了一定的困难。如何正确识别Office文档的格式成为阅卷系统的一大难点。
我们使用Windows中的OLE技术通过VBA代码可以轻松的获得Office文档中的信息。利用Microsoft提供的现成的Office对象,嵌入并链接到程序中,在程序运行过程中,动态地获取数据、处理数据,达到机器自动阅卷的目标。 系统通过OLE/COM接口,做好嵌入和链接Office对象,读入标准答案文件和考生文件,针对阅卷信息表进行合理的定位,采用近似匹配算法将考生的考试文件和标准答案文件进行比较,即可得出比较客观的分数。尽管使用VBA代码之后系统无法脱离Office应用程序。但是,应用VBA可以提供一个简单实用的解决方案。在我们的阅卷系统中我们只要添加Offic的类型库的引用。就可以轻松的应用 Set 语句中使用的 New 关键字、CreateObject 或 GetObject 直接赋值引用Office 对象。

5.阅卷系统的实现
“通用阅卷系统”应用软件工程开发方法,以Visual Basic 6.0为开发工具,采用流行的Windows界面进行设计,使该系统具有具有高度的通用性、开放性、智能化、人机界面友好,操作简单,运行稳定可靠等特点。下图就是我们开发的通用阅卷系统的主界面与阅卷过程进程的主界面。

本阅卷系统可以批阅选择题、文字录入题、Windows操作题、、Word、Excel、PowerPoint操作题与Internet操作题。通用阅卷系统的正常运行取决于通用阅卷系统的标准答案数据库,不同的试题其标准答案数据库中的内容将不同。标准答案数据库可以由试题生成系统自动生成。

5.1 阅卷主程序的设计
阅卷系统主要是对已有考生结果文件进行批阅。因此,主阅卷系统主要是得到考生结果文件的位置。然后,调用阅卷模块进行批阅。其实现流程是:
(1) 取得考试结果文件的位置 。
(2) 判断是否有需要批阅的内容,有则转(3),否则退出。
(3) 生成考试需要的标准答案与评分细则表。
(4) 调用批改一个考生的阅卷子程序。
(5) 批阅成功,添加成绩到数据库。否则调用出错程序。
(6) 判断是否已经完成所有考生的批阅,没有则转(4)。
批改一个考生的阅卷子程序也相似。其流程如下:
(1) 取得考生文件当前的路径。
(2) 调用个各题型的阅卷自模块。
(3) 如果成功,则返回考生成绩,否则调用出错程序。

5.2 参数的传递
为了提高阅卷的通用性我们使用了DLL技术。但是应用程序与DLL之间又不能进行大量的信息交换,因此,我们制定了一个内部的交换接口。通过这个接口,我们把需要的阅卷参数信息生成到几个临时文件中去。然后由阅卷模块读取临时文件中的信息再进行阅卷。

5.3 文字输入题模块的设计
在文字输入题中利用了最长公共子序列的算法[参见文献1]。应用这个算法可以解决文字比较中错位的问题,克服“一一对应”比较方法中的弊病。

5.4 Windows操作题的设计
Windows操作题的实现流程如下:
传入参数:考生的考试目录 strCurPath
评分细则表 wtTable 以结构数组的方式传入。
(1) 取的评分细则表的一条记录。
(2) 根据知识点关键字,调用知识点阅卷子程序,返回是否正确。
(3) 如果正确,取出评分细则表中这一知识点的得分。
(4) 判断是否到了评分细则表的最后,否则转(1)
(5) 返回考生该题的得分。

我们可以通过分析知道Windows操作题操作的结果无非是以下几种情况:(1)文件是否存在。(2)目录是否存在。(3)文件、目录的属性。(4)系统设置是否存在。 因此,只要编写这些情况的通用子程序,通过传入不同的参数就可以进行Windows的评阅。

5.5 Office 操作题的设计
对与Office 文档,我们不可能去比较其中的所有属性,这也没有必要。我们只需要去判断我们需要的属性,结果就可以了。我们在标准答案中对于我们需要判断的内容做了一个标志。在阅卷的过程中,我们就是根据标准答案中的标记与评分细则表去进行批阅的。下面是Office操作题实现的流程。

入口参数: 标准答案文件 strKeyFile
考生结果文件 strAnswerFile
评分细则表文件 strDetailFile

(1) 打开标准答案文件与考生结果文件
(2) 取得评分细则表中的一条记录
(3) 取出批阅所需要的对象与属性。
(4) 根据评分细则表中提供的标记找到标准答案中的位置。
(5) 根据对象与属性取出标准答案中的属性值。
(6) 根据标准答案中已经找到的内容找到考生结果文件中的位置或由评分细则表中的内容直接找到考生结果文件中的位置。
(7) 如果定位成功,根据对象与属性取出考生结果文件中的属性值。
(8) 比较两个属性,如果成功则返回评分细则表中的得分。
(9) 判断是否到了评分细则表的最后一条记录,没有则转(1)
(10) 返回考生该题的得分。

在这个程序中主要是实现对所传入的字符串进行转换成可以使用的对象与属性。这主要用到了4.4中提到的CallByName 函数,并应用了递归调用来实现。注意:如果这个递归处理不好的可能对计算机的性能产生严重的影响。

6.结束语
本文介绍了“通用阅卷系统”是使用Microsoft Visual Basic 6.0 在杭州师范学院计算机教育研究所开发的阅卷系统的基础上开发成功的。在开发过程中得到了很多老师和同学的支持与帮助。在此表示感谢!

参考文献
1. 詹国华,张量,虞歌等。《基于WindowsNT 局域网络的计算机应用能力上机考核系统之关键技术》,计算机工程与应用, 35(8): 37~48,57
2. Microsoft ,《语言特性的新内容 》, Microsoft MSDN
3. Kraig Brockschmidt《Inside COM》 Microsoft Press
4. Stephen G. Guty 等,《Advanced Microsoft Visual Basic 5》 Microsoft Press
5. Kraig Brockschmidt,《Inside OLE 2nd Edition》 Microsoft Press
6. 《Hardcore Visual Basic》
7. 《程序员大本营2000》 CSDN
8. 詹国华 主编,《计算机应用能力考核指南Windows95/98平台》, 中国人事出版社
9. Corry,Mayfield,Cadman著,《COM/DCOM编程指南》清华大学出版社