计算机Java项目|基于Springboot实现患者管理系统

 作者主页:编程指南针

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

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

文末获取源码 

项目编号:KS-032

一,项目简介

医院病患管理,Springboot+Thymeleaf+BootStrap+Mybatis,页面好看,功能完全.有登录权限拦截、忘记密码、发送邮件等功能。主要包含病患管理、信息统计、用户注册、用户登陆、病患联系等功能

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

三,系统展示

登陆

注册

首页

病患管理

个人信息管理

发邮件

四,核心代码展示

package com.liefox.config;import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** @Author znz* @Date 2021/4/19 下午 12:41**/
public class LoginHandlerInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//登录成功之后,应该有用户的sessionObject loginUser = request.getSession().getAttribute("loginUser");if (loginUser == null) {System.err.println("loginUserSession=>"+loginUser);request.setAttribute("msg", "没有权限,请登录");/*转发到登录页*/request.getRequestDispatcher("/tosign-in").forward(request, response);return false;} else {return true;}}
}
package com.liefox.config;import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;/*** @Author znz* @Date 2021/4/19 上午 9:44* 国际化**/
public class MyLocaleResolver implements LocaleResolver {//解析请求@Overridepublic Locale resolveLocale(HttpServletRequest httpServletRequest) {//获取请求中的语言参数String language = httpServletRequest.getParameter("l");Locale locale = Locale.getDefault();//如果没有就使用默认值//如果请求的链接携带了国际化的参数if (!StringUtils.isEmpty(language)) {//zh_CNString[] split = language.split("_");//国家地区locale = new Locale(split[0], split[1]);}return locale;}@Overridepublic void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {}
}

