• 基于SpringBoot宠物医院信息管理系统【Java毕业设计·安装调试·代码讲解·文档报告】


    🍊作者:计算机编程-吉哥

    🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。

    🍊心愿:点赞 👍 收藏 ⭐评论 📝

    🍅 文末获取源码联系

    技术选型

    springboot、mybatis、vue.js、jsp、html、css、mysql、jdk1.8

    数据库表结构

    14张

    开发工具

    idea或者eclipse、navicat

    ⭐功能

    【角色】管理员、用户、医生

    【前台功能】

    注册、登录、首页、医学知识、医生信息、医药信息、新闻资讯、留言反馈、我的、跳转到后台

    【后台功能】

     登录、个人中心、用户管理、医生管理、医学知识管理、科室信息管理、医生信息管理、预约挂号管理、医嘱信息管理、药品信息管理、订单信息管理、留言板管理、系统管理(新闻资讯、轮播图管理)

    🏆项目演示截图:   

    1、前台首页

    2、前台医学知识

    3、前台医生信息

    4、前台医生详情信息

    5、前台登录

    6、前台注册用户

    7、前台预约医生

    8、前台药品信息

    9、前台药品详情

    10、前台新闻资讯

    11、前台留言反馈

    12、前台个人中心

    13、后台登录

    14、后台用户管理

    15、后台医生管理

    16、后台医学知识管理

    17、后台科室信息管理

    18、后台医生信息管理

    19、后台预约挂号管理

    20、后台医嘱信息管理

    21、后台药品信息管理

    22、后台订单信息管理

    23、后台留言板管理

    24、后台新闻资讯

    核心功能代码实现

    1、登录页面

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <%@ page isELIgnored="true" %>
    4. html>
    5. <html lang="en">
    6. <head>
    7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    8. <title>登录title>
    9. <link rel="stylesheet" href="../../layui/css/layui.css">
    10. <link rel="stylesheet" href="../../xznstatic/css/login.style.css">
    11. head>
    12. <body>
    13. <div id="app">
    14. <div class="main">
    15. <h1 v-text="projectName">h1>
    16. <div class="login-form">
    17. <h2>登 录h2>
    18. <div class="agileits-top">
    19. <form class="layui-form">
    20. <div class="layui-form-item">
    21. <div class="layui-input-block" style="margin-left: 0;">
    22. <input type="text" name="username" required lay-verify="required" placeholder="请输入账号" autocomplete="off" class="layui-input" lay-ignore>
    23. div>
    24. div>
    25. <div class="layui-form-item">
    26. <div class="layui-input-block" style="margin-left: 0;">
    27. <input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input" lay-ignore>
    28. div>
    29. div>
    30. <div class="layui-form-item">
    31. <div class="layui-input-block" style="text-align: left;margin-left: 0;">
    32. <input v-if="item.tableName!='users'" v-for="(item,index) in menu" v-bind:key="index" type="radio" name="role" :value="item.tableName" :title="item.roleName">
    33. div>
    34. div>
    35. <div class="layui-form-item" style="margin-bottom: 0;">
    36. <div class="layui-input-block" style="margin-left: 0;">
    37. <button class="layui-btn btn-submit layui-btn-fluid layui-btn-primary" lay-submit lay-filter="login">登录button>
    38. div>
    39. div>
    40. <div class="wthree-text" style="margin-top: 1em">
    41. <ul>
    42. <li><a style="margin-right: 10px;" v-if="item.tableName!='users'" v-for="(item,index) in menu" v-bind:key="index" :href="'javascript:registerClick(\''+item.tableName+'\')'">注册{{item.roleName.replace('注册','')}}a>li>
    43. ul>
    44. <div class="clear">div>
    45. div>
    46. form>
    47. div>
    48. div>
    49. div>
    50. div>
    51. <script src="../../layui/layui.js">script>
    52. <script src="../../js/vue.js">script>
    53. <script src="../../js/config.js">script>
    54. <script src="../../modules/config.js">script>
    55. <script src="../../js/utils.js">script>
    56. <script>
    57. var vue = new Vue({
    58. el: '#app',
    59. data: {
    60. projectName: projectName,
    61. menu: menu
    62. },
    63. methods: {
    64. jump(url) {
    65. jump(url)
    66. }
    67. }
    68. });
    69. layui.use(['layer', 'element', 'carousel', 'form', 'http', 'jquery'], function() {
    70. var layer = layui.layer;
    71. var element = layui.element;
    72. var carousel = layui.carousel;
    73. var form = layui.form;
    74. var http = layui.http;
    75. var jquery = layui.jquery;
    76. // 登录
    77. form.on('submit(login)', function(data) {
    78. data = data.field;
    79. if (!data.role) {
    80. layer.msg('请选择登录用户类型', {
    81. time: 2000,
    82. icon: 5
    83. });
    84. return false;
    85. }
    86. http.request(data.role + '/login', 'get', data, function(res) {
    87. layer.msg('登录成功', {
    88. time: 2000,
    89. icon: 6
    90. });
    91. // 登录凭证
    92. localStorage.setItem('Token', res.token);
    93. localStorage.setItem('role', jquery('input[name="role"]:checked').attr('title'));
    94. // 当前登录用户角色
    95. localStorage.setItem('userTable', data.role);
    96. localStorage.setItem('sessionTable', data.role);
    97. // 用户名称
    98. localStorage.setItem('adminName', data.username);
    99. http.request(data.role + '/session', 'get', {}, function(res) {
    100. // 用户id
    101. localStorage.setItem('userid', res.data.id);
    102. // 路径访问设置
    103. window.location.href = '../../index.jsp';
    104. })
    105. });
    106. return false
    107. });
    108. });
    109. /**
    110. * 跳转登录
    111. * @param {Object} tablename
    112. */
    113. function registerClick(tablename) {
    114. window.location.href = '../' + tablename + '/register.jsp?tablename=' + tablename;
    115. }
    116. script>
    117. body>
    118. html>

     2、登录Controller

    1. package com.controller;
    2. /**
    3. * 用户
    4. * 后端接口
    5. * @author 计算机编程-吉哥
    6. * @email
    7. * @date 2022-09-28 11:23:12
    8. */
    9. @RestController
    10. @RequestMapping("/yonghu")
    11. public class YonghuController {
    12. @Autowired
    13. private YonghuService yonghuService;
    14. @Autowired
    15. private TokenService tokenService;
    16. /**
    17. * 登录
    18. */
    19. @IgnoreAuth
    20. @RequestMapping(value = "/login")
    21. public R login(String username, String password, String captcha, HttpServletRequest request) {
    22. YonghuEntity user = yonghuService.selectOne(new EntityWrapper().eq("yonghuming", username));
    23. if(user==null || !user.getMima().equals(password)) {
    24. return R.error("账号或密码不正确");
    25. }
    26. String token = tokenService.generateToken(user.getId(), username,"yonghu", "用户" );
    27. return R.ok().put("token", token);
    28. }
    29. /**
    30. * 注册
    31. */
    32. @IgnoreAuth
    33. @RequestMapping("/register")
    34. public R register(@RequestBody YonghuEntity yonghu){
    35. //ValidatorUtils.validateEntity(yonghu);
    36. YonghuEntity user = yonghuService.selectOne(new EntityWrapper().eq("yonghuming", yonghu.getYonghuming()));
    37. if(user!=null) {
    38. return R.error("注册用户已存在");
    39. }
    40. Long uId = new Date().getTime();
    41. yonghu.setId(uId);
    42. yonghuService.insert(yonghu);
    43. return R.ok();
    44. }
    45. /**
    46. * 退出
    47. */
    48. @RequestMapping("/logout")
    49. public R logout(HttpServletRequest request) {
    50. request.getSession().invalidate();
    51. return R.ok("退出成功");
    52. }
    53. /**
    54. * 获取用户的session用户信息
    55. */
    56. @RequestMapping("/session")
    57. public R getCurrUser(HttpServletRequest request){
    58. Long id = (Long)request.getSession().getAttribute("userId");
    59. YonghuEntity user = yonghuService.selectById(id);
    60. return R.ok().put("data", user);
    61. }
    62. /**
    63. * 密码重置
    64. */
    65. @IgnoreAuth
    66. @RequestMapping(value = "/resetPass")
    67. public R resetPass(String username, HttpServletRequest request){
    68. YonghuEntity user = yonghuService.selectOne(new EntityWrapper().eq("yonghuming", username));
    69. if(user==null) {
    70. return R.error("账号不存在");
    71. }
    72. user.setMima("123456");
    73. yonghuService.updateById(user);
    74. return R.ok("密码已重置为:123456");
    75. }
    76. }

    3、登录Service

    1. /**
    2. * 用户
    3. *
    4. * @author 计算机编程-吉哥
    5. * @email
    6. * @date 2022-09-28 11:23:12
    7. */
    8. public interface YonghuService extends IService {
    9. PageUtils queryPage(Map params);
    10. List selectListVO(Wrapper wrapper);
    11. YonghuVO selectVO(@Param("ew") Wrapper wrapper);
    12. List selectListView(Wrapper wrapper);
    13. YonghuView selectView(@Param("ew") Wrapper wrapper);
    14. PageUtils queryPage(Map params,Wrapper wrapper);
    15. }

    4、登录serviceImpl

    1. /**
    2. * @author 计算机编程-吉哥
    3. **/
    4. @Service("yonghuService")
    5. public class YonghuServiceImpl extends ServiceImpl implements YonghuService {
    6. @Override
    7. public PageUtils queryPage(Map params) {
    8. Page page = this.selectPage(
    9. new Query(params).getPage(),
    10. new EntityWrapper()
    11. );
    12. return new PageUtils(page);
    13. }
    14. @Override
    15. public PageUtils queryPage(Map params, Wrapper wrapper) {
    16. Page page =new Query(params).getPage();
    17. page.setRecords(baseMapper.selectListView(page,wrapper));
    18. PageUtils pageUtil = new PageUtils(page);
    19. return pageUtil;
    20. }
    21. @Override
    22. public List selectListVO(Wrapper wrapper) {
    23. return baseMapper.selectListVO(wrapper);
    24. }
    25. @Override
    26. public YonghuVO selectVO(Wrapper wrapper) {
    27. return baseMapper.selectVO(wrapper);
    28. }
    29. @Override
    30. public List selectListView(Wrapper wrapper) {
    31. return baseMapper.selectListView(wrapper);
    32. }
    33. @Override
    34. public YonghuView selectView(Wrapper wrapper) {
    35. return baseMapper.selectView(wrapper);
    36. }
    37. }

    5、登录Dao

    1. /**
    2. * 用户
    3. *
    4. * @author 计算机编程-吉哥
    5. * @email
    6. * @date 2022-09-29 11:23:12
    7. */
    8. public interface YonghuDao extends BaseMapper {
    9. List selectListVO(@Param("ew") Wrapper wrapper);
    10. YonghuVO selectVO(@Param("ew") Wrapper wrapper);
    11. List selectListView(@Param("ew") Wrapper wrapper);
    12. List selectListView(Pagination page,@Param("ew") Wrapper wrapper);
    13. YonghuView selectView(@Param("ew") Wrapper wrapper);
    14. }

    6、登录Dao.xml

    1. "1.0" encoding="UTF-8"?>
    2. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    3. <mapper namespace="com.dao.YonghuDao">
    4. <resultMap type="com.entity.YonghuEntity" id="yonghuMap">
    5. <result property="yonghuming" column="yonghuming"/>
    6. <result property="mima" column="mima"/>
    7. <result property="yonghuxingming" column="yonghuxingming"/>
    8. <result property="touxiang" column="touxiang"/>
    9. <result property="xingbie" column="xingbie"/>
    10. <result property="shoujihaoma" column="shoujihaoma"/>
    11. resultMap>
    12. <select id="selectListVO"
    13. resultType="com.entity.vo.YonghuVO" >
    14. SELECT * FROM yonghu yonghu
    15. <where> 1=1 ${ew.sqlSegment}where>
    16. select>
    17. <select id="selectVO"
    18. resultType="com.entity.vo.YonghuVO" >
    19. SELECT yonghu.* FROM yonghu yonghu
    20. <where> 1=1 ${ew.sqlSegment}where>
    21. select>
    22. <select id="selectListView"
    23. resultType="com.entity.view.YonghuView" >
    24. SELECT yonghu.* FROM yonghu yonghu
    25. <where> 1=1 ${ew.sqlSegment}where>
    26. select>
    27. <select id="selectView"
    28. resultType="com.entity.view.YonghuView" >
    29. SELECT * FROM yonghu yonghu <where> 1=1 ${ew.sqlSegment}where>
    30. select>
    31. mapper>

    更多项目推荐:计算机毕业设计项目

    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓如果大家有任何疑虑,请在下方位置详细咨询。

  • 相关阅读:
    【Linux】进程控制
    12、Kubernetes中KubeProxy实现之iptables和ipvs
    redis优化与一些问题
    idea Springboot 校园助学贷款系统VS开发mysql数据库web结构java编程计算机网页源码maven项目
    LyScriptTools Control 调试类API手册
    Mybatis 二级缓存(使用Redis作为二级缓存)
    Nacos注册中心1-nacos源码环境搭建
    CI/CD实战面试宝典:从构建到高可用性的全面解析
    运算符
    分析性质题(集合类):CF1371F
  • 原文地址:https://blog.csdn.net/weixin_51966461/article/details/127099507