编程题评测系统的学生客户端、教师客户端及服务器端的制作方法

文档序号:15051196发布日期:2018-07-31 17:08阅读:244来源:国知局

本发明涉及计算机应用技术领域,尤其涉及一种编程题评测系统的学生客户端、教师客户端及服务器端。



背景技术:

C语言、C++语言、Java语言是目前计算机程序设计中应用广泛的编程语言,在各类高等院校的计算机及相关专业中,C、C++程序设计等语言是必修的基础课。学生在学习时,需要在机房或个人电脑上安装集成开发环境,编辑程序、编译程序和运行程序;老师在评判学生的编程题作业时,需要拷贝程序、编译程序、运行程序,给出分数。

这就使得学生不能随时、随地,通过电脑、手机、平板完成编程题作业,老师批改评判编程题作业时也比较费时耗力。



技术实现要素:

有鉴于此,本发明实施例提供一种编程题评测系统的学生客户端、教师客户端及服务器端,能够解决现有技术中学生不能随时、随地,通过电脑、手机、平板完成编程题作业和老师批改评判编程题作业比较费时耗力的问题。

为达到上述目的,本发明的实施例采用如下技术方案:

一方面,本发明提出了一种编程题评测系统的学生客户端,包括:

请求发送单元,用于向编程题评测系统的教师客户端发送获取编程题的信息的请求,从所述编程题评测系统的教师客户端获取编程题的信息;其中,所述编程题的信息包括编程题类型、编程题的答题时长、编程题题目、编程题描述、答题次数和/或编程题分数;

获取单元,用于针对所述编程题的信息,接收用户的在线编辑指令或上传指令,在线编辑程序代码或上传程序代码文件,并从所述编程题评测系统的教师客户端获取所述编程题的测试用例;其中,所述测试用例包括输入、输出、权重和分数;

提交单元,用于接收用户的提交指令,将所述程序代码或程序代码文件,以及所述编程题的测试用例提交给编程题评测系统的服务器端,以使所述编程题评测系统的服务器端编译、运行所述程序代码或程序代码文件,和/或根据所述编程题的测试用例对所述程序代码或程序代码文件进行评判,并根据评判的结果给出分数;

接收单元,用于接收所述编程题评测系统的服务器端发送的所述程序代码或程序代码文件的编译结果、运行结果和/或分数,并进行显示。

本发明实施例提供的编程题评测系统的学生客户端,通过编程题评测系统的服务器端来编译、运行程序代码,并对所述程序代码进行打分,不需要安装集成开发环境,老师也不需要对学生的编程题作业进行打分,因而解决了现有技术中学生不能随时、随地,通过电脑、手机、平板完成编程题作业和老师批改评判编程题作业比较费时耗力的问题。

另一方面,本发明提出了一种编程题评测系统的教师客户端,包括:

设置单元,用于接收用户的设置指令,设置编程题的信息;其中,所述编程题的信息包括编程题类型、编程题的答题时长、编程题题目、编程题描述、答题次数、编程题分数和/或编程题测试用例,所述编程题测试用例包括输入、输出、权重和分数;

第一发送单元,用于接收编程题评测系统的学生客户端发送的获取编程题的题目、描述、答题次数和/或分数的请求,向所述编程题评测系统的学生客户端发送所述编程题的题目、描述、答题次数和/或分数;

第二发送单元,用于接收所述编程题评测系统的学生客户端发送的获取所述编程题的测试用例的请求,向所述编程题评测系统的学生客户端发送所述编程题的测试用例;

分析单元,用于从编程题评测系统的服务器端获取所述编程题评测系统的学生客户端发送的程序代码,对所述程序代码进行分析,确定出相似度大于预设阈值的程序代码。

本发明实施例提供的编程题评测系统的教师客户端,通过向编程题评测系统的学生客户端发送编程题的题目、描述、答题次数和/或分数,以及所述编程题的测试用例,以使所述编程题评测系统的学生客户端获取,并将所述编程题的题目、描述、答题次数和/或分数,以及所述编程题的测试用例发送给编程题评测系统的服务器端,由所述编程题评测系统的服务器端编译、运行所述编程题评测系统的学生客户端发送的程序代码,并对所述程序代码进行打分,使得所述编程题评测系统的学生客户端不需要安装集成开发环境,老师也不需要对学生的编程题作业进行打分,因而解决了现有技术中学生不能随时、随地,通过电脑、手机、平板完成编程题作业和老师批改评判编程题作业比较费时耗力的问题。

