返回资源中心

NOJ Online Judge

优秀网站
在线判题
1 次浏览
0 个赞
OJ在线判题Laravel编程

资源描述

NOJ Online Judge 是南京邮电大学开源的在线判题(OJ)平台,基于 Laravel 框架构建,支持算法题训练、编程竞赛练习与课程作业评测。适用于高校计算机专业师生、ACM/ICPC 备赛者及自学编程者,提供题目管理、实时评测、多语言编译(C/C++/Java/Python等)、提交记录与排名统计等功能,具备良好可扩展性与二次开发友好性。

详细内容

## 网站概述 NOJ Online Judge(Nanjing University of Posts and Telecommunications Online Judge)是南京邮电大学师生自主开发并开源的在线判题平台,旨在为编程教学、算法训练与程序设计竞赛提供稳定、高效、可定制的评测环境。项目采用 Laravel 作为后端框架,结合 Docker 容器化部署方案,兼顾开发效率与生产可用性;前端使用 Vue.js 实现响应式交互,支持现代浏览器。平台遵循 MIT 开源协议,代码托管于 GitHub(https://github.com/njuptaaa/noj),文档完整、结构清晰,已在国内多所高校用于数据结构、算法分析、程序设计等课程实践环节。其设计注重教育场景适配——如支持教师创建私有题库、设置限时测验、导出学生成绩报表,并内置防作弊基础机制(如代码相似度检测插件预留接口)。相较于通用型 OJ(如洛谷、Codeforces),NOJ 更强调本地化部署灵活性与教学管理集成能力,是高校搭建自有编程实训平台的理想技术选型。 ## 核心功能与特色 - **多语言实时评测**:支持 C、C++、Java、Python2/3、Go、Rust 等主流编程语言,通过沙箱隔离执行环境,保障系统安全与评测公平性。 - **题目全生命周期管理**:提供图形化题目录入界面,支持 Markdown 编写题面、LaTeX 公式渲染、图片/附件上传、测试用例批量导入(JSON/CSV 格式)及自定义评测点权重配置。 - **智能评测与反馈**:除 AC/WA/TLE/RE 等标准判题结果外,支持输出编译错误详情、运行时内存/时间消耗曲线图,并可配置“部分分”评分模式,契合教学过程性评价需求。 - **教学协同工具**:内置班级管理、学生账号绑定、作业发布与自动截止提醒;教师可一键发布题目集、设置可见范围(公开/指定班级/私有),并查看学生提交轨迹与知识点掌握热力图。 - **高可扩展架构**:模块化设计便于功能拓展(如接入 LTI 协议对接 Moodle/Canvas、集成 GitLab CI 自动化测试、对接学校统一身份认证系统);提供完整的 RESTful API 文档,支持第三方工具集成。 ## 适用人群与使用场景 - **高校教师**:用于《程序设计基础》《算法设计与分析》等课程的实验作业布置、自动批改与学习数据分析;可快速搭建校内专属 OJ,避免依赖外部平台的数据隐私风险。 - **ACM/ICPC 及蓝桥杯参赛学生**:通过模拟赛、专题训练模块进行高强度刷题与团队协作训练;利用排行榜与历史提交对比功能复盘薄弱环节。 - **编程初学者与自学者**:借助结构化题库(含入门、字符串、动态规划等标签体系)和详尽题解社区(需自行部署配套论坛或启用内置评论区),实现渐进式能力提升。 - **开源贡献者与运维人员**:Laravel 技术栈成熟、文档完备,适合 PHP/DevOps 工程师参与二次开发、性能调优或容器集群部署实践。 ## 使用建议或入门步骤 1. **快速体验**:访问官方文档站点(https://njuptaaa.github.io/docs)阅读《Quick Start》指南,了解本地 Docker 一键部署流程(需预装 Docker Desktop 和 docker-compose)。 2. **初始化配置**:首次启动后访问 `/install` 进行向导式安装,配置数据库连接、管理员账号及基础站点信息;建议启用 HTTPS(通过反向代理如 Nginx 配置 Let's Encrypt 证书)。 3. **题库建设**:登录后台管理面板(默认路径 `/admin`),优先导入 NOJ 社区共享的基础题库(GitHub 仓库 `noj-problems` 中提供),再根据教学大纲补充校本题目。 4. **教学应用**:创建班级 → 分配学生账号 → 发布「循环结构专项练习」等主题题目集 → 设置截止时间 → 启用自动成绩汇总 → 导出 Excel 报表用于课堂讲评。 5. **持续维护**:定期更新核心镜像(关注 GitHub Release)、备份 MySQL 数据库与上传题目的 `storage/app/problems` 目录;建议启用日志监控(Laravel Horizon + Prometheus)预防评测队列积压。