基于Springboot+Vue实现高校疫情防控系统

简介: 最近根据客户需要新研发了一个项目,本项目基于Springboot+Vue开发实现了一个前后台均有的校园疫情防控管理系统,整个系统设计界面美观,功能全面,适合做毕业设计使用。前端主要的功能: 1. 用户注册登陆2. 疫情新闻查看3. 校务公开信息查看4. 系统通知通告查看5. 校园动态查看6. 媒体校园查看7. 个人中心管理: 老师:个人信息管理、健康信息上报、离校申请、我的请假查看 学生:个人信息管理、健康信息上报、请假审批 后台管理功能: 1. 校内新闻管理2. 疫情新闻管理3. 首页公告管理4. 校务公开管理5. 用户管理

项目编号:BS-GX-040

   2020年初发生的这场全球性新冠病毒,如今已经伴随我们2年有余了。回想两年来经过的这些事儿,历历在目。为了对抗这个让人谈之色变的病毒,全国上下一心,众志成城的共同抗疫,渡过了最危险的时候。但是病毒并没有消失,危险也时刻存在,我们并不能放松防疫的心弦,否则有可能功亏一溃,前功尽弃。

   而对于这种新冠病毒,防大于治。所以最关键的就是及时发现疫情信息,在初期尽快的做好控制,以防止它的快速蔓延。因为现在这个病毒的变种传染性越来越强,国内采用动态清零的方式很快、很好的控制住了国内疫情的发展。并且目前正在帮助香港进行疫情防控。而如何有效的高效快速的管理疫情患者信息,是我们打赢这场战役的关键。信息化技术的应用,可以帮助我们构建疫情信息管理系统,帮助我们提升工作效率,管理效能,提升疫情信息的共享能力。

一,项目简介

 最近根据客户需要新研发了一个项目,本项目基于Springboot+Vue开发实现了一个前后台均有的校园疫情防控管理系统,整个系统设计界面美观,功能全面,适合做毕业设计使用。

