Skip to content

XDOJ is an online-judge backend based on Python Django

License

Notifications You must be signed in to change notification settings

AntXinyuan/XDOJ

Repository files navigation

XDOJ 在线编程评测系统

Python Django Lorun license

XDOJ 是一个基于 Python Django 开发的 Web 网站项目(后端部分),用于编程训练评测(Online Judge),提供了公告通知、常规练习、比赛排名、数据统计等实用功能。

本项目是对 QDUOJ 的一个模仿精简,沙箱评测功能基于 Lorun 开发。

系统流程

系统的核心功能为评测用户提交的解题代码并将对应状态返回给用户,因此整个流程将围绕这一功能展开。具体地,系统流程分Web部分评测部分,前者负责对接用户的各类操作,后者负责安全、高效的评测用户代码,整个流程如图所示。

模块设计

项目包含题目(problem)、提交(submission)、比赛(contest)、账户(account)、公告(announcement)、关于(about) 6个模块,针对管理员与普通用户共涉及 28 项功能操作。模块设计如图所示,操作详情见 Postman-api 文档

安装运行

  • 系统所需的各项依赖记录于 requirements.txt,使用者可自行安装。

    pip install -r requirements.txt
  • 为便于使用者安装,我们提供了一键初始化脚本 init.sh。

    ./init.sh
  • 当需要运行服务时,可以使用如下命令:

    python manage.py runserver

引用

如果你觉得这个项目对你的研究有帮助的话,请考虑引用:

@misc{xdoj,
    title={XDOJ在线编程评测系统},
    author={XDOJ Contributors},
    howpublished = {\url{https://github.com/AntXinyuan/XDOJ}},
    year={2020}
}