(附源码)springboot校园疫情管理系统 毕业设计 021506

Posted ID3461074420

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(附源码)springboot校园疫情管理系统 毕业设计 021506相关的知识,希望对你有一定的参考价值。

校园疫情管理系统

摘  要

信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对校园疫情管理系统等问题,对校园疫情管理系统进行研究分析,然后开发设计出校园疫情管理系统以解决问题。

校园疫情管理系统主要功能模块包括用户管理、全国疫情地区、活动轨迹、旅居史记录、每日健康填报、请假信息,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取mysql作为后台数据的主要存储单元,采用springboot框架、Java技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对校园疫情管理系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现校园疫情管理系统 和部署运行使用它。

关键词校园疫情管理系统 Eclipsejavaspringboot

Abstract

In the information society, there is a need for targeted information access, but the expansion of access is basically the direction of people's efforts. Due to the deviation of the perspective, people can often obtain different types of information, which is also the most difficult subject for technology to overcome. Aiming at the problems of campus epidemic management system, this paper studies and analyzes the campus epidemic management system, and then develops and designs the campus epidemic management system to solve the problems.

The main functional modules of the campus epidemic management system include user management, epidemic areas across the country, activity track, residence history records, daily health filling and leave information. The object-oriented development mode is adopted for software development and hardware erection, which can well meet the actual needs, improve the corresponding software erection and program coding, and adopt MySQL as the main storage unit of background data, Using springboot framework, Java technology and Ajax technology to code and develop the business system, all the functions of the system are realized. This report first analyzes the background, function and significance of the research, which lays a foundation for the rationality of the research work. Based on the analysis of the various requirements and technical problems of the campus epidemic management system, this paper proves the necessity and technical feasibility of the system, then makes a basic introduction to the technical software and design idea needed to design the system, and finally realizes the campus epidemic management system and deployment and operation.

Key words:Campus epidemic management system; Eclipse; java; springboot

目录

1 绪论 1

1.1 研究背景与意义 1

1.2开发现状 1

1.3相关技术介绍 1

2 校园疫情管理系统分析 3

2.1 可行性分析 3

2.1.1 技术可行性分析 3

2.1.2 经济可行性分析 3

2.2 系统需求分析 4

2.2.1 功能性需求分析 4

2.2.2 非功能性分析 5

2.3 系统用例分析 5

3 校园疫情管理系统总体设计 8

3.1 系统模块设计 8

3.2 数据库设计 8

3.3.1 数据库概念结构设计 8

3.2.2 数据库逻辑结构设计 9

4 校园疫情管理系统 设计与实现 11

4.1 系统首页页面 11

4.2 登录页面 11

4.3 全国疫情地区页面 15

4.4 活动轨迹页面 15

4.5旅居史记录页面 16

4.6 请假信息页面 16

4.7 用户管理页面 18

4.8 更多管理页面 19

4.9 每日健康填报管理页面 20

5校园疫情管理系统测试 22

5.1 系统测试的目的 22

5.2 系统测试用例 22

5.3 系统测试结果 23

结论 24

参考文献 25

   27

1 绪论

1.1 研究背景与意义

在学校的日常管理过程中,疫情管理是日常管理中必不可少的组成部分,其管理水平的高低体现了一个学校管理水平的整体状况。一直以来学校使用传统人工的方式管理疫情数据,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,为操作人员带来不少麻烦。

面对信息化时代的来临与学校的发展改革和转型升级,疫情管理越来越正规化、科学化。使用计算机对一些信息管理,具有众多优点,可靠性高、存储量大、保密性好、寿命长、成本低等。因此开发一套校园疫情管理系统是很有必要的事情,它将成为学校单位不可缺少的一部分。在日常使用过程中,计算机系统提供的方便,使得操作人员提高工作效率,并使学校资源得以更有效配置,从而提高学校日常管理水平,也让学校内部更好的为使用者服务和提供的便利。

1.2开发现状

在《SARS事件与中国危机管理体系建设》提到目前国内市场出现了很多利用互联网监测流感疫情的研究者,其中包括利用互联网搜索引擎数据、社交网络数据、医疗网站数据、药物销售数据等进行流感监测的方法。

在地址http://www.who.int/mediacentre/factsheets/fs211/en/提到国外的Ginsberg等人利用Google流感趋势监测流感疫情,其监测时效比CDC(Centers for Disease Control)监测提前了1~2周。

