《C语言程序设计》课程自动评分系统综述

2015-03-24 03:59:57韦立梅张淑荣
电脑与电信 2015年10期
关键词:C语言程序设计C语言控件

韦立梅 张淑荣

(广东白云学院电气与信息工程学院,广东 广州 510450)

《C语言程序设计》课程自动评分系统综述

韦立梅 张淑荣

(广东白云学院电气与信息工程学院,广东 广州 510450)

C语言是国际上广泛流行的计算机高级程序设计语言,也是我校计算机、电子、自动化、机电等相关专业的一门必修课。开发一个合理的C语言程序设计课程自动评分系统,可以节省教师大量的改卷时间,实现无纸化考试,从而可以将自动评分系统推广到其它课程中。

C语言程序设计;自动评分系统

1 C语言简介

C语言是1972年由美国贝尔研究所的D.M.Ritchie提出的。它既具有高级语言的特点,又具有汇编语言的特点。因此可用它开发系统程序,也可以用来编写应用软件。C语言具备很强的数据处理能力,是世界上应用最广泛的计算机语言之一。C语言一共有37个关键字、9种控制语句、34种运算符、丰富的数据类型,能用来实现各种复杂的数据结构的运算,尤其是指针类型数据,使用灵活,提高程序效率;用C语言较易实现程序的模块化、结构化设计,生成的目标代码质量高,程序执行效率高;可移植性好,几乎在所有的计算机系统中都可以使用C语言。

2 系统开发工具

自动评分系统的开发工具是采用Visual Basic语言与C语言相结合,其中主体程序与界面均由Visual Basic语言实现,对编程题的评分算法(词法分析、语法分析等)则采用C语言编写。

3 关键技术简介

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源程序。

除以上几点外,系统还涉及到了编译原理中的词法分析及语法分析方法。

4 编程题自动评分流程

对于编程题进行自动评卷,较复杂,因此本文重点介绍该题型自动评分功能的实现方法。

由于本文针对的是非计算机专业的C语言课程,学生普遍刚刚接触程序设计,造成恶意代码的概率较低,再结合C语言程序结构、语法特点,对编程题评分主要采用结果、静态评分与动态评分相结合的方法,具体步骤如下:

(1)结果对比

检查指定的结果文件是否存在,若存在则与标准答案文件进行对比,与标准答案文件内容完全相同,则说明结果正确,得满分,否则转去静态评阅,若无结果文件,执行动态评分。

(2)基于可执行文件的动态评分

对考生源程序进行编译连接,若生成可执行文件成功,则运行考生程序,用预先定义的测试数据集中的各组测试数据作为输入值,进行测试,比较运行结果和期望结果,并通过比较结果评定学生程序的分数。若生成失败,说明考生程序存在语法错误,转入以下过程继续处理:

1)对考生源程序进行词法分析。扫描源程序,将其转化为特定格式的TOKEN串,存入TOKEN文件;

2)根据词法分析的结果,即TOKEN文件,进行语法分析,详细指出程序中存在的语法错误,生成错误文件,在保证不对考生程序正确部分产生破坏的前提下,尽最大可能将考生程序修改正确,生成修改后的TOKEN文件;

3)调用转换程序将修改后的TOKEN文件重新生成为C语言源程序,其与考生源程序的名字不同,称其为新生成源程序;

4)调用TCC程序以命令行方式对新生成源程序进行编译连接;

5)编译连接成功,运行新源程序的执行文件,并调用API函数控制程序运行,以防由于死锁的发生导致系统崩溃;编译失败则退出动态评阅过程,改用静态评阅;

6)对新生成源程序的运行结果进行检测,若有结果,则转去进行结果比较,若无结果则转去进行静态评阅。

(3)基于程序代码的静态评分

与动态评分相比,代码静态评分不需要运行学生的程序,因此不用考虑对系统安全性的影响,作为编程题评分的必要环节,代码静态检查对于可执行和不可执行的程序都适用。代码静态检查分为软件质量度量方法和源程序分析比较方法。软件质量度量方法主要是对程序的常量、变量和关键字等内容进行分析后,根据匹配程度给出分数。源程序分析比较方法主要是通过将学生源程序和标准程序进行匹配,该方法依赖于标准答案的数据集,根据模板最为匹配的答案与学生源程序进行对比,根据匹配程度给出评分。源程序分析比较方法主要采用的是基于结构度量的技术。从程序设计题题库文件中读取该试题的关键语句,对考生程序进行检测,根据检测出的考生程序中的关键语句的条数,判断程序的逻辑合理性,给出相应分值。

5 结束语

目前,利用计算机对学校各门课程考试试题库进行管理、组卷、测试、评分系统的开发与使用,已成为各个院校教学改革的重点内容之一。限于篇幅,本文只重点介绍编程题目的自动评分方法的实现。

[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

韦立梅,女,辽宁凌源人,硕士,讲师,研究方向:数据库应用系统开发、多媒体技术。

猜你喜欢
C语言程序设计C语言控件
基于Visual Studio Code的C语言程序设计实践教学探索
计算机教育(2020年5期)2020-07-24 08:52:56
基于C语言的计算机软件编程
电子制作(2018年16期)2018-09-26 03:27:08
关于.net控件数组的探讨
软件(2018年7期)2018-08-13 09:44:42
高职高专院校C语言程序设计教学改革探索
以“学生为中心”的《C语言程序设计》教学设计探究
基于翻转课堂的《C语言程序设计》课程教学系统的实现与研究
软件工程(2016年8期)2016-10-25 16:02:07
浅谈《C语言程序设计》课程的教学改革
《C语言程序设计》课程的教学改革与实践
科技视界(2016年22期)2016-10-18 16:12:24
论子函数在C语言数据格式输出中的应用
就这样玩会VBA中常见的自定义控件
电脑迷(2012年24期)2012-04-29 00:44:03