摘 要
程序设计课程是高校很重要的计算机基础课,Visual Basic 因其语法简单,是很多专业的入门语言。由于程序设计题的自动阅卷不易实现,很多高校仍采用笔试形式,不能很好地反映出学生真实水平。目前市场上的 VB 上机考试系统,多以全国计算机二级考试试题为题库设计,不具有通用性。系统对程序界面评分比较准确,对程序代码的评分往往只看运行结果,评分结果不够合理。
本文以河北科技大学 VB 程序设计课程教学内容为研究对象,设计实现 VB 上机考试系统。系统基于.NET 平台设计,采用 MVC 架构进行实施,包含考务管理模块、答题模块和评分模块三个主要模块,其中评分模块是系统的核心模块。本文提出“界面 XML 静态评分→分块插桩动态评分→代码正则静态评分” 三部曲的编程题自动评分方案。界面 XML 静态评分是将学生程序的 FRM 文件转换为 XML 文件,提取测试对象信息进行界面评分,从而简化评分过程,提高评分效率;分块插桩动态评分是将学生程序分块嵌入标准答案程序,利用插桩语句输出运行结果进行动态评分,有效避免学生程序局部错误引发的连带错误,减少学生大量丢分的情况;动态评分结果为 0 时,利用正则表达式规约得分点信息,兼顾语句次序,对程序块进行代码正则静态评分,使评分更准确。
本系统可用于考试或平时练习,便于教师对学生考试结果加以统计分析,进行更有针对性的辅导,提高教学质量。系统克服了现有评分方法的不足,使评分更加科学、准确,接近人工阅卷的效果。
关键词 考试系统;自动阅卷;VB;XML;分块插桩;正则表达式
Abstract
Program designing is an important computer elementary course in college. Visual Basic, because of its simple syntax, is the introductory language of many disciplines. The automatic marking of programming is not easy to achieve, so that many colleges still use the written examination form which is not always efficient to reflect the true level of students. Currently most of the VB examination systems mostly use the national computer grade II examination question bank. These kinds of examination systems don’t have universality. The score of program interface is accurate, but the score of program codes which is only based on the running results is not reasonable.
According to the teaching requirements of program designing course in Hebei University of Science and Technology, this paper designed and implemented a VB computer examination system which based on .NET platform, using the MVC architecture.
It consists of three main modules, namely management module, test module and evaluation module. Among them, scoring module is the core module of the system. This paper proposed a marking scheme that involves XML interface static marking, block program instrumentation dynamic marking and regular expression static marking. XML interface static marking transforms the student’s VB FRM file to a XML file, and then extracts the test object information for marking. It can simplify the evaluation process as well as improve the marking efficiency. Block program instrumentation dynamic marking embeds the students’ code blocks into the answer codes, and then use the pile statements to output the results for marking. It can avoid joint errors caused by local errors, and heavily reduce the issues of students’ losing points. When dynamic marking score is zero, the student’s program will be marked by static code marking method. It uses regular expressions to describe scoring statement characteristics and takes into account the statement order, which makes the evaluation more accurate.
This system can be used to test or practice. It helps teachers to analyze the result of the exam, so that they can be more targeted tutoring, and improve the teaching quality. This system overcomes the deficiency of the current marking methods and makes the evaluation more scientific, accurate, close to the manual marking effect.
Key words Examination system;Automatic marking;VB;XML;Block program instrumentation;Regular expression
随着计算机的普及,互联网的发展,计算机技能已经日益成为大学生的必备技能之一。目前各高校都开设了计算机基础课程,主要有两门,《信息技术基础》和《程序设计语言》。《信息技术基础》主要是 Office 系列软件的使用,其考试形式为上机操作。因其考试系统具有通用性,技术已比较成熟,使用普遍。《程序设计语言》则各高校根据各学科专业的需要,有不同的选择,以 Visual Basic、Visual C++、Access为主。由于程序设计属于主观题,学生程序千差万别,没有成熟的评分方案,且评分系统要针对试题设计,不具有通用性,若遇到学生程序错误则评分误差较大,因此多采取笔试考试的形式。
程序设计课程采用笔试形式有很多弊端,最主要的是脱离了编程的集成开发环境,学生在做题时无法添加控件,失去了可视化程序设计的意义。Visual Basic 的一些主要功能,比如菜单,多窗体,都无法进行编程考试,不被学生重视,学生掌握不理想。而且由于考试中无法对程序进行调试,学生不能及时发现和改正程序错误,考试成绩并不能很好的反映出学生的真实水平,有的学生甚至出现了背程序的现象,降低了学生的学习兴趣。
目前市场上的 VB 上机考试系统,多以全国二级考试试题为题库设计,试题难度和题型重复,不适于高校日常考试使用。系统对程序界面的评分比较准确,程序代码的评分不够科学,大多只看运行结果,不是满分就是 0 分,误差较大。而一些高校自己开发的考试系统,虽评分方法各有千秋,但仍存在需要改进的方面,且题库不具有可扩充性,如果更改试题,则需重新设计评分程序,不具有通用性。因此开发出适合本校学生学习内容和难度要求的 VB 上机考试系统,并采用更加准确的评分方法是有意义的。
目前计算机对客观题的自动阅卷技术已经相对成熟,主观题的阅卷技术仍在探索当中。其原因主要是影响智能评阅的关键技术不够成熟,如自然语言、模式识别、人工智能的理解等还基本上处于研究的起步和初级阶段[1]。在现有技术条件下,实现自然语言的自动评阅系统具有相当的难度,真正通用的系统尚未出现,而程序设计语言与自然语言相比,具有严格的语法规定和语句格式,其自动阅卷技术相对于自然语言发展较快。国外由英国诺丁汉大学开发的 Course Master 系统,是迄今为止较为成功的计算机程序设计语言辅助教学系统,能够对学生提交的程序进行自动测评并给出反馈意见。系统包括静态测评和动态测评两部分,其中比较成熟的部分是静态测评,在动态测评方面,Course Master 系统由于测试用例的选取方法不尽科学,其测试效果并不理想[2]。
Online Judge 系统是一个在线的编程题自动评分系统,最初用于 ACM-ICPC 国际大学生程序设计竞赛和 OI 信息学奥林匹克竞赛的自动评分和排名[3]。用户按规定在线提交程序源代码(语言类型如 C、C++、Pascal 等),Online Judge 系统即对程序源码进行编译和执行,根据预先给定的测试数据进行测试。系统捕获并保存运行结果,传递给结果判断程序。结果判断程序将运行结果与标准答案进行比较,或者检测运行结果是否符合一定的逻辑条件,然后返回给用户一个状态信息:通过、答案错误、超出时间限制、超过输出限制、超出内存限制、运行时错误、格式错误、或是无法编译,同时返回程序使用的内存、运行时间等信息[4]。此类系统还有 TRY[5]系统,BAGS[6]系统等。
国内较早是由上海大学段汉周等提出的 VB 程序设计考核自动评阅系统。系统阅卷时,首先由教师提供一份标准答案工程文件,自动评阅系统从答案工程文件中提取反应界面特性及程序功能的内容,将其作为标准答案,然后根据这些内容设置评分标准,再与从考生答案工程文件提取出的内容进行分析比较,判断出考生的各种错误,最后依据评分标准和考生错误信息给出考生的分数。它判断程序的标准是认为没有通过编译或者不能运行的程序是属于完全错误的,然后根据用户程序界面参数和运行的结果两部分内容来进行程序的评阅[7]。
沈阳工业大学的刘双[8]、南京理工大学的马青霞[9]和大连海事大学的张昌运[10]均采用的是动态评阅和静态评阅相结合的方式。动态评阅即运行考生的程序,向应用程序发送模拟消息,使程序按照既定的策略自动运行,通过比较运行结果给出分数。同时,如果题目中涉及控件属性的设置或者考生的动态评阅的运行结果分数为零时,采用静态评阅的方法;静态评阅时,对学生程序文件进行窗体信息匹配、窗体中控件信息匹配、关键词匹配和得分点匹配,按照各个部分不同的权值计算学生的得分。
中南大学的佘石泉提出提出用正则表达式来描述程序得分点的评分模型,这些得分点相互独立,互不影响。模仿人工阅卷的特点,从考生代码中搜索得分点,从而得到一个匹配的情况,以此作为考生程序评分的依据之一[11]。
浙江工业大学的宣华锋提出动态评分通过模拟 Windows 消息来控制被评程序,令其按照预定逻辑运行,并嵌入临时代码来获取程序运行特征,最后根据运行特征比对标准答案来给分;静态评分将程序按照考查要点切分为多个得分点,用正则表达式来规约每个得分点,最后在程序代码中匹配正则表达式来给分[12]。
综上所述,VB 程序设计考试系统不具有通用性,评分方法也不够完善。存在以下主要问题:
1) 考试系统的评分程序多以最终运行结果为依据,不考虑中间过程,程序的一点小错误,有可能造成大量丢分。动态评分多通过控件句柄来获取控件的相应属性值,导致算法实现较为复杂,造成系统运行不稳定。
2) 考试系统的代码静态评分多采用关键词匹配的方式给分。一方面由于答案不够全面,会使一些正确答案不能得分,另一方面由于不考虑语句位置关系,会使本来错误的程序得分,导致评分不够准确,误差较大。
要想达到更准确的评分效果,评分程序必须针对试题而设置。各个高校程序设计课程使用的教材不同,教授的侧重点和难点也不尽相同,针对我校学生课程内容和难度,开发出实用的 VB 程序设计考试系统,同时改进评分方法,使评分结果更接近人工阅卷的效果,是有实际意义的。
利用VB程序开发设计考试系统:
系统登录界面
答题主界面
选择题答题界面
编程题答题界面
错误信息窗口
评分结果窗口
目 录
摘 要
Abstract
第 1章 绪 论
1.1 研究背景
1.2 国内外研究现状
1.3 研究内容
1.4 论文的组织结构
第 2章 相关技术综述
2.1 Microsoft.NET 平台
2.1.1 .NET 平台的特点
2.1.2 .NET 基础结构
2.1.3 Visual Studio 2010
2.2 XML 技术
2.2.1 XML 概述
2.2.2 XML 的语法
2.2.3 XML 文件结构
2.3 Windows API 技术
2.3.1 Windows API 简介
2.3.2 窗口和窗口类
2.3.3 Windows 句柄、消息和消息处理函数
2.3.4 句柄
2.4 正则表达式
2.4.1 正则表达式的概念
2.4.2 正则表达式常用符号
2.4.3 .NET 框架中正则表达式的应用
2.5 本章小结
第 3章 需求分析与概要设计
3.1 系统需求分析
3.1.1 问题的提出
3.1.2 系统功能需求
3.2 实施方案设计
3.3 总体结构设计
3.3.1 系统功能模块
3.3.2 模块主要功能
3.4 编程题评分标准的表示模型
3.4.1 基本操作题和简单应用题评分标准表示模型
3.4.2 综合应用题评分标准表示模型
3.5 系统数据库设计
3.5.1 数据库概念结构设计
3.5.2 数据库逻辑结构设计
3.6 本章小结
第 4章 系统设计中的关键技术问题
4.1 编程题总体评分方案
4.1.1 “三部曲”评分方案原理
4.1.2 评分系统总体类图
4.2 基于 XML 的界面静态评分方案
4.2.1 基于 XML 的界面静态评分原理
4.2.2 界面静态评分相关类
4.2.3 事件代码的提取
4.3 分块插桩动态评分方案
4.3.1 分块插桩动态评分原理
4.3.2 实例分析
4.4 基于正则表达式的代码静态评分方案
4.4.1 基于正则表达式的代码静态评分原理
4.4.2 实例分析
4.4.3 相关数据库访问类
4.5 本章小结
第 5章 系统主要模块实现效果
5.1 答题模块
5.2 评分模块
5.3 考务管理模块
5.4 实例验证及结果分析
5.4.1 实例验证
5.4.2 有效性分析
5.4.3 误差原因分析
5.5 本章小结
结论
参考文献
致谢
个人简介
(如您需要查看本篇毕业设计全文,请您联系客服索取)