基于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 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Java Spring ApplicationEvent 代码示例解析

《JavaSpringApplicationEvent代码示例解析》本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、... 目录一、Spring 事件机制核心概念1. 事件驱动架构模型2. 核心组件二、代码示例解析1. 事件定义

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关