Java编程题目自动评判方法及系统技术方案

技术编号:14339657 阅读:80 留言:0更新日期:2017-01-04 12:12
本发明专利技术涉及程序编写验证技术领域,具体涉及一种Java编程题目自动评判方法及系统,该方法包括:接收答题代码和Java编程题目的预设代码;对所述答题代码和预设代码进行处理,并插入评判代码,得到待编译代码;对所述待编译代码进行编译,并判断是否编译成功;若是,则运行编译后的程序,执行所述评判代码;通过所述评判代码的运行结果统计所述答题代码的得分,本发明专利技术通过在Java编程题目中插入多个评判代码,实现了自动评判Java编程题目的答题代码的功能,节省了人工资源,且提高了Java编程题目自动评判的全面性。

【技术实现步骤摘要】

本专利技术涉及程序编写验证
,具体涉及一种Java编程题目自动评判方法及系统
技术介绍
计算机程序编程的应用在各个领域发展迅速,为了适应当前社会经济和信息产业化快速发展的需求,计算机程序编程已成为程序员必须熟练掌握的一种基本技能。近几年来,IEEESpectrum通过跟踪Google搜索、社交网站如StackOverflow、Twitter、Reddit和HackerNews上的相关讨论,GitHub上的项目,以及工作招聘等信息,分析了49种编程语言的流行度,Java编程语言的流行度一直名列前茅。另外,无论是学校对学生的Java语言的教学,还是培训机构对Java程序员的培训都是日益增加。因而,Java编程语言的前景无量,可为社会信息产业化快速发展起到不可替代的作用。目前的编程类题目自动评判方法主要有3种,第一种,根据静态结果文件进行判分,评判系统通过比较考生提供的结果文件和预先准备的标准结果文件的内容进行评判;第二种,通过动态执行程序进行判分,评判系统动态编译考生提交的程序,并按照一定的测试用例动态执行程序,通过比较程序运行返回的结果和标准结果进行评判;第三种,根据程序源代码进行判分,评判系统按照一定的算法对考生提交的源程序代码和预先准备的标准源程序代码内容进行比较,依据它们的相似性进行评判。另外,这些方法在分数评定上仍存在一些问题:方法1和方法2使用黑盒的方式,只验证结果而不验证程序流程,无法完全保证程序的正确性,且程序中任何一个输出格式的错误都有可能导致整个程序错误;方法3也存在较大的问题,对大多数语言来说,完成某一功能的程序实现方法种类较多,单靠相似度判定还比较困难。已有的方法主要针对过程型语言的特点进行设计,只适合于面向过程的程序评判,并不适用于面向对象程序。与面向过程程序相比,面向对象程序无论从编程思想、程序结构,还是语法成分、成分之间的逻辑关系以及代码形式上都有其自身的特点,在程序评判时只查看结果或只比较相似度都是不完善的。
技术实现思路
本专利技术的目的在于提出一种Java编程题目自动评判方法及系统,能够自动评判Java编程题目的答题代码,节省了人工资源,且提高了评判的全面性。为达此目的,本专利技术采用以下技术方案:一种Java编程题目自动评判方法,包括:接收答题代码和Java编程题目的预设代码;对所述答题代码和预设代码进行处理,并插入评判代码,得到待编译代码;对所述待编译代码进行编译,并判断是否编译成功;若是,则运行编译后的程序,执行所述评判代码;及,通过所述评判代码的运行结果统计所述答题代码的得分。优选地,所述对所述答题代码和预设代码进行处理,并插入评判代码,得到待编译代码具体为:将所述答题代码和预设代码进行合并和拼接;对不安全的代码进行过滤;按照评判服务器运行的需要,将答题代码中的操作代码改写为评判代码。优选地,所述通过所述评判代码的运行结果统计所述答题代码的得分之后还包括:通过异步告知的方式将所述得分返回给考生客户端。优选地,所述接收答题代码和Java编程题目的预设代码之前还包括:考试服务器根据考试要求编写Java编程题目的题干并说明题意,选择性地提供预设代码;考生客户端阅读所述Java编程题目并进行答题代码编写,并将所述答题代码上传至考试服务器。作为本专利技术的另一个方面,提供一种Java编程题目自动评判系统,包括:考生客户端、考试服务器和评判服务器;所述考生客户端,用于根据Java编程题目的预设代码进行答题,得到答题代码,并将所述答题代码提交至考试服务器;还用于接收返回的答题代码保存结果和评判结果;所述考试服务器,用于接收所述答题代码和预设代码,对所述考生答题代码和预设代码进行处理,并插入评判代码,得到待编译代码,将所述待编译代码发送至评判服务器;用于保存所述答题代码并将保存结果发送至考生客户端;还用于接收评判服务器返回的评判结果,并将所述评判结果发送至考生客户端;所述评判服务器,用于对所述待编译代码进行编译,并判断是否编译成功;若是,则运行编译后的程序,执行所述评判代码;通过所述评判代码的运行结果统计所述考生答题代码的得分,并将评判结果发送至考试服务器。优选地,所述考试服务器中设置有异步告知单元,用于通过异步告知的方式将所述得分返回给考生客户端。优选地,所述考试服务器中还设置有出题单元,用于根据考试要求编写Java编程题目的题干并说明题意,选择性地提供预设代码。优选地,所述考生客户端中设置有答题单元,用于阅读所述Java编程题目并进行答题代码编写,并将所述答题代码上传至考试服务器。优选地,所述评判服务器中设置有评判器集群和并发处理单元,所述评判器集群包含多个评判器,用于处理多个评判进程;所述并发处理单元,用于支持多个并发访问。本专利技术的有益效果为:一种Java编程题目自动评判方法及系统,该方法包括:接收答题代码和Java编程题目的预设代码;对所述答题代码和预设代码进行处理,并插入评判代码,得到待编译代码;对所述待编译代码进行编译,并判断是否编译成功;若是,则运行编译后的程序,执行所述评判代码;通过所述评判代码的运行结果统计所述答题代码的得分,本专利技术通过在Java编程题目中插入多个评判代码,实现了自动评判Java编程题目的答题代码的功能,节省了人工资源,且提高了Java编程题目自动评判的全面性。附图说明图1是本专利技术实施例一提供的一种Java编程题目自动评判方法的流程图。图2是本专利技术实施例二提供的一种Java编程题目自动评判系统的结构图。图3是本专利技术实施例二提供的异步告知评判的示意图。图4是本专利技术实施例二提供的题干的示意图。图5是本专利技术实施例二提供的预设代码的示意图。图6是本专利技术实施例二提供的检测代码的示意图。图7是本专利技术实施例二提供的评判器集群示意图。图8是本专利技术实施例二提供的并发处理单元示意图。具体实施方式下面结合图1-图8并通过具体实施方式来进一步说明本专利技术的技术方案。实施例一图1是本专利技术实施例一提供的一种Java编程题目自动评判方法的流程图。一种Java编程题目自动评判方法,包括:S10、接收答题代码和Java编程题目的预设代码;S20、对所述答题代码和预设代码进行处理,并插入评判代码,得到待编译代码;S30、对所述待编译代码进行编译,并判断是否编译成功;S40、若是,则运行编译后的程序,执行所述评判代码;及,S50、通过所述评判代码的运行结果统计所述答题代码的得分。在本实施例中,所述评判代码采用了业界广泛应用的测试框架作为检测方式,与当前行业标准保持一致性,降低了出题人编写评判代码的难度,只要掌握了该语言的测试框架API(ApplicationProgrammingInterface,应用程序编程接口),则可以编写题目的评判代码,在本实施例中,所述Java编程题目允许输入多段评判代码,每段评判代码可以检测考生的答题代码的不同方面,对考生答题的逻辑正确性、结构正确性都可以进行详细的评判,本专利技术所述的自动评判方法对学生编写具有面向对象特性的Java编程题目中各种评分因素考虑的比较全面,一方面可方便众多的学校、培训机构或者公司里,经常需要对学生、学院或员工进行定期的考试或考核,省去了人工评判编程题所耗费的人力物力,另一方面可以推广具有实际意义的程序设计语言网络自动化考试,本文档来自技高网
...
Java编程题目自动评判方法及系统

