致谢 | 第5-6页 |
摘要 | 第6-7页 |
ABSTRACT | 第7-8页 |
1 引言 | 第12-18页 |
1.1 课题的研究背景及意义 | 第12-13页 |
1.1.1 课题的研究背景 | 第12-13页 |
1.1.2 课题的研究意义 | 第13页 |
1.2 国内外研究现状 | 第13-16页 |
1.2.1 国外研究现状 | 第13-15页 |
1.2.2 国内研究现状 | 第15-16页 |
1.3 课题的主要研究工作 | 第16-17页 |
1.4 论文结构 | 第17-18页 |
2 相关理论技术研究 | 第18-33页 |
2.1 程序自动分析策略 | 第18-21页 |
2.1.1 动态分析 | 第19-20页 |
2.1.2 静态分析 | 第20-21页 |
2.2 程序预处理模块 | 第21-23页 |
2.2.1 GCC的优势 | 第21-22页 |
2.2.2 GCC中的预处理 | 第22-23页 |
2.3 基于树的分析 | 第23-27页 |
2.3.1 抽象语法树 | 第23-24页 |
2.3.2 抽象语法树中节点介绍 | 第24-27页 |
2.3.3 文本抽象语法树 | 第27页 |
2.4 模式匹配算法简介 | 第27-29页 |
2.4.1 单向贴近度算法 | 第28-29页 |
2.4.2 Levenshtien算法(编辑距离) | 第29页 |
2.5 树形结构匹配算法 | 第29-32页 |
2.5.1 树编辑距离 | 第30页 |
2.5.2 基于节点权值的树编辑距离算法 | 第30-31页 |
2.5.3 Tree Kernel算法 | 第31-32页 |
2.6 本章小结 | 第32-33页 |
3 编程题评分方案 | 第33-47页 |
3.1 动态评测与静态分析相结合的评分方案 | 第33-35页 |
3.2 程序静态分析设计 | 第35-38页 |
3.2.1 知识点匹配评分 | 第35-37页 |
3.2.2 常用程序结构匹配模型 | 第37-38页 |
3.3 抽象语法树匹配算法的优化 | 第38-46页 |
3.3.1 抽象语法树匹配算法劣势分析 | 第38-40页 |
3.3.2 抽象语法树冗余优化处理 | 第40-43页 |
3.3.3 抽象语法树匹配算法改进 | 第43-46页 |
3.4 本章小结 | 第46-47页 |
4 系统的设计实现与实验结果分析 | 第47-68页 |
4.1 系统设计 | 第47-54页 |
4.1.1 系统结构设计 | 第47-48页 |
4.1.2 系统的功能模块设计 | 第48-49页 |
4.1.3 数据库设计 | 第49-52页 |
4.1.4 内部评分结构设计 | 第52-53页 |
4.1.5 伪正确答案的遏制 | 第53-54页 |
4.2 系统实现 | 第54-62页 |
4.2.1 用户登录模块 | 第54页 |
4.2.2 题目维护模块 | 第54-57页 |
4.2.3 程序题答题模块 | 第57-59页 |
4.2.4 程序题评分模块 | 第59-60页 |
4.2.5 内部评分结构实现 | 第60-62页 |
4.3 实验及结果分析 | 第62-67页 |
4.3.1 知识点评分模块实验分析 | 第62-64页 |
4.3.2 程序结构评分模块实验分析 | 第64-66页 |
4.3.3 两种方法的比较 | 第66-67页 |
4.4 本章小结 | 第67-68页 |
5 总结与展望 | 第68-70页 |
5.1 总结 | 第68页 |
5.2 展望 | 第68-70页 |
参考文献 | 第70-72页 |
附录A | 第72-73页 |
附录B | 第73-74页 |
作者简历 | 第74-76页 |
学位论文数据集 | 第76页 |