对于C++语言考试编程题自动评分系统的研究

时间:2022-10-30 07:49:36

对于C++语言考试编程题自动评分系统的研究

摘 要:为了使学生适应计算机语言考试,考核学生应用C/C++编写程序的能力,实现C++语言考试的计算机阅卷,提出了针对C++程序上机考试的自动评分系统的构建方式与算法研究。用Windows API函数做了深入的研究与分析,对如何匹配、查找程序的关键语句进行了分析和研究。该系统对C++程序上机考试的客观题和主观题的计算机自动评分采用多种的方法,完成了对C++语言考试的自动评分。关键词:自动评分;主观题; 正则表达式; 可扩展标记语言

中图分类号:TN911-331; G420 文献标识码:A

文章编号:1004-373X(2010)18-0051-02

Study on Automatic Scoring System for Programming Exams of C++ Language

ZHANG Xiao-guang, ZHANG Zhen, NIU Yong-jie

(Computing Center, Yan’an University, Yan’an 716000, China)

Abstract: The building-up mode and algorithm for the automatic scoring system dealing with the exams on computer for C++ program are proposed to make the students to accommodate the computer language exams, improve the ability of the students for writing programs with C++and realize the computer scoring for C++ language examination. The Windows API function and the method to look for keywords of a program are analyzed. The automatic scoring for C++ language exams was implemented with several methods.Keywords: automatic scoring system; subjective question; regular expression; extensible markup language

0 引 言

在当今社会计算机已经成为人们必须掌握的一项基本技能,在大学之中计算机课程也已经是每个大学生必修的课程。随之而来的便是计算机教师的阅卷工作量不断增长,使用计算机自动批改试卷越来越成为教师们的愿望,同时提高对学生试卷的评定精度与速度势在必行。计算机自动评分避免了以往人工批改试卷的种种问题,保证了对试卷评定的公正与客观。当前,对于计算机考试中自动评分技术的研究已经有了很大的进展,但是对于计算机考试完全实现自动评分却一直未能解决。造成这一问题的重要原因是自动评分中一些关键技术尚不成熟,所以完全解决计算机考试自动评分问题在当前的技术条件下尚不可能。但是,对于计算机程序语言来说,因为相对自然语言,其所受到的约束和限制相当严格,所以实现对计算机考试中计算机程序语言考试的自动评分在技术上是可以实现的。

在当前的计算机程序语言考试中主要分为客观题(比如填空题和改错题)和主观题(比如编程题)。客观题的自动评分在技术上比较容易实现,而编程题这一常见的主观性题型的自动评分却没有较好的解决方法。因为,如果仅以考生编写的程序运行结果作为评判标准的话,虽然技术上很容易实现,但是相当的不客观。这种方法忽视了考生的源代码与编程思想,这是与人工评分相违背的。

要使编程题的评分客观公正,就必须对试卷中考生所编写的源代码进行分析与处理,如何分析试卷中考生的源代码已成为解决对编程题自动评分的关键。

1 国内外编程题自动评分研究现状

1.1 国内编程题自动评分研究情况

在国内,上海大学段汉周[1]等人提出的程序设计考核自动评阅系统在进行评分时,需要教师事先根据试题做好一个正确的VB工程文件,然后自动评分系统提取考生所做工程文件中的内容与教师事先提供的工程文件内容进行比较判断,统计出考生的各种错误,然后根据考生所犯的错误,依据评分标准进行评分,从而得出考生的成绩。但是这套系统的评分是建立在无法通过编译或者不能运行的程序都是完全错误的基础之上的,只有没有出现上述情况的程序才可以进行评分,否则就自动给零。此外,对于系统的可靠性,防止使用用户程序时出现的各种问题与系统崩溃、死机等情况做出了专门的设计,取得了良好的效果。

乔善平等人提出了从人工智能可信度的角度引入[2]:执行可信度、程序的最大相似性与代码可信度和指数曲线衡量标准与输出可信度几个新的概念, 然后分析了实现的过程,并且将整个程序设计分为几个部分执行、代码、输出和其他因素,使之存在偏序和制约关系, 以实现自动评分。

1.2 国外编程题自动评分研究情况

由英国诺丁汉大学所研发的CourseMaster系统,其功能是比较完善的,可以自动对提交给它的计算机程序进行测试,同时给出测试结果和分析结果,包括了静态测试和动态测试两部分。但是在动态测试方面,由于诺丁汉大学的CourseMaster系统所用的算法设计有缺陷,因此造成了动态测试效果与实际偏差较大[3]。

