学生天地>>详情

WeJudge程序设计在线评测辅助教学系统


2017年01月20日 00:00  点击:


2016年校计算机作品大赛一等奖获奖作品

团队成员:

2014级软件工程专业 蓝荣祺、万志强、姚芝珺、陆洋;2015级数字媒体与技术 唐梅

指导教师 肖红玉

作品形式:B/S结构网站系统

运行平台:

Linux(Ubuntu 14.04) + Nginx 1.8 + MySQL 5.6 + Python 2.7

前端:HTML5+jQuery+Bootstrap。仅支持IE9及以上浏览器或者其他任何非IE内核的浏览器访问。

作品概述:

程序设计在线评测辅助教学系统的核心功能是对学生提交的程序代码进行编译、运行,向运行的程序输入预定的数据后,获取程序输出的计算结果与标准答案进行比较来达到评测代码的目的。

本团队基于在线评测系统进行相关改进与创新,独立研究并开发一个程序设计在线评测辅助教学系统,最大限度的发挥在线评测在程序设计课程日常教学应用中潜能,改善教学质量,提高教学效率。

开发平台及开发软件:

代码在OSX系统上使用Pycharm编写,调试在VMWare虚拟机中实现。

本项目的特色:

本系统主要面向程序设计类课程实验教学。系统主要分为管理员、教师、学生这三类主要角色,每个角色都有不同的功能和使用群体,下面将一一阐述。

学生角色:

1.题库子系统:学生可以结合自身实际情况,检索难易适中的题目进行练习。

2. 评测系统:学生提交代码后,系统将在后台运行代码,并且将运行、评测结果实时的反馈给学生。评测机反馈的评测状态、运行时间、内存使用状况、代码长度、运行结果与正确答案的详细数据对比情况等详细信息,将会自动生成并展示给学生;并且,系统将对错误的答案进行颜色标记,以便于学生发现问题并调试自己的程序。

3.作业子系统:学生登录系统后可以查看老师发布的作业,并提交相应的代码由系统自动评测,评测通过后即可获得相应的分数。学生在作业完成后,根据提交的代码、评测的情况生成在线实验报告,以供老师查看批阅。同时,系统将按照每道题目提交的时间、运行情况等生成排行榜,供学生了解彼此之间对知识的掌握程度,也使其树立竞争意识。作业截止后,系统可以展示题目的答案和参考代码以供学生查看、对比、学习。

4.考试子系统:本系统可以用于程序设计课程日常考查使用。学生在系统中进行在线考试,考试内容的形式可以是主观题+客观题+在线代码评测题相结合。考试系统拥有一个更加灵活、实时的评分系统,完成考试后可立即知道自己的得分情况。

5.讨论板子系统:学生可以在讨论板上对学习过程中遇到的问题进行提问,由教师、助教或者学习成绩较好的同学进行解答,以增强学生与教师、学生与学生之间的交流,达到提高学习效率和成绩的目的。

6.基础知识练习系统:考虑到程序设计教学的考查会有笔试部分,学生需要理论知识和实践知识相结合,本系统主要用于老师发布一些客观题(选择、填空等)的练习题,便于学生的练习使用。并且将于微信公众平台进行对接,让学生可以利用课余碎片化的时间进行练习。

教师角色:

1. 题库子系统:教师可以发布题目和测试数据(即参考答案),根据课程进度和题目的难易度进行分类管理,查看学生的代码评测结果,对学生提出的疑问进行解答等。

2. 作业子系统:教师根据课程需要、排课信息,在题目库中选择部分题目进行作业的发布。作业可以个性化定义学生分组,设置时间、允许使用的编程语言、评测机给分等。教师在批改作业的时候可以查看学生提交的代码以及评测情况,进行代码查重,打包下载代码,统计成绩等。

3.考试子系统:教师可以在本系统发布考试内容。考试过程中,教师可以按实际情况对系统自动评分的结果进行修改、确认,使得结果更加准确可靠。考试结束后,教师可以轻松导出学生的得分统计数据,对数据进行分析,包括每道题的正确率、得分情况等,更好的了解学生们的学习情况。

4.代码查重系统:由于存在少数学生为了完成作业直接拷贝他人代码的情况,需要一个系统来辅助教师对代码进行相似度查重。系统根据学生提交的作业进行相似度判定。相似度将以百分比显示,为避免自动评测可能带来的误判,代码按相似度倒序排序展示给教师,由教师进行人工查重,评判,修改评测结果等。查重算法将根据论文查重算法、SimHash等进行相关研究后得到适合我们的查重算法。由于数据量过大,需要进行相关的优化处理,保证速度的前提下进行查重。

5.教学管理子系统:本系统将为教师提供一个完善的教学管理子系统,教师可以在此发布课程公告、上传课程学习资料、查看排课情况等。

管理员角色:

管理员是一个相对综合的角色,它具备操作网站后台的权限,可以进行用户管理、角色管理、排课管理、数据备份等。

1. 用户管理:对系统所有用户进行增删查改,批量导入,重置密码等操作

2. 角色管理:创建用户角色,对用户进行分组

3. 排课管理:导入学校教务的排课数据、学生名单等。

4. 数据备份:对系统的所有数据进行备份、恢复等。

其他相关特性

1.中文界面:系统使用中文界面,简洁易懂,为初学者降低使用的门槛。

2. 评测语言:本系统支持C、C++、Java等编程语言编写的代码进行评测。

3. 开发技术:系统采用 Python2.7作为运行脚本,并使用Django 1.8框架进行快速构建,主界面使用HTML5 + jQuery 1.11 +Bootstrap 3.5;评测机使用基于Linux的开源评测模块Lo-runner二次开发,其可以准确对目标程序的CPU时间和内存使用进行限制,并且具有准确的结果评判、结果反馈功能等。

4. 运行环境:系统运行于Linux操作系统环境中,稳定可靠。网站服务基于Nginx1.8,支持高并发请求,数据库采用MySQL5.6,支持存储大量的数据。

5. 分布式评测系统:随着学生用户增长,会出现在上课期间有大量代码提交。单个评测机不能很好的应对并发代码评测。为解决这个问题,我们使用VMware vSphere EXSi虚拟化平台,将评测程序运行于多个不同的系统中,进行并发评测,大大缩短评测所需要的时间,提高评测的效率。

开发周期及代码量:

2015年8月至2016年10月。代码量估计2w行以上。



上一条:跃动·音符
下一条:智能健康监护系统

关闭

最新资讯 >>