在《国内外流感监测系统的综合调查研究》提到在国内,李秀婷等人应用Google搜索引擎数据研究基于互联网搜索数据的中国流感监测。

在《流感监测的发展历史及思考》提到流感疫情预测中,采用互联网搜索数据结合流感中心公布的每周的流感疫情数据。首先研究搜索引擎数据对流感样病例ILI数据的解释能力,其次研究ILI历史趋势的解释能力,最后验证搜索数据和历史ILI数据的互补性。然后通过搜索数据和历史ILI数据最流感疫情做出预测。而本文中则通过实时的获取流感中心每天的数据疫情和好搜指数,实时地对流感疫情做出预测,在使用好搜指数数据对流感疫情作出预测的基础上,整合与本省历史ILI数据对流感疫情做出预测,并且取得了较好了的预测结果。

在《全国流感监测方案》提到但是这种监测的方式都是根据公众的在互联网上的行为操作记录进行监测。并没有让公众主动的参与到 流感的监测中来。应用互联网数据对流感流行强度的预测,并没有充分地,利用已有的流感疫情数据,同时其他流感数据的预测只是研究性的内容,并未公布在普通公众面前,对公众的流感防治措施的采取意义不大。

在地址http://www.cnic.org.cn/chn/down/showdown.php?downid=850提到国外的Google推出的Flu Trends,Google Flu Trends中的数据主要包含用户的搜索信息和美国CDC公布的流感疫情数据,其团队通过研究用户搜索关键词的频率和流感疫情的相关性,然后从搜索关键词中选取一定数量的关键词对历史流感疫情数据进行计算,并与CDC公布的流感疫情数据进行对比,从中选取效果最好的搜索关键词集合用以作出对流感疫情的预测。

在《流感周报》提到Google Flu Trends对2017~2018疫情趋势预测和实际疫情趋势之间的相关性高达0.97,这与美国流感中心公布的流感疫情趋势几乎完全吻合。在2017~2018年间对流感疫情的预测比CDC监测网络提前了1~2周,而且可以判断流感的初始暴发地点。Flu Trends现在对全球多个国家的流感疫情都做出了预测,并且直观地展示在地图上面。然而,Flu Trends只对美国进行了不同地区的流感预测,针对其他国家则以全国范围做预测。本工作中按照省份对流感疫情做出预测,预测范围更加详细。Flu Trends预测提前的时间与流感中心监控网络的延迟时间相同,相当于计算当前的流感疫情,而本工作中则是对未来的流感疫情趋势做出了预测。Flu Trends在中国是不可访问的,并且未对中国的流感疫情做出预测,不能为我国公众服务。

在《Flu Near You》提到此外,国外已经出现公众可以直接参与的流感监测软件和网站,例如美国公共健康协会推出的Flu Near You 和Germ Tracker。在这两个网站上面用户可以上报自己的症状和其他的信息,Flu Near You社区每周已经有数千人上报健康报告。

1.3相关技术介绍

(1)校园疫情管理系统中的web后台管理中的后端不再使用古老的jsp+javabean+servlet[5]技术,而是使用当前主流的springboot框架,它减少java配置代码,简化编程代码,目前springboot框架也是很多企业选择的框架之一。

(2)校园疫情管理系统 中的web后台管理中的前端使用的是bootstrap[7]框架,它配合ajax和jquery可以美化页面设计。

(3)流行vue框架结合jQuery技术,在jQuery基础上扩展一些插件,通过自己定义插件更好的实现前端的设计。

(4)校园疫情管理系统 中数据库用的mysql5.7,它执行效率高。

2 校园疫情管理系统分析

2.1 可行性分析

2.1.1 技术可行性分析

通过了解对校园疫情管理系统的真实需求后,将校园疫情管理系统所需要的角色划分整理成了下图2-1,图2-2和图2-3。

从开发工具来看,由于校园疫情管理系统是基于JAVA的,因此有很多开发工具都可以进行开发,这些功能强大的开发工具可以给我来设计校园疫情管理系统 带来非常大的方便。

从校园疫情管理系统的本身技术来说,对于我来开发一个校园疫情管理系统 这个毕设是不费事的。校园疫情管理系统的开发可以简单的分为前台端、后台端开发以及数据库开发。其中的大部分技术难点在我上学时已经使用过了,同时网络上很多技术点可以让我来借鉴。Web后台管理使用JAVA的springboot架构开发,数据库使用mysql,页面上使用javascript脚本,因此为我在开发校园疫情管理系统 这个毕设上省去了很多多余代码,这给我的毕设项目编写带来了极大的便利。综上所述,从技术层面来看开发校园疫情管理系统是可行的。

