一种程序设计题的考评方法

文档序号:6464277阅读:141来源:国知局

专利名称::一种程序设计题的考评方法
技术领域
:本发明涉及计算机技术,特别地涉及一种程序设计题的考评方法。
背景技术
:随着网络技术、计算机技术的不断发展,计算机辅助考试系统目前不仅在许多学校的校内考试中得到使用,而且在诸如TOFEL、GRE、通用英语等级考试等大型社会公共考试中得到越来越多地使用。所谓计算机辅助考试一般在计算机上进行,计算机可以根据实际需要对特定的测试者提供符合预定规则试题的试巻,测试者在计算机上完成相应试题的解答后,将完成的程序源代码文件提交,由判巻者利用计算机联网或者脱网进行判分。各种语言的程序设计课程是计算机课程中经常考核的科目,其考试方法为向测试者布置题目,要求测试者用指定程序语言(如C、C++、Java、Pascal、Basic等)来编制程序,其考核内容主要包括程序结构、数据类型、控制结构、表达式、函数、程序语句、文件处理等等。在程序设计题的考试中,通常会根据考核知识点的需要设置若干个需要测试者进行解答的判分点。在一种现有技术中,程序设计题的出题采取描述式出题的方法,其中,描述式出题是考核者将题目内容与考核知识点用语言叙述的形式记录到试题中;当出题人完成程序设计题的组题后,将其通过计算机发布,以供测试者在考试中使用。测试者在考试过程中,通过终端计算机完成其对程序设计题的解答,并将完成的程序源代码通过网络进行提交或者在本地计算机中保存并提交。此后,判巻者依顺序人工打开每份试巻的程序源代码文件,并将测试者提交的程序源代码与题目中要求的判分标准相比较,手动给出相应的答题分数。在这个判分过程中,判巻者对所有试巻是逐份进行人工手动判分的,即,对一份试巻判分完成后才进行下一份试巻的判分。4程整个构成了一次计算机辅助考试中程序设计题的考评过程,而上述现有技术中程序设计题的考评方法存在如下缺点当以描述式的方法出题时,其形成的试巻不能进行自动判分,判巻时需要判巻者逐巻打开测试者提交的程序源代码文件,从而进行人工手动判分,由此会出现劳动强度大、工作效率低等问题,且还容易出现判巻者在不同时段对于不同测试者的相同程序源代码存在判分不一致的结果,这对于测试者而言也显然是不公平的。在另一种现有技术中,在程序设计题的出题过程中,考核者将判分点直接编写到判分程序中,此时可以由程序进行简单的判分操作。但这种现有技术存在以下重大缺陷(1)每次考试均需要重新修改程序,考核者无法自主出题,对程序的依赖性非常大;(2)程序判分机制比较简单,一般只有"正确给分"和"不正确给零分"两种判分机制,使得部分与预置答案不完全相符的程序源代码被误判为错误而不得分。
发明内容本发明要解决的技术问题是提供一种程序设计题的考评方法,使得在计算机辅助考试时的程序设计题出题与判分过程中,考核者灵活性增加,判巻者效率提高、劳动强度降低、且准确率提高。为了解决上述技术问题,本发明提供了一种程序设计题的考评方法,包括预先设置所述程序设计题的判分点及其对应的判分标准,所述的判分标准包括代码关键字及关键字顺序构成的判分条件和判分分值,然后执行下述步骤采集待判分程序"&计题中的程序源代码;当所采集的程序源代码与预置判分点的判分条件匹配时,对该判分点按照预置判分分值进行计分;接收外部为未进行计分的判分点所输入的判分分值,并以此判分分值对该判分点进行计分。进一步地,该方法还包括显示未进行计分的判分点及待判分程序源代码。进一步地,该方法还包括当所采集的程序源代码中不存在与预置判分点的判分条件中首个关键字匹配的代码时,对该判分点计为零分。进一步地,按照预置的策略显示未进行计分的判分点及待判分程序源代码,所述的预置策略包括按照判分点排序或者按照预置判分条件中的关键字顺序排序。进一步地,判断所采集的程序源代码与预置判分点条件是否匹配包括获取每个判分点预置的判分条件;遍历程序源代码,用读取字符串的方式获取作为所述判分条件关键字的程序串;按照预置的判分标准中关键字顺序判断是否存在相同顺序的程序串,如果是,则所采集的程序源代码在该判分点与预置判分点条件匹配。进一步地,该方法还包括在待判分程序设计题中,当所采集的程序源代码与某个判分点的预置判分条件部分匹配、且上述相同的部分匹配在所有待判分程序设计题中所占比例高于预定值时,按照预置的判分标准生成策略将该部分匹配的信息增加至该判分点所对应的预置判分条件,或者将该部分匹配信息作为待确认的判分条件。进一步地,在接收外部为一未进行计分的判分点所输入的判分分值后,以进一步地,接收外部为一未进行计分的判分点所输入的判分分值,并以此判分分值对该判分点进行计分之后,还包括对程序设计题的所有判分点的计分分值进行统计。进一步地,根据外部输入的信息确定进行采集程序源代码的待判分程序设计题。与现有技术相比,利用本发明实施例中的程序设计题的考评方法具有如下显著优点(l)在出题过程中,考核内容仍然以描述的方式提供给测试者,而判分点可以由考核者根据实际需要任意确定。这使判分点的判分标准容易修改,且方便了考核者的组题过程;(2)在判分过程中,对于与预置判分标准中判分条件(包括程序左串、的,判巻者不必反复选定试巻和查阅判分点,而是集中进行连续判分,这样判分者思维的连续性较好,且效率会较高。在另一个方面,也避免了出现判巻者在不同时段对于不同测试者的相同程序源代码存在判分不一致的现象。当然,判巻者亦可针对某个或某些测试者的试巻独立判分,这增加了判巻者判巻时的灵活性。图1为本发明实施例的程序设计题的出题方法流程图;图2为本发明实施例的程序设计题的判分方法流程图;图3为本发明实施例的程序设计题的考评装置;图4为本发明又一实施例的程序设计题的考评装置。具体实施例一种程序设计题的考评方法,包括预先设置所述程序设计题的判分点及其对应的判分标准,所述的判分标准包括代码关键字及关键字顺序构成的判分条件和判分分值,然后执行下述步骤采集待判分程序设计题中的程序源代码;当所采集的程序源代码与预置判分点的判分条件匹配时,对该判分点按照预置判分分值进行计分;接收外部为未进行计分的判分点所输入的判分分值,并以此判分分值对该判分点进行计分。从上述方法可见,在本发明实施例提出的程序设计题的考评方法中,对于分的,判巻者不必反复选定试巻和查阅判分点,而是集中进行连续判分,这样判分者思维的连续性较好,且效率会较高。当然,判巻者亦可针对某个或某些测试者的试巻独立判分,这增加了判巻者判巻时的灵活性。以下结合附图和具体实施例对本发明作进一步地介绍,但不作为对本发明在计算机辅助考试系统中,通常通过计算机将考题呈现到测试者面前,测试者联机进行解答,并将完成解答的试巻通过网络提交或在本地计算机保存并提交。作为考试中普遍采用的程序设计题,由于其采分点较多,采分答案可能不唯一的特殊性,可以将程序设计题中的各个判分点进行抽取,以便实现独立判分。对于程序设计题的考评过程包括试题的出题过程及对测试完成试题的判分过程,以下对这两个过程中所使用的方法进行分别说明在程序设计题的出题过程中,如图所示,采用如下步骤步骤IOI,确定需要考察测试者的考核内容,将考核内容以描述的方式记录,作为呈现给测试者的试题内容,且将确定的考核内容拆分成与若干个知识点对应的判分点。步骤102,将与判分点对应的预设判分标准分别按照一定的数据结构进行存储,例如以下表1所示的数据结构分别进行存储,并以此作为对测试者判巻的标准。表1<table>tableseeoriginaldocumentpage8</column></row><table>其中判分点编号,可以是按照某种预置特殊策略进行编制,也可以是按照题面的判分点顺序编制;知识点,为判分点的知识点分类,例如,程序结构、输入语句、输出语句、条件语句等。判分条件,包括程序左串、程序中串和程序右串,为确定测试者程序源代码为正确答案的标准;所述的程序左串、程序中串和程序右串按照样本代码关键字及关键字顺序所设置;判分分值,为该判分点对应的程序源代码正确时应记入的分值。步骤103,将包括以描述方式形成的程序设计题的试巻提供给测试者,且对于该程序设计题的判分标准则在计算机辅助考试系统中存储,且与该程序设计题的编号等标识信息建立对应关系。以下以一个进一步的实例来描述上述的出题方法,在该实例中以描述的方式提供给测试者的试题信息如下"Pascal程序设计题输入两个数a,b,输出较大的数。"该试题信息包含在提供给测试者使用的程序设计题中,为测试者考试时所见试题信息。该试题的标准答案如下programtt;vara,b:integer;beginwrite('pleaseinputa,b:');readln(a,b);ifa>bthenwriteln(a)elsewriteln(b);end.对于上述考核内容确定需要考察测试者的知识点为程序结构、输入语句、输出语句、条件语句。上述知识点即为测试者反馈中的判分点。由此,可以建立如下表2所述的该份Pascal程序设计题的判分标准。表2判分点编号知识点判分条件判分值程序左串程序中串程序右串1程序结构programbeginend12程序结构programvarinteger13程序结构varintegerbegin194输入语句<table>tableseeoriginaldocumentpage10</column></row><table>上述判分标准以某种预定格式保存,且与对应程序^:计题标识信息建立相应关系。例如判分标准可以以集合的形式来进行存储,如下{12345,7,8,{1,程序结构,{program,begin,end},1}{2,程序结构,{program,var,integer},1}{3,程序结构,{var,integer,begin},1}{4,输入语句,{readln,a,b},1}{5,输入语句,{write,readln,},1}{6,车t出"i吾句,{write,,},1}{7,输出语句,{writeln,,},1}{8,条件语句,{if,then,else},1}{9,条件语句,{if,a>b,then},1}{10,条件语句,{else,writeln(b),},1}说明在上述集合中,第l行的"{12345,7,8,"中的12345为假定的该程序设计题在题库中的编号,7表示题型为机判操作题,8表示提交的是程序源代码文件,由此,上述三个要素组成了所述程序设计题的标识信息,上述例中,判分标准与对应的程序设计题标识信息之间也可以采用其他的方式建立对应关系。参照上述方法,即可以完成一份程序设计题的出题,并可通过计算机辅助考试系统将该试题"R供给测试者。当测试者完成上述程序设计题的解答,并将程序源代码4C交后,判巻者对接收到的所有试巻"t要照批处理的方式判巻,该判巻方法如图2所示,包括步骤201,接收外部输入的试题信息,确定本次需要进行判分的程序设计题;所述的试题信息可以为测试时间、测试号、批量试题数等信息,由此可以方便地根据实际需要选择要进行判分的程序设计题,而不是对所有待判分程序设计题进行判分。步骤202,提取测试者试巻中的程序源代码文件,根据该程序源代码文件生成其对应的实例对象。步骤203,根据采集到的程序设计题标识信息对应确定需要进行判分的判分点,并从实例对象釆集待判分程序源代码,该采集过程的一个实现实例为按遍历程序源代码文件读取字符串的方式读取程序左串、程序中串和程序右串;在此步骤中,采集待判分程序源代码的同时,获得判分点信息及其所在试题信息,具体可以是判分点所对应程序设计题标识信息、判分点编号;而程序设计题的标识信息还可以包括题号信息和该试题所在试巻的编号。具体地说,在上述的实例中,根据判分点所依次采集的程序源代码,其可以具体地以下述步骤来实现根据上述步骤202中的实例对象,打开测试者提交的包含程序源代码的文件,此时可能出现下述情况(1)不存在任何文档,这表示测试者并没有上传附件,则对该程序设计题直接计为零分,完成本试题的判分;(2)存在不能以文本方式打开的文档,这表示测试者提交的可能不是程序源代码文件(例如,可能进行压缩提交了.RAR压缩文档,也可能是用Word编制的.doc文档),则将该份试巻转入异常试巻,由后续的人工手工处理;(3)存在能够正常打开的程序源代码文件,表示测试者已经成功提交程序源代码文件。此时,针对该程序源代码文件中的所有判分点,按判分点遍历程序源代码文件提取程序左串、程序中串和程序右串,即提取程序源代码中对应于判分点的代码。步骤204,将所采集的程序源代码与预先存储的判分条件进行比较,并根据比较的结果进行如下的相应处理(1)当测试巻中无法提取程序左串时,即当所采集的程序源代码中不存在与预置判分点的判分条件中首个关键字匹配的代码时,表明考生没有编写相关命令,此时直接将该判分点计为零分;(2)当所采集的程序源代码与预置判分点的判分条件匹配时(包括程序左串、程序中串和程序右串完全相同)时,直接按照预置判分分值对该判分点进行计分;(3)当不属于上述两种情况时,记录该判分点信息及试题信息,等待对该判分点进行手工判分。该手工判分可以以批量的方式进行,亦可针对某个或某些测试者进行。例如,在上述步骤实例中,某测试巻答题结果如下<table>tableseeoriginaldocumentpage12</column></row><table>判分点编号知识点判分条件判分值左串答案中串答案右串答案1程序结构programbegin无值待手判2程序结构programvarinteger13程序结构varintegerbegin14输入语句readln无值B待手判输入语句writereadln16输出语句write17输出语句writeln18条件语句ifthenelse19条件语句ifb<athen待手判10条件语句elsewriteln(a)待手判可见,第2、3、5、6、7、8与该判分点对应的判分条件相同,对其按照预置判分分值进行判分;第1、4、9、IO判分点找到程序左串,但程序中串或右串与预设答案不符,则将它们转入人工判分待判队列中,待系统完成自动判分过程后由人工批量或单独进行判分处理。步骤205,当对所有程序源代码与判分标准中判分条件(包括程序左串、示所有未进行计分的判分点及程序源代码,采用人工方式判分,即当判巻者确定所采集代码虽与对应的判分条件不完全相同,但也正确时,手动输入该判分点所对应的预置判分分值;当判巻者确定所采集代码部分正确时,手动输入该判分点可获得分值,上述手动输入的分值可以在判巻时的填分框处预设(可以设为完全的预置分值或零分值,也可以设置为零分值和满分值之间的任一分值),并由人工最后确定。上述的手动输入分值即为所对应判分点的判分分值。步骤206,当对所有程序设计题的所有判分点计分都已经完成后,对每道程序设计题分数进行统计。通过上述方法可以看出,对于与预置判分标准中判分条件不相同的程序源代码是采用批处理的方式进行判分的,判巻者不必反复选定试巻和查阅判分13点,而是集中进行连续判分,这样判分者思维的连续性较好,且效率会较高。进一步地,在上述实施例的步骤205中,为了便于判巻者进行快速判巻工作,可以按照预置策略排序后显示判分点及待判分程序源代码时,所述的预置策略包括但不限于按照判分点排序或者按照预置判分条件中的关键字顺序排序。由此,判巻者对相同或者相似的答案可以一目了然地判断,而无需多次重复判断,且对于同样的代码也可避免出现两种评判结果;例如考试要求的C程序数据类型是单精度的浮点类型"float",但是所采集代码却是双精度的浮点类型"double",这种情况在试巻批改时可以选定"对"或者"错"为一个标准,然后统一进行批改,而无需在各种数据类型间多次考虑。再进一步地,还可以在接收外部为一未进行计分的判分点所输入的判分分行计分。由此,更进一步地提高了判巻者的工作效率,也减轻了其劳动强度。在另一个实施例中,在待判分程序设计题中,当所采集的程序源代码与某个判分点的预置判分条件部分匹配、且上述相同的部分匹配在所有待判分程序设计题中所占比例高于预定值时,按照预置的判分标准生成策略将该部分匹配的信息增加至该判分点所对应的预置判分条件,或者将该部分匹配信息作为待确认的判分条件,供判巻者审核确认后再增加至该判分点所对应的预置判分标准。为了更好的说明所述方案,本发明还提供一种程序设计题的考评装置,如图3所示,该装置包括样本模块,用于预先设置所述程序设计题的判分点及其对应的判分标准,所述的判分标准包括代码关键字及关键字顺序构成的判分条件及判分分值;程序采集模块,用于采集待判分程序设计题中的程序源代码;处理才莫块,用于在所釆集的程序源代码与预置判分点的判分条件匹配时,指示判分模块按照预置判分分值对该判分点进行计分;且将未进行计分的判分点及其对应的程序源代码提供给外部接口模块;外部接口模块,用于接收外部为未进行计分的判分点所输入的判分分值,并指示判分模块以所输入的判分分值对该判分点进行计分。进一步地,该装置还包括显示模块,用于显示未进行计分的判分点及待判分程序源代码。进一步地,所述处理模块,还用于在所采集的程序源代码中不存在与预置判分点的判分条件中首个关键字匹配的代码时,指示判分模块对该判分点计为零分。进一步地,该装置还包括预匹配模块,用于在待判分程序设计题中,当所采集的程序源代码与某个判分点的预置判分条件部分匹配、且上述相同的部分匹配在所有待判分程序诏:计题中所占比例高于预定值时,按照预置的判分标准生成策略将该部分匹配的信息增加至该判分点所对应的预置判分条件,或者将该部分匹配信息作为待确认的判分条件。进一步地,该装置还包括匹配模块,用于在所述外部接口模块接收外部为一未进行计分的判分点所输入的判分分值后,将其余未输入判分分值的其它待判分程序设计题中判分点所对应代码进行匹配,并指示所述计分模块以该已判分分值对匹配成功的判分点进行计分。进一步地,该装置还包括统计模块,用于在所述外部接口模块中不存在未进行计分的判分点时,对属于同一程序设计题的计分分值进行统计。进一步地,所述外部接口模块,还用于接收外部输入的试题信息;此时,所述判分装置还包括试题选定模块,用于根据所述外部接收模块接收到的试题信息,确定符合条件的待判分的程序设计题。在本发明的又一个具体实施例中提供的一种程序设计题的判分装置,如图4所示,包括样本模块、程序采集模块、处理模块、外部接口模块、显示模块、计分模块、预匹配模块、匹配模块、统计模块和试题选定模块。说明一点本发明所述及的程序设计题考评方法,不仅可以用于网络版的计算机辅助考试系统中,亦可用于单机版的计算机辅助考试系统中。明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。1权利要求1.一种程序设计题的考评方法,包括预先设置所述程序设计题的判分点及其对应的判分标准,所述的判分标准包括代码关键字及关键字顺序构成的判分条件和判分分值,然后执行下述步骤采集待判分程序设计题中的程序源代码;当所采集的程序源代码与预置判分点的判分条件匹配时,对该判分点按照预置判分分值进行计分;接收外部为未进行计分的判分点所输入的判分分值,并以此判分分值对该判分点进行计分。2.如权利要求1所述的方法,其特征在于,该方法还包括显示未进行计分的判分点及待判分程序源代码。3.如权利要求1所述的方法,其特征在于,该方法还包括当所采集的程序源代码中不存在与预置判分点的判分条件中首个关键字匹配的代码时,对该判分点计为零分。4.如权利要求1所述的方法,其特征在于,按照预置的策略显示未进行计分的判分点及待判分程序源代码,所述的预置策略包括按照判分点排序或者按照预置判分条件中的关键字顺序排序。5.如权利要求1所述的方法,其特征在于,判断所采集的程序源代码与预置判分点条件是否匹配进一步地包括获取每个判分点预置的判分条件;遍历程序源代码,用读取字符串的方式获取作为所述判分条件关键字的程序串;按照预置的判分标准中关键字顺序判断是否存在相同顺序的程序串,如果是,则所采集的程序源代码在该判分点与预置判分点条件匹配。6.如权利要求1所述的方法,其特征在于,该方法还包括在待判分程序设计题中,当所采集的程序源代码与某个判分点的预置判分条件部分匹配、照预置的判分标准生成策略将该部分匹配的信息增加至该判分点所对应的预置判分条件,或者将该部分匹配信息作为待确认的判分条件。7.如权利要求1所述的方法,其特征在于,在接收外部为一未进行计分的判分点所输入的判分分值后,以该判分分值对其它待判分程序设计题中具有相同代码的相同判分点进行计分。8.如权利要求1所述的方法,其特征在于,接收外部为一未进行计分的判分点所输入的判分分值,并以此判分分值对该判分点进行计分之后,还包括对程序设计题的所有判分点的计分分值进行统计。9.如权利要求1所述的方法,其特征在于,根据外部输入的信息确定进行采集程序源代码的待判分程序设计题。全文摘要本发明公开了一种程序设计题的考评方法,包括预先设置所述程序设计题的判分点及其对应的判分标准,所述的判分标准包括代码关键字及关键字顺序构成的判分条件和判分分值,然后执行下述步骤采集待判分程序设计题中的程序源代码;当所采集的程序源代码与预置判分点的判分条件匹配时,对该判分点按照预置判分分值进行计分;接收外部为未进行计分的判分点所输入的判分分值,并以此判分分值对该判分点进行计分。利用本发明所提供的方法不仅可以简化组题过程,还可以提高判卷的速度,提高判卷的一致性。文档编号G06F19/00GK101593106SQ20081011402公开日2009年12月2日申请日期2008年5月30日优先权日2008年5月30日发明者尤晓东申请人:北京智慧东方信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1