基于B/S模式的程序设计在线评测系统设计

2014-07-05 14:40:29曾台盛泉州师范学院数学与计算机科学学院福建省大数据管理新技术与知识工程重点实验室智能计算与信息处理福建省高等学校重点实验室福建泉州362000
长江大学学报(自科版) 2014年34期
关键词:评测程序设计评判

曾台盛 (泉州师范学院数学与计算机科学学院;福建省大数据管理新技术与知识工程重点实验室 智能计算与信息处理福建省高等学校重点实验室,福建泉州 362000)

基于B/S模式的程序设计在线评测系统设计

曾台盛 (泉州师范学院数学与计算机科学学院;福建省大数据管理新技术与知识工程重点实验室 智能计算与信息处理福建省高等学校重点实验室,福建泉州 362000)

针对人工评测程序设计类课程作业效率低下的问题,设计了一种基于B/S模式的程序设计在线评测系统。在具体分析系统功能需求的基础上,介绍了系统的总体架构及功能模块的作用,对数据库及主要关键技术(包括后台评测、相似代码检测和成绩生成)进行了设计。实际应用表明,该系统响应速度快,判定结果准确无误,既减轻了教师的工作负担,又为学生进行程序设计提供了良好平台,得到了师生的一致好评。

程序设计;在线评测系统;B/S模式

随着计算机网络的快速发展,传统的程序设计类课程教学方式已经无法满足学生的学习需要,网络教学辅助系统在各高校程序设计类课程教学中得到了广泛应用。现有的网络辅助教学系统对于程序设计类作业没有能力进行处理,需要教师对程序设计类作业逐一批阅、评判,工作量大且效率低下。为此,笔者设计了基于B/S结构的程序设计在线评测系统❶❶泉州师范学院校自选科研项目(2011KJ07)。。用户可以在线提交自己的程序代码,系统自动编译运行并给出判定结果,这对减轻教师的工作负担,帮助学生通过网络实现个性化学习,在线自动测试,提高了学生运用计算机分析、解决实际问题的能力。

1 系统功能需求分析

设计该系统主要目的是为了实现代码自动在线评测,由具备权限的教师事先设计并通过网站录入题目,在题目中详细描述了具有一定背景内容的问题,同时给出题目运行的时间、内存限制以及输入、输出格式、输入输出测试数据。学生通过浏览器访问网站阅读题目,学生在客户端先调试自己的解题程序,然后提交代码,由系统自动评判学生提交的代码。具体评判过程如下[1-3]:①系统自动编译学生提交的代码,如果程序有语法错误,编译无法通过则报错并退出。②系统执行生成的可执行文件,如果运行时错误,则报错并退出。③将测试输入文件数据作为可执行文件的输入,得到输出文件。处理过程中如果出现时间超限或内存超限,则报错并退出。④将输出文件与对应的答案文件进行比对,完全一致则输出“接受”,有多余或者缺少空格或换行则输出格式“错”,否则输出答案“错”。学生提交代码后看到评判结果,在程序代码没有被系统接受前,学生可以根据系统给出的各类错误提示,修改代码并重新提交,直到被判定为接受为止。

为了能够进行上机测试和比赛并自动获得测试成绩,系统应具备竞赛功能和成绩生成功能。此外,为了提高学生的学习积极性,系统还应具有排行榜、讨论区、用户成绩对比、竞赛图片浏览、比赛新闻公告等功能。

2 系统总体架构

该系统总体架构采用Browser/Server(B/S)模式实现,其中Browser端提供用户注册、浏览题目、提交代码、参与竞赛、状态查询、竞赛排名查询、排行榜、用户对比、讨论版、相片浏览等基本功能。系统总体架构图如图1所示,其中服务器由判题服务器Judged、Web服务器和MySQL服务器3部分组成[4]。

3 系统功能模块

3.1 题目管理模块

该模块主要完成教师对题目进行添加、修改、删除等功能。添加一个题目时,需同时设置题目的基本信息和评判参数,基本信息包括题目名称、题目类型(程序设计、数据结构、算法)、题目描述、输入输出说明,评判参数主要用于系统自动评判时使用,包括最大内存限制、最长运行时间限制、测试数据与测试结果示例。

3.2 评判模块

该模块具有如下功能:编译用户程序;重定向输入输出流;用测试数据作为输入运行用户程序;获取输出结果、对比答案并返回判定结果。

图1 系统总体架构图

3.3 竞赛管理模块

该模块具有如下功能:竞赛题目组织;考试起始时间设置;考试参与人员设置;成绩评判方式制定;每道题目分值、权重确定以及最低通过标准制定。

3.4 成绩生成模块

该模块具有如下功能:根据竞赛管理模块制定成绩评判方式;根据学生解题情况自动生成成绩报表并支持导出Excel表。

3.5 用户管理模块

该模块具有如下功能:用户注册;用户权限设置;用户密码维护;批量生成考试、竞赛用户等。

3.6 新闻公告模块

该模块主要负责考试信息通知、过往比赛成绩报道等内容。

3.7 图片浏览模块

该模块的功能是动态显示程序设计集训队员参加各类竞赛的比赛及获奖照片,以激励学生加强程序设计训练。

表1 用户信息表

4 数据库设计

