项目编号:BS-GX-040
2020年初发生的这场全球性新冠病毒,如今已经伴随我们2年有余了。回想两年来经过的这些事儿,历历在目。为了对抗这个让人谈之色变的病毒,全国上下一心,众志成城的共同抗疫,渡过了最危险的时候。但是病毒并没有消失,危险也时刻存在,我们并不能放松防疫的心弦,否则有可能功亏一溃,前功尽弃。
而对于这种新冠病毒,防大于治。所以最关键的就是及时发现疫情信息,在初期尽快的做好控制,以防止它的快速蔓延。因为现在这个病毒的变种传染性越来越强,国内采用动态清零的方式很快、很好的控制住了国内疫情的发展。并且目前正在帮助香港进行疫情防控。而如何有效的高效快速的管理疫情患者信息,是我们打赢这场战役的关键。信息化技术的应用,可以帮助我们构建疫情信息管理系统,帮助我们提升工作效率,管理效能,提升疫情信息的共享能力。
一,项目简介
最近根据客户需要新研发了一个项目,本项目基于Springboot+Vue开发实现了一个前后台均有的校园疫情防控管理系统,整个系统设计界面美观,功能全面,适合做毕业设计使用。
前端主要的功能:
- 用户注册登陆
- 疫情新闻查看
- 校务公开信息查看
- 系统通知通告查看
- 校园动态查看
- 媒体校园查看
- 个人中心管理:
老师:个人信息管理、健康信息上报、离校申请、我的请假查看
学生:个人信息管理、健康信息上报、请假审批
后台管理功能:
- 校内新闻管理
- 疫情新闻管理
- 首页公告管理
- 校务公开管理
- 用户管理:老师管理、学生管理
- 健康管理:老师健康管理、学生健康管理、确诊信息管理
- 请假管理
二,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
后台开发技术:Springboot+Mybatis-plus
前台开发技术:Vue+ElementUI+Bootstrap+Jquery+Ajax
三,系统展示
前端页面展示
编辑
新闻查看
编辑
详情查看
编辑
学生登陆系统:个人中心---个人信息查看
编辑
健康信息上报
编辑
请假管理之我的请假
编辑
请假管理之离校申请
编辑
老师登陆
编辑
请假审批
编辑
系统后台管理
编辑
统计信息
编辑
系统管理之新闻管理
编辑
系统管理之疫情新闻
编辑
系统管理之公告管理
编辑
系统管理之校务公开管理
编辑
用户管理之老师管理
编辑
用户管理之学生管理
编辑
健康管理之老师健康管理
编辑
健康管理之学生健康管理
编辑
健康管理之确诊信息管理
编辑
请假管理
编辑
四,核心代码展示
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); } }
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); //写入数据 } }
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); } }
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); } }
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); } }
五,项目总结
基于Springboot实现疫情数据管理系统主要基于Springboot框架开发实现,。前端采用了Bootstrap框架技术实现了较为友好的用户体验和交互效果,整体采用B/S架构、三层结构,并使用了MYSQL数据库进行了数据存储。这些技术在学校都有接触和学习,为了进一步的掌握这些技术。为此我也进行了基于Springboot实现疫情数据管理系统相关知识学习和巩固,在开发技术进行了相应储备,应该来讲从技术方面来看,本系统的开发技术的可行性是没有问题的。