计算机程序答题评分系统、方法、装置和存储介质与流程

文档序号:22879302发布日期:2020-11-10 17:36阅读:127来源:国知局
计算机程序答题评分系统、方法、装置和存储介质与流程

本发明涉及计算机技术领域,尤其是一种计算机程序答题评分系统、方法、装置和存储介质。



背景技术:

随着计算机的普及,学校和培训机构等教育机构越来越广泛地开展计算机编程课程,从而产生了对计算机编程能力考试考核的需求。计算机程序题是计算机编程考试或者课堂作业、实验任务中的一种题型,其要求考生根据题干编写计算机程序,即提交计算机程序答题,由阅卷人员阅读计算机程序并根据评分规则进行评分。由于计算机程序答题一般是以专门的计算机语言呈现的,其可读性比自然语言差,并且受到考生个人编程风格的影响,即使是使用同一种计算机语言、包含相同内容的计算机程序答题,其展现出来的内容也可能完全不同,因此,对计算机程序答题的人工评分将占用大量的人力和时间,这不利于进行大规模的计算机编程考试,从而不利于实行大规模的计算机编程教育。



技术实现要素:

针对上述至少一个技术问题,本发明的目的在于提供一种计算机程序答题评分系统、方法、装置和存储介质。

一方面,本发明实施例包括一种计算机程序答题评分系统,包括以下至少一个:

词法语法检查模块,用于对所述计算机程序答题进行词法语法检查,根据所述计算机程序答题中存在的词法语法错误以及所述词法语法错误所在位置,确定第一分数;

输入输出对比模块,用于以标准输入数据输入至所述计算机程序答题,以标准输出数据与所述计算机程序答题的输出进行比较,根据比较结果,确定第二分数;

测试用例测试模块,用于生成测试用例并使所述计算机程序答题执行所述测试用例,根据执行结果,确定第三分数;

静态程序对比模块,用于对所述计算机程序答题进行关键字相似性对比和语法树相似性对比,根据对比结果,确定第四分数;

所述第一分数、第二分数、第三分数和/或第四分数用于确定所述计算机程序答题的总分数。

进一步地,所述第一分数、第二分数、第三分数和第四分数均为所述计算机程序答题的初始分数的扣分分值。

进一步地,所述根据所述计算机程序答题中存在的词法语法错误以及所述词法语法错误所在位置,确定第一分数,包括:

当所述计算机程序答题中存在词法语法错误,根据所述词法语法错误的类型、数量和所在位置,确定所述第一分数的数值或所述第一分数的比例,将所述初始分数扣除所述第一分数之后发送至所述静态程序对比模块;

当所述计算机程序答题中不存在词法语法错误,将所述初始分数发送至所述输入输出对比模块。

进一步地,所述根据比较结果,确定第二分数,包括:

当所述比较结果为所述计算机程序答题的输出与所述标准输出数据不匹配,根据所述计算机程序答题的输出与所述标准输出数据的不匹配部分的类型、数量和所在位置,确定所述第二分数的数值或所述第二分数的比例,将所述初始分数扣除所述第二分数之后发送至所述静态程序对比模块;

当所述比较结果为所述计算机程序答题的输出与所述标准输出数据匹配,将所述初始分数发送至所述测试用例测试模块。

进一步地,所述根据执行结果,确定第三分数,包括:

当多个所述测试用例的输入输出结果不匹配,根据各所述测试用例的输入输出结果之间的不匹配部分的类型、数量和所在位置,确定所述第三分数的数值或所述第三分数的比例,将所述初始分数扣除所述第三分数之后发送至所述静态程序对比模块;

当多个所述测试用例的输入输出结果匹配,将所述初始分数作为所述总分数返回。

进一步地,所述根据对比结果,确定第四分数,包括:

当所述对比结果为至少两个所述计算机程序答题之间存在相似关键字或相似语法树,根据所述相似关键字或相似语法树的类型、数量和所在位置,确定所述第四分数的数值或所述第四分数的比例,将所述输入输出对比模块、测试用例测试模块或静态程序对比模块发送过来的分数扣除所述第四分数之后作为所述总分数返回;

