前言

本文将介绍一个基于 Springboot + Vue.js + Mybatis + MySQL + RestfulAPI + Docker 的简单作业管理系统。

Git 仓库地址:HomeworkManagementFinal

开源许可证采用 Apache-2.0

这个系统在之前的作业管理系统 HomeworkManagement 的基础上完全重构,并添加了新的功能与科技


快速上手

使用 docker 快速部署

如果你已经正确安装 docker,可以通过下列命令快速部署:

1
2
docker pull registry.cn-beijing.aliyuncs.com/springwinter/17301122-homeworkmanagement:1.0
docker run -dit --name=test -p 8081:8081 registry.cn-beijing.aliyuncs.com/springwinter/17301122-homeworkmanagement:1.0

项目启动后访问 http://localhost:8081/ 即可。

自行编译和构建

如果选择自行编译和构建,请使用 git clone 并使用 Maven 进行构建,或者使用提供的 Jar包。

前端请使用 npm 构建,构建结束后将输出放置在 /src/main/resources/static 目录下。

数据库部分使用 hwm.sql 进行导入,并在 /src/main/resources/application.yml 处修改相关配置。


系统与架构

前端

前端代码位于 client 目录。

前端使用 Vue.js 进行编写,使用 POST 方法与后端 RestfulAPI进行交互。

部分组件使用了 element组件库,提高开发效率。

构建部分请参考对应目录下的 README.md

数据库

数据库部分使用了 MySQL 数据库,数据库转储文件请见 hwm.sql

数据库一共包含了四张表格:

后端

后端使用 Springboot进行开发,使用 Maven管理依赖和进行构建。

数据库连接部分使用了 Mybatis 进行连接,使用注解编写 SQL 语句。

Controller部分遵循 RestfulAPI风格,所有接口均使用 Json进行数据交互。

由于这里系统包含了登录功能,这里使用 token进行实现。进行登录后,前端会将后端返回的 token 记录在 cookie 中,在之后的任何对后端的接口的访问都会需要前端提供 token进行身份验证,验证失败则请求无效。进行登出的时候会清除 token,每一次登录请求都会重新生成 token

接口文档如下:

/user 用户控制器

/login 登录

请求:

param value 备注
id Int 学号或者工号
password String 密码
teacher Boolean 是否是老师

返回:

param value 备注
state Int 状态码
id String 学号或者工号
teacher Boolean 是否是老师
message String 返回消息
token String 登录状态Token

/logout 登出

请求:

param value 备注
id Int 学号或者工号
password String 密码
teacher Boolean 是否是老师

返回:

param value 备注
state Int 状态码
id String 学号或者工号
teacher Boolean 是否是老师
message String 返回消息
token String 登录状态Token

/register 注册

请求:

param value 备注
id Int 学号或者工号
name String 姓名
password String 密码
teacher Boolean 是否是老师

返回:

param value 备注
state Int 状态码
message String 返回消息

/student 学生控制器

/homework_list 获取作业列表

请求:

param value 备注
id Int 学号
token String 登录状态Token

返回:

param value 备注
state Int 状态码
message String 返回消息
list String 作业列表

list 中元素格式如下:

param value 备注
homeworkId Int 作业ID
teacherName String 发布老师的名字
title String 作业标题
type Int 作业类型:1为未提交,2为未批阅,3为已批阅

/homework_info 获取作业详情

请求:

param value 备注
id Int 学号
homeworkId String 作业ID
token String 登录状态Token

返回:

param value 备注
state Int 状态码
message String 返回消息
homeworkId Int 作业ID
homeworkTitle String 作业标题
homeworkContent String 作业内容
type Int 作业类型:1为未提交,2为未批阅,3为已批阅
submitTitle String 提交的作业的标题
submitContent String 提交的作业的内容
score Int 批阅分数
comment String 批阅评语

/submit 提交作业

请求:

param value 备注
id Int 学号
homeworkId String 作业ID
title String 作业标题
content String 作业内容
token String 登录状态Token

返回:

param value 备注
state Int 状态码
message String 返回消息

/teacher 老师控制器

/homework_list 获取作业列表

请求:

param value 备注
id Int 工号
token String 登录状态Token

返回:

param value 备注
state Int 状态码
message String 返回消息
list String 作业列表

list 中元素格式如下:

param value 备注
homeworkId Int 作业ID
title String 作业标题
submitCount Int 已经提交的个数

/submit_list 获取指定作业的已提交列表

请求:

param value 备注
id Int 工号
homeworkId String 作业ID
token String 登录状态Token

返回:

param value 备注
state Int 状态码
message String 返回消息
list String 提交列表

list 中元素格式如下:

param value 备注
submitId Int 提交ID
studentId Int 学号
studentName String 学生姓名
type Int 作业类型:2为未批阅,3为已批阅

/submit_info 获取提交详情

请求:

param value 备注
id Int 工号
submitId String 提交ID
token String 登录状态Token

返回:

param value 备注
state Int 状态码
message String 返回消息
submitId Int 提交ID
studentId Int 学号
type Int 作业类型:2为未批阅,3为已批阅
submitTitle String 提交的作业的标题
submitContent String 提交的作业的内容
score Int 批阅分数
comment String 批阅评语

/review 批阅作业

请求:

param value 备注
id Int 工号
submitId String 提交ID
score Int 批阅分数
comment String 批阅评语
token String 登录状态Token

返回:

param value 备注
state Int 状态码
message String 返回消息

/add_homework 发布作业

请求:

param value 备注
id Int 工号
title String 作业标题
content String 作业内容
token String 登录状态Token

返回:

param value 备注
state Int 状态码
message String 返回消息

功能特点

这个项目是为学生和教师设计的简易的作业的提交和管理平台。

对于教师,有以下功能:

  • 注册账户
  • 登录账户
  • 登出账户
  • 发布作业
  • 查看已发布的作业列表和详情
  • 查看提交的作业内容列表和详情
  • 对提交的作业进行批阅,包括评分和评语

对于学生,有以下功能:

  • 注册账户
  • 登录账户
  • 登出账户
  • 查看已发布的作业列表和详情
  • 提交作业,对已经提交但未批阅的作业可以进行修改
  • 查看作业的状态
  • 查看作业的评分和评语

系统演示

登录与注册

启动后首先进入首页,你可以进行输入信息并选择角色进行登录。

点击注册按钮可以跳转到注册页面。

老师相关

老师登录后将进入老师的主页。

这里会显示此老师所有发布的作业和提交的数量。点击相应的按钮即可查看提交详情并进行批阅。

进入后将展示这个作业的所有提交,并显示当前状态,点击批阅按钮即可进行批阅。

已经批阅的作业将显示批阅结构,也可以进行多次批阅。

顶部导航栏可以进行发布作业和登出,右边显示当前老师的工号。

点击发布作业将会跳转到作业发布页面,在这里输入作业标题和内容即可发布作业,发布后将跳转到主页。

点击登出按钮将进行询问,询问是否登出,确认后登出,并跳转到登录页面。

学生相关

使用学生帐号进行登录后将跳转到学生主页。

这里展示了所有老师发布的作业和状态。

对于未提交的作业,可以点击相应按钮查看详情并进行提交。

对于已经提交的作业,如果老师还没有进行批阅,可以对提交的作业进行更新。

对于已经批阅的作业,无法进行修改,但是可以查看老师的评分和评语。