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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IS-IS路由

概览: Intermediate System-to-Intermediate System,中间系统到中间系统协议 IS-IS--IGP--链路状态协议--AD值:115 IS--中间系统(路由器) ES--终端系统(PC) 在早期IS-IS的开发并不是为了IP…

Python学习之-正则表达式

目录 前言:1.re.serach1.1例子: 2.re.match2.1示例1:2.2 示例2: 3.re.findall3.1 示例 4.re.fullmatch4.1 示例1:4.2 示例2: 5.re.split5.1 示例1:5.2 示例2:5.3 示例3: 6.re.sub6.1 示例&#…

vue3+Vite+TS项目,配置ESlint和Prettier

创建vue3项目 实操过的有两种方式 1.vue脚手架2.vite(推荐,也是尤大大团队研发) 具体怎么新建一个vue3项目就不多讲了,可以按照官方文档来 创建后的文件目录长这样 多提一句,vite也会随着时间不断迭代,后…

【绘图案例-自定义进度条 Objective-C语言】

一、好,我们接着来说这个自定义进度条 1.这个Slider啊,简单的这个value属性,介绍完了,以后,监听也可以监听的到了,接下来,我们来做这个自定义进度条啊, 那么,首先啊,我是这么想的,在这个slider的最小值、和、最大值、我给它改成0、到、1、 因为如果这样的话,到时候…

安装 使用 ida pro linux

安装 ida pro linux 下载地址 下载解压文件,然后linux下直接双击安装 ida7.5demo*******.run这个安装包 然后查找安装目录,一般桌面图标都有对应执行程序的路径 将crack包中的内容覆盖到这个安装目录中 然后双击执行就可以正常运行,new 打…

安装 allure 时踩到的坑:ERROR: JAVA_HOME is set to an invalid directory

报错内容是: 安装 allure 时ERROR: JAVA_HOME is set to an invalid directory: F:\soft\jdk Please set the JAVA_HOME variable in your environment to match the location of your Java installation。 这个问题的原因是java环境的环境变量不能运行 也就是在cm…

5步到位,苹果手机铃声设置原来这么简单!

苹果手机铃声设置是个人化手机体验的重要部分,通过设置喜爱的铃声可以让手机更加个性化,也更容易识别来电。然而,对于一些新手来说,可能不太清楚如何在苹果手机上进行铃声设置,或者可能不知道如何将自己喜欢的音乐或声…

基于云计算的前端资源管理系统的设计与实现

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 随着互联网的快速发展,前端资源管理成为了一个重要的课题。本文旨在设计并实…

【正点原子FreeRTOS学习笔记】————(14)事件标志组

这里写目录标题 一、事件标志组简介(了解)二、事件标志组相关API函数介绍(熟悉)三、事件标志组实验(掌握) 一、事件标志组简介(了解) 事件标志位:用一个位,来…

旺店通·旗舰奇门和金蝶云星空单据接口对接

旺店通旗舰奇门和金蝶云星空单据接口对接 来源系统:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”,旨在帮助企业打造面…

外包干了15天,技术退步明显。。。。。。

说一下自己的情况,本科生,19年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…

【Java程序设计】【C00391】基于(JavaWeb)Springboot的校园疫情防控信息管理系统(有论文)

基于(JavaWeb)Springboot的校园疫情防控信息管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发&#xff…

[实战]Springboot与GB28181摄像头对接。摄像头注册上线(一)

与支持国标摄像头对接 前言:不想看教程?1、准备阶段1.1、我们会学到什么?1.2、创建项目1.3、pom中用到的依赖1.4 打开摄像头的网址(了解配置方式) 2、代码编写2.1、增加项目配置2.2、在config目录下创建SipConfig2.3、在service目录下创建Sip…

Go通道机制与应用详解

目录 一、概述二、Go通道基础通道(Channel)简介创建和初始化通道通道与协程(Goroutine)的关联nil通道的特性 三、通道类型与操作通道类型1. 无缓冲通道 (Unbuffered Channels)2. 有缓冲通道 (Buffered Channels) 通道操作1. 发送操…

【技巧】PyTorch限制GPU显存的可使用上限

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 从 PyTorch 1.4 版本开始,引入了一个新的功能 torch.cuda.set_per_process_memory_fraction(fraction, device),这个功能允许用户为特定的 GPU 设备设置进程可使用的显存上限比例。 测试代…

验证码demo(简单实现)

前言 我们注意到我们登录网站的时候经常会用到网络验证码,今天我们就简单实现一个验证码的前后端交互问题,做一个小demo 准备 我们这里并不需要依靠原生的java来实现,而是只需要引入一个maven依赖,使用现成的封装好的即可,这是我使用的是hutool工具包 网址:Hutool🍬…

【前端学习——js篇】6.事件模型

具体见:https://github.com/febobo/web-interview 6.事件模型 ①事件与事件流 事件(Events) 事件是指页面中发生的交互行为,比如用户点击按钮、键盘输入、鼠标移动等。在js中,可以通过事件来触发相应的操作,例如执行函数、改变…

dump文件分析OOM及线程堆栈

OutOfMemoryError (OOM) 如果项目报错: OutOfMemoryError: Java heap space,说明堆内存空间(Heap Space)中没有足够的空间来分配对象了。 一旦发生 OOM,系统有可能不可用,或者频繁重启。属于非常严重的问题…

基于springboot实现校园管理系统项目【项目源码+论文说明】

基于springboot实现校园管理系统演示 摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,校园管理系统当然也不能排除在外。校园管理系统是以实际运用为开发背景&#xff0c…

修改 RabbitMQ 默认超时时间

MQ客户端正常运行,突然就报连接错误, 错误信息写的很明确,是客户端连接超时。 不过很疑虑,为什么会出现连接超时呢?代码没动过,网络也ok,也设置了心跳和重连机制。 最终在官网中找到了答案&am…