当所述对比结果为任意所述计算机程序答题之间不存在相似关键字或相似语法树,将所述初始分数作为所述总分数返回。

另一方面,本发明实施例还包括一种计算机程序答题评分方法,包括以下步骤:

对所述计算机程序答题进行词法语法检查,根据所述计算机程序答题中存在的词法语法错误以及所述词法语法错误所在位置,确定第一分数;

以标准输入数据输入至所述计算机程序答题,以标准输出数据与所述计算机程序答题的输出进行比较,根据比较结果,确定第二分数;

生成测试用例并使所述计算机程序答题执行所述测试用例,根据执行结果,确定第三分数;

对所述计算机程序答题进行关键字相似性对比和语法树相似性对比,根据对比结果,确定第四分数;

所述第一分数、第二分数、第三分数和/或第四分数用于确定所述计算机程序答题的总分数。

进一步地,所述第一分数、第二分数、第三分数和第四分数均为所述计算机程序答题的初始分数的扣分分值。

另一方面,本发明实施例还包括一种计算机装置,包括存储器和处理器,所述存储器用于存储至少一个程序,所述处理器用于加载所述至少一个程序以执行实施例所述方法。

另一方面,本发明实施例还包括一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行实施例所述方法。

本发明的有益效果是:本发明的实施例中的计算机程序答题评分系统,可以在线提交计算机程序答题,实现对计算机程序答题的自动评分,减轻阅卷评分带来的繁烦重复工作量,解放教师劳动力;可以提高作业或者考试中计算机程序答题的批改评分准确率,容易将成绩保存为电子文档,有利于长期保存成绩;具体而言,词法语法检查模块、输入输出对比模块、测试用例测试模块和静态程序对比模块分别从词法语法错误、程序标准化程度、程序执行正确性以及静态程序准确性等角度来对计算机程序答题进行评价,最终输出的总分数至少综合考虑了上述两个角度的影响,所得到的总分数具有较好的全面性。

附图说明

图1为本发明的实施例中考生端所呈现的内容示意图;

图2为本发明的实施例中计算机程序答题评分系统的结构示意图;

图3为本发明的实施例中阅卷端所呈现的内容示意图;

图4为本发明的实施例中计算机程序答题评分方法的流程图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

实施例1

本实施例中,计算机程序答题评分系统可以是已被运行的一系列具有相应功能的计算机代码,或者正在运行这样的计算机代码的计算机系统,它可以分为考生端、后台和阅卷端,其中考生端所呈现的内容可以如图1所示,考生通过阅读题目显示区显示的题目,在代码输入区输入计算机代码即计算机程序答题,然后通过点击提交按钮,计算机程序答题被上传到后台。

本发明的实施例中,参照图2,计算机程序答题评分系统的后台包括词法语法检查模块、输入输出对比模块、测试用例测试模块、静态程序对比模块和输出模块。

本发明的实施例中,词法语法检查模块、输入输出对比模块、测试用例测试模块、静态程序对比模块采用扣分制的模式来对计算机程序答题进行评分。例如,对于提交到后台的计算机程序答题,可以先设定其初始分数为100分,然后以词法语法检查模块评分得到的第一分数、输入输出对比模块评分得到的第二分数、测试用例测试模块评分得到的第三分数和静态程序对比模块评分得到的第四分数,作为计算机程序答题的初始分数的扣分分值,也就是从初始分数中扣去第一分数、第二分数、第三分数和第四分数后,得到计算机程序答题的总分数。