2 设计思想

对于程序来说,判断其是否正确,最直观的办法就是判断它是否能够完成规定的功能,也就是其运行结果与实际应有的结果比较是否一致。通过使用数据文件,可以将C++语言的运行结果保存起来,所以能够很容易地将其结果文件与标准答案进行比较,从而判定考生所编写程序的错对,以给其应得的分数。

对于那些有结果但不正确,或者无法编译运行的考生代码,检查其算法思想是否准确合理编程为工作目标,虽然在C/C++语言中对于一个问题可以用多种方法完成代码的编写,但是其算法思想是基本一致的。例如一个排序程序应该如下程序设计结构

for(i=0;i

for(j=i+1;j

if(a>b)

{

}

根据C/C++语言的关键字,可以抽取骨架为for()for()if(){}或者for(){for()if(){}}等,从考生文件抽取的骨架与标准的骨架相对比,根据异同给予一定的分数。

在对考生程序进行评分时,由于考生编写程序时常常出现死循环问题,而有死循环的程序如果被Shell函数调用启动后将因无法结束而使系统崩溃。但通过Visual Basic调用Windows提供的控制应用程序API函数则可防止这种情况的出现。

为了避免考生互相抄袭,该系统采用了两种预防措施。第一种措施,不同考生在考试期间随即抽取试题库中不同的试题,但是还可能出现相近考生试题相同的情况。从实际出发,该系统采用“记录解答过程”的方法,利用Windows内部功能[4-7],或考核软件(VC++)提供的“宏”功能,跟踪记录考生操作的每一步骤,形成独立的日志文件,并通过特殊方法“固化”在当前位置,或者直接传送到服务器上,作为评分的必需内容。评分时,如搜索不到指定日志文件,就可认定为“抄袭”[5]。

3 系统设计

在系统中对编程题的实现,使用其运行结果与标准答案之间的比较来判定分数设计也相当容易。但是,要实现当程序运行结果与标准答案比较不匹配或程序无法编译运行的情况,则如何检测其程序的编程思想是自动评分系统的要点。该系统设计的总体思路如图1所示。

图1 系统流程图

4 结 语

该系统经过多次实际使用,有效地避免了上述问题的出现,能够准确定位问题的位置,并且对于一题多解的问题也运行良好,在程序编程问题中,能够基本体现公平、客观地评价一个学生的编程思想,特别是操作日志的使用,有效地监督了学生的“抄袭”现象。对程序编程时,不能通过编译的,但是已经编写了一部分程序的考生,使用提取骨架的方法,基本能够给考生一个公平的评价,改善了过去很多系统给学生打零分的情况[8-9]。

参考文献

[1]段汉周,凌捷,郑衍衡.Visual Basci程序设计考核自动评阅系统中若干问题的研究[J].计算机工程,2001,27(4):167-168.

[2]REDMIL Felix. Exploring risk-based testing and its implications[J]. Software Testing,Verfication and Reliability,2004,14(1):3-15.

[3]乔善平.基于智能移动Agent的C语言考试系统[J].计算机工程与科学,2004(4):29-31.

[4]朱友芹.WindowsAPI 参考大全[M].北京:电子工业出版社,2000.

[5]尉宏波.Windows API编程范例入门与提高[M].北京:清华大学出版社,2003.

[6]林仓.Windows API编程[M].北京:清华大学出版社,2005.

[7]求是科技.Windows API程序设计参考大全[M].北京:人民邮电出版社,2006.

[8]高思丹,袁春风.主观试题的计算机自动批改技术研究[J].计算机应用研究,2004,21(2):181-185.

[9]程华.计算机语言类课程主观试题的自动评分方案设计[J].电脑学习,2006(1):16-17.

[10]李F,陈和平.正则表达式在数据库查询中的应用[J].计算机工程与设计,2006,27(12):3-5.

[11]田绪安,郭华磊,刘瑞光,等.基于模糊匹配的主观题评分在线考试系统[J].现代电子技术,2007,30(12):96-98.

[12]司存瑞,周岩,孙米.网络考试系统平台的设计与实现[J].现代电子技术,2006,29(20):44-46.

上一篇:基于TFT彩屏液晶的便携数字存储示波器 下一篇:连续波比相测距系统的误差因素研究