关键词:自动评分系统;答案评分;程序信息表
1.前言
随着科学技术的发展,计算机技术走进各行各业之中。利用计算机解决生产生活中的问题已经司空见惯。但在相对保守的教育行业还处于原始的人工阅卷,人工打分的阶段。目前,计算机批改作业试卷仅仅应用于选择题,这大大限制了计算机的工作范围。本系统着眼于批改相对复杂的C语言编程大题。这种题型代码冗长,对于人工批改来说,要求教师自己依次输入计算机,手动运行并比对结果,十分繁琐。因此C语言程序题自动评分系统显得尤为重要。
本系统主要是针对C语言专业课程的作业及考试而设计的,具有自动分析程序源代码并打分的功能。分析程序题目可得,题目主要考查该语言的某一知识点,即代码量不会很大。所以本系统主要优化方向为提高打分准确率,而非打分速度。对此,本系统采用程序动态运行打分和程序代码静态对比打分相结合的方法来对编程大题评分。并且,由于程序代码静态对比打分能更反应学生对程序设计知识点的掌握,所以为了权衡打分重点,本系统将程序代码静态对比分数权重提高到75%,相应的程序动态运行分数权值为25%。
2.功能描述
根据在评分过程中是否需要源代码被执行,可分为程序动态运行打分和程序代码静态对比打分。程序动态运行打分指的是系统自动在沙盒中运行(防止源程序危及系统)被测程序,并且在有必要的情况下,自动输入程序所需要的输入数据,比对运行结果与标准答案,通过分析正确率,运行时间,运行所需要的空间大小,程序健壮性等来对该被测程序评估。但是这种方法有一个明显的弊端,即无法对那些程序存在问题的,无法执行的被测程序打分,于是便需要结合程序代码静态对比打分。程序代码静态对比打分不要求程序的完整性,可执行性,对任意代码均可打分。其通过检查被测程序的语法正确率,被测程序关键字,被测程序数据结构等来综合评估。然而程序代码静态对比打分也有其弊端,可能会出现程序代码静态对比打分很高,然而运行结果错误的结果。所以,本系统综合程序动态运行打分和程序代码静态对比打分,使得出的分数更加客观准确。
3.功能设计
考试系统的用户分为两种:学生和教师/管理员。学生用户包括三项操作:登录、程序题答题和个人信息维护与查分。教师用户包括五项操作:登录系统、学生信息管理、设置题目和答案模块、查看自动评分结果模块和人工评分模块。该系统的功能模块示意图如下图1所示。
图1系统的功能模块设计
本系统将信息保存在SQLServer数据库内,SQLServer是一个关系数据库管理系统,是一个全面的、集成的、端到端的数据解决方案,具有使用方便可伸缩性好与相关软件集成程度高等优点,因此选其作为系统的数据库。本系统的数据库主要包括管理员信息表,程序题信息表,学生登录信息表,题目标准答案表,学生答案信息表,学生题目结果信息表,学生分数表。
本系统将程序动态运行打分和程序代码静态对比结合,即先经过静态分析,程序没有语法错误且具有完备性,此时就能运行源代码进行动态运行测试。首先在沙盒中(隔离源程序的环境)将源程序编译为可执行文件,然后用本系统根据预先设定的输入范围选取边缘数,极限数,各种随机数作为输入数据进行测试,比对被测程序运行结果和期望结果,并根据各项指标对学生的程序进行评估。
4.结束语
本项目将程序动态运行打分和程序代码静态对比两种评分手法相结合的方法来对程序题评分。经过各方面的研究与测试,优势在于:(1)系统速度快,评分公正客观准确。(2)方便适用,易于推广。
参考文献
[1]王宁.编程题自动评分系统中结构体的研究与实现[D].哈尔滨工业大学,2006.
[2]张宏伟.基于语义理解的编程题自动评分系统的研究与实现[D].大连海事大学,2010.
作者:伍文达,衢州学院2015级物联网工程专业学生;指导教师:陈佳泉。资助项目:衢州学院大学生科技创新项目。