Python在线编程评测系统产品系统

我要开发同款
微信用户20070139772026年07月16日
16阅读

技术信息

语言技术
PythonCSSJavaScript
系统类型
Web
行业分类
教育校园人工智能

作品详情

行业场景

高校Python程序设计课程中,教师布置编程作业后手工批改效率极低,一个班四五十人每份代码逐行检查,耗时数小时。学生提交后无法获得即时反馈,不知道自己代码是否正确。本系统实现编程作业的在线提交和自动评分,学生提交后秒级出分,教师可查看每位学生的提交记录和成绩统计,极大提升教学效率。

功能介绍

1. 双角色权限:教师和学生两种角色,教师管理题库和班级,学生在线上交代码
2. 题库管理:支持Markdown格式题目描述、输入输出格式说明、示例数据,可按难度和标签筛选题目
3. 测试用例管理:每道题可配置多个测试用例,支持公开用例和隐藏用例,可设置每条用例的分值权重
4. 自动评测引擎:在安全沙箱中执行学生提交的代码,逐个测试用例比对输出结果,自动计算得分和五级制等级
5. 班级管理:教师创建班级并生成邀请码,学生通过邀请码加入,可按班级布置作业和考试
6. 考试模式:支持限时考试、课后作业、自由练习三种模式,可设置最大提交次数防止刷分
7. 教师评语:教师可对每次提交手动写评语,系统也会根据得分自动生成评语
8. 提交历史:查看每次提交的执行时间、内存占用、通过用例数,支持代码对比

项目实现

独立完成全部开发和部署上线。后端用Python Flask框架,ORM使用SQLAlchemy支持SQLite和PostgreSQL切换,用户认证基于Flask-Login实现双角色权限控制,表单使用Flask-WTF防止CSRF攻击。架构上采用应用工厂模式,按功能拆分为auth、problems、submissions、classes、admin五个蓝图。核心评测引擎通过subprocess在隔离进程中执行学生代码,限制CPU时间和内存上限,通过正则匹配拦截os、sys、subprocess等危险模块防止恶意代码执行。临时文件使用UUID命名并自动清理,避免高并发下的文件冲突。前端使用Bootstrap布局,支持响应式适配手机端。生产环境通过Gunicorn部署,数据库使用PostgreSQL。项目难点在于评测安全沙箱的设计,既要限制权限又要准确评测代码正确性。

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论