另一方面,本发明提出了一种编程题评测系统的服务器端,包括:

监听单元,用于监听编程题评测系统的学生客户端的连接请求;

处理单元,用于建立与编程题评测系统的学生客户端的连接,接收所述编程题评测系统的学生客户端提交的程序代码,以及编程题的测试用例的输入、输出、权重和分数,编译、运行所述程序代码,和/或根据所述编程题的测试用例的输入、输出、权重和分数对所述程序代码进行评判,并根据评判的结果给出分数,将所述程序代码编译结果、运行结果和/或分数发送给所述编程题评测系统的学生客户端。

本发明实施例提供的编程题评测系统的服务器端,通过编译、运行编程题评测系统的学生客户端发送的程序代码,并对所述程序代码进行打分,使得所述编程题评测系统的学生客户端不需要安装集成开发环境,老师也不需要对学生的编程题作业进行打分,因而解决了现有技术中学生不能随时、随地,通过电脑、手机、平板完成编程题作业和老师批改评判编程题作业比较费时耗力的问题。

附图说明

通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:

图1为本发明编程题评测系统的学生客户端一实施例的方框结构示意图;

图2为图1中提交单元一实施例的方框结构示意图;

图3为本发明编程题评测系统的教师客户端一实施例的方框结构示意图;

图4为本发明编程题评测系统的服务器端一实施例的方框结构示意图;

图5为图4中监听单元一实施例的方框结构示意图;

图6为图4中处理单元一实施例的方框结构示意图;

图7为图6中连接请求处理子单元一实施例的方框结构示意图;

图8为图6中测试用例评判子单元一实施例的方框结构示意图。

具体实施方式

下面将结合附图对本发明的实施例进行详细描述。

参看图1,本发明的实施例提供一种编程题评测系统的学生客户端,包括:

请求发送单元1,用于向编程题评测系统的教师客户端发送获取编程题的信息的请求,从所述编程题评测系统的教师客户端获取编程题的信息;其中,所述编程题的信息包括编程题类型、编程题的答题时长、编程题题目、编程题描述、答题次数和/或编程题分数;

获取单元2,用于针对所述编程题的信息,接收用户的在线编辑指令或上传指令,在线编辑程序代码或上传程序代码文件,并从所述编程题评测系统的教师客户端获取所述编程题的测试用例;其中,所述测试用例包括输入、输出、权重和分数;

提交单元3,用于接收用户的提交指令,将所述程序代码或程序代码文件,以及所述编程题的测试用例提交给编程题评测系统的服务器端,以使所述编程题评测系统的服务器端编译、运行所述程序代码或程序代码文件,和/或根据所述编程题的测试用例对所述程序代码或程序代码文件进行评判,并根据评判的结果给出分数;

接收单元4,用于接收所述编程题评测系统的服务器端发送的所述程序代码或程序代码文件的编译结果、运行结果和/或分数,并进行显示。

本实施例中,学生可以选择编程题评测系统的服务器端编译、运行程序代码,也可以选择编程题评测系统的服务器端编译、运行程序代码,并给出分数。

本发明实施例提供的编程题评测系统的学生客户端,通过编程题评测系统的服务器端来编译、运行程序代码,并对所述程序代码进行打分,不需要安装集成开发环境,老师也不需要对学生的编程题作业进行打分,因而解决了现有技术中学生不能随时、随地,通过电脑、手机、平板完成编程题作业和老师批改评判编程题作业比较费时耗力的问题。

可选地,参看图2,在本发明编程题评测系统的学生客户端的另一实施例中,所述提交单元3,包括:

构建子单元30,用于接收用户的提交指令,构建通信消息格式;

连接子单元31,用于通过建立编程题评测系统的学生客户端的套接字,并向所述编程题评测系统的服务器端的套接字发送连接请求,与所述编程题评测系统的服务器端建立连接;

