用户需求
学生系统
- 登录注册界面
- 导航栏:课程,练习,考试,个人
- 首页:可查看课程卡片,包括课程名称,授课教师,最近的ddl(未选课不可看到该课程)
- 课程页面:可查看题目列表
- 题目列表点开可查看题目具体信息
- Status界面(可以看到所有人的信息)
- 考试界面:题目卡片
- 用户资料界面(个人信息、修改密码)
试题管理系统
- 查看课程信息
- 题目的增加、编辑、删除
- 题目设置:名称,问题,起止时间,样例输入输出,testcase,时间、空* 间限制,语言限制,提示,分数,上传附件,题目类型
- 可组织考试
- 可视化查看作业或考试的答题结果(提交时间,运行时间,提交次数,AC比例)
- 可导出成绩
人员管理系统
- 创建课程
- 批量添加用户
- 权限管理(学生,老师,助教及教务)
思维导图
调研选型
参考项目
- 青岛大学OJ(GitHub项目,详细代码,文档)
- 清华OJ(设计组件,完善功能)
- 南开OJ(设计风格)
技术选型
- 前端:采用Vue.js框架进行UI开发, 利用Axios进行HTTP服务请求
- 后端:采用Django作为HTTP后端服务框架, 利用rest-framework进行API实现. 采用PostgreSQL关系型数据库存储用户等数据信息, 采用redis存储向判题端发送判题请求的队列
- 判题:采用Linux系统调用, 利用seccomp控制题目运行时间和内存, 同时封装为HTTP服务器, 便于后端进行信息交互
- 部署:采用docker进行统一部署, 便于扩展和移植