从用户体验来看,市面上很多被广泛使用的系统案例可以让我来参考,因此我可以综合它们的页面交互设计的优点,基于我的毕设项目特点来进行改版,最后达到令用户满意的页面交互体验。综上所述,从技术层面来看开发校园疫情管理系统是可行的。

2.1.2 经济可行性分析

从校园疫情管理系统 的开发成本来看,校园疫情管理系统的设计和开发都是我自己完成的,没有其他成本上的开销。

从校园疫情管理系统的维护成本来看,校园疫情管理系统的开发遵循一套完整的代码编写规范,并且校园疫情管理系统的结构设计非常灵活,遵循高内聚低耦合的原则,因此易于维护和迭代开发。

在校园疫情管理系统上线之后,上线前期我会根据真实需求来调查,对使用我开发的校园疫情管理系统来制定一套符合的使用费。系统运行稳定后我会将推广范围到其他的校园当中,其他校园可以使用我的校园疫情管理系统 ,只需要缴纳一点点的定金,我会给他们引入广告投资和自营业务。

综合以上的分析,校园疫情管理系统所带来的经济效益将会带来极大的收益。并且随着我的推广,来使用我开发的校园疫情管理系统的市场将越来越大,校园疫情管理系统带来的利润也就越来越多。因此,从经济层面来看开发校园疫情管理系统的是可行的。

2.2 系统需求分析

2.2.1 功能性需求分析

校园疫情管理系统从角色上划分为了教师用户、学生用户和管理员三种角色。

管理员用户角色:

(1)登录:管理员的账号是在数据表表中直接设置生成的,不需要进行注册;

2)用户管理:当点击“用户管理”这一菜单的时候,会出现管理员+教师+学生三个子菜单,可以对这个模块进行增删改查操作;

3)更多管理:当点击“更多”这一菜单的时候,会出现全国疫情地区+活动轨迹+旅居史记录+每日健康填报+请假信息个子菜单,能够对请假信息进行增删改查操作,对教师/学生提交的旅居史记录+每日健康填报+活动轨迹进行管控,以及实现对教师/学生提交的全国疫情地区进行审核管理;

学生/教师用户角色:

  1. 登录模块:当教师想要进入本校园疫情管理系统中对信息进行全国疫情地区+活动轨迹+旅居史记录+每日健康填报+请假信息等操作的时候,就必须要登录到系统当中

2活动轨迹学生在后台的“活动轨迹”界面中可以提交活动信息,教师在“活动轨迹”界面可以进行查看;

3旅居史记录学生在后台的“旅居史记录”界面中可以提交旅居史记录信息,教师在“旅居史记录”界面可以进行查看;

4每日健康填报学生在后台的“每日健康填报”界面中可以提交出行每日健康信息,教师在“每日健康填报”界面可以进行查看;

5全国疫情地区学生在后台的“全国疫情地区”界面中可以提交疫情地区信息,教师在“全国疫情地区”界面可以进行查看;

6)请假信息:学生在后台的“请假信息”界面中可以提交请假信息,教师在“请假信息”界面可以进行查看、审核;

2.2.2 非功能性分析

校园疫情管理系统的非功能性需求比如校园疫情管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:

2-1校园疫情管理系统 非功能需求表

安全性

主要指校园疫情管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。

可靠性

可靠性是指校园疫情管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。

性能

性能是影响校园疫情管理系统占据市场的必要条件,所以性能最好要佳才好。

可扩展性

比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。

易用性

用户只要跟着校园疫情管理系统的页面展示内容进行操作,就可以了。

可维护性

校园疫情管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题

2.3 系统用例分析

教师角色用例如图2.1所示。

 

图2.2 校园疫情管理系统教师角色用例图

校园疫情管理系统的管理员是维护整个校园疫情管理系统中一系列数据流程,管理员角色用例如图2.2所示。

 

图2.2 校园疫情管理系统中管理员角色用例图

3 校园疫情管理系统总体设计

3.1 系统模块设计

根据第二章中校园疫情管理系统的功能分析可知,校园疫情管理系统中整体功能模块图如图3.1所示, 

 

图3.1 校园疫情管理系统功能模块图

3.2 数据库设计

