首页 > 数据库 >Java毕设项目案例实战II基于Java+SSM+Mysql的医院预约挂号系统(开发文档+数据库+源码)

Java毕设项目案例实战II基于Java+SSM+Mysql的医院预约挂号系统(开发文档+数据库+源码)

时间:2024-11-23 23:32:35浏览次数:7  
标签:Java org return SSM 源码 user new import public

目录

一、前言

二、技术介绍

三、系统实现

四、核心代码

五、源码获取


全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。

一、前言

在当今快节奏的社会中,医疗服务的高效性和便捷性成为了人们日益关注的焦点。特别是在医院环境中,传统的挂号方式往往导致患者长时间排队等待,不仅浪费了宝贵的时间,还增加了交叉感染的风险。为了应对这一挑战,我们决定设计和实现一个基于Java、SSM(Spring+Spring MVC+MyBatis)框架和Mysql数据库的医院预约挂号系统。

该系统旨在通过线上预约的方式,简化挂号流程,减少患者等待时间,提升医院的服务效率。通过该系统,患者可以方便地查看医生排班情况,选择适合自己的时间段进行预约挂号,从而有效避免现场排队的困扰。同时,医院管理人员也可以通过系统实时监控挂号情况,优化资源分配,提高服务质量。

我们相信,通过这一创新性的医院预约挂号系统,将为广大患者带来更加便捷、高效的医疗服务体验,同时也为医院的现代化管理提供有力支持。

二、技术介绍

语言:Java
使用框架:Spring Boot
前端技术:JS、Vue 、css3
开发工具:IDEA/Eclipse
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:jdk1.8
Maven: apache-maven 3.8.1-bin
前端环境:Node.Js 12\14\16

三、系统实现

前台首页功能模块
医院预约挂号系统,在前台首页功能可以查看首页、科室信息、出诊信息、公告信息、我的、跳转到后台等内容

 用户注册、用户登录,通过注册填写用户名、密码、姓名、联系电话、身份证等信息进行注册、登录操作

个人中心,在个人中心页面可以查看用户名、密码、姓名、性别、头像、联系电话、身份证等信息进行上传图片、更新信息、退出登录等操作 

 出诊信息,在出诊信息页面可以查看医生工号、医生姓名、职称、照片、科室、擅长、出诊时间、可约人数、挂号费等信息进行预约、点我收藏等操作

管理员功能模块
管理员登录,通过填写用户名、密码、角色等信息,输入完成后选择登录即可进入医院预约挂号系统

 管理员登录进入医院预约挂号系统可以查看个人中心、用户管理、科室信息管理、医生管理、出诊信息管理、预约时间段管理、挂号预约管理、问题反馈管理、问题解答管理、系统管理等信息。

 用户管理,在用户管理页面可以查看用户名、姓名、性别、头像、联系电话、身份证等信息进行修改、删除、查看等操作

 科室信息管理,在科室信息管理页面可以查看科室、图片、科室介绍、科室位置等信息进行修改、删除、查看等操作

医生功能模块
出诊信息管理,在出诊信息管理页面通过填写医生工号、医生姓名、职称、照片、科室、擅长、出诊时间、可约人数、挂号费等信息进行查看、修改、删除等操作

 挂号预约管理,在挂号预约管理页面可以查看医生工号、医生姓名、照片、职称、科室、挂号费、出诊时间、时间段、就诊描述、体温、健康码、用户名、姓名、身份证、是否审核、审核回复、是否支付等信息进行审核、查看等操作

 问题反馈管理,在问题反馈管理页面可以查看医生工号、医生姓名、职称、科室、出诊时间、时间段、问题反馈、反馈时间、用户名、姓名、是否审核、审核回复等信息进行审核、解答、查看等操作

用户功能模块
个人中心,在个人中心页面通过填写用户名、密码、姓名、性别、头像、联系电话、身份证等信息进行选择文件或提交操作

 挂号预约管理,在挂号预约管理页面可以查看医生工号、医生姓名、照片、职称、科室、挂号费、出诊时间、时间段、就诊描述、体温、健康码、用户名、姓名、身份证、是否审核、审核回复、是否支付等信息进行提问、查看、修改、删除等操作

 问题反馈管理,在问题反馈管理页面可以查看医生工号、医生姓名、职称、科室、出诊时间、时间段、问题反馈、反馈时间、用户名、姓名、是否审核、审核回复等信息进行查看、修改、删除等操作

 问题解答管理,在问题解答管理页面可以查看医生工号、医生姓名、职称、科室、问题解答、解答时间、用户名、姓名等信息进行查看等操作

 我的收藏管理,在我的收藏管理页面可以查看用户名id、收藏id、表名、收藏名称、收藏图片等信息进行查看、删除等操作

