韦立梅 张淑荣
(广东白云学院电气与信息工程学院,广东 广州 510450)
《C语言程序设计》课程自动评分系统综述
韦立梅 张淑荣
(广东白云学院电气与信息工程学院,广东 广州 510450)
C语言是国际上广泛流行的计算机高级程序设计语言,也是我校计算机、电子、自动化、机电等相关专业的一门必修课。开发一个合理的C语言程序设计课程自动评分系统,可以节省教师大量的改卷时间,实现无纸化考试,从而可以将自动评分系统推广到其它课程中。
C语言程序设计;自动评分系统
C语言是1972年由美国贝尔研究所的D.M.Ritchie提出的。它既具有高级语言的特点,又具有汇编语言的特点。因此可用它开发系统程序,也可以用来编写应用软件。C语言具备很强的数据处理能力,是世界上应用最广泛的计算机语言之一。C语言一共有37个关键字、9种控制语句、34种运算符、丰富的数据类型,能用来实现各种复杂的数据结构的运算,尤其是指针类型数据,使用灵活,提高程序效率;用C语言较易实现程序的模块化、结构化设计,生成的目标代码质量高,程序执行效率高;可移植性好,几乎在所有的计算机系统中都可以使用C语言。
自动评分系统的开发工具是采用Visual Basic语言与C语言相结合,其中主体程序与界面均由Visual Basic语言实现,对编程题的评分算法(词法分析、语法分析等)则采用C语言编写。
3.1 Visual Basic数据库编程技术
(1)Visual Basic的数据库对象
Visual Basic访问数据库常用三种方法,它们分别是:数据访问对象(DAO)、远程数据对象(RDO)和ActiveX(ADO)。
DAO数据访问对象。Visual Basic把DAO模型封装在Data控件,分别设置相应的DatabaseName属性和Recordsoucre属性就可以将Data控件与数据库中的记录源连接起来,以后就可以使用Data控件来对数据库进行操作。因此DAO最适用于单系统应用程序或在本地分布使用。RDO是Visual Basic访问关系型ODBC数据源的最佳界面接口,这种方法也集成于Visual Basic中。Active Data Objects(ADO)作为另一种可供选择的技术出现,正在逐渐代替其他数据访问接口。ADO“扩展”了DAO和RDO所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。ADO是独立于开发工具和开发语言的简单而且容易使用的数据接口,所有的数据源都可以通过ADO来访问。
(2)数据绑定控件
连接好数据库后,还需要用数据绑定控件将数据源对象显示出来,然后才能对后台中的数据信息进行编辑和查询等数据处理操作。常用的数据绑定控件有文本框、组合框等标准控件及数据列表(DataList)、数据网格(DataGrid)等ActiveX控件。数据绑定控件有两个标准的属性:Datasource和DataField属性。Datasource属性用于设置数据源,DataField属性用来设置数据库字段的名称。
3.2 Visual Basic中调用API函数
Application Programming Interface,简称API函数,是Windows操作系统提供的函数,可以实现对应用程序的控制。要调用API函数,必须先在Visual Basic中用Declare语句声明。可借助于Visual Basic提供的应用程序“API文本查看器”,正确地声明与使用API函数。
3.3 TCC行编辑命令的使用
除了使用集成开发环境之外,也可以用传统的命令行界面来运行Turbo C程序,TCC命令可以以命令行的方式编译C源文件,将它们连接成可执行文件。可在其它程序中将TCC作为外部程序调用,实现以命令行方式编译连接C源程序。
除以上几点外,系统还涉及到了编译原理中的词法分析及语法分析方法。
对于编程题进行自动评卷,较复杂,因此本文重点介绍该题型自动评分功能的实现方法。
由于本文针对的是非计算机专业的C语言课程,学生普遍刚刚接触程序设计,造成恶意代码的概率较低,再结合C语言程序结构、语法特点,对编程题评分主要采用结果、静态评分与动态评分相结合的方法,具体步骤如下:
(1)结果对比
检查指定的结果文件是否存在,若存在则与标准答案文件进行对比,与标准答案文件内容完全相同,则说明结果正确,得满分,否则转去静态评阅,若无结果文件,执行动态评分。
(2)基于可执行文件的动态评分
对考生源程序进行编译连接,若生成可执行文件成功,则运行考生程序,用预先定义的测试数据集中的各组测试数据作为输入值,进行测试,比较运行结果和期望结果,并通过比较结果评定学生程序的分数。若生成失败,说明考生程序存在语法错误,转入以下过程继续处理:
1)对考生源程序进行词法分析。扫描源程序,将其转化为特定格式的TOKEN串,存入TOKEN文件;
2)根据词法分析的结果,即TOKEN文件,进行语法分析,详细指出程序中存在的语法错误,生成错误文件,在保证不对考生程序正确部分产生破坏的前提下,尽最大可能将考生程序修改正确,生成修改后的TOKEN文件;
3)调用转换程序将修改后的TOKEN文件重新生成为C语言源程序,其与考生源程序的名字不同,称其为新生成源程序;
4)调用TCC程序以命令行方式对新生成源程序进行编译连接;
5)编译连接成功,运行新源程序的执行文件,并调用API函数控制程序运行,以防由于死锁的发生导致系统崩溃;编译失败则退出动态评阅过程,改用静态评阅;
6)对新生成源程序的运行结果进行检测,若有结果,则转去进行结果比较,若无结果则转去进行静态评阅。
(3)基于程序代码的静态评分
与动态评分相比,代码静态评分不需要运行学生的程序,因此不用考虑对系统安全性的影响,作为编程题评分的必要环节,代码静态检查对于可执行和不可执行的程序都适用。代码静态检查分为软件质量度量方法和源程序分析比较方法。软件质量度量方法主要是对程序的常量、变量和关键字等内容进行分析后,根据匹配程度给出分数。源程序分析比较方法主要是通过将学生源程序和标准程序进行匹配,该方法依赖于标准答案的数据集,根据模板最为匹配的答案与学生源程序进行对比,根据匹配程度给出评分。源程序分析比较方法主要采用的是基于结构度量的技术。从程序设计题题库文件中读取该试题的关键语句,对考生程序进行检测,根据检测出的考生程序中的关键语句的条数,判断程序的逻辑合理性,给出相应分值。
目前,利用计算机对学校各门课程考试试题库进行管理、组卷、测试、评分系统的开发与使用,已成为各个院校教学改革的重点内容之一。限于篇幅,本文只重点介绍编程题目的自动评分方法的实现。
[1]赫伽宁.结合动态测试与静态分析的编程题自动评分方法研究[D].哈尔滨工业大学,2008.
[2]谭浩强.C语言程序设计[M].北京:清华大学出版社,2004.
[3]王春霞.自动阅卷系统的开发[J].盐城工学院学报,2002(15).
[4]郭琦.Visual Basic数据库系统开发技术[M].北京:人民邮电出版社,2003.
Overview of the Automatic Scoring System of C Language Programming Design
Wei LiMeiZhang ShuRong
(College of Electrical and Information Engineering,Guangdong Baiyun University,Guangzhou 510450,Guangdong)
C programming language is the international popular advanced computer programming language.It is also a compulsory course for computer,electronics,automation,mechatronics and other related majors in our school.This paper develops a reasonable automatic scoring system for C language programming design,which can save a lot of time for teachers and realize the paperless examination,so that the automatic scoring system can be extended to other courses.
C language programming design;automatic scoring system
G434
A
1008-6609(2015)10-0072-02
韦立梅,女,辽宁凌源人,硕士,讲师,研究方向:数据库应用系统开发、多媒体技术。