3.3.1 数据库概念结构设计

下面是整个校园疫情管理系统 中主要的数据库表总E-R实体关系图。

 

图3.2 校园疫情管理系统总E-R关系图

3.2.2 数据库逻辑结构设计

通过上一小节中校园疫情管理系统 中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。

teacher_user表:

名称

类型

长度

不是null

主键

注释

teacher_user_id

int

11

教师用户ID

job_number

varchar

64

工号

teacher_name

varchar

64

教师姓名

gender

varchar

64

性别

post

varchar

64

职务

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

student_user表:

名称

类型

长度

不是null

主键

注释

student_user_id

int

11

学生用户ID

student_number

varchar

64

学号

full_name

varchar

64

姓名

gender

varchar

64

性别

class_name

varchar

64

班级名称

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

sojourn_history_record表:

名称

类型

长度

不是null

主键

注释

sojourn_history_record_id

int

11

旅居史记录ID

teacher

int

11

教师

teacher_name

varchar

64

教师姓名

job_number

varchar

64

工号

student

int

11

学生

student_number

varchar

64

学号

full_name

varchar

64

姓名

reporting_date

date

0

上报日期

sojourn_record

疫情防控|Springboot+小程序+校园疫情防控系统设计与实现

作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

前言:

校园疫情防控系统是针对学校疫情防控管理的要求,为学校疫情防控设计的一款微信小程序,可以用于学生每日健康信息上报统计,助手于数字化疫情管理,包括健康信息上报、班级学生离校申请审批、校园通知、疫情地区可视化图表。

本文利用Spring Boot与uniapp技术,设计开发出的一个基于C/S架构的校园疫情防控微信小程序。在整个系统的开发周期中,系统后端选用Spring Boot框架,前端选用uniapp框架,持久层选用MYSQL数据库来实现。主要完成以下几个方面的研究:

1.分析在程序开发过程中所采用的C/S结构和B/S结构的优缺点,并确定系统的基本实行方案。

2.对功能需求详细分析,并且也对非功能需求以及系统运行环境进行简单分析,分析各个功能模块的设计和实现。

3.实现了学生打卡、学生请假、辅导员管理学生健康填报、辅导员审批学生假条、校园通知、班级信息管理、疫情可视化图表等功能。

一,项目简介

全国疫情频发,点多面广,形势很严峻,在这样的形势下,校园严格执行省、市的疫情防控政策。学生返校后,实行封闭式管理,学生非必要不准出校,学生长期封闭在校园难免会有不理解、抱怨、烦躁等负面情绪,为了让学生理解目前封校管理政策的正确性,也为了让学生积极配合学校防疫的措施,在学生处领导下,各班级积极组织学生配合学校疫情的防控工作开展。

疫情防控的意义,是为了使疫情更加稳定,了解更多防控意识,有能力去参加疫情防控的志愿者,帮助更多的人。防控意义在于保护好自己,保护好身边的人。疫情时刻牵动着大家的心,疫情是命令,防控就是责任,自愿积极投入到疫情防控工作当中去,用实际行动为打赢疫情防控阻击战贡献志愿的力量。

让大学生能够深刻认识战胜一切艰难险阻的根本保障,是实现中华民族伟大复兴的希望所在。引导大学生自觉拥护自觉成长,成为新时代社会主义的建设者和接班人;引导大学生把满腔的爱国热情转化为建设社会主义现代化祖国的强大动力,刻苦学习、练就本领、报效祖国,担当起青年一代的强国使命[1]。

基于Spring Boot的校园疫情防控系统的设计与实现主要实现了首页、登录、注册、健康填报、请假、批假、校园通知、班级管理、疫情图表等功能模块,系统结构图如下图所示[9]。

 

学生/辅导员点击打卡按钮,进行每日健康填报,填报的表单会获取地理位置进行定位,然后通过上传健康码、行程码和填写表单信息提交数据到打卡记录表,教师端则可以浏览该打卡记录信息[10]。实例如下图4-2-1所示。

图4-2-1 健康打卡数据流图

学生请假需要填写离校时间、返校时间、请假事由、请假去向、请假总时长,最终提交到教师端等待审批。实例如下图4-2-2所示。

图4-2-2 学生请假数据流图

辅导员收到学生请假申请时,对学生的请假信息进行审核,审核状态分为:通过、不通过,并且辅导员有权限直接撤销学生的请假条。实例如下图4-2-3所示。