前端主要的功能:

    1. 用户注册登陆
    2. 疫情新闻查看
    3. 校务公开信息查看
    4. 系统通知通告查看
    5. 校园动态查看
    6. 媒体校园查看
    7. 个人中心管理:

           老师:个人信息管理、健康信息上报、离校申请、我的请假查看

           学生:个人信息管理、健康信息上报、请假审批

      后台管理功能:

      1. 校内新闻管理
      2. 疫情新闻管理
      3. 首页公告管理
      4. 校务公开管理
      5. 用户管理:老师管理、学生管理
      6. 健康管理:老师健康管理、学生健康管理、确诊信息管理
      7. 请假管理

      二,环境介绍

      语言环境:Java:  jdk1.8

      数据库:Mysql: mysql5.7

      应用服务器:Tomcat:  tomcat8.5.31

      开发工具:IDEA或eclipse

      后台开发技术:Springboot+Mybatis-plus

      前台开发技术:Vue+ElementUI+Bootstrap+Jquery+Ajax

      三,系统展示

      前端页面展示

      image.gif编辑

      新闻查看

      image.gif编辑

      详情查看

      image.gif编辑

      学生登陆系统:个人中心---个人信息查看

      image.gif编辑

      健康信息上报

      image.gif编辑

      请假管理之我的请假

      image.gif编辑

      请假管理之离校申请

      image.gif编辑

      老师登陆

      image.gif编辑

      请假审批

      image.gif编辑

      系统后台管理

      image.gif编辑

      统计信息

      image.gif编辑

      系统管理之新闻管理

      image.gif编辑

      系统管理之疫情新闻

      image.gif编辑

      系统管理之公告管理

      image.gif编辑

      系统管理之校务公开管理

      image.gif编辑

      用户管理之老师管理

      image.gif编辑

      用户管理之学生管理

      image.gif编辑

      健康管理之老师健康管理

      image.gif编辑

      健康管理之学生健康管理

      image.gif编辑

      健康管理之确诊信息管理

      image.gif编辑

      请假管理

      image.gif编辑

      四,核心代码展示

      package com.zhiku.yiqing.web.admin;
      import com.baomidou.mybatisplus.core.metadata.IPage;
      import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
      import com.zhiku.yiqing.common.R;
      import com.zhiku.yiqing.pojo.Dynamic;
      import com.zhiku.yiqing.service.DynamicService;
      import com.zhiku.yiqing.vo.NewsQueryParamsVo;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.web.bind.annotation.*;
      import java.util.Arrays;
      @RestController
      @RequestMapping("/dynamic")
      public class DynamicController {
          @Autowired
          private DynamicService dynamicService;
          @DeleteMapping("/batchDelDynamicById/{ids}")
          public R batchDelDynamicById(@PathVariable("ids") Integer[] ids){
              System.out.println(Arrays.toString(ids));
              dynamicService.batchDelDynamicById(ids);
              return R.success();
          }
          /**
           * 根据id删除校务公开
           * @param id
           * @return
           */
          @DeleteMapping("/delDynamicById/{id}")
          public R delDynamicById( @PathVariable(value = "id" ) Integer id){
              dynamicService.delDynamicById(id);
              return R.success();
          }
          @PutMapping("/updateDynamicById")
          public R updateDynamicById(@RequestBody Dynamic dynamic){
              dynamicService.updateDynamicById(dynamic);
              return R.success();
          }
          /**
           * 添加校务公开
           * @param dynamic
           * @return
           */
          @PostMapping("/addDynamic")
          public R addDynamic(@RequestBody Dynamic dynamic){
              dynamicService.addDynamic(dynamic);
              return R.success();
          }
          /**
           * 查询某个校务公开的详情
           * @param id
           * @return
           */
          @GetMapping("/queryDynamicById/{id}")
          public R queryDynamicById(
                  @PathVariable(value = "id" ) Integer id){
              Dynamic dynamic = dynamicService.queryDynamicById(id);
              return R.success(dynamic);
          }
          /**
           * 查询所有的校务公开带分页以及条件查询
           * @param pageNo
           * @param pageSize
           * @param queryParamsVo
           * @return
           */
          @GetMapping("/queryAllDynamic/{pageNo}/{pageSize}")
          public R queryAllDynamic(
                  @PathVariable(value = "pageNo" ) Integer pageNo,
                  @PathVariable(value = "pageSize") Integer pageSize,
                  NewsQueryParamsVo queryParamsVo){
              System.out.println("queryParamsVo: " + queryParamsVo);
              Page<Dynamic> page = new Page<>(pageNo, pageSize);
              IPage<Dynamic> Dynamic = dynamicService.dynamicService(page,queryParamsVo);
              return R.success(Dynamic);
          }
      }

      image.gif

      package com.zhiku.yiqing.web.admin;
      import com.alibaba.excel.EasyExcel;
      import com.alibaba.excel.support.ExcelTypeEnum;
      import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
      import com.zhiku.yiqing.common.R;
      import com.zhiku.yiqing.listener.EasyExcelListener;
      import com.zhiku.yiqing.listener.ImportTradingListener;
      import com.zhiku.yiqing.pojo.Student;
      import com.zhiku.yiqing.pojo.Teacher;
      import com.zhiku.yiqing.service.StudentService;
      import com.zhiku.yiqing.service.TeacherService;
      import com.zhiku.yiqing.util.ContentStyle;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.*;
      import org.springframework.web.multipart.MultipartFile;
      import javax.servlet.http.HttpServletResponse;
      import java.io.InputStream;
      import java.net.URLEncoder;
      import java.nio.charset.StandardCharsets;
      import java.util.List;
      /**
       * EasyExcel导入导出测试Controller
       */
      @RestController
      @RequestMapping("/easyExcel")
      public class EasyExcelController {
          @Autowired
          private StudentService studentService;
          @Autowired
          private TeacherService teacherService;
          /*导出学生信息列表*/
          @GetMapping("/exportStudentExcel")
          @ResponseBody
          public void exportStudentExcel(@RequestParam("ids") Integer[] ids, HttpServletResponse response) throws Exception{
              //文件名含中文需要转码
              String fileName =
                      URLEncoder.encode( "学生列表.xlsx", StandardCharsets.UTF_8.toString());
              //将需要导出的数据从数据库中查出
              List<Student> list = studentService.getAllStudents(ids);
              //设置响应格式
              response.setContentType("application/vnd.ms-excel;chartset=utf-8"); //文件扩展名为excel格式
              response.setHeader("Content-Disposition", "attachment;filename=" + fileName); //触发文件名为filename的“另存为”对话框
              // 内容样式
              HorizontalCellStyleStrategy horizontalCellStyleStrategy = ContentStyle.getContentStyle();
              //将OutputStream对象附着到EasyExcel的ExcelWriter实例
              EasyExcel.write(response.getOutputStream(), Student.class) //(输出流, 文件头)
                      .excelType(ExcelTypeEnum.XLSX)
                      .autoCloseStream(true)
                      .sheet("学生名单") //第一个sheet的名
                      .doWrite(list); //写入数据
        }
          @PostMapping("/readStudentExcel")
          public R readStudentExcel(@RequestParam("file") MultipartFile file){
              try {
                  InputStream inputStream=file.getInputStream();
                  System.out.println(file.getOriginalFilename());
                  EasyExcel.read(inputStream,Student.class, new EasyExcelListener<Student>(studentService))
                          // 设置sheet,默认读取第一个
                          .sheet()
                          .doReadSync();
                  return R.success();
              }catch (Exception e){
                  e.printStackTrace();
                  return R.failure();
              }
          }
          @PostMapping("/readTeacherExcel")
          public R readTeacherExcel(@RequestParam("file") MultipartFile file){
              try {
                  InputStream inputStream=file.getInputStream();
                  System.out.println(file.getOriginalFilename());
                  EasyExcel.read(inputStream,Teacher.class, new EasyExcelListener<Teacher>(teacherService))
                          // 设置sheet,默认读取第一个
                          .sheet()
                          .doReadSync();
                  return R.success();
              }catch (Exception e){
                  e.printStackTrace();
                  return R.failure();
              }
          }
          /*导出老师信息列表*/
          @GetMapping("/exportTeacherExcel")
          @ResponseBody
          public void exportTeacherExcel(@RequestParam("ids") Integer[] ids, HttpServletResponse response) throws Exception{
              //文件名含中文需要转码
              String fileName =
                      URLEncoder.encode( "老师列表.xlsx", StandardCharsets.UTF_8.toString());
              //将需要导出的数据从数据库中查出
              List<Teacher> list = teacherService.getAllTeachers(ids);
              //设置响应格式
              response.setContentType("application/vnd.ms-excel;chartset=utf-8"); //文件扩展名为excel格式
              response.setHeader("Content-Disposition", "attachment;filename=" + fileName); //触发文件名为filename的“另存为”对话框
              // 内容样式
              HorizontalCellStyleStrategy horizontalCellStyleStrategy = ContentStyle.getContentStyle();
              //将OutputStream对象附着到EasyExcel的ExcelWriter实例
              EasyExcel.write(response.getOutputStream(), Teacher.class) //(输出流, 文件头)
                      .excelType(ExcelTypeEnum.XLSX)
                      .autoCloseStream(true)
                      .sheet("老师名单") //第一个sheet的名
                      .doWrite(list); //写入数据
          }
      }

      image.gif

      package com.zhiku.yiqing.web.admin;
      import com.baomidou.mybatisplus.core.metadata.IPage;
      import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
      import com.zhiku.yiqing.common.R;
      import com.zhiku.yiqing.pojo.Health;
      import com.zhiku.yiqing.pojo.Teacher;
      import com.zhiku.yiqing.service.HealthService;
      import com.zhiku.yiqing.service.TeacherService;
      import com.zhiku.yiqing.vo.HealthQueryParamsVo;
      import com.zhiku.yiqing.vo.UserQueryParamsVo;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.web.bind.annotation.*;
      import java.util.Arrays;
      @RestController
      @RequestMapping("/health")
      public class HealthController {
          @Autowired
          private HealthService healthService;
          @DeleteMapping("/batchDelTeacherHealthById/{ids}")
          public R batchDelTeacherHealthById(@PathVariable("ids") Integer[] ids){
              System.out.println(Arrays.toString(ids));
              healthService.batchDelTeacherHealthById(ids);
              return R.success();
          }
          /**
           * 根据id删除teacher
           * @param id
           * @return
           */
          @DeleteMapping("/delTeacherHealthById/{id}")
          public R delTeacherHealthById( @PathVariable(value = "id" ) Integer id){
              healthService.delTeacherHealthById(id);
              return R.success();
          }
          /**
           * 上报省防疫办
           * @param id
           * @return
           */
          @PutMapping("/reportedTeacherHealthById/{id}")
          public R reportedTeacherHealthById(@PathVariable(value = "id" ) Integer id){
              System.out.println(id);
              healthService.reportedTeacherHealthById(id);
              return R.success();
          }
          /**
           * 查询所有的健康列表带分页以及条件查询
           * @param pageNo
           * @param pageSize
           * @param queryParamsVo
           * @return
           */
          @GetMapping("/queryAllTeacherHealth/{pageNo}/{pageSize}/{remark}")
          public R queryAllTeacher(
                  @PathVariable(value = "pageNo" ) Integer pageNo,
                  @PathVariable(value = "pageSize") Integer pageSize,
                  @PathVariable(value = "remark") Integer remark,
                  HealthQueryParamsVo queryParamsVo){
              Page<Health> page = new Page<>(pageNo, pageSize);
              IPage<Health> healthIPage = healthService.queryAllTeacherHealth(page,queryParamsVo,remark);
              return R.success(healthIPage);
          }
      }

      image.gif

      package com.zhiku.yiqing.web.admin;
      import com.baomidou.mybatisplus.core.metadata.IPage;
      import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
      import com.zhiku.yiqing.common.R;
      import com.zhiku.yiqing.pojo.Student;
      import com.zhiku.yiqing.service.StudentService;
      import com.zhiku.yiqing.vo.UserQueryParamsVo;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.web.bind.annotation.*;
      import java.util.Arrays;
      @RestController
      @RequestMapping("/student")
      public class StudentController {
          @Autowired
          private StudentService studentService;
          @DeleteMapping("/batchDelStudentById/{ids}")
          public R batchDelStudentById(@PathVariable("ids") Integer[] ids){
              System.out.println(Arrays.toString(ids));
              studentService.batchDelStudentById(ids);
              return R.success();
          }
          /**
           * 根据id删除teacher
           * @param id
           * @return
           */
          @DeleteMapping("/delStudentById/{id}")
          public R delStudentById( @PathVariable(value = "id" ) Integer id){
              studentService.delStudentById(id);
              return R.success();
          }
          /**
           * 重置老师的密码
           * @param id
           * @return
           */
          @PutMapping("/updateStudentById/{id}")
          public R updateStudentById(@PathVariable(value = "id" ) Integer id){
              studentService.updateStudentById(id);
              return R.success();
          }
          /**
           * 添加teacher
           * @param student
           * @return
           */
          @PostMapping("/addStudent")
          public R addStudent(@RequestBody Student student){
              studentService.addStudent(student);
              return R.success();
          }
          /**
           * 查询所有的teacher带分页以及条件查询
           * @param pageNo
           * @param pageSize
           * @param queryParamsVo
           * @return
           */
          @GetMapping("/queryAllStudent/{pageNo}/{pageSize}")
          public R queryAllTeacher(
                  @PathVariable(value = "pageNo" ) Integer pageNo,
                  @PathVariable(value = "pageSize") Integer pageSize,
                  UserQueryParamsVo queryParamsVo){
              System.out.println("queryParamsVo: " + queryParamsVo);
              Page<Student> page = new Page<>(pageNo, pageSize);
              IPage<Student> Teacher = studentService.queryAllTeacher(page,queryParamsVo);
              return R.success(Teacher);
          }
      }

      image.gif

      package com.zhiku.yiqing.web.admin;
      import com.baomidou.mybatisplus.core.metadata.IPage;
      import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
      import com.zhiku.yiqing.common.R;
      import com.zhiku.yiqing.pojo.Teacher;
      import com.zhiku.yiqing.service.TeacherService;
      import com.zhiku.yiqing.vo.NewsQueryParamsVo;
      import com.zhiku.yiqing.vo.UserQueryParamsVo;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.web.bind.annotation.*;
      import java.util.Arrays;
      @RestController
      @RequestMapping("/teacher")
      public class TeacherController {
          @Autowired
          private TeacherService teacherService;
          @DeleteMapping("/batchDelTeacherById/{ids}")
          public R batchDelTeacherById(@PathVariable("ids") Integer[] ids){
              System.out.println(Arrays.toString(ids));
              teacherService.batchDelTeacherById(ids);
              return R.success();
          }
          /**
           * 根据id删除teacher
           * @param id
           * @return
           */
          @DeleteMapping("/delTeacherById/{id}")
          public R delTeacherById( @PathVariable(value = "id" ) Integer id){
              teacherService.delTeacherById(id);
              return R.success();
          }
          /**
           * 重置老师的密码
           * @param id
           * @return
           */
          @PutMapping("/updateTeacherById/{id}")
          public R updateTeacherById(@PathVariable(value = "id" ) Integer id){
              teacherService.updateTeacherById(id);
              return R.success();
          }
          /**
           * 添加teacher
           * @param teacher
           * @return
           */
          @PostMapping("/addTeacher")
          public R addTeacher(@RequestBody Teacher teacher){
              teacherService.addTeacher(teacher);
              return R.success();
          }
          /**
           * 查询所有的teacher带分页以及条件查询
           * @param pageNo
           * @param pageSize
           * @param queryParamsVo
           * @return
           */
          @GetMapping("/queryAllTeacher/{pageNo}/{pageSize}")
          public R queryAllTeacher(
                  @PathVariable(value = "pageNo" ) Integer pageNo,
                  @PathVariable(value = "pageSize") Integer pageSize,
                  UserQueryParamsVo queryParamsVo){
              System.out.println("queryParamsVo: " + queryParamsVo);
              Page<Teacher> page = new Page<>(pageNo, pageSize);
              IPage<Teacher> Teacher = teacherService.queryAllTeacher(page,queryParamsVo);
              return R.success(Teacher);
          }
      }

      image.gif

      五,项目总结

      基于Springboot实现疫情数据管理系统主要基于Springboot框架开发实现,。前端采用了Bootstrap框架技术实现了较为友好的用户体验和交互效果,整体采用B/S架构、三层结构,并使用了MYSQL数据库进行了数据存储。这些技术在学校都有接触和学习,为了进一步的掌握这些技术。为此我也进行了基于Springboot实现疫情数据管理系统相关知识学习和巩固,在开发技术进行了相应储备,应该来讲从技术方面来看,本系统的开发技术的可行性是没有问题的。

      相关文章
      |
      1月前
      |
      XML Java 数据库连接
      SpringBoot集成Flowable:打造强大的工作流管理系统
      在企业级应用开发中,工作流管理是一个核心组件,它能够帮助我们定义、执行和管理业务流程。Flowable是一个开源的工作流和业务流程管理(BPM)平台,它提供了强大的工作流引擎和建模工具。结合SpringBoot,我们可以快速构建一个高效、灵活的工作流管理系统。本文将探讨如何将Flowable集成到SpringBoot应用中,并展示其强大的功能。
      138 1
      |
      1月前
      |
      JavaScript Java 项目管理
      Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
      基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
      |
      2月前
      |
      存储 安全 Java
      打造智能合同管理系统:SpringBoot与电子签章的完美融合
      【10月更文挑战第7天】 在数字化转型的浪潮中,电子合同管理系统因其高效、环保和安全的特点,正逐渐成为企业合同管理的新宠。本文将分享如何利用SpringBoot框架实现一个集电子文件签字与合同管理于一体的智能系统,探索技术如何助力合同管理的现代化。
      102 4
      |
      2月前
      |
      前端开发 Java Apache
      SpringBoot实现电子文件签字+合同系统!
      【10月更文挑战第15天】 在现代企业运营中,合同管理和电子文件签字成为了日常活动中不可或缺的一部分。随着技术的发展,电子合同系统因其高效性、安全性和环保性,逐渐取代了传统的纸质合同。本文将详细介绍如何使用SpringBoot框架实现一个电子文件签字和合同管理系统。
      95 1
      |
      2月前
      |
      文字识别 安全 Java
      SpringBoot3.x和OCR构建车牌识别系统
      本文介绍了一个基于Java SpringBoot3.x框架的车牌识别系统,详细阐述了系统的设计目标、需求分析及其实现过程。利用Tesseract OCR库和OpenCV库,实现了车牌图片的识别与处理,确保系统的高准确性和稳定性。文中还提供了具体的代码示例,展示了如何构建和优化车牌识别服务,以及如何处理特殊和异常车牌。通过实际应用案例,帮助读者理解和应用这一解决方案。
      |
      3月前
      |
      前端开发 JavaScript Java
      基于Java+Springboot+Vue开发的大学竞赛报名管理系统
      基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
      232 3
      基于Java+Springboot+Vue开发的大学竞赛报名管理系统
      |
      3月前
      |
      前端开发 JavaScript Java
      基于Java+Springboot+Vue开发的蛋糕商城管理系统
      基于Java+Springboot+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的蛋糕商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
      177 3
      基于Java+Springboot+Vue开发的蛋糕商城管理系统
      |
      3月前
      |
      前端开发 JavaScript Java
      基于Java+Springboot+Vue开发的美容预约管理系统
      基于Java+Springboot+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的美容预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
      59 3
      基于Java+Springboot+Vue开发的美容预约管理系统
      |
      1月前
      |
      JavaScript NoSQL Java
      CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
      CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
      39 0
      |
      2月前
      |
      机器学习/深度学习 移动开发 自然语言处理
      基于人工智能技术的智能导诊系统源码,SpringBoot作为后端服务的框架,提供快速开发,自动配置和生产级特性
      当身体不适却不知该挂哪个科室时,智能导诊系统应运而生。患者只需选择不适部位和症状,系统即可迅速推荐正确科室,避免排错队浪费时间。该系统基于SpringBoot、Redis、MyBatis Plus等技术架构,支持多渠道接入,具备自然语言理解和多输入方式,确保高效精准的导诊体验。无论是线上医疗平台还是大型医院,智能导诊系统均能有效优化就诊流程。