基于全注解 SSM 和 Bootstrap 的两码一查系统

2024-01-14 12:30

本文主要是介绍基于全注解 SSM 和 Bootstrap 的两码一查系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Spring-_-Bear 的 CSDN 博客导航

文章目录

  • 一、快速开始
  • 二、背景调查
  • 三、需求分析
  • 四、系统设计
    • 4.1 数据库设计
      • 4.1.1 实体及属性
      • 4.1.2 实体间关系
      • 4.1.3 逻辑结构设计
    • 4.2 功能设计
  • 五、效果展示
    • 5.1 用户登录
    • 5.2 重置密码
    • 5.3 超级管理员
      • 5.3.1 导入班级
      • 5.3.2 添加主任
      • 5.3.3 班级管理
      • 5.3.4 角色修改
    • 5.4 学生
      • 5.4.1 图片上传
      • 5.4.2 修改密码
      • 5.4.3 历史记录
      • 5.4.4 个人资料
    • 5.5 班长
    • 5.6 班主任
    • 5.7 年级主任
      • 5.7.1 主任资料
      • 5.7.2 年级记录
  • 六、技术选型
  • 七、待办事项

开发时间SpringMyBatisBootstrap开源项目
22/06/02 - 22/09/155.3.13.5.73.4.1images-gather

一、快速开始

  1. 克隆仓库:使用 Git 克隆仓库或直接下载仓库压缩包到您的计算机来获取源代码。
  2. 打开工程:使用 IntelliJ IDEA 开发工具打开克隆的仓库或解压的工程文件,而后使用 Maven 项目构建工具更新工程模块依赖。
  3. 创建数据库并导入数据:登录 MySQL 控制台,创建一个名为 images_gather 的数据库,并将 document/sql/images_gather.sql 脚本中的建表语句和数据导入到 images_gather 数据库中。
  4. 修改配置:
    • 修改 src/main/webapp/static/js/gather-common.js 中的 contextPath 变量值,此为后端接口请求路径。
    • 修改 src/main/resources/jdbc.properties 文件中的数据库连接信息,设置你自己的数据库用户名和密码。
    • 修改 src/main/resources/email.properties 中的邮箱服务器信息,设置你自己的邮箱账号和服务器。
    • 修改 src/main/resources/qiniu.properties 中的七牛云配置信息,设置你自己的七牛云令牌信息。
    • 修改 src/main/resources/baidu.properties 中的百度地图配置信息,设置你自己的百度地图 IP 解析 URL。
  5. 部署访问:在 IntelliJ IDEA 中部署 Tomcat 并启动即可访问两码一查首页,需要注意工程上下文路径需与配置的后端接口请求路径相同。
  6. 登录系统:
    • 学生:用户名和密码均为 10086。
    • 班长:用户名和密码均为 10087。
    • 班主任:用户名和密码均为 10088。
    • 年级主任:用户名和密码均为 10089。
    • 超级管理员:用户名和密码均为 admin。

二、背景调查

2019 年底开始流行的新型冠状病毒(2019-nCoV)疫情给全世界人民带来了无法考量的灾难。新冠疫情泛滥两年多来,已夺走数百万条声明,世界经济几乎陷入停顿,习以为常的生活无法复原,损失极其惨重,全世界都在期盼疫情尽快结束,期待后疫情时代早日到来。

在全国人民众志成城地抗疫下,如今国内疫情形势得到了有效的控制。疫情初期由杭州市于 2020 年 2 月 11 日率先在全国推出的基于绿色、黄色和红色的健康码以个人健康数据为基础,由居民自主通过健康登记系统网上申报,结合新冠肺炎疫情相关数据进行比对核验,生成的个人专属二维码。该二维码作为个人在当地出入通行的一个电子凭证,实现一次申报,全市通用。

健康码的应用涵盖了社区管理、企业复工、交通出行、学校开学、买药登记、超市商场等使用场景,可以协助社区、企业、学校等做好防疫管理及疫情控制等重点工作。在疫情防控和复产复工中,健康码可以实现高效率的人员流动管理,在办公楼、商场、地铁、火车站等人流密集的地点提高过检效率,避免过多的人员接触和聚集。

2020 年 12 月 10 日,国家卫健委、国家医保局、国家中医药管理局联合发布《关于深入推进“互联网+医疗健康”“五个一”服务行动的通知》,明确要求各地落实 “健康码” 全国互认、一码通行。

