一个面向高校的在线作业管理平台,支持学生、教师、管理员三种角色。学生可以查看并提交作业;教师可以布置作业、批改提交并使用 AI 辅助评分;管理员负责班级和用户的统一管理。系统支持文档作业(含 OCR 识别)和代码作业(在线 OJ 评测),并提供重评申请流程。
- 打开浏览器,在地址栏输入作业管理系统网址,进入登录页面。
- 输入用户名及密码,点击 "登录" 按钮。(如果是新用户,点击下方的"注册"按钮,输入用户名、昵称及密码,创建一个新账号,之后返回登录界面登录即可)
- 成功登录后,进入系统首页
- 在页面上方的导航栏中找到 "班级" 选项并点击。
- 页面将展示加入的班级信息,如班级ID,班级描述,你在班中的角色(学生)等
- 在页面上方的导航栏中找到 "作业" 选项并点击。
- 页面将展示所有已布置的作业,包括作业名称、截止日期、作业要求等信息。点击具体作业名称,可查看详细作业内容与要求
- 在 "作业列表" 中找到需要提交的作业,点击右下方"查看详情"作业详情页。之后点击左下方的"创建提交"按钮,进行作业提交
- 若为文档作业,需要输入编程语言和代码,提交后会OJ会自动进行打分,老师可以进行人工打分和反馈来提交评分。创建文档提交时,最上方会有"文档识别(OCR)"按钮,可以上传图片进行OCR识别,可将识别结果复制到答案栏中方便老师批改
- 若是代码作业,需要输入答案(也可以通过附件上传),老师可以选择是否需要AI自动评分,但无论是否AI评分,老师都会手动评分
- 在页面上方的导航栏中找到 "提交" 选项并点击。
- 作业提交后,会在这个界面中出现对应的记录,记录包括提交ID,作业ID,学生名,提交时间,当前状态(未批改,已批改,等待重评,已重评),教师打分,AI打分(仅当老师选择进行AI打分才会显示分数),OJ打分(仅代码作业有这个分数)和查看操作
- 点击作业的操作查看,可以看到详细的作业信息和当时提交的答案,及教师反馈和可能有的AI反馈(如果老师点击了AI评分)。在这个界面,可以提交重新评分申请(需要提供重评理由)
- 登录系统后,在上方导航栏点击 "个人信息"。
- 可以看到自己的ID编号,用户名,姓名和角色(学生)
- 登录系统后,在上方导航栏点击 "班级"。
- 页面将展示目前已有的所有班级。
- 通过右上角的"新建班级",输入班级名称,班级信息,会创建一个新班级,并在创建后自动进入班级详情界面。创建班级的老师将自动作为班主任
- 登录系统后,在上方导航栏点击 "班级"。之后点击班级列表中的班级,即可进入班级详情界面
- 可以点击右上角的"管理成员",管理当前班级的成员
- 点击班主任栏的"更换班主任",可以通过搜索后在下拉框选择老师,来更换当前班级的班主任
- 点击教师栏的"添加教师",可以通过搜索后在下拉框选择老师,之后选择"确认邀请"(需要老师同意)来让老师加入当前班级
- 点击教师栏所展示的教师名字后的"移除",可以将教师移出该班级
- 点击学生栏的"添加学生",可以搜索后在下拉框选择学生,一次可以选择多名学生
- 可以点击右上角的"布置作业",选择文档作业或代码作业
- 选择文档作业,必须要输入作业标题,作业描述,作业截止日期等。可以选择上传参考答案用于自动AI批改(AI评分评语仅做参考,之后仍需手动评分才算完成作业批改);选择上传附件来给学生提供更多的作业材料
- 选择代码作业,必须要输入作业标题,截止日期和代码要求,并提供测试用例(输入输出)以进行代码测试。可以点击测试用例下方的"添加测试用例",上传更多的测试用例用于评测。可以选择上传附件来给学生提供更多的作业材料
- 登录系统后,在上方导航栏点击 "邀请"。
- 在这个界面,可以看到班主任和管理员发出的邀请记录。点击左上方的"查看接收的邀请"或"查看发送的邀请",可以查看对应的要求。邀请记录包含班级名称,邀请人/被邀请人,状态(待处理/已接受/已拒绝)。
- 登录系统后,在上方导航栏点击 "作业"。
- 可以看到所有班级布置的作业。作业列表中会展示改作业发布的班级,作业标题,作用描述,作业类型和截止日期。可以点击作业右下方的"查看详情"进入作业详情界面,或是点击作业右下方的"删除"来删除作业
- 登录系统后,在上方导航栏点击 "作业"。之后点击作业列表中的作业,即可进入作业详情界面
- 进入后可以看到右侧会显示作业的提交记录。提交记录左侧,有"删除作业"和"更新作业"按钮可以进行操作。在左下方有"创建提交"按钮,学生可以进行作业提交
- 登录系统后,在上方导航栏点击 "提交"。
- 可以看到所有学生的作业提交。可以通过作业ID、学生ID、班级ID、状态(未批改,待批改,等待重评,已重评)来进行筛选
- 提交列表会显示提交ID,作业ID,提交的学生、时间、状态、教师打分,AI打分和操作(操作包括查看和编辑)
- 选择查看操作,可以看到学生的答案并进行批改。其右下角有"AI评分"按钮,可以让AI提供评分和评语。如果是代码作业,会自动评分
- 登录系统后,在上方导航栏点击 "个人信息"。
- 可以看到自己的ID编号,用户名,姓名和角色(教师)
- 登录系统后,在上方导航栏点击 "班级"。
- 页面将展示目前已有的所有班级。
- 通过右上角的"新建班级",输入班级名称,班级信息和班主任ID,会创建一个新班级,并在创建后自动进入班级详情界面
- 登录系统后,在上方导航栏点击 "班级"。之后点击班级列表中的班级,即可进入班级详情界面
- 可以点击右上角的"管理成员",管理当前班级的成员
- 点击班主任栏的"更换班主任",可以通过搜索后在下拉框选择老师,来更换当前班级的班主任
- 点击教师栏的"添加教师",可以通过搜索后在下拉框选择老师,之后可以选择"强制添加"(不需要老师同意)或是"确认邀请"(需要老师同意)来让老师加入当前班级
- 点击教师栏所展示的教师名字后的"移除",可以将教师移出该班级
- 点击学生栏的"添加学生",可以搜索后在下拉框选择学生,一次可以选择多名学生
- 可以点击右上角的"布置作业",选择文档作业或代码作业
- 选择文档作业,必须要输入作业标题,作业描述,作业截止日期等。可以选择上传参考答案用于自动AI批改(AI评分评语仅做参考,之后仍需手动评分才算完成作业批改);选择上传附件来给学生提供更多的作业材料
- 选择代码作业,必须要输入作业标题,截止日期和代码要求,并提供测试用例(输入输出)以进行代码测试。可以点击测试用例下方的"添加测试用例",上传更多的测试用例用于评测。可以选择上传附件来给学生提供更多的作业材料
- 登录系统后,在上方导航栏点击 "邀请"。
- 在这个界面,可以看到班主任和管理员发出的邀请记录。点击左上方的"查看接收的邀请"或"查看发送的邀请",可以查看对应的要求。邀请记录包含班级名称,邀请人/被邀请人,状态(待处理/已接受/已拒绝)。
- 登录系统后,在上方导航栏点击 "作业"。
- 可以看到所有班级布置的作业。作业列表中会展示改作业发布的班级,作业标题,作用描述,作业类型和截止日期。可以点击作业右下方的"查看详情"进入作业详情界面,或是点击作业右下方的"删除"来删除作业
- 登录系统后,在上方导航栏点击 "作业"。之后点击作业列表中的作业,即可进入作业详情界面
- 进入后可以看到右侧会显示作业的提交记录。提交记录左侧,有"删除作业"和"更新作业"按钮可以进行操作。在左下方有"创建提交"按钮,学生可以进行作业提交
- 登录系统后,在上方导航栏点击 "提交"。
- 可以看到所有学生的作业提交。可以通过作业ID、学生ID、班级ID、状态(未批改,待批改,等待重评,已重评)来进行筛选
- 提交列表会显示提交ID,作业ID,提交的学生、时间、状态、教师打分,AI打分和操作(操作包括查看和编辑)
- 选择查看操作,可以看到学生的答案并进行批改。其右下角有"AI评分"按钮,可以让AI提供评分和评语。如果是代码作业,会自动评分
- 登录系统后,在上方导航栏点击 "个人信息"。
- 可以看到自己的ID编号,用户名,姓名和角色(管理员)
- 点击上方导航栏 "用户管理" 选项。
- 可以看到当前已有的所有用户。可以点击用户后的权限更改,更改用户的权限(权限分为学生、教师、管理员)
| 组件 | 版本 |
|---|---|
| 数据库 | mysql-8.0.41-winx64 |
| JDK | 17.0.8 |
| SpringBoot | 3.4.4 |
请确保你启动了 mysql 数据库,并且有一个可供 springboot 后端连接的账户,以及有一个可供这个账户执行任意操作的数据库。
CREATE DATABASE grading_system;
CREATE USER 'grading_system'@'localhost' IDENTIFIED BY 'grading_sys_2025';
GRANT ALL PRIVILEGES ON grading_system.* TO 'grading_system'@'localhost';
FLUSH PRIVILEGES;建表语句在 grading-system/database/setup.sql 中,在数据库中运行这个文件即可建表。
mysql -u root -p grading_system < /path/to/script.sql默认提供 application-example.yml 。你可以把它复制成 application-local.yml 并更改其中的参数,如端口、数据库链接、数据库账户信息等。程序会读取 application-local.yml 中的配置运行。
用户上传的各种附件储存在 uploads 文件夹中。
-
为方便测试,
TokenFilter的拦截功能暂时关闭,可以取消注释//@WebFilter(urlPatterns="/*")开启,即:@Slf4j @WebFilter(urlPatterns="/*") //开启过滤器拦截 public class TokenFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; //...... } }
mvn install -DskipTests
mvn spring-boot:run本项目使用 Judge0 作为代码评测服务器。详细的部署信息可以阅读官方部署指南。
你需要在后端的环境变量中填写你部署的 Judge0 的 ip 和端口。
与后端类似,前端同样分别配置了本地环境与默认环境。你可以复制 .env 到 .env.local 并修改其中配置,程序会优先加载 .env.local 中的环境配置。
npm install
npm run dev./build.sh执行以下命令运行测试并生成覆盖率报告:
mvn clean test jacoco:report生成的覆盖率报告位于 grading-system/target/site/jacoco/index.html。
