基于LAMP的在线编程测评平台的研究与实现

2019-12-01 00:48:21李星儒北方民族大学
数码世界 2019年12期
关键词:题库评测功能区

李星儒 北方民族大学

关键字:LAMP OJ 在线编程测评平台

引言

随着国内外各大算法竞赛的兴起,如蓝桥杯,ACM/ICPC等。各大高校也越来越重视学生算法编程能力的培养,也吸引了不少学子前去参赛,我校也不例外。但是我校目前还没有一个能投入使用的在线评测平台。鉴于此,我们开发了基于LAMP的在线编程测评平台。LAMP是指基于Linux的,使用Apache作为网页服务器,MySQL作为数据库系统,PHP作为编程语言的网站建站方案。在线编程评测平台是一个在线的判题系统。使用者可以在上提交多种程序源代码,并交由平台自动编译测评。

1 平台功能设计

1.1 前台使用

首先,系统部署完成后,用户访问系统网址,在导航栏上可见题库、评测状态等几个功能区。在用户登录后且具有管理员权限时,会出现“控制台”功能区。

(1)题库功能区

题库功能区是整个评测系统最核心的部分,在这个功能区,可以看到诸如题目标题、题目难度、题目提交数和正确通过数等重要的信息。

(2)评测状态功能区

从这个功能区可以看到整个服务器的评测状态。该功能区展示了一个列表,详细显示了目前正在排队的测试案例和正在测评的测试案例。

(3)我的功能区

这里是用户中心。用户可以从这个功能区看到至今为止的自身测评统计数据:总提交数、总通过数、通过率等。

(4)控制台功能区

打开控制台功能区,其中又细分为下列几个小功能区:题目管理、组卷管理、用户管理栏目。

2.2 数据库设计概要

平台数据库由 coder_questions、sessions、tests、submit、users五个表组成。其中,coder_questions用于存储题库里的题目,sessions用于保存用户登录凭证,tests用于保存组卷信息,submit用于保存用户提交的代码供后台测评,users用于保存平台注册的所有用户信息。

2 平台具体实现

(1)页面路由显示过程分析

对整个平台访问将自动重定向到index.php。这个文件是首页路由文件,再根据指定的规则过滤用户请求之后,它将根据用户的要求呈现不同的页面。首页路由文件核心代码如下所示:

$path=$_SERVER[`REQUEST_URI`];

$path=preg_replace("/(?[w&=%:+-]*)/","",$path);

if(file_exists("../smarty/tpl/oj-".$file_name.".tpl"))

$smarty->display("oj-$file_name.tpl");

else

header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");

(2)题库读取显示关键代码分析

如下面所示,页面首先会向数据库发送查询SQL请求,请求读取题库信息。为防止保存时乱码,题库数据都是经过base64编码过的,因此读取之后需要经过base64解码。最后显示到屏幕上。

$ret=mysqli_query($GLOBALS[`db_conn`],"SELECT`id`,`title`,`ac`,`come_from` FROM `coder_questions` WHERE`showable`= 1");

for($id=0;$id

$question[$id]=mysqli_fetch_assoc($ret);

foreach ($question[$id] as $key => $value)

if($key!=`ac` ) $question[$id][$key]=base64_decode($value);

(3)题目答案代码提交过程分析

核心代码如下所示,当页面尝试提交代码时,会通过WebSocket与后台服务器建立连接,然后将会话凭据(sessionid)、base64编码后的代码(code)等编码为JSON数据后发送至后台服务器。

var ws = new WebSocket("ws://{$domain}:3698");

ws.onopen = function () {

var params={`sessionid`:info[`sessionid`], method:`push`,

code:window.btoa(unescape(encodeURIComponent(editor.getValue()))),type:$("#lang").val(),qid:info[`qid`] };

ws.send(JSON.stringify(params));

}

然后后台服务器接收到前端发过来的代码,会将其插入数据库的submit表,等待系统测评。

3 结语

经过长达1年的艰苦建设,我校在线评测系统终于初步建成。这极大地提高了我校计算机学院学生们的算法及编程水平,也为以后我校参加诸如蓝桥杯等竞赛的选手提供了训练平台,相信在优越的条件下,我校相关专业学生能在算法类竞赛取得更好的成绩。

猜你喜欢
题库评测功能区
“勾股定理”优题库
次时代主机微软XSX全方位评测(下)
次时代主机微软XSX全方位评测(上)
“轴对称”优题库
“轴对称”优题库
“整式的乘法与因式分解”优题库
烧结混合机各功能区的研究与优化
山东冶金(2019年3期)2019-07-10 00:53:54
攻坡新利器,TOKEN VENTOUS评测
衡水市不同功能区土壤营养元素的比较
现代园艺(2017年23期)2018-01-18 06:57:44
Canyon Ultimate CF SLX 8.0 DI2评测
中国自行车(2017年1期)2017-04-16 02:54:06