【技术保护点】
一种Java编程题目自动评判方法,其特征在于,包括:接收答题代码和Java编程题目的预设代码;对所述答题代码和预设代码进行处理,并插入评判代码,得到待编译代码;对所述待编译代码进行编译,并判断是否编译成功;若是,则运行编译后的程序,执行所述评判代码;及,通过所述评判代码的运行结果统计所述答题代码的得分。

【技术特征摘要】
1.一种Java编程题目自动评判方法,其特征在于,包括:接收答题代码和Java编程题目的预设代码;对所述答题代码和预设代码进行处理,并插入评判代码,得到待编译代码;对所述待编译代码进行编译,并判断是否编译成功;若是,则运行编译后的程序,执行所述评判代码;及,通过所述评判代码的运行结果统计所述答题代码的得分。2.根据权利要求1所述的一种Java编程题目自动评判方法,其特征在于,所述对所述答题代码和预设代码进行处理,并插入评判代码,得到待编译代码具体为:将所述答题代码和预设代码进行合并和拼接;对不安全的代码进行过滤;按照评判服务器运行的需要,将答题代码中的操作代码改写为评判代码。3.根据权利要求1所述的一种Java编程题目自动评判方法,其特征在于,所述通过所述评判代码的运行结果统计所述答题代码的得分之后还包括:通过异步告知的方式将所述得分返回给考生客户端。4.根据权利要求1所述的一种Java编程题目自动评判方法,其特征在于,所述接收答题代码和Java编程题目的预设代码之前还包括:考试服务器根据考试要求编写Java编程题目的题干并说明题意,选择性地提供预设代码;考生客户端阅读所述Java编程题目并进行答题代码编写,并将所述答题代码上传至考试服务器。5.一种Java编程题目自动评判系统,其特征在于,包括:考生客户端、考试服务器和评判服务器;所述考生客户端,用于根据Java编程题目的预设代码进行答题,得到答题代码,并将所述答题代码提交至考...

【专利技术属性】
技术研发人员:张子超傅熠宋鸿陟
申请(专利权)人:广州数度软件有限公司
类型:发明
国别省市:广东;44

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1