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

news2024/11/17 15:45:40

简介


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

主要任务:系统主要采用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.coloradmin.cn/o/1541930.html

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

相关文章

centos glibc 升级导致系统崩溃

centos 7.9默认的glibc为2.17,因为要安装一些软件,需要升级到glibc 2.18,而从源码进行编译和安装,安装失败,导致系统崩溃。 系统崩溃首先想到的是利用启动盘进行救援,而利用centos 7.9的启动盘始终无法挂载…

AI:152- 利用深度学习进行手势识别与控制

本文收录于专栏:精通AI实战千例专栏合集 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 每一个案例都附带关键代码,详细讲解供大家学习,希望可以帮到大家。正在不断更新中~ 一. 利用深度学习进行手势识别与控制 …

jetcache 2级缓存模式实现批量清除

需求 希望能够实现清理指定对象缓存的方法,例如缓存了User表,当User表巨大时,通过id全量去清理不现实,耗费资源也巨大。因此需要能够支持清理指定本地和远程缓存的批量方法。 分析 查看jetcache生成的cache接口,并没…

nodejs+vue高校失物招领平台python-flask-django-php

时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,高校失物招领平台当然不能排除在外。高校失物招领平台是在实际应用和软件工程的开发原理之上,运用nodejs语言以及express框架进行开发…

如何在 Django 中使用 pyecharts

为项目新建一个目录,将其命名为django_pyecharts_demo, 在终端中切换到这个目录,并创建一个虚拟环境。 python -m venv django_pyecharts激活虚拟环境 django_pyecharts\Scripts\activate要停止使用虚拟环境,可执行命令 deactivate创建并激…

音视频领域首个,阿里云推出华为鸿蒙 HarmonyOS NEXT 版音视频 SDK

近日,阿里云在官网音视频终端 SDK 栏目发布适配 HarmonyOS NEXT 的操作文档和 SDK,官宣 MediaBox 音视频终端 SDK 全面适配 HarmonyOS NEXT。 此外,阿里云播放器 SDK 也在华为开发者联盟官网鸿蒙生态伙伴 SDK 专区同步上线,面向所…

Docker进阶:Docker-cpmpose 实现服务弹性伸缩

Docker进阶:Docker-cpmpose 实现服务弹性伸缩 一、Docker Compose基础概念1.1 Docker Compose简介1.2 Docker Compose文件结构 二、弹性伸缩的原理和实现步骤2.1 弹性伸缩原理2.2 实现步骤 三、技术实践案例3.1 场景描述3.2 配置Docker Compose文件3.3 使用 docker-…

6.4 Dropout正则化

1、Dropout Dropout是一种正则化技术,通过防止特征的协同适应,可用于减少神经网络中的过拟合。 Dropout的效果非常好,实现简单且不会降低网络速度,被广泛使用。 特征的协同适应指的是在训练模型时,共同训练的神经元…

Unity构建详解(3)——SBP的依赖计算

【前置知识】 先要搞清楚Asset和Object的关系,可以简单理解为一个Asset对应多个Object。 unity自定义的Asset也要有一个存储的标准,其采用的是YAML,我们看到的所有Unity自定义的Asset格式,例如.prefab(预制体&#x…

基于Google云原生工程师的kubernetes最佳实践(三)

目录 三、集群管理 利用node affinity、taint等机制管理node 通过pod affinity/anti-affinity机制将pod分配到合适的node Node分级管理 从Qos角度将Pod分级 用namespace隔离不同的环境和用户 配置RBAC权限控制 1. 遵循最小权限原则 2. 使用 Role 和 ClusterRole 分离权…

计算机服务器中了faust勒索病毒怎么办,faust勒索病毒解密工具流程

网络是一把利剑,可以方便企业开展各项工作业务,为企业提供极大的便利,但随着网络技术的不断发展与应用,网络数据安全威胁也在不断增加,给企业的正常生产运营带来了极大困扰,近日,云天数据恢复中…

PointerLockControls 是 Three.js 中用于处理鼠标锁定状态下的相机控制的类。它允许用户通过鼠标移动来控制相机的旋转方向。

demo案例 PointerLockControls 是 Three.js 中用于处理鼠标锁定状态下的相机控制的类。它允许用户通过鼠标移动来控制相机的旋转方向。下面是它的详细讲解: 构造函数: PointerLockControls(object: Camera, domElement?: HTMLElement)object:THREE.Ca…

Linux 系统 快速卸载docker

(卸载前一定要做好相关数据的备份) 卸载: 第一种卸载方法 1、查询docker安装过的包: yum list installed | grep docker 2、删除安装包: yum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -y 3、删除镜像/容器等 rm -rf /var/lib/dock…

力扣面试150 x 的平方根 二分 换底法 牛顿迭代法 一题多解

Problem: 69. x 的平方根 思路 👨‍🏫 参考题解 💖 袖珍计算器算法 class Solution {public int mySqrt(int x){if (x 0)return 0; // Math.exp(3):e的三次方int ans (int) Math.exp(0.5 * Math.log(x));return (long) (an…

react native 键盘事件

在做修改密码功能是发现他的键盘第一次调起之后然后收起键盘焦点不会消失而且键盘也不会再调起来了 我门线引入需要的组件 import { StyleSheet, View, TextInput, Keyboard, TouchableWithoutFeedback, } from react-native; import React, {useEffect, useState, useRef} fr…

蓝桥杯真题:幸运数字

这道题可以用 integer.string()求每个进制的数,但这里要每一位数相加,所以用这个方法会比较麻烦,如下 import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner scan new Sc…

LeetCode 面试经典150题 14.最长公共前缀

题目: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 思路: 代码: class Solution {public String longestCommonPrefix(String[] strs) {if (strs.length 0) {return &…

吴恩达2022机器学习专项课程(一) 3.5 可视化成本函数

问题预览 为什么要可视化成本函数?可视化之后的成本函数是什么样子?如何在三维空间里通过w和b找到一个成本函数的值?如何在三维空间里找到成本函数的最小值? 解读 可视化成本函数:为了更加方便的看到不同的w和b&…

【短接笔记本或者台式机的CMOS针脚解决电脑开机无法启动BIOS无法进入问题】

为什么要执行短接笔记本或者台式机的CMOS针脚操作? 问题:可以解决如下图所示,技嘉小雕主板开机时按delete键无法进入BIOS主板界面,长时间等待之后依然无法进入BIOS主板界面,则判定为主板问题。此时短接CMOS针脚可清空…

【数据结构】考研真题攻克与重点知识点剖析 - 第 2 篇:线性表

前言 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术…