2021 年 3 月 23 日,国家卫生健康委员会在发布会上介绍,全国基本实现了健康码的 “一码通行”。3 月 30 日,国家政务服务平台 “防疫健康码” 已整合 “通信大数据行程卡” 相关信息,可在健康码中显示用户是否去过中高风险地区等行程信息,助力健康码 “一码通行”。后续由国家政务服务平台推出的同行密接人员自查与健康码、行程码同属一类防疫工具,旨在为大众提供更加便捷的防疫信息查询和个人健康管理。

三、需求分析

如今,各高校内核酸采集检测已为常态化,使用核酸结果验证区域内是否存在患者的同时亦可以通过验证学生健康码、行程码、密接自查(后续简称为两码一查)数据信息的方式监测管理学生的健康状态。

经走访调查,湖北省武汉市某高校要求学生每日上传个人两码一查图片信息以配合防疫,该方式实际实施的过程中相当耗费学生精力。两码一查图片收集信息管理大致过程概述如下:首先由学生个人从健康码、行程码、密接查查询入口查询个人当天的健康信息并截图保存,而后按照统一格式要求对图片进行命名并打包发送给相关负责人。接下来由班长负责校验当天该班所有学生两码一查健康信息,需解压每一位同学的压缩包并依次点击查看两码一查图片信息,过程繁重琐碎易出错,班长还需要劳苦地核对有哪些同学尚未提交今日两码一查,需要对尚未上传同学进行督促并私聊该同学尽快上传两码一查图片信息,并且图片数据的保留保存问题也较为困难。

针对图片收集、文件命名、文件解压、信息查看管理等繁杂过程,我们的两码一查图片收集信息管理系统应运而生,旨在提高学生每日上传图片和信息管理的效率,愿景是减轻每一位同学的负担。主要功能包括由学生自主上传两码一查图片信息、自动规范化命名、后台自动校验健康信息是否存在异常、系统通过邮箱或短信方式自动提醒当天未完成同学、管理员查看班级上传信息、管理员对已上传同学的数据进行复核以及历史记录(上传和登录)查看等功能。该系统作为校园防疫健康信息管理的一站式解决方案,包括学院管理、班级管理、教师管理、学生管理、健康信息查询与统计等功能。

四、系统设计

4.1 数据库设计

4.1.1 实体及属性

  1. 用户:用户 ID,用户名,密码,电话,邮箱,用户类型,用户状态,姓名,性别,学校 ID,年级 ID,班级 ID,登录时间,创建时间
  2. 学校:学校 ID,校名
  3. 年级:年级 ID,年级名称
  4. 班级:班级ID,班级名称
  5. 上传记录:上传记录 ID,上传记录状态,上传时间,健康码本地 url,行程码本地 url,密接查本地 url,健康码云 url,行程码云 url,密接查云 url,用户 ID,创建时间
  6. 登录记录:登录记录 ID,IP,登录地点,登录时间,用户 ID
  7. 邮件记录:邮件记录 ID,邮箱,验证码,发送时间,用户ID

4.1.2 实体间关系

  1. 用户与学校:一个用户对应一个学校,一个学校下包含多个用户,故用户与学校间是多对一关系。
  2. 用户与年级:一个用户对应一个年级,一个年级下包含多个用户,故用户与年级间是多对一关系。
  3. 用户与班级:一个用户对应一个班级,一个班级下包含多个用户,故用户与班级间是多对一关系。
  4. 用户与上传记录:一个用户可以有多条上传记录,一条上传记录对应一个用户,所以用户与上传记录间是一对多关系。
  5. 用户与登录记录:一个用户可以有多条登录记录,一条登录记录对应一个用户,所以用户与登录记录间是一对多关系。
  6. 用户与邮件记录:一个用户可以有多条邮件记录,一条邮件记录对应一个用户,所以用户与邮件记录间是一对多关系。
  7. 学校与年级:一所学校下可有多个年级,一个年级对应一所学校,所以学校与年级间是一多对关系。
  8. 年级与班级:一个年级下可有多个班级,一个班级对应一个年级,所以年级与班级间是一对多关系。

