基于组件技术的自动改卷系统的设计与实现_第1页
基于组件技术的自动改卷系统的设计与实现_第2页
基于组件技术的自动改卷系统的设计与实现_第3页
基于组件技术的自动改卷系统的设计与实现_第4页
基于组件技术的自动改卷系统的设计与实现_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、收稿日期:2004-10-12基金项目:计算机基础通过性考试,基金来源:华南师范大学特色项目(拨款);编号:521036作者简介:蔡韶华(1973.5-),女,汉族,广东潮州人,大学讲师,硕士,E-mail:caishh基于组件技术的自动改卷系统的设计与实现蔡韶华华南师范大学教育信息技术中心 广州 510631摘要:传统的改卷系统存在许多问题和不足,为此,文章讨论了基于组件技术的自动改卷系统的设计思想与实现,并且详细讨论了组件嵌入,组件设计,开发平台的应用。关键词:组件;VBA;计算机基础课;自动改卷系统 DESIGNING AND IMPLEMENTATION OF TEST PAPER A

2、UTOMATIC CORRECTION SYSTEM BASED_ON COM TECHNIQUECAI ShaohuaEducation Information Technique Center,South China Normal University,GuangZhou 510631,ChinaAbstract:There are many problems in the traditional test papers correction system.This paper gives the thinking and implementation of test papers aut

3、omatic correction system base_on COM technique and discusses the COM embedding,COM designing and development platform application in detail.Key Words:COM; VBA; computer elementary course; test papers automati correction system目前市场上存在的各种计算机应用基础的自动改卷系统,存在着对环境要求过于严格,系统使用的通用性不足;或者知识点不够全面,限制了教师考试出题的灵活性;甚

4、至对学生的操作判定有误判情况等问题。针对以上不足,本文对设计一个基于组件技术的具有开放性和通用性的计算机应用基础自动改卷系统进行了探索。1 改卷系统工作流程自动改卷系统利用COM技术将Office文档嵌入到系统中,再调入数据库中每个知识点的正确答案进行比对并将得分输入数据库。具体工作流程如图1所示:Office文档(考试、作业)COM组件对象读取相应文档的内容与知识点比对并给予分值保存分数值释放内存并退出图1:自动改卷流程2 基于组件的自动改卷系统设计思路自动改卷系统应用了大量的组件思想,并针对性地编制了自己适用的组件。所谓COM(Component Object Model:部件对象模型),

5、是Microsoft许多其他技术的核心,是一种以组件为发布单元的对象模型。它作为一种跨平台的客户服务器系统开发技术,具有开放的体系结构。其也是Active X和OLE 2.0的技术基础。只要遵循COM规范,应用程序和组件对象之间就可以实现二进制代码级别上的重用,从而解决了对编译语言和环境的依赖。COM实际上是一种二进制代码的操作规范,它允许用某种语言编写二进制代码中的对象,为其他语言所访问,即为二进制兼容。实际上,COM技术已经渗透到Microsoft的各种产品中,是其他技术如ADO,VBA,Office Automation的基石,自动改卷系统大量使用了组件技术不仅大大提高了编译效率,而且提

6、高了软件开发效率和实现了代码重用。(1)利用组件技术嵌入Office软件目前应用最为普遍的Office套装办公软件可以说是对Com技术支持最好的软件,Office套装软件提供了强大的编程接口技术使用户可以通过程序控制软件的任何一部分操作,这部分功能主要由COM技术的重要组成部分VBA组件完成。利用其可以实现繁琐、机械的日常生活工作的自动化,可以利用精美的界面和实用的控件实现用户程序的封装,从而极大地提高用户的办公效率。用户操作结果的对错也可以通过分析VBA组件中的各个对象进行判定。这也是本自动改卷系统设计的核心思想。要利用本系统进行自动改卷,首先需要用C+ builder的控件TOleCont