四、核心代码

1、登录模块

 
package com.controller;
 
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

2、文件上传模块

package com.controller;
 
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
 
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;
 
/**
 * 上传文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
	@Autowired
    private ConfigService configService;
	/**
	 * 上传文件
	 */
	@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
		if (file.isEmpty()) {
			throw new EIException("上传文件不能为空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File path = new File(ResourceUtils.getURL("classpath:static").getPath());
		if(!path.exists()) {
		    path = new File("");
		}
		File upload = new File(path.getAbsolutePath(),"/upload/");
		if(!upload.exists()) {
		    upload.mkdirs();
		}
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(upload.getAbsolutePath()+"/"+fileName);
		file.transferTo(dest);
		FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) {
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}
	
	/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity<byte[]> download(@RequestParam String fileName) {
		try {
			File path = new File(ResourceUtils.getURL("classpath:static").getPath());
			if(!path.exists()) {
			    path = new File("");
			}
			File upload = new File(path.getAbsolutePath(),"/upload/");
			if(!upload.exists()) {
			    upload.mkdirs();
			}
			File file = new File(upload.getAbsolutePath()+"/"+fileName);
			if(file.exists()){
				/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
					getResponse().sendError(403);
				}*/
				HttpHeaders headers = new HttpHeaders();
			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
			    headers.setContentDispositionFormData("attachment", fileName);    
			    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
	}
	
}

3、代码封装

package com.utils;
 
import java.util.HashMap;
import java.util.Map;
 
/**
 * 返回数据
 */
public class R extends HashMap<String, Object> {
	private static final long serialVersionUID = 1L;
	
	public R() {
		put("code", 0);
	}
	
	public static R error() {
		return error(500, "未知异常,请联系管理员");
	}
	
	public static R error(String msg) {
		return error(500, msg);
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}
 
	public static R ok(String msg) {
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map<String, Object> map) {
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
		return new R();
	}
 
	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
}

五、源码获取

 感谢大家点赞、收藏、关注、评论啦、

标签:Java,org,return,SSM,源码,user,new,import,public
From: https://blog.csdn.net/Seapostmoon/article/details/143985095

相关文章

  • ssm毕设音乐管理程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今数字化时代,音乐产业蓬勃发展,音乐资源数量呈爆炸式增长。随着各类音乐平台的兴起,大量音乐作品、音乐相关信息以及众多音乐用户涌入这个庞大......
  • ssm毕设移动端农副产品销售平台程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着移动互联网技术的飞速发展,智能手机的广泛普及,人们的消费习惯逐渐向移动端转移。在农副产品领域,传统的销售模式面临着诸多挑战,例如销售渠道有......
  • LeetCode:1207.独一无二的出现次数——Java哈希表
    目录1.题目如下: 2.题目解析:3.暴力解法:4.复杂度分析:1.题目如下: 给你一个整数数组 arr,如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例1:输入:arr=[1,2,2,1,1,3]输出:true解释:在该数组中,1出现了3次,2出现了2次,3只出现了1次。没......
  • [Javascript] Lazy Overriding
    Let'sseethefollowingcodefunctioncopyText(text){if(navigator.clipboard){navigator.clipboard.writeText(text);}else{constinput=document.createElement('input');input.setAttribute('value',text);......
  • 基于SpringBoot+Vue的失物招领平台管理系统设计与实现毕设(文档+源码)
    目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、源码获取:         大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是一款基于SpringBoot+Vue的失物招领平台管理系统,项目源码请点击文章末尾联系我哦~目前有各类成品毕设JavaW......
  • 基于SpringBoot+Vue的社区团购管理系统设计与实现毕设(文档+源码)
    目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、源码获取:         大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是一款基于SpringBoot+Vue的社区团购管理系统,项目源码请点击文章末尾联系我哦~目前有各类成品毕设JavaWeb......
  • JAVA开源项目 基于Vue和SpringBoot高校心理教育辅导系统
    本文项目编号T031,文末自助获取源码\color{red}{T031,文末自助获取源码}......
  • JAVA开源项目 基于Vue和SpringBoot母婴商城系统
    本文项目编号T030,文末自助获取源码\color{red}{T030,文末自助获取源码}......
  • 计算机毕业设计 | SpringBoot+vue线上服装商城 在线购物平台(附源码+论文)
    1,绪论1.1课题背景信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式......
  • 计算机毕业设计 | SpringBoot+vue线上家具商城 家居商品购买系统(附源码+论文)
    1,绪论1.1选题动因当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛运用,以及各种计算机硬件的完善和升级,市面上的电脑和笔记本的性能都得到提升,可以支持的软件也逐渐增......