基于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.tpcf.cn/news/776049.html

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

相关文章

IS-IS路由

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

C语言在线编译器:无需安装,轻松编写C语言程序

C语言在线编译器:无需安装,轻松编写C语言程序 当今,C语言是一种非常流行的编程语言,被广泛用于系统开发、游戏开发等领域。为了方便学习和实践C语言,许多在线编译器应运而生,其中有些还提供了额外的功能&am…

学成在线day06

上传视频: 对文件进行分块 Testpublic void testChunk() throws IOException {File sourceFile new File("d:/ev/20240302_170705.mp4");String chunkPath "d:/ev/chunk/";File chunkFolder new File(chunkPath);if (!chunkFolder.exists(…

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…

大数据导论-大数据分析——沐雨先生

【实验目的】 掌握Pthon/R语言进行大数据分析,包括分类任务和聚类任务。掌握kNN、决策树、SVM分类器、kmeans聚类算法的Python或R语言编程方法。 【实验内容】 使用Python或R语言完成大数据分析任务 1、使用kNN、决策树、SVM模型,对iris数据集进行分类…

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

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

web渗透测试漏洞复现:Springboot Actuator未授权漏洞复现

web渗透测试漏洞复现 1. Springboot Actuator未授权漏洞复现1.1 Springboot Actuator模块简介1.2 Springboot Actuator未授权漏洞复现1.2.1 spingboot Actuator框架的判断1.2.2 spingboot Actuator 1.x版本漏洞1.2.3 spingboot Actuator 2.x版本漏洞1.2.3 Actuator接口访问复现…

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

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🍬…