Skip to content
This repository has been archived by the owner on Mar 15, 2023. It is now read-only.

liuzihaohao/myoj

Repository files navigation

MyOj 网站

项目简介

OJ(Online Judge) 在线判题系统 是一种在编程竞赛中用来测试参赛程序的在线系统,主要使用于日常练习

必须实现的功能:

  1. 能够编译并执行代码

  2. 使用预设的数据对这些程序进行测试

  3. 提交的代码在受限的环境下运行

  4. 需要捕获程序输出,与标准答案进行比较后返回结果

  5. 通过判断不同的结果,给用户反馈

本项目是为了校内自建OJ所编写的,可以实现以下几个功能

  1. 用户鉴权(包括:登录、注册、鉴权、修改个人信息、修改密码、找回密码)

  2. 题目及测试数据存储(包括:题目题面存储、题目标签分类、测试数据组)

  3. 评测机(包括:评测机api、编译代码、执行程序、沙盒限制、实时的内存时间监控、对结果与标准答案的比对)

  4. 管理面板(包括:对各个题目、测试数据、评测记录等的增删改查)

  5. 附加功能(包括:整洁的题面打印功能、扩展性极高的评测机、方便快捷的部署、分布式的评测机设计)

项目环境

  1. Python 3.8

  2. Django 3.2

  3. django-mdeditor 0.1.20

  4. requests 2.26.0

  5. psutil 5.9.0

项目部署-高级

项目部署-网站

  1. 解压源代码压缩包

  2. 进入 myoj 文件夹,打开命令提示符

  3. 执行pip install -r requirements.txt 以安装依赖

  4. 执行python manage.py runserver 以运行网站

  5. 初始超级用户为admin密码:123456

项目部署-评测机

  1. 进入judger_machine目录

  2. 执行pip install -r requirements.txt 以安装依赖

  3. 打开judgertap.py 文件第4行更换成自己的网站地址

  4. 执行python judgertap.py以运行评测机

注:评测机可以在不同的机器上运行多台,以快速处理评测任务

初始超级用户为admin密码:123456