请求消息发送子单元32,用于按照所述通信消息格式向所述编程题评测系统的服务器端发送请求消息;其中,所述请求消息中包括所述程序代码或程序代码文件,以及所述编程题的编程题类型和所述编程题的测试用例的信息。

本实施例中,编程题的编程题类型包括C、C++、Java等,本发明不再详细赘述。将编程题的编程题类型提交给编程题评测系统的服务器端,便于编程题评测系统的服务器端根据编程题类型选择适当的编译器,对编程题进行编译。

参看图3,本发明的实施例提供一种编程题评测系统的教师客户端,包括:

设置单元5,用于接收用户的设置指令,设置编程题的信息;其中,所述编程题的信息包括编程题类型、编程题的答题时长、编程题题目、编程题描述、答题次数、编程题分数和/或编程题测试用例,所述编程题测试用例包括输入、输出、权重和分数;

第一发送单元6,用于接收编程题评测系统的学生客户端发送的获取编程题的题目、描述、答题次数和/或分数的请求,向所述编程题评测系统的学生客户端发送所述编程题的题目、描述、答题次数和/或分数;

第二发送单元7,用于接收所述编程题评测系统的学生客户端发送的获取所述编程题的测试用例的请求,向所述编程题评测系统的学生客户端发送所述编程题的测试用例;

分析单元8,用于从编程题评测系统的服务器端获取所述编程题评测系统的学生客户端发送的程序代码,对所述程序代码进行分析,确定出相似度大于预设阈值的程序代码。

本实施例中,编程题测试用例可以设置多组,也可以设置编程题的参考代码,以使编程题评测系统的学生客户端在某一时刻之后获取编程题的参考代码。

本实施例中,确定出编程题评测系统的学生客户端提交的程序代码中相似度大于预设阈值的程序代码,能够便于确定出抄袭者,更好的实施教学。

本发明实施例提供的编程题评测系统的教师客户端,通过向编程题评测系统的学生客户端发送编程题的题目、描述、答题次数和/或分数,以及所述编程题的测试用例,以使所述编程题评测系统的学生客户端获取,并将所述编程题的题目、描述、答题次数和/或分数,以及所述编程题的测试用例发送给编程题评测系统的服务器端,由所述编程题评测系统的服务器端编译、运行所述编程题评测系统的学生客户端发送的程序代码,并对所述程序代码进行打分,使得所述编程题评测系统的学生客户端不需要安装集成开发环境,老师也不需要对学生的编程题作业进行打分,因而解决了现有技术中学生不能随时、随地,通过电脑、手机、平板完成编程题作业和老师批改评判编程题作业比较费时耗力的问题。

可选地,在本发明编程题评测系统的教师客户端的另一实施例中,还包括:

统计单元,用于从所述编程题评测系统的服务器端获取所述编程题评测系统的学生客户端发送的程序代码的编译错误信息和运行错误信息,并进行统计,确定出出现次数最多的编译错误信息和出现次数最多的运行错误信息。

本实施例中,统计出出现次数最多的编译错误信息和出现次数最多的运行错误信息,便于教师改进教学。

参看图4,本发明的实施例提供一种编程题评测系统的服务器端,包括:

监听单元9,用于监听编程题评测系统的学生客户端的连接请求;

处理单元10,用于建立与编程题评测系统的学生客户端的连接,接收所述编程题评测系统的学生客户端提交的程序代码,以及编程题的测试用例的输入、输出、权重和分数,编译、运行所述程序代码,和/或根据所述编程题的测试用例的输入、输出、权重和分数对所述程序代码进行评判,并根据评判的结果给出分数,将所述程序代码编译结果、运行结果和/或分数发送给所述编程题评测系统的学生客户端。

本发明实施例提供的编程题评测系统的服务器端,通过编译、运行编程题评测系统的学生客户端发送的程序代码,并对所述程序代码进行打分,使得所述编程题评测系统的学生客户端不需要安装集成开发环境,老师也不需要对学生的编程题作业进行打分,因而解决了现有技术中学生不能随时、随地,通过电脑、手机、平板完成编程题作业和老师批改评判编程题作业比较费时耗力的问题。

