c语言在线考试系统自动评分模块设计大学本科毕业论文.doc
摘 要C语言是国际上广泛流行的计算机高级程序设计语言,在各类高等院校的计算机及相关专业中,C语言均被列为一门必修的基础课程。随着计算机技术的日趋成熟,该课程的考核从传统手工阅卷走向计算机自动评阅。本文开发的C语言在线考试系统,一方面实现了C语言课程考试的无纸化,节约了大量能源;另一方面,实现了部分题目的自动评阅,降低阅卷的工作量,提高评阅过程中的公平性与准确性。它为C语言教学提供了一套完备的自我测试系统,也为学生的自主学习提供了更好的支持。本系统主要对考试系统中的自动组卷、考生考试及自动评分模块进行了研究与设计,我主要完成的是自动评分模块的功能实现。在设计系统的过程中,我们结合平时使用软件的需求,对该项目进行了界面的优化,该系统设计成功后,经过了一定量的测试,初步证明运行稳定,自动评分准确,评分标准统一,整体效果良好,具有一定的的使用价值。关键字:C语言在线考试系统;自动评分模块;PHP;ApacheAbstractC language is widely popular international high-level computer programming language, various institutions of higher learning in the computer and related professions, C language are classified as a compulsory basic course. As computer technology matures, the course of the assessment from the traditional manual scoring toward the computer automatically marked. This development of the C language online examination system, on the one hand to achieve a paperless examination of the C language curriculum, saving a lot of energy; the other hand, to achieve some of the subject automatically marked, reducing the workload of marking, the process of improving Review fairness and accuracy. It is a C language teaching provides a complete self-test system, but also for the students' self-learning provides better support.This system is mainly for automatic generation of test systems, and automatic scoring module exam candidates conducted research and design, I mainly to complete the automatic scoring module function implementation. In the process of designing the system, we usually use the software combines the needs of the project was carried out to optimize the interface, the system is designed successfully, after a certain amount of testing, preliminary evidence of stable operation, automatic scoring accurate, unified scoring criteria, the overall effect is good, has a certain value in use.Keywords: C language online examination system; automatic scoring module; PHP;Apache目 录1 绪论11.1 课题研究的背景及意义11.2 国内外研究概况与发展趋势11.2.1 客观性试题评测技术11.2.2 主观性试题评测技术22 开发环境和开发技术22.1 系统介绍22.1.1 C语言在线考试系统简介22.1.2 自动评分系统简介22.2 工具环境介绍32.2.1 开发环境的选择32.2.2 PHP语言简介32.2.3 Apache简介32.2.4 MySQL简介33 需求分析43.1 设计思想43.2 可行性分析43.2.1 操作可行性43.2.2 技术可行性43.2.3 经济可行性53.3 用户需求与系统目标54 系统设计54.1 功能需求分析图54.2 系统结构设计64.2.1 系统功能结构64.2.2 系统流程图75 数据库设计86 项目的设计实现116.1 自动评分流程的设计116.2 模块的划分及各个模块的功能的实现方法126.2.1 选择判断评分的实现126.2.2 多项选择题判分的实现126.2.3 填空题判分的实现126.2.4 程序题判分的实现137 系统测试与分析137.1 测试概述137.2 测试方法137.3 测试截图137.3.1 提交答案页面137.3.2 学生查看成绩页面147.3.3 管理员身份查看成绩页面148 结束语168.1 总结168.2 心得体会16参考文献17致谢181 绪论1.1 课题研究的背景及意义作为国际上广泛流行的计算机高级程序设计语言,C语言是高校中计算机及相关专业的一门必修的基础课程。而在当前,对该门课程的考核,普遍还停留在传统的纸笔考试,通常采用人工命题和人工批改评分。这种考核方式虽然有传统考试的优点,但考核方式劳动量大、效率低下,且客观性受到任课老师水平、经验、个性的影响。显然不能满足计算机教育发展的需要。利用计算机实现无纸化的在线考试,已经是计算机考试的一种重要方式。教育测量是对学生的学习能力、学业成绩、兴趣爱好、思想品德以及教育措施上许多问题的数量化测定。它主要用于对学生精神特性的测定。它可以分为理论知识的评价和对技能的评价。对于C语言之类的程序设计类课程,技能评价部分尤为重要。对于理论知识的评测,通常采用客观题的形式。关于技能的考核,早期主要采用卷面的考核方式。其成绩不能真正反映学生计算机技能水平。即使有计算机上机考试,也主要采用人工评阅的方法。评阅费时较多、误差偏大,容易受到主观因素的影响,可能存在不公正的现象。这种现象,不仅仅是我国的计算机考试系统如此,国外的许多考试系统也是这样。所以说,实现自动评阅已是在线考试系统的迫切需要,在线考试系统是计算机考试的必然趋势。1.2 国内外研究概况与发展趋势利用计算机技术实现无纸化考试,是近年来计算机技术一个重要的应用研究领域。而在线自动评分作为计算机考试系统的一个重要的组成部分,它以计算机的高效率的自动评分取代任课老师的低效、手工的阅卷,是实现完全无纸化考试和彻底取代传统的手工考试方式的关键。而且应用这种方式,可能很方便的将评阅结果保存,利于考生及老师的查询。另一方面,更加的客观,可完全避免人为因素造成的影响。目前国内外有很多关于C语言的在线考试系统,大多设计都含有选择题及填空题,可以很好的实现对理论知识的考核,而且自动评分技术也较为成熟。但对实践能力的考核-程序题的考核略有欠缺,由于其无完全固定的答案和考生答题的多样性,该部分的自动评分很难实现,一些考试干脆取消了该类的试题,如全国计算机应用技术证书(NIT)和劳动部组织的计算机信息高新技术考试等。也有一些含有该类试题的考试系统中,对其评分方法并不完善,还没有很好的解决方案。1.2.1 客观性试题评测技术目前大多数计算机考试自动评阅是针对客观性试题的。在对客观题的测试中,每个题目都有一个或一组确定的正确答案,通过将考生的结果与标准答案对比,可进行准确的判分。对于主观性不是很强的试题如填空题。也可以采用类似的方法如字符串比较法,将考生答案与标准答案直接做严格的匹配或模糊的匹配,匹配成功即可得分。通过文献查阅和对现有考试系统的研究,可知现在对于客观性试题的评测技术已经比较成熟,从试题的呈现、学生的答题到自动阅卷完全可以由计算机自主完成,实现无纸化考试。1.2.2 主观性试题评测技术目前对于主观题中的一些题型,如Windows操作题、Word文字录入题。Excel表格处理题的自动评分技术,已经具有了一些重要的进展,但对主观题中的重要一类,程序题的自动评阅,目前还没有很好的评定技术,仍处于探索阶段。就目前全国计算机等级考试的上机考试系统,主要采用的是结果对比的方法进行评分,依据程序运行的结果与标准结果相符程度做对比,给出相应的分数。虽然该方法还存在很多不足,但对于当前形式下,可以作为一种评定的方式。2 开发环境和开发技术2.1 系统介绍系统是在一定环境中相互联系和相互作用的若干部分组成的具有某种功能的集合,一个系统内可能包含许多功能各异的子系统,这意味着系统可以具有多层结构,一个系统的整体功能往往大于单个子系统的功能之和。本系统可以实现C语言的在线考试,方便教师的试题上传、成绩的查阅和汇总,实现自动组卷和自动评分,大大的提高了考试及评分的效率,且一定程度上提高了客观性评定和降低了教师的工作量。考生可以及时查看自己的成绩,对自己的学习情况做出准确的判断。2.1.1 C语言在线考试系统简介 C语言在线考试系统是针对在校学生研发的一款有关C语言科目的练习及考试的系统。根据在线考试的实际需求,主要用于实现试题的上传管理、试卷的生成、在线考试及自动评分等几个方面的功能。C语言在线考试系统实际运行时,用户可以通过用户名及密码进入考试系统,系统会根据后台设定自动生成试题以供用户测试,并根据用户提交的答案进行评分。并返回用户成绩。整个系统只允许管理员对题库和成绩等基本信息进行管理和维护。本考试系统的操作界面力求为用户提供一个方便快捷的应用环境。2.1.2 自动评分系统简介自动评分系统作为在线考试系统的主要模块,具有对考生提交的答案进行评定并给予分数反馈的功能。根据不同的题目类型,系统做出相应的判断,使用相对应的方法进行评分。该模块所应用的主要方法是提取用户和数据库中正确的答案,进行对比,相同则判真,不同则判假。该模块的实现使C语言考试系统应用性大大提高。不但能够大大提高效率,减少相应工作人员的工作量,还能够使最后成绩更具有客观性。另一方面,管理员可以根据该系统数据库中的数据,更加方便的统计成绩。2.2 工具环境介绍2.2.1 开发环境的选择开发与运行的环境的选择会影响到数据库设计,本系统开发与运行环境如下:l开发环境:Windows 7l开发工具:Adobe Dreamweaver CS3、Navicat for MySQL、Apache HTTP、Server 2.2l数据库管理系统:MySQL本系统主要采用PHP与My SQL相结合的技术。利用Adobe Dreamweaver CS3软件来设计系统界面,使整个系统更具有吸引力和更好的价值。2.2.2 PHP语言简介PHP超文本预处理语言Hypertext Preprocessor的英文缩写。 PHP是在服务器端嵌入HTML文档的脚本语言执行的嵌入HTML的语言,语言的风格有类似于C语言,被广泛使用。PHP独特的语法混合了C,Java,Perl和PHP自己的语法。它执行动态页面的速度比CGI和Perl更快。动态网页PHP和其他编程语言,PHP被嵌入到HTML文档程序执行,执行效率比完全生成的HTML标记的CGI要高得多,PHP也可以运行编译后的代码,编译器可以实现加密和优化代码运行,使代码运行得更快。2.2.3 Apache简介Apache HTTP服务器(简称到Apache)是Apache软件基金会的一个开源的Web服务器,可应用于大多数计算机操作系统,由于其多平台和安全性被广泛使用,是最流行的Web服务器软件。它不仅快速,可靠,可扩展,而且可以通过一个简单的API,将Perl/ Python解释器等编译到服务器中。2.2.4 MySQL简介MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。3 需求分析3.1 设计思想第一步是需要利用MySQL建立所需要的数据库,第二步是利用PHP语言完成该系统界面及应用模块的开发。将建立数据库所在的服务器作为服务器端,在这里我所用的是本地服务器,为开发的在线考试系统提供所需要的数据服务。3.2 可行性分析可行性分析是系统分析阶段的第二项活动,它的主要目的是进一步明确系统的目标、规模与功能,对系统开发背景、必要性和意义进行了调查分析并根据需要和可能提出开发系统的初步方案与计划。可行性分析是对系统进行全面、概要的分析。通过调查分析,本系统设计主要有以下三个可行性:3.2.1 操作可行性本系统操作简单,易于理解,只需通过简单指导,上手较快,运行环境要求低。3.2.2 技术可行性本课题采用PHP语言进行开发。PHP语言为当前web开发应用较多,功能较强大的计算机高级语言。实习过程中,曾经有过一段时间的集中培训,对PHP语言有基本了解,另一方面,在较难部分可以得到实习老师的指导。3.2.3 经济可行性本课题所使用的软件都为免费公开发行版,不需要购买。现在,计算机的价格已经十分低廉,性能却有了长足的进步。为本次开发提供了设备支持,几乎所有的计算机都可以高效的运行使用。 3.3 用户需求与系统目标本系统意在投入实际教学工作中,一方面,用于对C语言程序设计课程的考核和评阅工作;同时,也为C语言教学网站提供一套完备的自我测试系统,对C语言的教学辅导和学生的自主学习提供更好的支持。根据C语言程序设计的课程特点和用户需求,本系统共设计了判断题、单选题、多选题及填空题,以对学生的理论知识和实践技能进行全面的考核。针对四类不同的题型,本系统将实现从组卷、考试到评分的全部自动化。应用本系统进行考试,系统将对考生自动生成不同的试卷,这样减少了作弊现象的发生,保证了考试的公平性。考试开始后,系统通过屏幕上的倒计时提醒学生考试剩余时间,保证了考生对考试过程中时间分配的把握。考试结束后,系统对考生所做试题进行自动阅卷评分。除了上述考试和阅卷功能外,为了适应多种教学和用户的需求,系统还提供了教师管理等功能。4 系统设计4.1 功能需求分析图包含2个实体即考生、教师。学生登录、选题、答题,教师试题录入、教师组卷、教师阅卷。该图反映了试题生成和在线考试系统整体的流程,如图4.1所示: 图4.1 系统需求分析4.2 系统结构设计4.2.1 系统功能结构C语言在线考试系统的用户分为前台用户与后台用户,其中考生为前台用户,管理员为后台用户,他们的功能职责不同,其功能结构图如图4.2所示:图4.2 在线考试系统功能结构图考生主要功能:一方面,考生参加在线考试,选择试题类型,开始考试。答题完成时可以手动提交试卷,若规定时间内未完成试题,则自动提交试卷;另一方面,考生可以根据自己的需要,修改自己的登录密码。管理员主要功能:管理员可以根据需要,添加修改学生信息、添加修改试题库信息、查看权限内考生成绩。4.2.2 系统流程图考生信息需管理员添加,登陆帐号为考生学号,初始密码为:123。考生登录网站进行相关操作。(1)考生登录,若密码错误,返回首页,密码正确,进入考生界面。(2)在考生界面,考生可以查看自己的个人信息,进行密码的修改。也可以进入考试界面,参加考试,答题完成后,查看个人成绩。管理员登录,可以对后台数据库中的信息进行查看、添加和修改,包括学生信息,试题和权限内学生的成绩(成绩只能查看)。具体流程如图4.3所示:图4.3 在线考试系统流程图图35 数据库设计本系统数据库分为三大部分:信息部分、题库部分和评分部分。试题相关部分主要有单选题、多选题、判断题类客观题表;填空题类半客观题表和程序题类主观题表。以及其他各类保存试卷相关信息的表;管理部分主要有用户信息表。A)用户信息表主要用于保存用户信息,结构如图5.1所示: 图5.1 用户信息表id(主键),uid(用户登陆帐号),uname(用户姓名),upass(用户密码),type(用户类别:学生0,管理员1),sex(性别),birth(出生年月)。B)填空题表主要用于保存试卷中填空题的相关信息,结构如图5.2所示: 图5.2 填空题表id(主键),timu(填空题题目),answer(填空题答案)。C)判断题表主要用于保存试卷中判断题的相关信息,结构如图5.3所示:图5.3 判断题表id(主键),timu(判断题题目),answer(判断题答案)。D)单选题表主要用于保存试卷中单选题的相关信息,结构如图5.4所示:图5.4 单选题表id(主键),timu(单选题题目),A(A选项内容),B(B选项内容),C(C选项内容),D(D选项内容),answer(单选题题答案)。E)多选题表主要用于保存试卷中多选题的相关信息,结构如图5.5所示: 图5.5 多选题表id(主键),timu(多选题题目),A(A选项内容),B(B选项内容),C(C选项内容),D(D选项内容),answer(多选题题答案)。F)程序题表主要用于保存试卷中程序题的相关信息,结构如图5.6所示:图5.6 程序题表id(主键),timu(程序题题目),answer(程序题答案)。G)试题表主要用于保存试卷中试题类型的相关信息,结构如图5.7所示: 图5.7 试题表id(主键),tid(题目id),type(试题类型),kind(试卷类型)。H)结果表主要用于保存考生答题结果的相关信息,结构如图5.8所示: 图5.8结果表id(主键),uid(用户id),tid(题目id),answer(试题答案),type(试题类型),kind(试卷类型),torf(试题正误)。6 项目的设计实现6.1 自动评分流程的设计在考试系统中,考试结果是保存到数据库中的。当考生提出评卷请求时,考试系统会向系统发送考生试卷ID等相关信息。系统会根据接收到的试卷ID查询数据库,从数据库中提出该考生本次考试的试题进行评定,并将评定后的结果记录保存到数据库中。系统将考题分为填空题,判断题,单选题和多选题和程序题五种题型,对应的考题类型号分别为tk、pd、dx、dxs、cx。系统会将考生的试题信息和作答结果保存到考题表中。自动评分主程序将考题表读出各个考题的相关信息,并通过考题的类型号选择不同的评改策略,评定流程如图6.1所示:记录考试结果统计考试结果相同为真对比判断不同为假答案转化为数组,排序人工评定接受试卷id根据试卷id查询数据库得到考生答案填空题评定判断题评定单选题评定程序题评定多选题评定图6.1 自动评分模块流程图6.2 模块的划分及各个模块的功能的实现方法6.2.1 选择判断评分的实现该系统的单项选择题采用较为传统也较为成熟的对比判断法,即对考生答案与数据库中正确答案进行提取比对,如果答案一致则判断为真,此题正确,得分;如果答案不一致,则判断为假,此题错误,不得分。得分原则如下:得分=试题分*匹配是否成功例如:C语言中允许的基本数据类型包括:A.整型、实型、逻辑型 B.整型、实型、字符型C.整型、字符型、逻辑型 D.整型、实型、逻辑型、字符型(该题目正确答案为B)考生答题,选择答案为A,提交试卷后,将试卷返回数据库,系统根据该试题类型,选择单选题表,根据题目id,在该试题表中查找该试题,提取正确答案B,与考生选择答案A做对比,A与B不同,返回0,匹配失败,得分=1*0=0分,返回数据库。6.2.2 多项选择题判分的实现对与多项选择题,本系统采用提取考生答案,将答案的字符串转化为数组,再对数组进行排序,再将排序后的结果与数据库中的正确答案进行对比,如果答案一致则判断为真,此题正确,得分;如果答案不一致,则判断为假,此题错误,不得分。 例如: 关于条件运算符的叙述正确的是:A. 条件运算符的优先级别比关系运算符和算术运算符都低B. 条件运算符是C语言中唯一的一个三目运算符C. 条件运算符的结合方向是“自右至左”D. 条件运算符可以替代任何if语句的功能 (该题目的正确答案为ABC)考生答题,选择答案为BCA,提交试卷后,将试卷返回数据库,系统将返回数据转化为数组,再对该数组进行排序得到ABC。然后系统根据该试题类型,选择多选题表,根据题目id,在该试题表中查找该试题,提取正确答案ABC,与排序后结果ABC做对比,匹配成功,返回1,得分=1*1=1分,返回数据库。6.2.3 填空题判分的实现对于填空题,理论上为主观题,但基于C语言学科的严谨性,可以视为客观题进行判断,判断方法类似与单项选择题(该方法在某些程度上存在缺陷)。由于C语言课程的严谨性,本系统的填空题均作为客观题进行评分,评分基本流程与单选判断题目相同。6.2.4 程序题判分的实现由于个人能力有限,未能完全掌握该题目类型的判断方法,暂时用人工判卷作为评分依据。7 系统测试与分析7.1 测试概述依据用户需求,设计测试用例,以确保系统达到需求功能的说明;确保系统满足性能需求;强度测试确认程序能够处理要求的负载;确保系统在要求的硬件和软件平台上工作正常。7.2 测试方法测试任何软件都有两种方法:黑盒测试和白盒测试法。黑盒测试法(又称功能测试法)是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,是在程序接口进行的测试,它只检查程序功能是否按照规格说明书的规定正常使用。白盒测试法(又称结构测试法)是把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程,这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按照预定要求正确工作。通过测试并不能证明程序就是完全正确的,但我们的目的就是要通过测试保证软件的可靠性,因此,必须仔细设计测试方案,力争用最少的测试发现尽可能多的错误。7.3 测试截图7.3.1 提交答案页面考生完成答题后,提交试卷,系统将提示该考生未完成题目的类型和题号,点击确定,将进入自动评分阶段,点击取消,则考生可继续作答。具体如图7.1所示:图7.1 试卷提交页面7.3.2 学生查看成绩页面自动评分成功后,系统将考生作答情况与成绩返回查看成绩页面,考生可以根据自己作答情况,查看自己所选答案与该题目正确答案,该题目正确与否及对应题目得分情况。具体如图7.2所示:图7.2 学生查看成绩页面 7.3.3 管理员身份查看成绩页面待考试完成后,管理员可以在查看成绩页面查看权限内每个考生的作答情况,包括各类题目的得分及总得分。具体如图7.3所示:图7.3 管理员身份查看成绩8 结束语8.1 总结随着毕业日子的到来,毕业设计也接近了尾声。经过几周的奋战我的毕业设计终于完成了,虽然设计本身可能仍然存在一些问题,但基本功能已经实现。在设计之初,单纯的以为毕业设计好比平时的课程设计,是对知识的一个总结和应用的检验,事实并非如此。它在前者的基础之上,更检验了自己本身的素质及对所学知识综合的应用情况。在毕业设计之中,逐渐的发现自己欠缺的部分知识和能力,总是一副不担心的样子,让我很吃亏。事实证明,我还只是学习者,较缺乏独自完成任务的能力。通过这次实践,让我懂得了很多。我仍然需要不断的学习,不断的进行自我能力的锻炼,凡事都应认真对待。在以后的的工作生活中不断的磨练自己。8.2 心得体会设计本系统所用语言不是学校课程,而是实习期间所接触的PHP,虽然不太熟悉该语言的语法,但通过自己的学习及同学的帮助,实现了该设计所需的功能,虽然不太完善,但该设计的过程使我学习到很多。通过这个设计,使我从略知皮毛到渐渐深入了解,丰富了在线系统方面的一些知识。参考文献1 陈浩.PHP 程序设计M.北京:电子工业出版社,20052 邵煜.PHP和MYSQL WEB开发M.北京:机械工业出版社,20053 DAVID LANE美.PHP & MYSQL WEB数据库应用开发指南M.南京:东南大学出版社,20064 MIHAI BUCICA美.AJAX与PHP WEB开发M.北京:人民邮电出版社,20075 PETER MOULDING英.PHP技术内幕M.北京:中国水利水电出版社,20036 NARAMORE美.PHP5、APACHE、MYSQL网络开发 M.北京:电子工业出版社,20057 龙浩.PHP语言进阶和高级应用.清华大学出版社,20028 Hugh E Williams英.PHP & MYSQL Web数据库应用开发指南.20039焦桐顺.phpmysql数据库开发指南.电子工业出版社,200110李琦.B/S模式C语言考试及自动评分系统的研究与实现D.电子科技大学,200911吴运明.基于B/S架构网络考试测评系统的设计与开发D.曲阜:曲阜师范大学,200512李丁.计算机考试系统中自动评分策略的研究与实现J.计算机与现代化,2002(9):56-5813王艳.Authorware上级考试自动阅卷系统的研究与实现D.沈阳:沈阳工业大学,200514孙坤.C语言上级考试及自动评分系统的研究与实现D.沈阳:沈阳理工大学,2000致谢在此要感谢高老师对我悉心的指导,感谢老师给我的帮助和很多建议。在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作和团队协作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终生受益。