7、ainer将Office套装软件嵌入。通常嵌入的方法有以下几种: 使用C+ builder提供的Servers控件调用软件,使用Office套装软件的属性。这是最简单的OLE嵌入,只需要使用ToleContainer.Run就可以将文档直接启动,且这样启动的文档从界面上看与C+ builder程序浑然一体。但是它存在不可克服的缺点,即不能通过C+ builder灵活地控制Office文档。使用C+ builder的Servers控件来操纵Office套装软件,在编程时C+ builder能够实现代码提示。这种方法总体上看能够较好地实现C+ builder对软件的控制,但是部分Office软件的

8、功能不能在C+ builder中调用(比如自己编写的VBA宏代码)。自动改卷系统如果采用此方法,有些改卷功能将无法完成。而且,某些VBA代码中可选择的参数在C+ builder调用其对象时变成必选项,否则连编译都不能通过,这也限制了系统的灵活性。通过真正的Com技术,将Office软件目录中的类库全部导入C+ builder中,利用Com技术编程。这种方法整体上类似使用C+ builder的Servers控件,稍比Servers控件复杂,优缺点与Servers控件相同。所以此办法仅能作为一个参考。使用CreateOleObject方式启动软件,然后以OLE方式对软件进行控制。采用这种方式能够真

9、正做到完全控制软件文档,能够使用Office软件的所有属性,包括自己编写的VBA宏代码。与第二和第三种方法相比,本方法能够真正地使用Office软件的各种属性,所有异常处理均可根据需要自己编写,灵活性和针对性较强。所以本系统采用这种嵌入技术作为启动机制。以EXCEL文档为例,C+ builder使用下列语句嵌入一个COM对象:excel = Variant:CreateObject("Excel.Application");进而用以下语句打开EXCEL工作簿和其中的工作表:bu_zuo_da = excel.OlePropertyGet("Workbooks&qu

10、ot;).OleFunction("Open", _argv1);bu_biao_zhun = excel.OlePropertyGet("Workbooks").OleFunction("Open", _argv3);biao_zuo_da = bu_zuo_da.OlePropertyGet("Sheets", biao_ming.c_str();biao_biao_zhun = bu_biao_zhun.OlePropertyGet("Sheets", biao_ming.c_str();

11、(2)知识点的组件设计打开了Office软件文档后,就可以通过组件分析学生试卷。COM有着非常详细的功能组件满足工程技术人员各方面的需要。但需要工程技术人员严格遵守一组规则并需要分析大量低级、晦涩的详细信息才能有效地工作,针对本系统而言,这些信息的冗余量太大。有些改卷系统存在对学生操作判定缺乏灵活性甚至有误判的问题。例如,在EXCEL中公式与函数的知识点,有多种函数都达到相同的操作目的。如果学生使用了教师在编制答案时没有提供的解题方法,笔者测试过的一些改卷系统就有误判的情况。针对这一问题,就要在组件里进行判断异常答案的设置。这是原有的组件没有的设置,本系统利用了C+ builder中创建组件的

12、功能,对COM和考试的知识点进行详尽地分析后按照本身需要进行二次开发,针对不同的知识点设计了新组件。以EXCEL中的数据透视表这一考点为例,本系统设计的新组件如下所示:/ SHU_JU_TOU_SHI_BIAOIMPL.H : Declaration of the Tshu_ju_tou_shi_biaoImpl#ifndef shu_ju_tou_shi_biaoImplH#define shu_ju_tou_shi_biaoImplH#define ATL_APARTMENT_THREADED#include "excel_cao_zuo_TLB.h"/ Tshu_ju

13、_tou_shi_biaoImpl Implements Ishu_ju_tou_shi_biao, default interface of shu_ju_tou_shi_biao/ ThreadingModel : Apartment/ Dual Interface : FALSE/ Event Support : FALSE/ Default ProgID : Project1.shu_ju_tou_shi_biao/ Description :class ATL_NO_VTABLE Tshu_ju_tou_shi_biaoImpl : public CComObjectRootEx&l

14、t;CComSingleThreadModel>, public CComCoClass<Tshu_ju_tou_shi_biaoImpl, &CLSID_shu_ju_tou_shi_biao>, public Ishu_ju_tou_shi_biaopublic: Tshu_ju_tou_shi_biaoImpl() / Data used when registering Object DECLARE_THREADING_MODEL(otApartment); DECLARE_PROGID("excel_cao_zuo.shu_ju_tou_shi_b

15、iao"); DECLARE_DESCRIPTION(""); / Function invoked to (un)register object static HRESULT WINAPI UpdateRegistry(BOOL bRegister) TTypedComServerRegistrarT<Tshu_ju_tou_shi_biaoImpl> regObj(GetObjectCLSID(), GetProgID(), GetDescription(); return regObj.UpdateRegistry(bRegister); BEG

16、IN_COM_MAP(Tshu_ju_tou_shi_biaoImpl) COM_INTERFACE_ENTRY(Ishu_ju_tou_shi_biao)END_COM_MAP()/ Ishu_ju_tou_shi_biaopublic:/存盘/入口:路径/出口:出错提示,若成功则为0STDMETHOD(cun_pan(VARIANT lu_jing, VARIANT* fan_hui);/读入用户在界面所作设定/入口:窗口STDMETHOD(du_ru_jie_mian(VARIANT chuang_kou);/评分/入口:工作表/出口:得分STDMETHOD(ping_fen(VARIA

17、NT gong_zuo_biao, VARIANT* fen);/将设定写到用户界面/入口:窗口STDMETHOD(xie_dao_jie_mian(VARIANT chuang_kou);/载入/入口:路径/出口:出错提示,若成功则为0STDMETHOD(zai_ru(VARIANT lu_jing, VARIANT* fan_hui);private:/数据透视表字段struct shu_ju_tou_shi_biao_zi_duanAnsiString ming;/名AnsiString fen_shu;/分数;/数据透视表struct shu_ju_tou_shi_biao_bool

18、jian_cha_shu_ju_yuan;/检查数据源AnsiString shu_ju_yuan;/数据源float shu_ju_yuan_fen_shu;/数据源分数bool jian_cha_han_shu;/检查函数AnsiString han_shu;/函数float han_shu_fen_shu;/函数分数bool jian_cha_zi_duan_shu;/检查字段数unsigned zi_duan_shu;/字段数float zi_duan_shu_fen_shu;/字段数分数list<shu_ju_tou_shi_biao_zi_duan>zi_duan;/字

19、段;#endif /shu_ju_tou_shi_biaoImplH(3)知识点的对比用户操作结果与预先设计的VBA组件之间进行知识点的对比是本系统的核心技术。为了使评分更为合理,本系统不但把分数细分到各分知识点,做到逐步给分。这样就能提高改卷的精确率,避免学生因为操作不完全而扣掉了全部的分数。以数据透视表为例,学生如果进行了此项操作,本系统在批改本题时会调用新组件的数据透视表对象进行分析:biao = biao.OlePropertyGet("PivotTables");n = biao.OlePropertyGet("Count");if (n &g

20、t;1)throw Exception("该工作表内的数据透视表个数多于1。");else if (n=0)throw Exception("该工作表内无数据透视表。");系统通过上面的代码已经可以判断出学生是否有做该题,然后对有操作的试卷进行深入分析,判定该对象的其他属性是否与题目要求相符。这样做就可以实现分步给分,使得机器阅卷具有一定人性化的特征,体现了极大的灵活性和最大程度体现学生的操作水平。(4)数据访问数据库本系统在进行改卷时,需要从数据库中提取知识点的正确答案与学生操作结果进行比较,之后需要将学生该题得分输入数据库。这都涉及到数据访问数据库这一过程。C+ Builder具有包括DataSource,Table,Query,Midas,ADO在内的二十多个组件和类可以完成数据访问的功能。其中包括DBGrid,DBNavigator,DBEdit, DBLookupListBox在内的15个数据感知组件,DecisionCube, DecisionQuery在内的6个数据仓库组件和包括QRChart, QRExpr在内的20多个报表组件,可灵活地进行数据库存取操作。本系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论