博主主页:一点教程
博主简介:专注Java技术领域和毕业设计项目实战、Java微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。
主要内容:毕业设计,SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Python、Nodejs、小程序、安卓app、大数据等设计与开发感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以和博主沟通,希望帮助更多的人
🍅文末获取联系🍅
一、项目介绍
运用Java技术开发的一个疫情防控的管理系统。在开发过程中首先要对系统进行需求分析,分析出校园疫情防控系统的主要功能,再对系统结构进行整体设计和详细设计。整体设计主要有系统功能、系统总体结构、系统数据结构和系统安全等设计;过程的最后再对系统进行测试,并对测试结果进行分析和总结,为今后的系统维护提供了方便,同时也为今后类似系统的开发提供了参考和帮助。这种个性化的在线系统管理特别注重相互协调和管理合作,它激发了管理者的创造力和主动性,这对校园疫情防控系统来说非常有益。
二、系统主要技术
开发语言:Java
使用框架:spring boot
前端技术:Vue 、css、element-ui、js、html
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:jdk1.8
Maven: apache-maven 3.8.1-bin
三、系统结构设计
管理员模块属于是网站的后台,进入之后有大量的管理员功能,管理员也可以使用普通用户模块的功能,为了维护网站的稳定与页面的布局,将管理员模块的功能详细化后可以使用系统管理对页面进行布局修改,可以发布公告提示用户规范,用户功能模块可以对健康上报、到校确认、核酸上报、确诊上报、药品申请等功能进行操作,校园疫情防控系统主页结构图如图4-2所示。
四、部分功能展示
5.1 管理员功能模块
本系统后台分为管理员、老师两个角色,进入管理员模块界面管理相关信息与网页信息时,需要输入管理员的账户名与密码,登录成功后,会自动跳转管理员模块界面。提高了数据信息的安全性。管理员登录界面如图5-1所示。
图5-1系统登录界面图
管理员进入系统后台后,可以对个人中心、管理员管理、老师管理、用户管理、健康上报管理、到校确认管理、论坛管理、公告管理、核酸上报管理、疫情知识信息管理、确诊上报管理、药品管理、基础数据管理、轮播图信息等功能模块进行管理。管理员功能界面图如图5-2所示。
图5-2管理员功能界面图
点击管理员管理进入管理员管理操作页面,管理员可以对已有的管理员信息进行修改、删除的操作,管理员还可以在线新增管理员信息。管理员管理界面如图5-3所示。
图5-3用户管理界面图
进入老师管理和用户管理模块界面后,管理员可以浏览系统已有的老师信息和用户信息,并进行修改、删除、重置密码的操作,管理员还可以根据需求新增老师信息和用户信息。老师管理及用户管理界面如下图所示。
图5-4老师管理界面图
图5-5用户管理界面图
进入系统的健康上报管理模块界面后,可以查看用户提交的健康上报详情,并根据需求进行修改、删除的操作。管理员还可以根据需求新增健康上班信息,健康上报管理模块界面图如下图所示:
图5-6健康上报管理界面图
在到校确认管理页面,管理员可以查看到校确认详情,根据需求进行修改、删除信息的操作。管理员还可以新增到校确认信息,其页面如下图所示。
图5-7到校确认管理界面图
进入论坛管理页面,管理员可以查看身份、姓名、手机号、头像、帖子标题、发帖时间等论坛详情,并进行查看论坛回复、修改、删除帖子等操作,管理员还可以根据需求新增论坛信息,其页面图如图5-8所示。
图5-8论坛管理界面图
进入到公告管理页面,管理员可以对公告信息进行修改、删除或新增的操作。公告管理界面图如图5-9所示。
图5-9公告管理界面图
点击核酸上报管理,管理员可以查看用户提交的核酸上报详情,并进行下载核酸图片、修改、删除信息的操作。管理员还可以在线新增核酸上报信息,核酸上报管理界面图如图5-10所示。
图5-10核酸上报管理界面图
点击疫情知识信息管理,管理员可以查看已有的疫情知识信息详情,并进行修改、删除信息的操作。管理员还可以在线新增疫情知识信息,疫情知识信息管理界面图如图5-11所示。
图5-11疫情知识信息管理界面图
点击确诊上报管理,管理员可以查看已有的确诊上报详情,并进行修改、删除信息的操作。管理员还可以在线新增确诊上报信息、查看报表的操作,确诊上报管理界面图如图5-12所示。
图5-12确诊上报管理界面图
点击药品管理,管理员可以查看已有的药品信息,并进行修改、删除信息的操作。管理员还可以在线新增药品信息、管理药品订单管理,药品信息管理及药品订单管理界面图如下图所示。
图5-13药品管理界面图
图5-14药品订单管理界面图
点击基础数据管理,管理员可以对公告类型、疫情知识类型、药品类型进行新增、修改、删除的操作,其界面图如下图所示。
图5-15公告类型管理界面图
点击轮播图信息,管理员可以对轮播图信息进行新增、修改、删除的操作,其界面图如下图所示。
图5-16轮播图管理界面图
5.2老师功能模块
老师登录到系统后,可以对个人中心、健康上报管理、到校确认管理、论坛管理、公告管理、核酸上报管理、疫情知识信息管理、确诊上报管理、药品管理、轮播图信息等功能进行操作;老师可以修改个人信息和登录密码,查看健康上报、到校确认、公告信息、核酸上报、疫情知识信息、确诊上报、药品信息、轮播图信息等详情,老师功能页面如图5-17所示。
图5-17老师功能界面图
5.3前台功能模块
用户通过注册、登录到系统前台,可以浏览首页、查看对论坛、公告、疫情知识信息、药品、个人中心等功能进行操作。前台界面如下图所示:
图5-18前台界面图
在药品页面,用户可以查看药品详情,进行立即申请的操作,其页面如下图所示。
图5-19药品详情界面图
图5-20立即申请界面图
在个人中心页面,用户可以修改个人信息,进行健康上报、到校确认、核酸上报、确诊上报、管理药品订单等操作,个人中心页面如下图所示。
图5-21个人中心界面图
五、部分代码实现
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UsersController {
@Autowired
private UsersService usersService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
R r = R.ok();
r.put("token", token);
r.put("role",user.getRole());
r.put("userId",user.getId());
return r;
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
usersService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 修改密码
*/
@GetMapping(value = "/updatePassword")
public R updatePassword(String oldPassword, String newPassword, HttpServletRequest request) {
UsersEntity users = usersService.selectById((Integer)request.getSession().getAttribute("userId"));
if(newPassword == null){
return R.error("新密码不能为空") ;
}
if(!oldPassword.equals(users.getPassword())){
return R.error("原密码输入错误");
}
if(newPassword.equals(users.getPassword())){
return R.error("新密码不能和原密码一致") ;
}
users.setPassword(newPassword);
usersService.updateById(users);
return R.ok();
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
usersService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UsersEntity user){
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
PageUtils page = usersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UsersEntity user){
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", usersService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UsersEntity user = usersService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Integer id = (Integer)request.getSession().getAttribute("userId");
UsersEntity user = usersService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
usersService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
usersService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
List<UsersEntity> user = usersService.selectList(null);
if(user.size() > 1){
usersService.deleteBatchIds(Arrays.asList(ids));
}else{
return R.error("管理员最少保留一个");
}
return R.ok();
}
}