首页> 中文学位 >基于抽象语法树的C编程题自动评分方法研究及应用
【6h】

基于抽象语法树的C编程题自动评分方法研究及应用

代理获取

目录

声明

1 绪论

1.1 研究背景与意义

1.2 国内外研究现状

1.2.1 国外研究现状

1.2.2 国内研究现状

1.3 本文主要研究内容

1.4 论文的章节安排

2 抽象语法树的生成及预处理

2.1 基础知识

2.1.1 GCC文本抽象语法树

2.1.2 抽象语法树预处理的相关定义

2.2 抽象语法树预处理总流程

2.3 GCC文本抽象语法树解析

2.3.1 冗余处理

2.3.2 重建处理

2.4 抽象语法树标准化

2.4.1 变量及常量标准化

2.4.2 选择结构标准化

2.4.3 循环结构标准化

2.4.4 环状结构标准化

2.5 本章小结

3 基于抽象语法树的C编程题自动评分方法

3.1 引言

3.2 改进的动静结合评分模型设计

3.3 评分模型的详细设计

3.3.1 源程序的规范化

3.3.2 建立知识点关键字词典

3.3.4 程序相似度计算

3.3.5 动态模块设计

3.4 实验结果与分析

3.4.1 实验环境

3.4.2 实验数据

3.4.3 实验评价标准

3.4.4 实验结果及分析

3.5 本章小结

4 基于改进的动静结合评分模型的C语言在线考试系统

4.1 系统需求分析

4.2 系统概要设计

4.2.1 系统软件架构设计

4.2.2 系统功能模块设计

4.2.3 系统数据库设计

4.3 调用评分模型接口实现

4.3.1 调用POJ评判内核实现

4.3.2 调用程序静态分析接口实现

4.4 C语言考试系统运行效果

4.4.1 前台功能模块运行实例

4.4.2 后台功能模块运行实例

4.5 系统测试

4.5.1 功能测试

4.5.2 非功能测试

4.6 本章小结

5 总结与展望

致谢

参考文献

攻读硕士学位期间主要研究成果

展开▼

摘要

随着计算机技术的飞速发展,互联网+教育深刻地影响着教育教学方式和课程考试方式。编程题的自动评分是程序设计类课程在线考试中的一个重大需求,实现编程题的在线实际测试是程序设计语言课程考试的最有效形式。由于程序设计题主观因素强、解决方式多、评分标准不完善,因此,如何实现高效合理的编程题自动评分,一直是程序设计类课程在线考试领域研究的难点和热点问题。 基于对编程题评测特点的研究,本文依据人工评分思想,设计了一个改进的动静结合评分模型。该模型的动态评分部分依赖于POJ(Peking Online Judge)内核实现,静态评分部分基于抽象语法树实现。改进的动静结合评分模型依据学生程序编译是否通过,分别对学生程序应用不同的评分规则,同时加入了程序是否满足要求的知识点评测。对编译通过的学生程序同时进行动态评分和基于抽象语法树的静态评分。对于编译未通过的学生程序,先按照预先设置的评分规则扣除语法分,之后只进行基于抽象语法树的静态评分。 研究并实现了基于抽象语法树的C编程题静态分析方法,该方法首先借助GCC编译命令生成抽象语法树(Abstract Syntax Tree,AST),并依据本文给出的抽象语法树预处理原理及算法实现对生成的抽象语法树进行解析和标准化,采用树编辑距离(Tree Levenshtein)算法计算学生程序抽象语法树与模板程序抽象语法树之间的最小编辑距离,并依据相似度计算公式得出两者之间的相似度。取学生程序抽象语法树和模板程序库中模板程序抽象语法树的最大相似度作为学生程序与模板库程序的相似度,最后依据预先设定的评分规则计算学生程序的静态得分。 针对本文设计的动静结合评分模型,以本校2018-2019第一学年的C语言考试数据为数据源,选取42个代表性的学生程序进行实验分析,实验结果表明本文的评分方案较本校现有系统的评分方案更贴近人工评分,且准确率平均可以达到80%,具有很高的可用性。 本文以基于抽象语法树的C编程题静态分析方法为核心,借助改进的动静结合评分模型,设计并实现了C语言在线考试系统。该系统减轻了教师评阅试卷的负担且保证了对学生程序评判公平合理。

著录项

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号