可选地,参看图5和图6,在本发明编程题评测系统的服务器端的另一实施例中,所述监听单元9,包括:

初始化子单元90,用于初始化监控线程,并运行;

第二套接字建立子单元91,用于建立编程题评测系统的服务器端的套接字,并进行设置;

绑定子单元92,用于将所述编程题评测系统的服务器端的套接字,与所述编程题评测系统的服务器端地址和端口进行绑定;

监听子单元93,用于由所述监控线程,监听所述编程题评测系统的服务器端端口,等待所述编程题评测系统的学生客户端的套接字的连接请求;

判断子单元94,用于在接收到连接请求后,判断接收到的所述连接请求中是否包含所述编程题评测系统的服务器端地址和端口;

其中,所述处理单元10,包括:

连接请求处理子单元100,用于在所述判断子单元94确定接收到的所述连接请求中包含所述编程题评测系统的服务器端地址和端口后,建立与所述编程题评测系统的学生客户端的连接,接收所述编程题评测系统的学生客户端提交的程序代码,以及编程题的测试用例的输入、输出、权重和分数;

测试用例评判子单元101,用于编译、运行所述程序代码,获取所述程序代码的编译结果和运行结果,和/或根据所述编程题的测试用例对所述程序代码进行评判,并根据评判的结果给出分数;

发送子单元102,用于将所述程序代码的编译结果、运行结果和/或分数发送给所述编程题评测系统的学生客户端。

本实施例中,套接字的设置为现有技术,本发明不再赘述。

可选地,参看图7和图8,在本发明编程题评测系统的服务器端的另一实施例中,所述监听子单元,还包括:

等待模块,用于打开进程间通信的消息队列,等待接收程序的名称;

检测模块,用于接收程序的名称,并对接收到的程序的名称所对应的程序进行安全检查,若确定所述程序的名称所对应的程序异常,则强制终止所述程序的名称所对应的程序的运行;或者

休眠模块,用于若确定所述程序的名称所对应的程序正常,则休眠预设的时间;

判断模块,用于判断所述程序的名称所对应的程序是否在运行,若所述程序的名称所对应的程序在运行,则强制终止所述程序的名称所对应的程序的运行;

其中,所述连接请求处理子单元100,包括:

线程建立模块1000,用于在接收到编程题评测系统的学生客户端的套接字发送的连接请求后,建立一个线程;

请求消息接收模块1001,由所述线程,接收所述编程题评测系统的学生客户端发送的请求消息;所述请求消息包括程序代码,以及编程题的编程题类型、编程题的测试用例的输入、输出、权重和分数;

所述测试用例评判子单元101,包括:

解码模块1010,用于解码所述编程题评测系统的学生客户端发送的请求消息,获取请求类型、程序代码,以及编程题的测试用例的输入、输出、权重和分数;

编译模块1011,用于根据所述请求类型编译所述程序代码,获取编译结果;

名称发送模块1012,用于在所述程序代码运行前,将所述程序代码的名称通过所述进程间通信的消息队列发送给所述检测模块;

运行模块1013,用于将所述编程题的每组测试用例的输入作为输入,运行所述程序代码,将所述程序代码的运行结果与所述编程题的该组测试用例的输出进行比较,并根据权重计算所述程序代码的该组测试用例的得分,对所述程序代码的每组测试用例的得分进行求和计算出总得分。

本实施例中,对程序进行安全检查时,若确定程序包含恶意代码、禁止的系统命令(如硬盘格式化命令、关机命令等),进入死循环,空耗CPU、内存资源等,则确定程序异常;预设的时间可是是1秒。在强制终止程序运行和程序运行结束后,自动释放回收程序未显式释放的内存。

本实施例中,通过对程序进行安全检查,能够保证编程题评测系统的服务器端的安全性和可靠运行。

本实施例中,请求类型由编程题评测系统的学生客户端发送的编程题的编程题类型确定,与编程题评测系统的学生客户端发送的编程题的编程题类型相同。

本实施例中,通过测试用例能够客观、公正地对程序代码进行打分,使得老师不需要为批改编程作业头疼。

虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

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