自动阅卷算法实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

随着教育改革的不断深化和发展,人们对信息技术与教育系统整合的要求越来越迫切. 传统的考试方式已不能适应现代考试的需要,计算机应用能力的上机考核逐渐成为高校考试改革的重要方式之一. 而且随着网络考试环境的不断开发,对自动阅卷技术的研究也将越来越深入,并逐步使得考试系统走向成熟,全面推进计算机无纸化考试是今后的发展趋势[1 ] . 同时随着考试方式的改革,各种类型的计算机考试系统也应运而生. 而影响计算机无纸化考试全面推行的关键是考试结果的评判. 因此,从某种意义上说,评分算法是整个考试系统成败的关键所在,是整个无纸化考试系统的核心.

1 问题提出

由于每个考生的思维方式不同,解决问题的能力也不同,在程序设计时往往会采用不同的语句或使用不同的控制结构来实现,因评阅时对考生程序的准确性判断存在一定的难度,自然而然地给阅卷工作带来极大的难度. 在以往的人工阅卷模式中,对于考生所提交的程序清单,阅卷人员不仅需要以自身的经验去评价考生的程序答案是否可行,还要对程序的运行过程或结果的准确性加以评判,才能对整个程序做出一个合理的评分结果. 由此可见,实施程序测试是检验程序功能,提高计算机自动阅卷的合理性较为关键的技术.

作为图形界面的表单程序,是《Visual FoxPro 程序设计》课程教学的重点和考核点,而表单设计比较复杂,不仅包括控件的属性,如名称、标签、外观等的设计,还包括程序功能的设计,即程序代码的编写.自动阅卷时不仅要考虑表单界面元素的设计是否符合要求,还要分析程序的功能是否实现.

2 方案确定

2. 1 阅卷规则分析

判断一个程序是否正确有不同的标准,在进行自动阅卷时必须先制定一套判断程序是否符合要求的准确、可行的标准,在这个标准的指导下进行自动阅卷的研究才有实用价值.

针对Visual FoxPro 表单程序的特点和程序考试的评分要求,制定了以下判断准则:

1) 程序界面符合要求. 这里的“符合要求”指界面的初始位置、界面大小、

界面中控件的类型、数量符合题目所规定的要求;

2) 程序中控件的属性符合要求. 每一个控件都有很多属性,这些属性必须符合题目的要求,即应该修改的属性必须修改,没有特别要求修改的属性保留默认值;

3) 控件事件符合要求. 控件在程序运行时会有一定的控件事件产生,这些控件事件必须按照题目要求对应正确,不应该有多余的与题目无关的事件;

4) 程序运行结果符合要求. 判断程序最主要的是看结果是否正确. 当提供正确的输入数据或触发某一事件时,程序必须按题目的要求给出正确的输出结果.

2. 2 表单程序自动阅卷方案

通过分析表单程序文件的结构和面向对象软件测试技术的特点,系统采用静态测试和动态测试相结合的方法来完成表单程序自动阅卷.

其基本思想是根据提交的考生程序文件,对该考生程序即时编译,对于不能编译的程序,通过获取程序的相关信息,根据关键字匹配技术实现自动判分;而对于通过编译的考生程序,将考生程序作为子进程来控制,模拟Windows 运行的消息机制,驱动考生程序自动运行,并在自动运行过程中记录运行过程,再根据窗口句柄,获取表单界面上控件的动态信息和运行结果信息,从而达到评阅的目的因此针对表单自动评阅功能实现,开发了一个小平台,利用“消息驱动”机制,驱动考生程序按照指定要求执行,获取执行后的界面信息以及结果信息.

3 实现的相关技术

3. 1 表单文件格式分析

通过文献资料的参考以及对表单程序文件结构分析,发现Visual FoxPro 面向对象表单程序文件是一个数据表,表中记录了表单界面上的对象和功能实现的全部程序代码. 其中包括控件对象的类名信息、属性信息、控件的直接容器信息、以及表单控件的方法和事件代码等详细信息. 下面以某表单上的一个命令按钮为例,以数据表形式访问其命令按钮

对象相关信息,其涉及的字段信息如下表1 所示.

表1 表单程序文件结构

通过对Visual FoxPro 表单文件结构的分析,与阅卷有关的所有信息都可以通过以数据表的形式访问表单文件来获得,即在程序不能正确运行的情况

下通过这种静态测试来实现按步打分的原则,而避免“一刀切”的算法 .

3. 2 考生程序运行及跟踪的研究

在评阅表单程序文件时,为了获取表单运行状态信息,需采用动态测试,利用跟踪技术记录考生程序运行状态. 由于Visual FoxPro 程序设计语言中本身提供了用于操作程序的函数,如FILE ( ) 、FOPEN ( ) 、FWRITE() 、FCLOSE() 、AMEMBERS() 以及AERROR()等,这些函数可实现记录程序运行过程,其中还包括

程序运行过程中出现的错误信息,而这些信息是动态评阅的关键. 其实现过程如图1 所示.

图1 考生程序跟踪记录

在阅卷时调用跟踪模块对考生提交的程序加以运行,记录相关数据. 其中包含判断考生程序是否存在、自动执行考生程序、跟踪记录执行过程、提取错误信息等,并将记录的结果信息写入到文本文件中,生成结果文件和错误信息文件,然后读取结果文本中的信息,判断题目所规定的内容(如表单中的控件,控件中的属性和方法等) 是否己实现,同时通过函数获取考生程序运行过程中的错误.

3. 3 消息和事件驱动机制

在表单程序测试时,通过读取考生文件信息获取得分要点信息,在不运行考生程序的情况下进行静态测试;而真正的自动阅卷还需实现自动运行考生程序,通过测试数据或执行过程进行验证,才能判断程序是否具有指定要求的功能,该功能是否能够真正实现,以及对象状态是否变化,运行结果是否正确,以此确定程序的正确性. 因此如何驱动考生程序运行以及测试数据的生成是实现自动阅卷的关键技术.

而通过对Visual FoxPro 文件结构分析,以及根据参考文献资料,发现Visual FoxPro 表单程序文件是面向对象程序设计界面,具有面向对象技术的特点和事件驱动机制. 因此可借助面向对象软件测试方法以及程序自动测试技术,实现表单程序的自动阅卷. 对于考生编写的程序,可通过面向对象程序测

试技术,实现模拟用户操作,发送消息,利用消息驱动程序,驱动考生程序运行,同

相关文档
最新文档