系统使用的数据库是MySQL数据库,其提供众多的PHP和C/C++的程序接口,不论是Web端PHP页面还是判题内核Judged的各个进程都可以实现轻松高效地对数据库的访问。系统主要数据库表主要包括用户信息表(见表1)、权限表、在线状态表、竞赛题目表(见表2)、竞赛提交信息表(见表3)等。

5 关键技术实现

5.1 后台评测

在评测过程中使用的C/C++语言编译器为GCC/G++,当用户提交代码后,系统调用GCC编译器进行自动编译,使用的编译选项为:g++testprog.cpp-o testprog-ansi-fno-asm-Wall-l——static Judged 2>error.txt。其中,testprog.cpp为用户提交上来的程序,testprog为编译生成的可执行程序,采用错误重定向“2>error.txt”,当编译失败时,用户可以通过Web浏览器看到错误信息。

表2 竞赛题目表

表3 竞赛提交信息表

Judged为系统服务进程,主要功能为轮询Web端或者数据库中的任务队列,随时提取判题队列,Judged的工作流程图如图2所示。评判算法由以下进程组成[5]:进程1运行编译好的程序,输入流指向测试用例;进程2通过管道接收进程1输出,对每个接收字符和答案文件相应字符进行比较,如发现不一样则终止2个进程,如果接收到的所有字符和答案文件均一致,则给出Accepted结论。在评判过程中如果用户程序发生运行错、答案错、时间超限、内存超限等情况,通过发送sigkill信号强行终止该进程。

5.2 相似代码检测

在程序设计类课程的在线作业或考试过程中,个别学生可能通过各种途径和手段提交相似代码以欺骗系统进行判断。为解决上述问题,采用如下方法:比较代码运行的时间(Ti)和占用的内存空间(Mi),超过预定阈值后对疑似的2段代码进行基于最长公共子序列方法的检测;将2段代码中的所有回车、空白字符删除,得到2个长字符串然后每次找出2个串的最长公共子序列并将其删除,直到找到的最长公共子序列小于某个阈值[3],计算被删除的字符数目占原始数目的比例(Li),根据Ti、Mi、Li的值及对应的权重计算出2段代码的相似度。

图2 Judged进程工作流程图

5.3 成绩生成

成绩生成主要是根据竞赛管理制定的成绩给定方式来进行计算,有以下方法可供选择。第1种是传统计算方法,即每道题目给定分值,按照学生答题情况,对每道题目给予分数,最后总计所有题目的得分情况作为学生的最终成绩。第2种方法是参照ACM/ICPC程序设计竞赛排名的做法,先指定考试合格的最低答题数目,以此数目作为合格的分数线,剩余每道题目用总分扣除合格分求平均值。此外,还应根据提交成功前失败次数进行相应罚分,对于格式错误的代码给予相应分值,但应确保排行榜考前的学生成绩不低于排在其之后的学生成绩,使得最终成绩跟比赛实时排行榜名次一致。

4 应用效果

目前,该系统承担了泉州师范学院4个年度的程序设计竞赛及多门课程的期中、期末考试测评工作,已经顺利完成了50余万次的提交任务处理,系统响应速度快,判定结果准确无误。在200多人同时在线提交时,服务器吞吐量正常,未见任何异常。由于使用该系统可以减轻教师的工作负担,又为学生进行程序设计提供了良好平台,因而具有很好的应用前景。

[1]陈湘骥,徐东风,杨秋妹.在线评判在C语言课程设计教学中的应用[J].计算机教育,2010,7(3):97-100.

[2]李文新,郭炜.北京大学程序在线评测系统及其应用[J].吉林大学学报(信息科学版),2005,22(S2):170-177.

[3]张浩斌.基于开放式云平台的开源在线评测系统设计与实现[J].计算机科学,2012,39(S3):339-343,348.

[4]蒋社想,戴书文.基于J2EE的ACM竞赛在线评判系统的设计[J].安徽理工大学学报(自然科学版),2009,28(4):59-63.

[5]乔少杰,杨燕,葛永明,等.基于B/S架构的多用户在线程序评判系统设计与实现[J].计算机工程与科学,2011,20(S1):58-61.

[编辑] 李启栋

TP311.52

A

1673-1409(2014)34-0040-04

2014-08-15

曾台盛(1975-),男,硕士,讲师,现主要从事算法设计、无线传感器网络及图像检索方面的教学与研究工作。

猜你喜欢
评测程序设计评判
交流与评判
次时代主机微软XSX全方位评测(下)
次时代主机微软XSX全方位评测(上)
基于Visual Studio Code的C语言程序设计实践教学探索
计算机教育(2020年5期)2020-07-24 08:52:56
基于学习的鲁棒自适应评判控制研究进展
自动化学报(2019年6期)2019-07-23 01:18:18
从细节入手,谈PLC程序设计技巧
电子制作(2019年9期)2019-05-30 09:42:04
攻坡新利器,TOKEN VENTOUS评测
Canyon Ultimate CF SLX 8.0 DI2评测
中国自行车(2017年1期)2017-04-16 02:54:06
高职高专院校C语言程序设计教学改革探索
诗歌评判与诗歌创作
文学教育(2016年27期)2016-02-28 02:35:12