需求整理
把整个系统拆解成两部分,⼀部分是OJ系统,另⼀部分是课程管理系统。
根据需求,OJ系统在实现普通OJ功能以外,争取要能帮助学生学习。不需要关心OJ部分的具体实现,但是可以给OJ提要求。OJ部分会提供submission list,即各个学生对各个问题的全部提交。
下⾯是第二部分(课程管理系统)的⼀些任务和说明。
用户与学生管理模块、成绩与统计模块(张志毅)
● 用户与学⽣模块:账号⽣成、发放、修改密码、个⼈资料等等
● 成绩与统计模块:对于⽼师布置的题⽬,提供成绩和统计数据(正确率、提交时间等等)
考试管理模块、超级用户与总管理模块(封雨希)
● 考试管理模块:如何组织考试,为了防止作弊采取的各种措施
● 超级用户与总管理模块:唯⼀一个超级用户,管理教师账号的发放等
课程管理模块(薛兴运)
● 教师添加课程 (course 算法导论、数据结构...) ,在课程下添加课 (lesson 第⼀课、第⼆ 课...) ,为课程添加
OJ模块(金鹏翔)
# 设计
用户与学生管理模块
注册和登陆功能
● 提供基本的注册和登录功能
○ 邮箱和用户名为必填字段;昵称选填
● 使用邮箱校验,避免重复注册和恶意注册,减轻服务器负担
○ 密码通过邮箱发送,完成校验
● 注册后提供与学号绑定功能
○ 不绑定学号不可使用课程、考试等模块
修改资料功能
● 上传头像
● 修改密码
○ 通过输入当前密码验证
● 编辑个人简介
○ 是否允许其他用户查看自己的已选课程
○ 是否允许作业DDL结束后其他人查看代码
○ 是否允许其他用户查看自己的成绩
查看他人代码
● 在每次作业和测试的DDL结束后,可以查看“已允许他人查看自己代码”的同学的代码
加入课程功能
● 选课和退课功能
成绩与统计模块
教师可用功能
- 统计全班成绩
- 平均分
- 最低分、最高分
- 各分数段人数及百分比
- 查看每名学生的提交
- 查看成绩
- 修改成绩
- 给予反馈,发回给学生
- 学生可用功能
- 查看自己的成绩
- 查看自动批改指出的错误(运行错误、编译错误等)
- 对成绩有疑问,申请老师人工批阅
- 查看“已允许他人查看自己成绩”的同学的成绩
非认证用户不可用成绩统计模块
考试管理模块
教师可创建、修改、删除考试。
一场考试应包含时间、考生、题目。
为防止作弊,应为每个考生生成考试专用随机密码;考试开始时,停用一切现有模块,使用账户+密码+附加码进入考试系统。
超级用户与总管理模块
管理教师账号的发放和删除。
课程管理模块
需求:
用户动作(教师-OJ平台)
- 添加问题
- 问题描述
- 实例测试集
- 添加实际测试集(in, out)
用户动作(教师-课程)添加课程
- 限定课程的开始时间和结束时间
- 选定学生范围
- 标准 -> 年级 ? √(99.9% ) 选课系统√(100%)
- 选定学生范围
- 为课程添加子课
- 为课程添加 介绍、附件、练习题(关联到具体OJ题目)
- 附属问题:教师组有添加OJ问题的权利
OJ模块
-
“源码检查”:
为了避免很多初学者易犯的错误,我们尝试对提交的代码先进行一遍检查,排查以下错误(包括但不限于):
- 缺少头文件
- 缺少命名空间
- 包含中文字符
● “脚手架”
进一步提供代码框架(把“作文”简化为“填句子”)(类leetcode)