图4-2-3 辅导员批假数据流图

校园通知是用于公告全校最新的消息,用户浏览后可以了解到校内的最新状况信息。实例如下图4-2-4所示。

图4-2-4 校园通知数据流图

该功能是学生查看自己所在班级包括自己在内的其他同学打卡状态,如果是辅导员则查看自己所有管理的班级里面学生的打卡状态,并可以通过电话号码通知学生。实例如下图4-2-5所示。

图4-2-5 班级列表数据流图

该功能模块是通用功能模块,学生和教师都可以浏览疫情相关信息,该功能包括疫情定位、疫情分布、疫情分析,其中疫情定位采用的是腾讯地图API,疫情分布图为湖南境内的城市分布,疫情分析是使用数据可视化图表展示。实例如下图4-2-6所示。

图4-2-6 疫情状况数据流图

该功能用于用户修改自己的个人信息,用户可以通过此功能修改自己的姓名、性别、头像、班级。实例如下图4-2-7所示。

图4-2-7 编辑个人信息数据流图

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发:Springboot+mybatis

前端开发:微信小程序

三,系统展示

本次校园疫情防控系统的实现基于C/S结构模式,http超文本传输协议,MySQL数据库引擎采用默认的innodb,接口规范采用Restful API风格[14]。

该系统实现分为登录、注册、首页、健康填报(打卡)、打卡记录、学生请假、请假记录、请假处理、校园通知、班级、疫情定位、疫情分布、疫情分析、个人信息[15]。

5.1  登录

用户通过输入电话号码和密码进行登录,调用LoginController类下的loginByPhone方法来实现登录,当输入格式都正确,该账号已存在的状态下,并且数据查询校验成功,即可登录成功到小程序首页界面。其登录界面展示如图5-1所示。

图5-1 登录界面展示图

5.2  注册

用户通过输入手机号码、姓名、密码、性别、年级、班级、辅导员进行注册,调用UserController类下的addUserInfo方法来实现注册,当输入格式都正确,点击注册,并且后台插入数据成功,即可注册成功并跳转到小程序登录界面。其注册界面展示如图5-2所示。

图5-2 注册界面展示图

5.3  首页

如果是学生端首页展示打卡、打卡记录、请假、请假记录、校园通知,如果是教师端首页展示打卡、打卡记录、请假处理、学生打卡记录、校园通知。其首页界面展示如图5-3所示。

       

图5-3 首页界面展示图

5.4  健康填报(打卡)

学生或者教师可以每日进行健康打卡,系统会记录每天健康填报信息。当进入打卡界面时,系统自动获取当前地理位置,然后用户需要输入体温,选择健康码颜色,上传健康码和行程码即可进行每日的健康打卡。其打卡界面展示如图5-4所示。

图5-4 打卡界面展示图

5.5  打卡记录

用户可以指定日期查看自己的健康填报记录,默认查看所有的健康填报记录,健康填报记录信息包括用户姓名,打卡地点,体温,健康码,行程码。其打卡记录界面展示如图5-5所示。

图5-5 打卡记录界面展示图

5.6  学生请假

学生外出请假需要通过此功能进行请假审核,当学生请假申请后该请假条会发送给教师端进行审核处理,外出请假报备表单内容包括离校时间,返校时间,请假事由,请假去向,请假时长。其学生请假界面展示如图5-6所示。

图5-6 学生请假界面展示图

5.7  请假记录

请假记录功能用于记录学生的请假历史记录,默认为查看所有的请假记录,主要内容包括假条创建时间,申请人,请假去向,请假事由,学生年级,请假开始时间,请假结束时间,请假总时长。其请假记录界面展示如图5-7所示。

图5-7 请假记录界面展示图

5.8  请假处理

请假处理为教师端的功能,教师可以通过此功能审核学生端发来的请假申请,教师有权限进行审核,审核状态分为未审批,同意,不同意,并且教师可以直接撤销指定的请假申请。其请假处理界面展示如图5-8所示。

图5-8 请假处理界面展示图

5.9  校园通知

校园通知功能模块展示校园内最新的通告通知,多条信息列表分页展示,通过word文档转图片在页面展示。其校园通知界面展示如图5-9所示。

       

图5-9 校园通知界面展示图

5.10  班级