4.1.3 逻辑结构设计

  1. 用户:用户 ID,用户名,密码,电话,邮箱,用户类型,用户状态,姓名,性别,学校 ID,年级 ID,班级 ID,登录时间,创建时间

    数据项数据类型
    id(主键、自增)int
    username(唯一索引)varchar(255)
    passwordchar(32)
    phonevarchar(255)
    emailvarchar(255)
    user_typeint
    user_statusint
    namevarchar(255)
    sexchar(2)
    school_id(外键)int
    grade_id(外键)int
    class_id(外键)int
    last_login_datetimedatetime
    create_datetimedatetime
  2. 上传记录:上传记录 ID,上传记录状态,上传时间,健康码本地 url,行程码本地 url,密接查本地 url,健康码云 url,行程码云 url,密接查云 url,用户 ID

    数据项数据类型
    id(主键、自增)int
    upload_statusint
    upload_datetimedatetime
    local_health_urlvarchar(255)
    local_schedule_urlvarchar(255)
    local_closed_urlvarchar(255)
    cloud_health_urlvarchar(255)
    cloud_schedule_urlvarchar(255)
    cloud_closed_urlvarchar(255)
    user_id(外键)int
  3. 登录记录:登录记录 ID,IP,登录地点,登录时间,用户 ID

    数据项数据类型
    id(主键、自增)int
    ipchar(15)
    locationvarchar(255)
    login_datetimedatetime
    user_id(外键)int
  4. 邮件记录:邮件记录 ID,邮箱,验证码,发送时间,用户 ID

    数据项数据类型
    id(主键、自增)int
    emailvarchar(255)
    codevarchar(255)
    delivery_datetimedatetime
    user_id(外键)int
  5. 学校:学校 ID,校名

    数据项数据类型
    id(主键、自增)int
    schoolvarchar(255)
  6. 年级:年级 ID,年级名称

    数据项数据类型
    id(主键、自增)int
    gradevarchar(255)
  7. 班级:班级ID,班级名

    数据项数据类型
    id(主键、自增)int
    class_namevarchar(255)

4.2 功能设计

在这里插入图片描述

五、效果展示

5.1 用户登录

  1. 用户名不存或密码:当用户选择登陆时进行用户名和密码正确性校验,当用户名不存在或密码错误时友好提示用户。
  2. 记住我:当用户勾选记住我并且输入的用户名和密码无误时,服务器将从响应头中告知浏览器保存用户名和密码信息到 Cookie 中,当用户下次登录系统时直接从 Cookie 中读取用户名和密码的值并自动填充到输入框中。
  3. 用户类型和用户状态判断,若用户状态异常或类型不存在则不允许用户使用系统。

在这里插入图片描述

5.2 重置密码

  1. 获取邮箱验证码时用户名非空校验,邮箱地址格式校验。
  2. 用户名和邮箱地址不匹配时不允许修改密码。
  3. 点击确认按钮时再次校验邮箱、用户名格式,额外校验验证码长度位数必须为 6 位,新密码长度不小于 6 位。
  4. 在用户点击确认按钮重置个人密码之前,必须点击获取按钮获取邮箱验证码。
  5. 邮箱验证码发送,用户填入正确的用户名和邮箱,即可请求服务器发送一封邮箱验证码邮件到个人邮箱中作为重置密码的身份校验。

在这里插入图片描述

5.3 超级管理员

5.3.1 导入班级

管理员可上传班级信息模板 Excel 文件,根据自定义的 sheet-bean-converter.jar 包完成 Excel 数据与 Java Bean 对象间的转换,后可将相应的学生数据转换为用户数据并批量导入到数据库中。

在这里插入图片描述

5.3.2 添加主任

管理员可填入年级主任信息并选择学校和班级,从而设置对应的年级主任用户账号。

在这里插入图片描述

5.3.3 班级管理

管理员可选择学校、年级、班级,后显示改班级下的所有学生,并供管理员修改学生类型的功能。

在这里插入图片描述

5.3.4 角色修改

管理员选择操作学生,并修改其用户角色,可修改为学生、班长或班主任。

在这里插入图片描述

5.4 学生

5.4.1 图片上传

  1. 选择个人健康码图片、行程码图片、密接查图片后方可上传。
  2. 图片上传完成,在服务器留存的同时在七牛云平台留存图片信息,数据安全双重保障。

在这里插入图片描述

5.4.2 修改密码

  1. 系统点击主页面右上角的改密按钮,弹出密码修改模态框。
  2. 新密码长度不小于 6 位且两次输入的新密码需保持一致,新密码与原密码一致时不允许修改。
  3. 服务端校验新旧密码是否一致,一致时不允许修改个人密码,原密码有误时亦不允许修改个人密码。

在这里插入图片描述

