在线判题系统主要面向程序设计课程教学、算法训练及编程竞赛等场景。传统代码作业依赖人工检查,效率较低,在大量用户同时提交代码时还容易出现判题服务负载过高的问题。本项目通过在线提交、自动编译运行、结果判定以及负载均衡等机制,实现程序代码的自动化评测,提高编程教学和算法训练过程中的判题效率与系统并发处理能力。
点击空白处退出提示
在线判题系统主要面向程序设计课程教学、算法训练及编程竞赛等场景。传统代码作业依赖人工检查,效率较低,在大量用户同时提交代码时还容易出现判题服务负载过高的问题。本项目通过在线提交、自动编译运行、结果判定以及负载均衡等机制,实现程序代码的自动化评测,提高编程教学和算法训练过程中的判题效率与系统并发处理能力。
项目实现了一套面向程序设计学习和算法训练的在线判题系统。用户可以通过 Web 页面浏览题目、查看题目详细信息并提交 C/C++ 等程序代码,系统自动完成代码编译、运行和结果判定,并返回通过、答案错误、运行错误等判题结果。系统后端维护题目数据和判题服务器状态,可根据服务器负载情况选择合适的判题节点执行任务,从而提高多用户并发提交时的处理能力。同时实现了题目管理、用户交互、判题结果展示以及前后端数据通信等功能。
后端使用 C++ 开发,基于 cpp-httplib 搭建 HTTP 服务,通过 JSONCPP 完成前后端 JSON 数据解析,并使用 MySQL 保存题目等业务数据。判题模块负责接收用户代码,创建临时源文件并调用编译器完成代码编译和运行,同时利用 Linux 的 rlimit 等机制限制程序运行时的 CPU、内存等资源,降低恶意或异常代码对服务器的影响。系统通过维护多台判题服务器的负载状态,在收到判题任务时选择负载较低的节点执行,实现简单的负载均衡。前端采用 Vue3、Element Plus、Pinia 和 Axios,实现题目展示、代码提交以及判题结果显示等功能。



评论