在教师端班级界面展示教师所管理的班级,在学生端则展示该学生自己所在班级,班级信息包括姓名、学号、电话、打卡状态,当选择仅查看未打卡人员时,会显示所有未打卡的成员,若当前用户角色是教师,则该用户可以通过选择指定的年级和班级查看班级信息,若当前用户角色是学生,则该用户无法选择年级和班级。其班级界面展示如图5-10所示。

图5-10 班级界面展示图

5.11  疫情定位

疫情定位功能使用腾讯地图API实现,在获取全国疫情数据后,通过地点调用腾讯地图API获取经度、纬度,然后在地图上标记出高风险城市。其疫情定位界面展示如图5-11所示。

图5-11 疫情定位界面展示图

5.12  疫情分布

疫情分布可查看湖南境内最新的疫情状况信息,界面顶部文字播报当日现有确诊病例的疫情信息,当点击每个城市地区时,可以显示该城市的现有确诊病例。其疫情分布界面展示如图5-12所示。

图5-12 疫情分布界面展示图

5.13  疫情分析

疫情分析使用数据可视化的方式,清晰地展示疫情数据信息的变化趋势,使得用户能够可观地分析疫情数据的变化,可视化图表包括山峰图、折线图,其中山峰图主要功能是统计湖南近五个月的疫情确诊数量,折线图主要功能是统计湖南近五个月的疫情确诊数量变化趋势。其疫情分析界面展示如图5-13所示。

 

图5-13 疫情分析界面展示图

5.14  个人信息

个人信息可以查看当前用户的主要信息,并可以修改当前用户的信息。其个人信息界面展示如图5-14所示。

图5-14 个人信息界面展示图

四,核心代码展示

package com.qzdl.controller;

import com.qzdl.entity.SchoolRole;
import com.qzdl.response.Result;
import com.qzdl.service.LoginService;
import com.qzdl.util.JwtUtil;
import com.qzdl.util.RedisUtil;
import com.qzdl.vo.LoginUserVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/user")
public class LoginController 

    @Autowired
    private LoginService loginService;
    @Autowired
    private RedisUtil redisUtil;

    @PostMapping("/hello")
    public Result doHello()
        return Result.success();
    

    /**
     * 通过学号/工号登录
     * @param loginUserVO
     * @return
     */
    @ApiOperation(value = "通过学号/工号登录")
    @PostMapping("/login")
    public Result doUserLogin(@RequestBody LoginUserVO loginUserVO)
        SchoolRole schoolRole = new SchoolRole();
        BeanUtils.copyProperties(loginUserVO,schoolRole);
        SchoolRole user = loginService.login(schoolRole.getStudentId(), schoolRole.getPassword());
        String token = JwtUtil.getToken(user.getStudentId().toString());
        redisUtil.hset("token",schoolRole.getStudentId().toString(),token,60*60*24*2);
        Map<String,Object> data = new HashMap<>();
        data.put("user",user);
        data.put("token",token);
        return Result.success().data(data);
    

    /**
     * 通过电话号码登录
     * @param schoolRole
     * @return
     */
    @ApiOperation(value = "通过电话号码登录")
    @PostMapping("/loginByPhone")
    public Result doUserLoginByPhone(@RequestBody SchoolRole schoolRole)
        SchoolRole user = loginService.loginByPhone(schoolRole.getPhone(), schoolRole.getPassword());
        if (user == null) 
            return Result.failure();
        
        String token = JwtUtil.getToken(user.getStudentId().toString());
        redisUtil.hset("token",user.getStudentId().toString(),token,60*60*24*2);
        Map<String,Object> data = new HashMap<>();
        data.put("user",user);
        data.put("token",token);
        return Result.success().data(data);
    

    public Result doAddImg(MultipartFile multipartFile)
        return Result.success();
    

package com.qzdl.system.controller;

import com.qzdl.entity.SchoolRole;
import com.qzdl.response.Result;
import com.qzdl.system.service.ClassService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.text.Collator;
import java.util.List;
import java.util.Locale;