本发明的实施例中,参照图2,词法语法检查模块对提交到后台的计算机程序答题进行词法语法检查。如果词法语法检查模块从计算机程序答题中检查到词法语法错误,那么就识别出计算机程序答题中存在的词法语法错误的类型、数量,以及每个词法语法错误所在位置(例如在代码的第几行),查找预先设置的每种类型的词法语法错误的权重,乘以其所在位置的权重,确定每个词法语法错误对应的扣分,将所有词法语法错误对应的扣分累加起来,得到第一分数本身或者第一分数占初始分数的比例,然后从初始分数中扣除第一分数,将计算机程序答题以及初始分数扣除第一分数后剩余的分值发送到静态程序对比模块。如果词法语法检查模块从计算机程序答题中没有检查到词法语法错误,那么词法语法检查模块就不对初始分数进行扣分处理,即初始分数仍为100分,词法语法检查模块将计算机程序答题以及初始分数发送至输入输出对比模块。

本发明的实施例中,参照图2,输入输出对比模块对词法语法检查模块发送过来的计算机程序答题进行输入输出对比,也就是输入输出对比模块以标准输入数据输入至根据计算机程序答题运行所得的计算机程序中,以标准输出数据与计算机程序答题运行所得的计算机程序的输出进行比较。如果输入输出对比模块发现运行计算机程序答题所得的程序的输出与标准输出数据不匹配,那么就识别出计算机程序答题的输出与标准输出数据的不匹配部分的类型、数量,以及每个不匹配部分所在位置(例如在标准输出数据的第几行),查找预先设置的每个不匹配部分对应的标准输出数据的权重,乘以其所在位置的权重,确定每个不匹配部分对应的扣分,将所有词法语法错误对应的扣分累加起来,得到第二分数本身或者第二分数占初始分数的比例,然后从初始分数中扣除第二分数,将计算机程序答题以及初始分数扣除第二分数后剩余的分值发送到静态程序对比模块。当所述比较结果为所述计算机程序答题的输出与所述标准输出数据匹配,将所述初始分数发送至所述测试用例测试模块。如果输入输出对比模块从计算机程序答题中没有检查到运行计算机程序答题所得的程序的输出与标准输出数据有不匹配的部分,那么输入输出对比模块就不对初始分数进行扣分处理,即初始分数仍为100分,输入输出对比模块将计算机程序答题以及初始分数发送至测试用例测试模块。

本发明的实施例中,参照图2,测试用例测试模块生成多个测试用例,使用输入输出对比模块发送过来的计算机程序答题执行各测试用例。如果测试用例测试模块检测到并非所有测试用例的输入输出结果都匹配,即至少两个测试用例的输入输出结果不匹配,测试用例测试模块就识别出各测试用例的输入输出结果之间的不匹配部分的类型、数量和所在位置(例如在输入输出结果的第几行),查找预先设置的每种类型的不匹配部分的权重,乘以其所在位置的权重,确定每个不匹配部分对应的扣分,将所有不匹配部分对应的扣分累加起来,得到第三分数本身或者第三分数占初始分数的比例,将计算机程序答题以及初始分数扣除第三分数后剩余的分值发送到静态程序对比模块。如果测试用例测试模块检测到所有测试用例的输入输出结果都匹配,那么测试用例测试模块就不对初始分数进行扣分处理,即初始分数仍为100分,测试用例测试模块将初始分数作为总分数发送至输出模块,输出模块所输出的总分数便是初始分数100分。

参照图2,静态程序对比模块可能接收词法语法检查模块发送过来的计算机程序答题,以及初始分数扣除第一分数后剩余的分值;静态程序对比模块也可能接收输入输出对比模块发送过来的计算机程序答题,以及初始分数扣除第二分数后剩余的分值;静态程序对比模块还可能接收测试用例测试模块发送过来的计算机程序答题,以及初始分数扣除第三分数后剩余的分值。对于接收到的计算机程序答题以及初始分数扣除第一分数、第二分数或第三分数后剩余的分值,静态程序对比模块进行如下处理:对计算机程序答题进行关键字相似性对比和语法树相似性对比,如果发现至少两个计算机程序答题之间存在相似关键字或相似语法树,那么静态程序对比模块就识别出相似关键字或相似语法树的类型、数量和所在位置,查找预先设置的每个相似关键字或相似语法树对应的权重,乘以其所在位置的权重,确定每个相似关键字或相似语法树对应的扣分,将所有相似关键字或相似语法树对应的扣分累加起来,得到第四分数本身,或者第四分数占初始分数扣除第一分数、第二分数或第三分数后剩余的分值的比例,然后从初始分数扣除第一分数、第二分数或第三分数后剩余的分值中扣除第四分数,从而得到总分数;例如,如果静态程序对比模块是从词法语法检查模块接收到初始分数扣除第一分数后剩余的分值,那么静态程序对比模块就从初始分数扣除第一分数后剩余的分值中扣除第四分数,从而得到总分数。如果静态程序对比模块发现任意两个或多个计算机程序答题之间不存在相似关键字或相似语法树,静态程序对比模块将初始分数作为总分数返回,即这种情况下返回的总分数为100分。静态程序对比模块所获得的总分数发送至输出模块。