5.4.3 历史记录

  1. 今日上传记录查询,当用户一天内两次及以上登入系统时,若用户已完成图片上传显示已上传的两码一查图片信息,用户可以重新上传图片。

    在这里插入图片描述

  2. 个人历史登录记录数据分页查看,显示登录的时间、登录IP、地点(由百度地图开发者 API 提供解析服务)信息。

    在这里插入图片描述

  3. 上传记录查看,用户可查看已上传的两码一查图片信息,并提供图片查看的功能。

    在这里插入图片描述

5.4.4 个人资料

  1. 提供用户个人资料查看的入口即系统主页面点击【我的】可查看自己的详细信息。
  2. 个人信息修改,用户可以修改自己的性别、电话、邮箱等信息,修改过程中对信息进行校验,前后数据未发生变化、数据格式不正确则不允许修改。
  3. 个人信息修改成功,3s 后自动刷新页面。

在这里插入图片描述

5.5 班长

  1. 班长可查看班级上传记录,PC 端可查看最近 14 的上传记录,移动端查看最近 7 天的上传记录,分为未登录人员名单、登录未上传人员名单和已完成人员名单并生成各位同学的图片预览。
  2. 班长可点击日期链接下载该天该班级的两码一查上传情况,包含了已上传的图片数据和班级名单 README.txt。

在这里插入图片描述

5.6 班主任

班主任功能与班长类似,不同的是班主任无需跳转到上传页面且显示当前的登录信息,包含登录时间、地点、IP 等。

在这里插入图片描述

5.7 年级主任

5.7.1 主任资料

年级主任登录记录、我的资料、修改密码功能与班主任相同,唯一不同的是年级主任可查看年级上传记录。

在这里插入图片描述

5.7.2 年级记录

  1. 班级未上传信息概览。

    在这里插入图片描述

  2. 班级上传详情查看,点击对应班级即可查看该班人员信息,包含了未登录名单、未上传名单、已完成名单和图片概览。

    在这里插入图片描述

六、技术选型

前端技术
HTML5、CSS3、JavaScript、jQuery1.7.2、Bootstrap3.4.1、Ajax、正则表达式
后端技术
Spring5.3.1、SpringMVC5.3.1、MyBatis1.3.2、SpringTest5.3.1、JUnit4.12、Thymeleaf3.0.12、MySQL8.0.27、Druid1.1.15、Logback1.2.3、Lombok1.18.20、Jackson2.9.8、PageHelper5.2.0、Qiniu7.8.0、JavaxMail1.6.2、SheetBeanConverter1.0.0、Tomcat8.0.50、Maven3.8.4、Git2.35.1、百度地图 IP 归属地解析、网易邮箱验证码服务、七牛云平台数据存储
开发工具
IntelliJ IDEA2021.1、Visual Studio Code、Java1.8.0_311、MySQL8.0.28、Navicat16.0.13、Git2.35.1、Maven3.8.4、Tomcat8.0.50、CentOS7.6、XShell6、Xftp6、Typora1.3.6、Snipaste、ioDraw、XMind

七、待办事项

事项进度
密码加密传输和保存
支持多种登录方式(用户名、电话、邮箱)
后台管理功能设计实现
前后台真正意义上动静分离
年级上传记录分班级概览与详情查看
班级上传资料压缩下载(图片、名单)
负载均衡
持续化集成与部署
七牛云平台图片防盗(私有空间)
邮箱验证码的最大有效时间
Python 两码一查状态识别
请求发送邮件时增加人机验证
Redis 缓存提高系统并发能力

这篇关于基于全注解 SSM 和 Bootstrap 的两码一查系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

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

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

mapstruct中的@Mapper注解的基本用法

《mapstruct中的@Mapper注解的基本用法》在MapStruct中,@Mapper注解是核心注解之一,用于标记一个接口或抽象类为MapStruct的映射器(Mapper),本文给大家介绍ma... 目录1. 基本用法2. 常用属性3. 高级用法4. 注意事项5. 总结6. 编译异常处理在MapSt

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Spring @RequestMapping 注解及使用技巧详解

《Spring@RequestMapping注解及使用技巧详解》@RequestMapping是SpringMVC中定义请求映射规则的核心注解,用于将HTTP请求映射到Controller处理方法... 目录一、核心作用二、关键参数说明三、快捷组合注解四、动态路径参数(@PathVariable)五、匹配请

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

SpringCloud中的@FeignClient注解使用详解

《SpringCloud中的@FeignClient注解使用详解》在SpringCloud中使用Feign进行服务间的调用时,通常会使用@FeignClient注解来标记Feign客户端接口,这篇文章... 在Spring Cloud中使用Feign进行服务间的调用时,通常会使用@FeignClient注解

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.