package com.liefox.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** @Author znz* @Date 2021/4/18 下午 2:40**/
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {@Overridepublic void addViewControllers(ViewControllerRegistry registry) {/*** 医生页* *//*欢迎页*/registry.addViewController("/").setViewName("doctor/sign-in");/*首页*/registry.addViewController("/index").setViewName("doctor/index");/*去登录*/registry.addViewController("/tosign-in").setViewName("doctor/sign-in");/*去注册*/registry.addViewController("/tosign-up").setViewName("doctor/sign-up");/*去忘记密码*/registry.addViewController("/torecoverpw").setViewName("doctor/pages-recoverpw");/*去修改个人信息*/registry.addViewController("/topro-edit").setViewName("doctor/main/profile-edit");/*去邮箱*/registry.addViewController("/toemail").setViewName("doctor/app/email-compose");/*去编辑病患表格*/registry.addViewController("/totable").setViewName("doctor/app/table-editable");/*去修改病患信息*/registry.addViewController("/toRePatientInfo").setViewName("doctor/app/rePatientInfo");/*去增加病患信息*/registry.addViewController("/toAddPatientInfo").setViewName("doctor/app/addPatientInfo");/*去群聊天*/registry.addViewController("/toChat").setViewName("doctor/main/chat");/*** 医生页* */}//自定义的国际化就生效了@Beanpublic LocaleResolver localeResolver() {return new MyLocaleResolver();}//配置登录拦截器@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginHandlerInterceptor())/*拦截*/.addPathPatterns("/**")/*放行*/.excludePathPatterns("/tosign-in", "/tosign-up", "/sign-in", "/sign-up", "/torecoverpw", "/recPwEmail", "/recPw", "/", "/css/**", "/js/**", "/images/**", "/app/**", "/fonts/**", "/fullcalendar/**");}}
package com.liefox.controller;import com.liefox.pojo.Patient;
import com.liefox.pojo.User;
import com.liefox.service.PatientService;
import com.sun.org.apache.xpath.internal.operations.Mod;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.UUID;/*** @Author znz* @Date 2021/4/21 下午 1:35**/
@Controller
public class PatientController {@Autowiredprivate PatientService patientService;@AutowiredJavaMailSenderImpl mailSender;/*获取全部病者信息*/@RequestMapping("/getPatientInfo")public String getPatientInfo(Model model) {List<Patient> patientInfo = patientService.getPatientInfo();model.addAttribute("patientInfos", patientInfo);return "doctor/app/table-editable";}/*删除病人信息根据UUID*/@RequestMapping("/delPatientInfoByUUID/{UUID}")public String delPatientInfoByUUID(@PathVariable("UUID") String UUID) {patientService.delPatientInfoByUUID(UUID);return "redirect:/getPatientInfo";}/*获取病人信息根据UUID*/@RequestMapping("/getPatientInfoByUUID/{UUID}")public String getPatientInfoByUUID(@PathVariable("UUID") String UUID, Model model) {Patient patientInfoByUUID = patientService.getPatientInfoByUUID(UUID);System.out.println(patientInfoByUUID);model.addAttribute("patientInfoByUUID", patientInfoByUUID);return "doctor/app/rePatientInfo";}/*更新病人信息根据UUID*/@RequestMapping("/upPatientInfoByUUID")public String upPatientInfoByEmail(Patient patient) {patientService.upPatientInfoByUUID(patient);return "redirect:/getPatientInfo";}/*去新增病患页*/@RequestMapping("/toAddPatientInfo")public String toAddPatientInfo(Model model) {String uuid = UUID.randomUUID().toString();model.addAttribute("uuid", uuid);return "doctor/app/addPatientInfo";}/*新增病患*/@RequestMapping("/addPatientInfo")public String addPatientInfo(Patient patient, Model model) {int i = patientService.addPatientInfo(patient);model.addAttribute("msg", "添加成功!");return "redirect:/getPatientInfo";}/*去发邮件页面*/@RequestMapping("/toEmail/{Email}")public String toEmail(@PathVariable("Email") String Email, Model model) {model.addAttribute("PatientEmail", Email);return "doctor/app/email-compose";}/*发邮件给病者*/@RequestMapping("/sentEmail")public String recPwEmail(String ToEmail, String CcEmail, String subject, String Message,HttpSession session, Model model) {try {//邮件设置SimpleMailMessage message = new SimpleMailMessage();//主题message.setSubject(subject);//内容message.setText(Message);//收件人message.setTo(ToEmail);//发件人message.setFrom(CcEmail);//发送mailSender.send(message);model.addAttribute("info", "邮件发送成功!");return "doctor/app/email-compose";} catch (Exception e) {model.addAttribute("info", "邮箱地址不正确!");return "doctor/app/email-compose";}}}
package com.liefox.controller;import com.liefox.pojo.Patient;
import com.liefox.pojo.User;
import com.liefox.service.PatientService;
import com.liefox.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpSession;
import java.util.List;/*** @Author znz* @Date 2021/4/18 下午 5:30**/
@Controller
public class UserController {@Autowiredprivate UserService userService;@AutowiredJavaMailSenderImpl mailSender;@Autowiredprivate PatientService patientService;/*** 生成6位随机数验证码*/public static int randomCode() {return (int) ((Math.random() * 9 + 1) * 100000);}/*** i:验证码*/static int i = randomCode();/*注册*/@PostMapping("/sign-up")public String signup(User user, Model model) {try {int i = userService.Signup(user);if (i != 0) {System.out.println(user + "=》注册成功");model.addAttribute("msg", "注册成功!");return "/doctor/sign-in";}} catch (Exception e) {System.err.println(user + "=>注册失败");model.addAttribute("msg", "该邮箱已注册!");return "/doctor/sign-up";}return null;}/*登录*/@RequestMapping("/sign-in")public String signin(User user, Model model, HttpSession session, String Email) {User signin = userService.Signin(user);User userInfo = userService.getUserInfo(Email);System.out.println(userInfo + "用户信息");String userName = userService.getUserName(user.getEmail(), user.getPassword());if (signin != null) {/*用户信息*/session.setAttribute("UserInfo", userInfo);/*登录拦截*/session.setAttribute("loginUser", userName);/*获取病人病情信息*/List<Patient> patientInfo = patientService.getPatientInfo();long count = patientInfo.stream().count();model.addAttribute("patientInfos",patientInfo);model.addAttribute("count",count);/*获取医生信息*/List<User> userinfo = userService.getUser();model.addAttribute("userInfos",userinfo);/**/session.setAttribute("Email", Email);System.out.println(user + "=》登录成功");return "/doctor/index";} else {System.err.println(user + "=》登录失败");model.addAttribute("msg", "邮箱地址或密码错误!");return "/doctor/sign-in";}}/*去首页*/@RequestMapping("/toindex")public String toindex(Model model){/*获取病人病情信息*/List<Patient> patientInfo = patientService.getPatientInfo();model.addAttribute("patientInfos", patientInfo);long count = patientInfo.stream().count();model.addAttribute("count",count);/*获取医生信息*/List<User> user = userService.getUser();model.addAttribute("userInfos",user);return "/doctor/index";}/*注销*/@RequestMapping("/logout")public String logout(HttpSession session) {session.removeAttribute("loginUser");return "redirect:/sign-in.html";}/*忘记密码发邮件*/@RequestMapping("/recPwEmail")public String recPwEmail(String Email, HttpSession session, Model model) {System.out.println(Email + "发送了验证码");System.err.println(i);session.setAttribute("Email", Email);try {//邮件设置SimpleMailMessage message = new SimpleMailMessage();//主题message.setSubject("Shiqi-验证码");//内容-验证码message.setText(String.valueOf(i));//收件人message.setTo(Email);//发件人message.setFrom("2606097218@qq.com");//发送mailSender.send(message);model.addAttribute("info", "验证码发送成功!");return "/doctor/pages-recoverpw";} catch (Exception e) {System.err.println("cs");model.addAttribute("info", "邮箱地址不正确!");return "/doctor/pages-recoverpw";}}/*判断验证码正确,并重置密码*/@RequestMapping("/recPw")public String recPw(String Email, int token, String Password, Model model) {System.out.println(Email + "    重置密码为=》" + Password + "     输入的验证码为     " + i);if (token == i) {userService.recPw(Email, Password);model.addAttribute("info", "修改成功!");return "/doctor/sign-in";} else {model.addAttribute("error", "验证码错误!");return "/doctor/pages-recoverpw";}}/*查看个人信息页面*/@RequestMapping("/getUserInfo")public String getUserInfo() {return "/doctor/main/profile-edit";}/*修改个人信息*/@RequestMapping("/updateUserInfo")public String updateUserInfo(User user, Model model) {int i = userService.updateUserInfo(user);if (i != 0) {model.addAttribute("msg","下次登录生效!");return "/doctor/main/profile-edit";}else {System.err.println("111111111");model.addAttribute("msg","不修改就别乱点!");return "/doctor/main/profile-edit";}}/*修改密码*/@RequestMapping("/upPw")public String upPw(String Email,String Password,Model model){userService.upPw(Email, Password);model.addAttribute("info","修改成功!");return "doctor/sign-in";}}

五,项目总结

整个系统功能模块不是很多,但是系统选题立意新颖,功能简洁明了,个性功能鲜明突出,像邮件发送、图片报表展示和统计等,可以做毕业设计或课程设计使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/327133.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mathtype7.4安装与嵌入WPS

文章目录 Mathtype安装教程&#xff08;7.4&#xff09;Mathtype简介Mathtype下载安装软件下载软件安装运行MathType.exe运行注册表 Mathtype嵌入wps Mathtype安装教程&#xff08;7.4&#xff09; Mathtype简介 MathType是一款强大的数学公式编辑器&#xff0c;适用于教育教…

计算机毕业设计-----SSM宠物商城带后台管理系统

项目介绍 该项目为前后台项目&#xff0c;分为普通用户与管理员两种角色&#xff0c;前台普通用户登录&#xff0c;后台管理员登录&#xff1b; 用户角色包含以下功能&#xff1a; 加入购物车,发表留言,提交订单,查看订单信息,会员注册,登录页面等功能。 管理员角色包含以下…

Transformer模型中前置Norm与后置Norm的区别

主要介绍原始Transformer和Vision Transformer中的Norm层不同位置的区别。 文章目录 前言 不同位置的作用 总结 前言 在讨论Transformer模型和Vision Transformer (ViT)模型中归一化层位置的不同&#xff0c;我们首先需要理解归一化层&#xff08;Normalization&#xff09;在…

AIGC学习笔记(1)——AI大模型提示词工程师

文章目录 AI大模型提示词工程师1 Prompt工程之原理1.1 AIGC的发展和产业前景前言AIGC时代的到来发展趋势和应用展望 1.2 大模型的类型和特点大模型的对比上手特点 1.3 大模型技术原理和发展成语接龙和暴力穷举ChatGPT如何理解人类语言如何存储数据图像存储电脑存数字如何让电脑…

echarts 仪表盘进度条 相关配置

option {series: [{type: gauge,min: 0,//最大值max: 100, //最小值startAngle: 200,//仪表盘起始角度。圆心 正右手侧为0度&#xff0c;正上方为90度&#xff0c;正左手侧为180度。endAngle: -20,//仪表盘结束角度splitNumber: 100, //仪表盘刻度的分割段数itemStyle: {color…

虾皮怎么选品:虾皮(Shopee)跨境电商业务成功的关键步骤

在虾皮&#xff08;Shopee&#xff09;平台上进行跨境电商业务&#xff0c;选品是至关重要的一环。有效的选品策略可以帮助卖家更好地了解市场需求&#xff0c;提高销售业绩和客户满意度。以下是一些成功的选品策略&#xff0c;可以帮助卖家在虾皮平台上取得更好的业务成绩。 先…

算法训练day60|单调栈part0

参考&#xff1a;代码随想录 84.柱状图中最大的矩形 要求当前柱形的左右两边第一个比他小的位置 对于高度为5的柱子&#xff08;index为2&#xff09; mid 他的左边第一个比他小的柱子为1&#xff0c;index为1 left 他的右边第一个比他小的柱子高度为2&#xff0c;index为4…

【前端】[vue3] vue-router使用

提示&#xff1a;我这边用的是typeScript语法&#xff0c;所以js文件的后缀都是ts。 安装vue-router&#xff1a; &#xff08;注意&#xff1a;vue2引用vue-router3 vue3才引用vue-router4&#xff09; npm install vue-router4src文件夹下面创建 router/index.ts&#xff08;…

ES -极客学习

Elasticsearch 简介及其发展历史 起源 Lucene 于 Java 语言开发的搜索引擎库类创建于 1999 年&#xff0c;2005 年成为 Apache 顶级开源项目Lucene 具有高性能、易扩展的优点Lucene 的局限性 只能基于 Java 语言开发类库的接口学习曲线陡峭原生并不支持水平扩展原生并不支持水…

软件测试|SQL JOIN的用法,你会了吗?

SQL JOIN 是在关系型数据库中常用的操作&#xff0c;用于将两个或多个表中的数据合并起来&#xff0c;以满足查询需求。本文将介绍 SQL JOIN 的基本概念、不同类型的 JOIN&#xff0c;以及使用示例。 SQL JOIN 的概念 在关系型数据库中&#xff0c;数据通常分布在多个表中&am…

低代码开发会取代传统开发吗? 两者有什么区别 该如何选择

低代码开发技术在近几年逐渐被普及&#xff0c;帮助很大一部分开发者完成了复杂的工作。由于低代码开发方案入门门槛低且上手难度小&#xff0c;所以即使是非专业人士也可借助其便利性自主开发软件系统&#xff0c;整个开发过程几乎不需要专业程序员。久而久之就出现了一种声音…

基于JavaWeb+SSM+Vue四六级词汇微信小程序系统的设计和实现

基于JavaWebSSMVue四六级词汇微信小程序系统的设计和实现 源码获取入口KaiTi 报告Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 KaiTi 报告 &#xff08;1&#xff09;课题背景 伴随着社会的快速发展, 现代社…