项目编号:BS-YL-010

基于SSM的医院在线预约挂号平台。前端使用layui框架。分为管理员、医生、患者三个角色,功能完善。适合练习java web开发,也可以用作课程设计和毕业设计。

运行环境

jdk8+tomcat9+mysql+IntelliJ IDEA+maven

项目技术(必填)

spring+spring mvc+mybatis+layui+jquery

下面展示一下系统的部分功能:

管理员登陆

我的面板: 主要包含个人信息查看、修改密码、登陆日志

医生管理

患者管理

公告管理

科室管理

用户注册

患者登陆

查看我的预约

患者信息管理

预约医师

医生登陆

查看预约患者

接诊管理

添加诊断病历

病历管理

个人信息管理

查看医院公告

package com.zhang.hospital.service;import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zhang.hospital.dao.AdminDao;
import com.zhang.hospital.dao.MenuDao;
import com.zhang.hospital.dao.RoleDao;
import com.zhang.hospital.dao.RoleMenuDao;
import com.zhang.hospital.entity.*;
import com.zhang.hospital.util.EncryptUtil;
import com.zhang.hospital.util.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.text.ParseException;
import java.util.*;@Service
@Transactional
public class AdminServiceImpl implements AdminService
{@Autowiredprivate AdminDao adminDao;@Autowiredprivate RoleMenuDao roleMenuDao;@Autowiredprivate MenuDao menuDao;@Autowiredprivate RoleDao roleDao;//登录@Overridepublic Admin login(String username, String password) {return adminDao.login(username,password);}//记录登录记录@Overridepublic void insAdminLog(String username, String loginIp, Date loginTime,Date logoutTime,Integer isSafeExit){adminDao.insAdminLog(username,loginIp,loginTime,logoutTime,isSafeExit);}//根据id查询admin@Overridepublic Admin getAdminById(Integer id) {return adminDao.getAdminById(id);}//*******Menu相关的一些***//@Overridepublic List<Menu> getMenus(Admin admin) {List<Menu> menuList=new ArrayList<>();Long roleId=admin.getRoleId();List<RoleMenu> roleMenus=roleMenuDao.selMenusByRoleId(roleId);//rolemenu里面就是一个中间表 将两个字段 roleId、 menuId 关联起来if(roleMenus!=null&&roleMenus.size()>0){List<Menu> noChildrenMenus=new ArrayList<>();for(int i=0;i<roleMenus.size();i++){Menu menu=menuDao.getMenuById(roleMenus.get(i).getMenuId()); //获取rolemenu中的menuIdnoChildrenMenus.add(menu); //就是根据这个登陆者的roleid 所拥有的菜单取出来}for(int i=0;i<noChildrenMenus.size();i++){if(noChildrenMenus.get(i).getParentId()==0)//说明这个菜单是一级菜单 没有上一级菜单//如果这里不为0 表示这个菜单是二级菜单 或者三级菜单 ParentId对应了属于哪个上级菜单{Menu menu=new Menu();menu=noChildrenMenus.get(i); //把这个一级菜单取出来List<Menu> menus=new ArrayList<>();for(int j=0;j<noChildrenMenus.size();j++) //把所有菜单过一遍{//如果有菜单属于这个一级菜单if(noChildrenMenus.get(j).getParentId()==noChildrenMenus.get(i).getMenuId()){Menu menu2=new Menu();menu2=noChildrenMenus.get(j);//取出这个二级菜单menus.add(menu2);}}menu.setChildren(menus); //存放了属于这个一级菜单的所有二级菜单menuList.add(menu);//存放了所有的一级菜单和其对应的所有二级菜单}}}//下面是根据menu的sorting进行排序 升序排列 这样左侧菜单就会按照升序排列Collections.sort(menuList, new Comparator<Menu>() {@Overridepublic int compare(Menu o1, Menu o2) {return o1.getSorting().compareTo(o2.getSorting());}});return menuList;}@Overridepublic ResultUtil getAdminList(Integer page, Integer limit){//mybatis分页插件PageHelper.startPage(page,limit); //默认传过来的是1 和10//在需要进行分页的Mybatis方法前调用PageHelper.startPage静态方法即可,// 紧跟在这个方法后的第一个Mybatis查询方法会被进行分页。List<Admin> admins=adminDao.getAdminsList();//底层的sql语句是select * from admin  order by id//这里因为是sqlserver2012的新特性 分页查询的时候 必须要加上 order by//  前面有startPage 自动加上了分页查询的语句// Tomcat Localhost Log 会输出错误信息for(Admin admin:admins){List<Role> roles=roleDao.selRoles();//取出所有的角色for(Role role:roles){if(role.getRoleId()==admin.getRoleId()){admin.setRoleName(role.getRoleName());//这里查出管理员中的roleID然后设置下roleName}}}PageInfo<Admin> pageInfo=new PageInfo<Admin>(admins);ResultUtil resultUtil=new ResultUtil();resultUtil.setCode(0);//前段接收为0 代表成功resultUtil.setCount(pageInfo.getTotal());//代表数据库中总条数resultUtil.setData(pageInfo.getList()); //根据上面startPage设置的第几页 每页多少条 查询出的数据return resultUtil;}@Overridepublic List<Role> getRoles() {return roleDao.selRoles();}@Overridepublic ResultUtil getRoles(Integer page, Integer limit) {PageHelper.startPage(page,limit);List<Role> roles=roleDao.selRoles();PageInfo<Role> pageInfo=new PageInfo<Role>(roles);ResultUtil resultUtil=new ResultUtil();resultUtil.setCode(0);resultUtil.setCount(pageInfo.getTotal());resultUtil.setData(pageInfo.getList());return resultUtil;}@Overridepublic void updAdmin(Admin admin){adminDao.updAdmin(admin);}@Overridepublic void delAdminById(Long id) {adminDao.delAdminById(id);}@Overridepublic Admin getAdminByUsername(String username) {return adminDao.getAdminByUsername(username);}@Overridepublic void insAdmin(Admin admin) {admin.setPassword(EncryptUtil.encrypt(admin.getPassword()));//加密adminDao.insAdmin(admin);}@Overridepublic void delRole(Long roleId) {roleDao.delRole(roleId);}@Overridepublic Role getRoleById(Long roleId) {return roleDao.getRoleById(roleId);}//根据角色展示菜单@Overridepublic List<Menu> getXtreeData(Long roleId) {List<Menu> allMenus=menuDao.getAllMenus(); //获得所有的菜单if(!roleId.equals(Long.valueOf("-1")))//不是-1{List<RoleMenu> roleMenus=roleMenuDao.selMenusByRoleId(roleId); //选出此角色对应的菜单for(Menu menu:allMenus) //遍历所有菜单{for(RoleMenu roleMenu:roleMenus){if(roleMenu.getMenuId()==menu.getMenuId()){menu.setChecked("true"); //将所有菜单中 此角色有的菜单// 设置为true状态 前面权限树,会体现出选中状态//ztree会检查返回的数据中有没有 checked 属性 如果为true就会把这个节点设为选中状态}}}}return allMenus;}@Overridepublic Role getRoleByRoleName(String roleName) {return roleDao.getRoleByRoleName(roleName);}@Overridepublic void updRole(Role role, String m) {roleDao.updateByKey(role);roleMenuDao.deleteMenusByRoleId(role.getRoleId()); //把roleId对应的菜单都删除if(m!=null&&m.length()!=0){String [] result=m.split(",");//重新赋予权限if(result!=null&&result.length>0){for(int i=0;i<result.length;i++){RoleMenu roleMenu=new RoleMenu();roleMenu.setMenuId(Long.parseLong(result[i]));roleMenu.setRoleId(role.getRoleId());//插入一条数据roleMenuDao.insert(roleMenu);}}}}@Overridepublic void insRole(Role role, String m) {roleDao.insertRole(role); //插入一条新数据Role role2=roleDao.selectRoleByRoleName(role.getRoleName()); //把新插入的读出来if(m!=null&&m.length()!=0){String [] result=m.split(",");if(result!=null&&result.length>0){for(int i=0;i<result.length;i++){RoleMenu roleMenu=new RoleMenu();roleMenu.setMenuId(Long.parseLong(result[i]));roleMenu.setRoleId(role2.getRoleId());roleMenuDao.insert(roleMenu);}}}}@Overridepublic List<Menu> getAllMenus() {return menuDao.getAllMenus();}@Overridepublic void updMenuSortingById(Menu menu) {Menu menu1=menuDao.getMenuById(menu.getMenuId()); //更新对象之前 先读出来menu1.setSorting(menu.getSorting()); //设置新的排序menuDao.updateMenuByKey(menu1); //更新}@Overridepublic Menu getMenuById(Long menuId) {return menuDao.getMenuById(menuId);}@Overridepublic List<Menu> checkNameSameLevel(Menu menus) {return menuDao.checkNameSameLevel(menus);}@Overridepublic void insMenu(Menu menus) {menuDao.insMenu(menus);}@Overridepublic void updMenu(Menu menus) {menuDao.updateMenu(menus);}@Overridepublic List<Menu> getMenusByParentId(Long menuId) {return menuDao.getMenuByParentId(menuId);}@Overridepublic void delMenuById(Long menuId) {menuDao.delMenuById(menuId);roleMenuDao.deleteMenuByMenuId(menuId);}@Overridepublic List<RoleMenu> getRoleMenuByMenuId(Long menuId) {return roleMenuDao.getRoleMenuByMenuId(menuId);}@Overridepublic AdminLog getAdminLogByUsername(String username) {return adminDao.getAdminLogByUsername(username);}@Overridepublic void updateAdminLog(AdminLog adminLog) {adminDao.updateAdminLog(adminLog);}@Overridepublic AdminLog getAdminLogByLoginTime(Date loginTime) {return adminDao.getAdminLogByLoginTime(loginTime);}@Overridepublic ResultUtil getAdminLogList(Integer page, Integer limit) throws ParseException {List<AdminLog> adminLogList=new ArrayList<>();//带分页的查询 sql server 中 select 语句必须有 order byPageHelper.startPage(page,limit);List<AdminLog> adminLogs=adminDao.getAdminLogsList();PageInfo<AdminLog> pageInfo=new PageInfo<>(adminLogs);ResultUtil resultUtil=new ResultUtil();resultUtil.setCode(0);resultUtil.setCount(pageInfo.getTotal()-1); //不显示最后一条数据//不显示最后一条登陆信息 因为是正在登陆adminLogList.addAll(pageInfo.getList().subList(0,pageInfo.getList().size()-1));resultUtil.setData(adminLogList);return resultUtil;}
}
package com.zhang.hospital.service;import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zhang.hospital.dao.MenuDao;
import com.zhang.hospital.dao.RoleMenuDao;
import com.zhang.hospital.dao.UserDao;
import com.zhang.hospital.entity.*;
import com.zhang.hospital.util.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;@Service
@Transactionalpublic class UserServiceImpl implements UserService
{@Autowiredprivate UserDao userDao;@Autowiredprivate RoleMenuDao roleMenuDao;@Autowiredprivate MenuDao menuDao;@Overridepublic void insUser(User user) {userDao.insUser(user);}@Overridepublic User login(String username, String password) {return userDao.login(username,password);}@Overridepublic List<Menu> getMenus(User user1){List<Menu> menuList=new ArrayList<>();Long roleId=user1.getRoleId();List<RoleMenu> roleMenus=roleMenuDao.selMenusByRoleId(roleId);//rolemenu是一个中间表 两个字段 roleId menuId 关联起来if(roleMenus!=null&&roleMenus.size()>0){List<Menu> noChildrenMenus=new ArrayList<>();for(int i=0;i<roleMenus.size();i++){Menu menu=menuDao.getMenuById(roleMenus.get(i).getMenuId()); //获取rolemenu中的menuIdnoChildrenMenus.add(menu); //根据登陆者的roleid 所拥有的菜单取出来}for(int i=0;i<noChildrenMenus.size();i++){if(noChildrenMenus.get(i).getParentId()==0)//说明这个菜单是一级菜单 没有上一级菜单//如果这里不为0 表示这个菜单是二级菜单 或者三级菜单 ParentId对应了属于哪个上级菜单{Menu menu=new Menu();menu=noChildrenMenus.get(i); //把这个一级菜单取出来List<Menu> menus=new ArrayList<>();for(int j=0;j<noChildrenMenus.size();j++) //把所有菜单过一遍{//如果有菜单属于这个一级菜单if(noChildrenMenus.get(j).getParentId()==noChildrenMenus.get(i).getMenuId()){Menu menu2=new Menu();menu2=noChildrenMenus.get(j);//取出这个二级菜单menus.add(menu2);}}menu.setChildren(menus); //存放了属于这个一级菜单的所有二级菜单menuList.add(menu);//存放了所有的一级菜单和其对应的所有二级菜单}}}//下面是根据menu的sorting进行排序 升序排列 这样左侧菜单就会按照升序排列Collections.sort(menuList, new Comparator<Menu>() {@Overridepublic int compare(Menu o1, Menu o2) {return o1.getSorting().compareTo(o2.getSorting());}});return menuList;}@Overridepublic User getUserById(Integer user_id) {return userDao.getUserById(user_id);}@Overridepublic ResultUtil updateUser(User user) {userDao.updateUser(user);return ResultUtil.ok();}@Overridepublic User getUsertByUserName(String username) {return userDao.getUserByUserName(username);}@Overridepublic ResultUtil getAllUserList(Integer page, Integer limit, UserSearch search) {PageHelper.startPage(page,limit);List<User> users=userDao.getAllUserList(search);PageInfo<User> pageInfo=new PageInfo<>(users);ResultUtil resultUtil=new ResultUtil();resultUtil.setCode(0);resultUtil.setCount(pageInfo.getTotal());resultUtil.setData(pageInfo.getList());return resultUtil;}@Overridepublic ResultUtil updateUserStatusById(int user_id, int status) {userDao.updateUserStatusById(user_id,status);return ResultUtil.ok();}@Overridepublic ResultUtil deleteUserById(int user_id) {userDao.deleteUserById(user_id);return ResultUtil.ok();}}

基于SSM+Layui实现医院预约挂号系统相关推荐

  1. 基于javaweb+springboot的医院预约挂号系统(java+Springboot+jsp+maven+layui+mysql)

    基于javaweb+springboot的医院预约挂号系统(java+Springboot+jsp+maven+layui+mysql) 一.项目简述 功能包括: 用户分为患者,医生,管理员,患者可进 ...

  2. 软件工程毕业设计课题(34)基于JAVA毕业设计JAVA医院预约挂号系统毕设作品项目

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的医院预约挂号系统,整个网站项目使用了B/S架构,基于java的springboot框架下开发:通过后台设置医院信息.录入医院科室 ...

  3. 基于微信小程序医院预约挂号系统PHP后端接口

    开发软件:Idea/Vscode等都可以 + 微信开发者工具 + Mysql 开发技术环境:小程序客户端 + PHP后端Laravel框架接口 + 小皮面板(phpstudy环境)   这里个项目是一 ...

  4. Java+SSM+JSP实现医院预约挂号系统

    文末获取源码 开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclip ...

  5. ssm基于小程序的医院预约挂号系统毕业设计源码260839

    SSM医院预约挂号小程序的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以 ...

  6. JAVA医院预约挂号系统毕业设计 开题报告

    本文给出的java毕业设计开题报告,仅供参考!(具体模板和要求按照自己学校给的要求修改) 选题目的和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的医院预约挂号系统,整个网站项目使用了B ...

  7. 医院预约挂号系统,java医院预约挂号系统,医院预约挂号管理系统毕业设计作品

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的医院预约挂号系统,整个网站项目使用了B/S架构,基于java的springboot框架下开发:通过后台设置医院信息.录入医院科室 ...

  8. 医院挂号小程序,预约挂号小程序,微信小程序医院预约挂号系统毕业设计作品

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序医院预约挂号系统,前台用户使用小程序,后台管理使用基Java+MySql技术:通过后台设置医院信息.录入医院科室信息.录入医生信息 ...

  9. 基于SSM的医院预约挂号系统 JAVA MYSQL

    10187_基于SSM的医院预约挂号系统 技术 SSM 工具 eclipse + tomcat + mysql + jdk 功能详情 前台界面:

最新文章

  1. solrj 使用记录 - 添加文档
  2. 中只有负下标里才能有零_门诊营销第一人武威名:诊所如何提升成交率之零风险承诺的运用?...
  3. Django中的Session与Cookie
  4. AppleScript 快速入门
  5. linux下的redis配置;
  6. MySQL提示The server quit without updating PID file问题的解决办法
  7. 信息学奥赛C++语言:投资收益
  8. Filecoin网络目前总质押量约为4018万枚FIL
  9. BAT警示:没试过这个方法就别说会数据分析!!
  10. 计算机教育工作,计算机教育教学工作总结
  11. vue中前端怎么读取txt文本文档?
  12. ros打开笔记本电脑的摄像头
  13. 指数解读:恒生指数(Hang Seng Indexes)
  14. 手机可以连上wifi,电脑连不上怎么办?
  15. Swift复数计算器
  16. sapi/cgi/php-cgi,sapi/cgi/php-cgi
  17. CSS 中 a 标签为什么不能继承父类的颜色?
  18. 计算机网络——网络工程项目
  19. Python数据结构与算法基础|第五期:代码实现——循环队列的链式存储结构
  20. win7,如何快速显示桌面

热门文章

  1. 《C++面向对象高效编程(第2版)》——导读
  2. appium环境搭建参考
  3. Python 进阶_闭包 amp; 装饰器
  4. 【转摘】PYTHON 正则表达式
  5. 利用Cache,asp.net 简单实现定时执行任务
  6. 删除隐藏的旧网卡信息的解决办法
  7. 用PAM实现用户和主机的Samba访问控制
  8. 人际关系和谐交际的10个“音符”
  9. 结构体为什么要4字节对齐
  10. Windows中文件夹属性加密的作用?