@RequestMapping("/classinfo")
@RestController
public class ClassController 
    @Autowired
    private ClassService classService;

    /**
     * 根据教师tid查询学生信息
     * @param studentId
     * @return
     */
    @ApiOperation(value = "根据教师tid查询学生信息")
    @GetMapping("/selectStudentInfoByTid")
    public Result selectStudentInfoByTid(Integer studentId) 
        List<SchoolRole> result = classService.selectStudentInfoByTid(studentId);
        result.sort((o1, o2) -> Collator.getInstance(Locale.CHINA).compare(o1.getStudentName(), o2.getStudentName()));
        return Result.success().data("result", result);
    

    /**
     * 根据教师id、年级id、班级id查询学生信息
     */
    @ApiOperation(value = "根据教师id、年级id、班级id查询学生信息")
    @PostMapping("/selectStudentInfoBySidGidCid")
    public Result selectStudentInfoBySidGidCid(@RequestBody SchoolRole schoolRole) 
        List<SchoolRole> result = classService.selectStudentInfoBySidGidCid(schoolRole);
        result.sort((o1, o2) -> Collator.getInstance(Locale.CHINA).compare(o1.getStudentName(), o2.getStudentName()));
        return Result.success().data("result", result);
    

    /**
     * selectStudentInfoByGidCid
     */
    @ApiOperation(value = "根据年级id、班级id查询学生信息")
    @GetMapping("/selectStudentInfoByGidCid")
    public Result selectStudentInfoByGidCid(Integer gradeId, Integer classid) 
        List<SchoolRole> result = classService.selectStudentInfoByGidCid(gradeId,classid);
        result.sort((o1, o2) -> Collator.getInstance(Locale.CHINA).compare(o1.getStudentName(), o2.getStudentName()));
        return Result.success().data("result", result);
    

package com.qzdl.system.controller;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.qzdl.response.Result;
import com.qzdl.util.RedisUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

@RequestMapping("/epidemic")
@RestController
public class EpidemicController 

    private final String key = "e4aee1f5e8b01103606a4d61cb98232d";

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private RedisUtil redisUtil;

    /**
     * 获取湖南境内的疫情数据
     * @return
     */
    @GetMapping("/getEpidemicDataInHunan")
    public Result getEpidemicDataInHunan() 
        if(redisUtil.sGet("jsonData").size() > 0)
            System.out.println("jsonData缓存...");
            return Result.success().data("jsonData", redisUtil.sGet("jsonData").toArray()[0]);
        
        String url = "https://interface.sina.cn/news/wap/fymap2020_data.d.json";
        ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);
        JSONObject jsonObject = new JSONObject(forEntity.getBody());
        JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list");
        //过滤得到湖南的数据
        JSONArray jsonData = jsonArray.stream().filter(o -> ((JSONObject) o).get("ename").equals("hunan")).collect(Collectors.toCollection(JSONArray::new));
        redisUtil.sSetAndTime("jsonData", 60*60*3, jsonData);
        return Result.success().data("jsonData", jsonData);
    

    /**
     * 获取湖南境内的历史数据
     * @return
     */
    @GetMapping("/getEpidemicDataInHunanHistory")
    public Result getEpidemicDataInHunanHistory() 
        if(redisUtil.sGet("shanfengData").size() > 0)
            System.out.println("shanfengData缓存...");
            return Result.success().data("shanfengData", redisUtil.sGet("shanfengData").toArray()[0]);
        
        String url = "https://voice.baidu.com/newpneumonia/getv2?from=mola-virus&stage=publish&target=trend&isCaseIn=1&area=湖南&callback=jsonp_1660908362757_64109";
        ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);
        String[] strArr = StrUtil.subBetweenAll(forEntity.getBody(), "(", ")");
        JSONObject jsonObject = new JSONObject(strArr[0]);
        JSONArray jsonArray = ((JSONObject) jsonObject.getJSONArray("data").get(0))
                .getJSONObject("trendMonth").getJSONArray("list");
        //monthData:每个月的数据
        JSONArray monthData = ((JSONObject) jsonObject.getJSONArray("data").get(0))
                .getJSONObject("trendMonth").getJSONArray("updateMonth");
        //shanfengData:新增本土数据
        JSONArray bentuData = ((JSONObject) jsonArray.stream().filter(item -> 
            return "新增本土".equals(((JSONObject) item).get("name"));
        ).collect(Collectors.toCollection(JSONArray::new)).get(0)).getJSONArray("data");
        //新建一个jsonObject,用来存放每个月的数据
        JSONArray shanfengData = new JSONArray();
        for (int i = 0; i < monthData.size(); i++) 
            String jsonStr = "\\"name\\":\\"" + monthData.get(i) + "\\",\\"value\\":" + bentuData.get(i) + "";
            //jsonStr转json对象
            shanfengData.add(i, new JSONObject(jsonStr));
        
        redisUtil.sSetAndTime("shanfengData", 60*60*3, shanfengData);
        return Result.success().data("shanfengData", shanfengData);
    

    /**
     * 定时获取全国疫情数据
     * @return
     */
    @ApiOperation(value = "定时获取全国疫情数据")
    @PostMapping("/getEpidemicCity")
    @Scheduled(cron = "0 10 20 * * ?")
    public void getEpidemicCity() throws InterruptedException 
        System.out.println("正在更新全国城市疫情数据...");
        String url = "https://interface.sina.cn/news/wap/fymap2020_data.d.json";
        ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);
        JSONObject jsonObject = new JSONObject(forEntity.getBody());
        JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list");
        //定义一个列表存储城市
        List<String> province = new ArrayList<>();
        for (Object o1 : jsonArray) 
            for (Object o2 : ((JSONObject)o1).getJSONArray("city")) 
                if (Integer.parseInt(((JSONObject) o2).get("econNum").toString()) > 0 && !"".equals(((JSONObject) o2).get("citycode").toString()))
                    String mapName = ((JSONObject) o2).get("mapName").toString();
                    province.add(mapName);
                
            
        
        System.out.println("城市数量=》" + province.size());
        //存储经纬度
        List<String> locationList = new ArrayList<String>();
        for (Object o : new JSONArray(province)) 
            Thread.sleep(50);
            String city = (String)o;
            String url2 = "https://restapi.amap.com/v3/geocode/geo?address=" + city + "&output=JSON&key=" + key;
            ResponseEntity<String> forEntity2 = restTemplate.getForEntity(url2, String.class);
            String jsonStr = forEntity2.getBody();
            System.out.println("jsonStr = " + jsonStr);
            JSONObject jsonObject2 = new JSONObject(jsonStr);
            String location = (String) ((JSONObject)jsonObject2.getJSONArray("geocodes").get(0)).get("location");
            locationList.add(location);
        
        System.out.println("定时更新locationList=》" + locationList);
        //将获取的数据放到redis中
        redisUtil.sSet("locationList",locationList);
        System.out.println("更新成功!!!...");
    

    @ApiOperation(value = "从缓存中获取全国疫情数据")
    @PostMapping("/getEpidemicCityByCache")
    public Result getEpidemicCityByCache()
        if(redisUtil.sGet("locationList").size() > 0)
            return Result.success().data("locationList", redisUtil.sGet("locationList"));
        
        return Result.failure();
    

