简介
原始数据:书目信息、章节信息、题目信息、系统菜单、系统角色、系统用户。
主要任务:系统主要采用spring boot作为后端框架,前端使用vue+elementUI,为408刷题小程序提供一个方面的管理和维护的任务,主要功能包括,对题目、章节、书目的添加、修改、删除、查询、启用等操作;对用户每日以及近七日内的数据进行可视化展示,方便进行分析等操作。
安全性:系统采用权限分级管理,根据不同的用户分配不同的权限,springsecurity框架采用了bycrpt加密方式,这是一种单向的hash加密方式,不可以反向生成明文,理论上不可破解。用户的密码采用这种加密方式,数据库存储的是加密后的密文。此外系统还设有接口级别的权限验证,访问接口必须携带token验证,验证完后还要验证该用户是否拥有访问接口的权限。Token每次的使用时限也仅有两个小时,更加进一步的保护了系统安全。
技术要求
数据库:MySQL数据库 ,redis数据库
前端方面:Vue 、ElementUI
后端方面:Springboot、mybatis、spring security、redis
名称定义
元素名 | 描述 | 定义 |
系统用户 | 系统的使用者 | 用户=ID号+用户名+密码+头像+邮箱+城市+创建时间+修改时间+最后一次登录+状态 |
系统角色 | 对该系统有不同操作权限的用户称为角色 | 角色=ID号+角色名+识别码+备注+创建时间+更新时间+状态 |
系统菜单 | 系统内功能 | 菜单=ID号+父菜单ID号+菜单名+菜单路由+权限码+组件+类型+图标+序列号+创建时间+更新时间+状态 |
书目 | 系统管理的一级对象 | 书目=ID号+名称+题目数量+激活状态+创建时间+修改时间 |
章节 | 系统管理的二级对象 | 章节=ID号+名称+所属书目ID号+题目数量+激活状态+创建时间+修改时间 |
题目 | 系统管理的三级对象 | 题目=ID号+所属书目ID号+所属章节ID号+选项+答案+分析+来源+是否属于强化题目+创建时间+修改时间 |
系统流程图
系统登录流程图
系统操作流程图
数据库表设计
系统菜单表
字段名称 | 数据类型 | 字段长度 | 主键 | 说明 |
id | bigint | 20 | 是 | ID值 |
parent_id | bigint | 20 | 否 | 父节点ID值 |
name | varchar | 64 | 否 | 名字 |
path | varchar | 255 | 否 | 路径 |
perms | varchar | 255 | 否 | 权限码 |
component | varchar | 255 | 否 | 组件 |
type | int | 5 | 否 | 类型 |
icon | varchar | 32 | 否 | 图标 |
orderNum | int | 11 | 否 | 排序 |
created | datetime | 0 | 否 | 创建时间 |
updated | datetime | 0 | 否 | 修改时间 |
statu | int | 5 | 否 | 状态 |
系统角色表
字段名称 | 数据类型 | 字段长度 | 主键 | 说明 |
id | bigint | 20 | 是 | ID值 |
name | varchar | 64 | 否 | 姓名 |
code | varchar | 64 | 否 | 唯一编码 |
remark | varchar | 64 | 否 | 备注 |
created | datetime | 0 | 否 | 创建时间 |
updated | datetime | 0 | 否 | 更新时间 |
statu | int | 5 | 否 | 状态 |
角色菜单表
字段名称 | 数据类型 | 字段长度 | 主键 | 说明 |
id | bigint | 20 | 是 | ID值 |
RoleId | bigint | 20 | 否 | 角色ID值 |
MenuId | bigint | 20 | 否 | 菜单ID值 |
系统用户表
字段名称 | 数据类型 | 字段长度 | 主键 | 说明 |
id | bigint | 20 | 是 | ID值 |
username | varchar | 64 | 否 | 用户名 |
password | varchar | 64 | 否 | 密码 |
avatar | varchar | 255 | 否 | 头像 |
| varchar | 64 | 否 | 邮箱 |
city | varchar | 64 | 否 | 城市 |
created | datetime | 0 | 否 | 创建时间 |
updated | datetime | 0 | 否 | 修改时间 |
lastlogin | datetime | 0 | 否 | 上一次登录 |
statu | int | 5 | 否 | 状态 |
用户角色表
字段名称 | 数据类型 | 字段长度 | 主键 | 说明 |
id | bigint | 20 | 是 | ID值 |
user_id | bigint | 20 | 否 | 用户ID值 |
role_id | bigint | 20 | 否 | 角色ID值 |
书目表
字段名称 | 数据类型 | 字段长度 | 主键 | 说明 |
id | char | 50 | 是 | 序号 |
name | varchar | 50 | 否 | 书名 |
quantity | int | 50 | 否 | 题目数量 |
create_time | datetime | 0 | 否 | 创建时间 |
modified_time | datetime | 0 | 否 | 修改时间 |
章节表
字段名称 | 数据类型 | 字段长度 | 主键 | 说明 |
id | char | 50 | 是 | 序号 |
name | varchar | 50 | 否 | 章节名 |
book_id | char | 50 | 否 | 对应书的序号 |
quantity | int | 50 | 否 | 题目数量 |
create_time | datetime | 0 | 否 | 创建时间 |
modified_time | datetime | 0 | 否 | 修改时间 |
题目表
字段名称 | 数据类型 | 字段长度 | 主键 | 说明 |
id | Int | 50 | 是 | 序号 |
question | text | 80 | 否 | 题目信息 |
book_id | tinyint | 4 | 否 | 对应书的序号 |
create_time | datetime | 0 | 否 | 创建时间 |
modified_time | datetime | 0 | 否 | 修改时间 |
chapter_id | tinyint | 4 | 否 | 对应章节序号 |
option_A | text | 80 | 否 | A选项 |
option_B | text | 80 | 否 | B选项 |
option_C | text | 80 | 否 | C选项 |
option_D | text | 80 | 否 | D选项 |
answer | int | 20 | 否 | 答案 |
analysis | text | 80 | 否 | 解析 |
origin | varchar | 100 | 否 | 来源 |
reinforce | tinyint | 4 | 否 | 是否为真题 |
系统功能模块图
系统功能模块图
系统详细设计
登录验证模块
模块描述:用户登录系统进行验证,对用户输入的信息进行核检
主要功能:验证身份为合法用户
输入项:用户名 + 密码 + 验证码
输出项:
成功:登录成功
失败:验证码错误 / 用户名密码错误
算法描述:
使用spring security框架,对用户输入的信息就行核验,首先验证验证码是否正确,验证码正确后验证输入的用户信息是否合法,如果合法则登录成功并根据身份信息生成Token返回给前端,并写入redis,否则返回登录失败。
身份认证模块
模块描述:用户登录成功后,用户访问接口前会对该用户的角色所具有的权限进行认证,如果该用户拥有该权限这允许访问,否则返回权限不足。
主要功能:检验用户是否有权访问该接口
输出项:访问成功/权限不足
算法描述:
spring security框架将从缓存中获取该用户的身份信息对应的权限列表,如果缓存中没有则调用dao层函数查询该用户身份可以访问的权限,然后判断该用户当前访问的接口是否有权访问,如果有权访问则允许访问,否则将转到权限不足的拦截器中,将结果返回前端。
系统菜单管理模块
模块描述:管理菜单即权限
主要功能:添加、删除、修改、查找菜单
(1)添加菜单
输入项:父菜单+菜单名+菜单路由+权限码+组件+类型+图标+序列号+创建时间+更新时间+状态
输出项:添加成功/添加失败
算法描述:
调用controller层添加菜单接口,将用户输入信息进行封装后,调用service进而调用dao层,将数据写入到数据库,完成添加。
(2)删除菜单
输出项:删除成功/删除失败
算法描述:
调用controller层删除菜单接口,获取当前所要删除菜单的id值,调用service进而调用dao层,将数据在数据库中删除。
(3)修改菜单
输入项:修改的字段
输出项:修改成功/修改失败
算法描述:
获取当前行的id值,将修改后的数据封装成实体类后,调用controller层更新菜单接口,调用service进而调用dao层,将该条数据在数据库中更新。
(4)查找菜单
输出项:菜单的全部查询结果
算法描述:
点击菜单管理后,系统直接调用菜单全部查询的接口,调用service进而调用dao层,将全部查询的结构封装后返回给前端。
系统用户管理模块
模块描述:用户的增加,修改,删除,查找,以及用户角色的分配。
主要功能:添加、删除、修改、查找用户,为用户分配角色
(1)添加用户
输入项:用户名+密码+头像+邮箱+城市+状态
输出项:添加成功/添加失败
算法描述:
调用controller层添加用户接口,将用户输入信息进行封装后,调用service进而调用dao层,将数据写入到数据库,完成添加。
(2)删除用户
输出项:删除成功/删除失败
算法描述:
调用controller层删除学生接口,将前端传过来的ID号传入函数,调用service进而调用dao层,将该ID号对应的用户进行删除。
(3)修改用户
输入项:修改的字段
输出项:删除成功/删除失败
算法描述:
将修改的字段封装后,调用controller层修改用户信息的接口,将封装后的实体类传入,调用service层进而调用dao层,根据id值对数据库进行操作,将该id值对应的数据进行修改,并返回前端结果。
(4)查找用户
输入项:用户姓名
输出项:返回查找后的数据
算法描述:
将用户输入的用户姓名传入controller层,调用根据用户姓名查询用户的接口,将姓名传入函数,调用service层进而调用dao层,对数据库操作后,将结果返回。
(5)为用户分配角色
输入项:选择用户勾选的角色
输出项:操作成功/未作出有效操作
算法描述:
调用controller层函数将角色列表展示给前端,同时保存当前勾选的角色id,将用户的id和保存的角色id进行封装传入controller层,调用调用DAO层函数,查询该用户id之前所具有的角色,将两个角色列表进行对比,如果结果大于零则说明增加了角色,调用增加角色的函数,为该用户添加角色,返回操作成功,如果结果小于零,则说明该用户减少了角色,调用删除用户角色的函数,删除用户角色,返回操作成功,否则返回未作出有效操作,最后将结果返回前端。
(6)重置密码
输出项:重置成功
算法描述:
获取该用户的id,调用controller层重置密码函数,将系统内置密码进行加密后,和id值一起封装传入service层进而调用dao层对数据库中当前id的password进行修改,将修改后的结果返回前端。
系统角色管理模块
模块描述:用户的增加,修改,删除,查找,以及用户角色的分配。
主要功能:添加、删除、修改、查找用户,为用户分配角色
(1)添加角色
输入项:角色名+识别码+备注+状态
输出项:添加成功/添加失败
算法描述:
调用controller层添加角色接口,将用户输入信息进行封装后,调用service进而调用dao层,将数据写入到数据库,完成添加。
(2)删除角色
输出项:删除成功/删除失败
算法描述:
调用controller层删除角色接口,将前端传过来的ID号传入函数,调用service进而调用dao层,将该ID号对应的角色进行删除。
(3)修改角色
输入项:修改的字段
输出项:删除成功/删除失败
算法描述:
将修改的字段封装后,调用controller层修改角色信息的接口,将封装后的实体类传入,调用service层进而调用dao层,根据id值对数据库进行操作,将该id值对应的数据进行修改,并返回前端结果。
(4)查找角色
输入项:角色名
输出项:返回查找后的数据
算法描述:
将用户输入的角色名传入controller层,调用根据角色名查询角色的接口,将角色名传入函数,调用service层进而调用dao层,对数据库进行查找操作后,将结果返回。
(5)为角色分配权限
输出项:操作成功/未作出有效操作
算法描述:
调用controller层函数将菜单列表展示给前端,同时保存当前勾选的菜单id,将角色的id和保存的菜单id进行封装传入controller层,调用调用DAO层函数,查询该角色id之前所具有的菜单,再调用函数查询该角色之前有权限的菜单,将两个菜单列表进行对比,如果结果大于零则说明增加了菜单,调用给当前角色增加菜单的函数,为该用户添加菜单,返回操作成功,如果结果小于零,则说明该用户减少了菜单,调用删除角色菜单的函数,删除角色菜单,返回操作成功,否则返回未作出有效操作,最后将结果返回前端。
书目管理模块
模块描述:系统一级管理对象
主要功能:添加、删除、修改、查找、是否在小程序端进行启用书目等其他操作
(1)添加书目
输入项:书目名称
输出项:添加成功/添加失败
算法描述:
调用controller层添加书目接口,将输入信息和默认字段值进行封装后,调用service进而调用dao层,将数据写入到数据库,完成添加。
(2)删除/批量删除书目
输出项:删除成功/删除失败
算法描述:
调用controller层删除书目接口/批量删除接口,将前端传过来的ID号/ID数组传入函数,调用service进而调用dao层,将该ID号/ID数组对应的书目进行删除。
(3)修改书目
输入项:修改的字段
输出项:修改成功/修改失败
算法描述:
将修改的字段封装后,调用controller层修改书目信息的接口,将封装后的实体类传入,调用service层进而调用dao层,根据id值对数据库进行操作,将该id值对应的数据进行修改,并返回前端结果。
(4)查找书目
输入项:书目名称字段
输出项:返回查找后的数据
算法描述:
将用户输入的书目名称传入controller层,调用模糊查询书目的接口,将书目名称名传入函数,调用service层进而调用dao层,对数据库进行查找操作后,将结果返回。
(5)启用/取消启用书目
输入项:书目启用字段、章节ID字段
输出项:启用成功/取消启用成功/失败
算法描述:
将用户输入的启用字段传入controller层,调用controller层修改书目信息的接口,将封装后的实体类传入,调用service层进而调用dao层,根据id值对数据库进行操作,将该id值对应的数据进行修改,并返回前端结果。
章节管理模块
模块描述:系统二级管理对象
主要功能:添加、删除、修改、查找、是否在小程序端进行启用该章节等其他操作
(1)添加章节
输入项:章节名称、章节所属书目ID字段
输出项:添加成功/添加失败
算法描述:
调用controller层添加章节接口,将输入信息和默认字段值进行封装后,调用service进而调用dao层,将数据写入到数据库,完成添加。
(2)删除/批量删除章节
输出项:删除成功/删除失败
算法描述:
调用controller层删除章节接口/批量删除接口,将前端传过来的ID号/ID数组传入函数,调用service进而调用dao层,将该ID号/ID数组对应的章节进行删除。
(3)修改章节
输入项:修改的字段
输出项:修改成功/修改失败
算法描述:
将修改的字段封装后,调用controller层修改章节信息的接口,将封装后的实体类传入,调用service层进而调用dao层,根据id值对数据库进行操作,将该id值对应的数据进行修改,并返回前端结果。
(4)查找章节
输入项:章节名称字段、章节所属书目ID字段
输出项:返回查找后的数据
算法描述:
将用户输入的信息传入controller层,调用模糊查询章节的接口,将章节名称、ID号传入函数,调用service层进而调用dao层,对数据库进行查找操作后,将结果返回。
(5)启用/取消启用章节
输入项:章节启用字段、章节ID字段
输出项:启用成功/取消启用成功/失败
算法描述:
将用户输入的启用字段传入controller层,调用controller层修改章节信息的接口,将封装后的实体类传入,调用service层进而调用dao层,根据id值对数据库进行操作,将该id值对应的数据进行修改,并返回前端结果。
题目管理模块
模块描述:系统三级管理对象,主要管理对象
主要功能:添加、删除、修改、查找、查找题目等其他操作
(1)添加题目
输入项:题目名称、选择、答案、分析、来源等字段
输出项:添加成功/添加失败
算法描述:
调用controller层添加题目接口,将输入信息和默认字段值进行封装后,调用service进而调用dao层,将数据写入到数据库,完成添加。
(2)删除/批量删除题目
输出项:删除成功/删除失败
算法描述:
调用controller层删除题目接口/批量删除接口,将前端传过来的ID号/ID数组传入函数,调用service进而调用dao层,将该ID号/ID数组对应的题目进行删除。
(3)修改题目
输入项:修改的字段
输出项:修改成功/修改失败
算法描述:
将修改的字段封装后,调用controller层修改题目信息的接口,将封装后的实体类传入,调用service层进而调用dao层,根据id值对数据库进行操作,将该id值对应的数据进行修改,并返回前端结果。
(4)查找题目
输入项:题目名称字段、题目所属书目ID字段、题目所属章节ID字段
输出项:返回查找后的数据
算法描述:
将用户输入的信息传入controller层,调用模糊查询题目的接口,将题目名称、书目ID号、章节ID号传入函数,调用service层进而调用dao层,对数据库进行查找操作后,将结果返回。
系统运行展示
系统登录
数据可视化
修改密码
用户管理
模糊查找
新增信息
修改信息
分配角色
分配权限
菜单管理
新增菜单
题目管理
条件查询
修改题目
章节管理
书目管理
今日排行榜
累计排行榜
效果预览
408小程序管理端