本发明的实施例中,阅卷端可供监考人员查看,阅卷端所呈现的内容可以如图3所示,阅卷端从后台获取一道计算机程序答题所获得的第一分数、第二分数、第三分数、第四分数以及总分数。

通过上述实施例可知,使用实施例中的计算机程序答题评分系统,可以在线提交计算机程序答题,实现对计算机程序答题的自动评分,减轻阅卷评分带来的繁烦重复工作量,解放教师劳动力;可以提高作业或者考试中计算机程序答题的批改评分准确率,容易将成绩保存为电子文档,有利于长期保存成绩;具体而言,词法语法检查模块、输入输出对比模块、测试用例测试模块和静态程序对比模块分别从词法语法错误、程序标准化程度、程序执行正确性以及静态程序准确性等角度来对计算机程序答题进行评价,最终输出的总分数至少综合考虑了上述两个角度的影响,所得到的总分数具有较好的全面性。

本发明的实施例中,参照图4,计算机程序答题评分方法包括以下步骤:

s1.对所述计算机程序答题进行词法语法检查,根据所述计算机程序答题中存在的词法语法错误以及所述词法语法错误所在位置,确定第一分数;

s2.以标准输入数据输入至所述计算机程序答题,以标准输出数据与所述计算机程序答题的输出进行比较,根据比较结果,确定第二分数;

s3.生成测试用例并使所述计算机程序答题执行所述测试用例,根据执行结果,确定第三分数;

s4.对所述计算机程序答题进行关键字相似性对比和语法树相似性对比,根据对比结果,确定第四分数。

步骤s1-s4中的第一分数、第二分数、第三分数和/或第四分数用于确定计算机程序答题的总分数,具体地,第一分数、第二分数、第三分数和第四分数均为所述计算机程序答题的初始分数的扣分分值。

通过执行步骤s1-s4,可以实现与本发明的实施例中计算机程序答题评分系统相同的技术效果,包括:可以在线提交计算机程序答题,实现对计算机程序答题的自动评分,减轻阅卷评分带来的繁烦重复工作量,解放教师劳动力;可以提高作业或者考试中计算机程序答题的批改评分准确率,容易将成绩保存为电子文档,有利于长期保存成绩;具体而言,分别从词法语法错误、程序标准化程度、程序执行正确性以及静态程序准确性等角度来对计算机程序答题进行评价,最终输出的总分数至少综合考虑了上述两个角度的影响,所得到的总分数具有较好的全面性。

本发明的实施例中,一种计算机装置,包括存储器和处理器,所述存储器用于存储至少一个程序,所述处理器用于加载所述至少一个程序以执行实施例中的控制方法,实现与实施例所述的相同的技术效果。

本发明的实施例中,一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行实施例中的控制方法,实现与实施例所述的相同的技术效果。

需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。此外,本公开中所使用的上、下、左、右等描述仅仅是相对于附图中本公开各组成部分的相互位置关系来说的。在本公开中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本实施例所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本实施例说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本实施例所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本实施例所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。

应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。

此外,可按任何合适的顺序来执行本实施例描述的过程的操作,除非本实施例另外指示或以其他方式明显地与上下文矛盾。本实施例描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。

进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本实施例所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。

计算机程序能够应用于输入数据以执行本实施例所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。

以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1