五,项目总结

疫情防控是我国基层治理能力的一次重要检验。我国的高校校园内外通常有明显的边界线,可以被视为一个大型的难以分割的管理单元。然而,高校校园普遍拥有普通居民社区的居住属性和其他机关社会企事业单位作为社会生产单位的生产属性,需要承担起相对较高的疫情防控压力,高校拥有的特点也正是防疫所面临的巨大挑战。

校园人员数量多,人员密度大。相比较于其他机关和企事业单位,高校需要管理大量的学生和教职工。尽管高校土地占地面积相对比较大,但呈现出所管辖范围内,整体人员高密度的特点。

同时,高校的主要实践活动都在校园内完成,教学工作的开展、日常办公、食堂用餐、宿舍休息通常都是在封闭性较强的环境中进行,不利于保持空气的流通。不仅如此,校园内的人员活动在校园中并不是平均分布的,而是高度集中分布的,如白天的教学时间,多数师生集中于教室当中,为保证教学的工作开展,大多数课堂里的每个人员相邻就坐,每间教室的人数从数十人到百人不等;晚上则集中于每间寝室中,一个房间内人员数量往往在4人以上,高于普通社区住宅人数。这一系列的特点决定了在高校开展疫情防控工作最有效的手段仍然是将病毒拒之校门外[2]。

以上是关于(附源码)springboot校园疫情管理系统 毕业设计 021506的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb项目-疫情环境下校园宿舍管理系统-附源码-毕业设计

JavaWeb项目-疫情环境下校园宿舍管理系统-附源码-毕业设计

基于Springboot社区疫情防控管理系统 毕业设计-附源码164621

《精品毕设》基于JAVA springboot+VUE前后端分离疫情防疫平台(源码+sql+论文):主要实现系统管理疫情实时状态每日健康打卡复工申请审核历史出行数据通知公告等具体功能设计

疫情防控|Springboot+小程序+校园疫情防控系统设计与实现

疫情防控|Springboot+小程序+校园疫情防控系统设计与实现

(c)2006-2024 SYSTEM All Rights Reserved IT常识