基于SpringBoot+Vue+Mybatis的408刷题小程序管理端

本文主要是介绍基于SpringBoot+Vue+Mybatis的408刷题小程序管理端,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介


原始数据:书目信息、章节信息、题目信息、系统菜单、系统角色、系统用户。

主要任务:系统主要采用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

头像

email

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小程序管理端

这篇关于基于SpringBoot+Vue+Mybatis的408刷题小程序管理端的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/842058

相关文章

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

前端CSS Grid 布局示例详解

《前端CSSGrid布局示例详解》CSSGrid是一种二维布局系统,可以同时控制行和列,相比Flex(一维布局),更适合用在整体页面布局或复杂模块结构中,:本文主要介绍前端CSSGri... 目录css Grid 布局详解(通俗易懂版)一、概述二、基础概念三、创建 Grid 容器四、定义网格行和列五、设置行

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

前端下载文件时如何后端返回的文件流一些常见方法

《前端下载文件时如何后端返回的文件流一些常见方法》:本文主要介绍前端下载文件时如何后端返回的文件流一些常见方法,包括使用Blob和URL.createObjectURL创建下载链接,以及处理带有C... 目录1. 使用 Blob 和 URL.createObjectURL 创建下载链接例子:使用 Blob