Java项目:牙科诊所管理系统(java+SpringBoot+Mybatis+Vue+ELementUI+mysql)

源码获取:俺的博客首页 "资源" 里下载! 

项目介绍

基于Springboot Vue牙科诊所管理系统

角色:管理员、医生、用户三种角色,分为前后台;

用户:用户在前台可以查看首页、公告、医生等信息;用户登录后,可进行医生预约、查看我的病例、预约记录等信息;

管理员:管理员登录成功后进入到系统操作界面,可以对个人中心、管理员管理、基础数据管理、公告管理、医生管理、医生预约管理、病例管理、用户管理、轮播图信息等功能模块进行相对应操作。

医生:医生登录成功后进入到系统操作界面,可以对个人中心、公告管理、医生预约管理、病例管理、用户管理等功能模块进行相应操作。


环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
4.数据库:MySql 5.7/8.0版本均可;
5.是否Maven项目:是;


技术栈

后端:SpringBoot+Mybaits

前端:Vue+ElementUI+Layui+HTML+CSS+JS


使用说明

项目运行:
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4.运行项目,在浏览器中输入地址:
前台地址:http://localhost:8080/yakezhensuo/front/index.html
用户:a1/123456
后台地址:http://localhost:8080/yakezhensuo/admin/dist/index.html#/login
管理员:admin/admin
医生:a3/123456

系统架构图:

首页展示:

医生信息展示:

 

公告页展示:

 

我的病例信息展示:

医生预约展示: 

 

后台病例管理:

 

公告类型管理:

 

公告管理:

 

 医生管理控制层:

@Controller
@RequestMapping("doctor")
public class DoctorController {
    @Autowired
    private DoctorService doctorService;
    /*
     * 查询医生
     * */
    @RequestMapping("doctorList")
    @ResponseBody
    public Object doctorList(Doctor doctor, Integer page, Integer limit){
        PageHelper.startPage(page, limit);
        List<Doctor> listAll = doctorService.doctorList(doctor);
        PageInfo pageInfo = new PageInfo(listAll);
        Map<String, Object> tableData = new HashMap<String, Object>();
        //这是layui要求返回的json数据格式
        tableData.put("code", 0);
        tableData.put("msg", "");
        //将全部数据的条数作为count传给前台(一共多少条)
        tableData.put("count", pageInfo.getTotal());
        //将分页后的数据返回(每页要显示的数据)
        tableData.put("data", pageInfo.getList());

        return tableData;
    }
    /*
     * 添加医生
     * */
    @RequestMapping("addDoctor")
    @ResponseBody
    public Object addDoctor(Doctor doctor, Paiban paiban){
        int count = doctorService.count(doctor);
        if(count==0){
            int i = doctorService.addDoctor(doctor);
            if(i==1){
                return "添加成功";
            }else{
                return "添加失败";
            }
        }else{
            return doctor.getDoctorName()+"已存在";
        }

    }
    /*
     * 修改医生
     * */
    @RequestMapping("editDoctor")
    @ResponseBody
    public Object editDoctor(Doctor doctor){
        int i = doctorService.editDoctor(doctor);
        if(i==1){
            return "修改成功";
        }else{
            return "修改失败";
        }

    }
    /*
     * 删除医生
     * */
    @RequestMapping("deleteDoctor")
    @ResponseBody
    public Object deleteDoctor(Integer doctorId){
        int i1 = doctorService.checkCount(doctorId);
        if(i1>0){
           return "该医生还有病人";
        }else{
            int i = doctorService.deleteDoctor(doctorId);
            if(i==1){
                return "删除成功";
            }else{
                return "删除失败";
            }
        }

    }
    /*
     * 查询科室
     * */
    @RequestMapping("findAllDepartments")
    @ResponseBody
    public Object findAllDepartments(){
        List<Departments> allDepartments = doctorService.findAllDepartments();
        return allDepartments;
    }
    /*
     * 查询类型
     * */
    @RequestMapping("findAllRegisteredtype")
    @ResponseBody
    public Object findAllRegisteredtype(){
        List<Registeredtype> allRegisteredtype = doctorService.findAllRegisteredtype();
        return allRegisteredtype;
    }

}

用户管理控制层:

@Controller
@RequestMapping("user")
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("selectAllUser")
    @ResponseBody
    public Object selectAllUser(Integer page,Integer limit,User user){
        PageHelper.startPage(page, limit);
        List<User> allUser = userService.selectAllUser(user);
        PageInfo pageInfo = new PageInfo(allUser);
        Map<String, Object> tableData = new HashMap<String, Object>();
        //这是layui要求返回的json数据格式
        tableData.put("code", 0);
        tableData.put("msg", "");
        //将全部数据的条数作为count传给前台(一共多少条)
        tableData.put("count", pageInfo.getTotal());
        //将分页后的数据返回(每页要显示的数据)
        tableData.put("data", pageInfo.getList());

        return tableData;
    }
    /*
    * 修改用户
    * */
    @RequestMapping("updateUser")
    @ResponseBody
    public Object updateUser(User user){
        if(userService.updateUser(user)>0){
                return "修改成功";
            }else{
                return "修改失败";
            }


    }
    /*
     * 删除用户
     * */
    @RequestMapping("deleteUser")
    @ResponseBody
    public Object deleteUser(Integer userid){
        userService.deleteUser(userid);
       return "删除成功";
    }
    /*
     * 初始化用户分配角色
     * */
    @RequestMapping("initUserRole")
    @ResponseBody
    public DataGridView initUserRole(Integer userid){
        return userService.queryUserRole(userid);
    }
    /*
     * 添加用户
     * */
    @RequestMapping("addUser")
    @ResponseBody
    public Object addUser(User user){
        int i1 = userService.checkUser(user);
        if(i1==1){
            return "当前登陆名已存在";
        }else {
            //加盐
            String salt = UserCredentialsMatcher.generateSalt(6);
            //MD5加密迭代两次
            user.setPwd(UserCredentialsMatcher.encryptPassword("md5", "123456", salt, 2));
            user.setType(2);
            user.setSalt(salt);
            System.out.println(salt);
            int i = userService.addUser(user);
            if (i > 0) {
                return "添加成功";
            } else {
                return "添加失败";
            }
        }
    }
    /*
     * 重置密码
     * */
    @RequestMapping("resetUserPwd")
    @ResponseBody
    public Object resetUserPwd(User user,Integer userid){
        user.setUserid(userid);
        //加盐
        String salt = UserCredentialsMatcher.generateSalt(6);
        //MD5加密迭代两次
        user.setPwd(UserCredentialsMatcher.encryptPassword("md5", "123456", salt, 2));
        user.setType(2);
        user.setSalt(salt);
        userService.resetUserPwd(user);
        return "重置成功";

    }
    /*
     * 保存用户和角色的关系
     * */
    @RequestMapping("saveUserRole")
    @ResponseBody
    public Object saveUserRole(UserRole userRole){
        userService.saveUserRole(userRole);
        return "分配成功";
    }    /*
     * 修改资料
     * */
    @RequestMapping("editLogin")
    @ResponseBody
    public Object editLogin(User user){
        int i = userService.editLogin(user);
        if(i==1){
            return "修改成功";
        }else{
            return "修改失败";
        }

    }
    @Autowired
    private MenuService menuService;
    @RequestMapping("editPwd")
    @ResponseBody
    public Object editPwd(User user,String loginname,String pwd,String pwd1){
        //第一步:建立subject
        Subject subject = SecurityUtils.getSubject();
        //第二步:封装token  凭证
        UsernamePasswordToken token = new UsernamePasswordToken(loginname, pwd);
        try {
            //只要能通过认证就能通过了

            subject.login(token);
            //加盐
            String salt = UserCredentialsMatcher.generateSalt(6);
            //MD5加密迭代两次
            user.setPwd(UserCredentialsMatcher.encryptPassword("md5", pwd1, salt, 2));
            user.setSalt(salt);
            userService.editPwd(user);
            return "1";//修改成功
        } catch (IncorrectCredentialsException e) {
            return "0";//密码错误
        }

    }
}

系统管理控制层:

@Controller
public class SysController {
    @Autowired
    private UserService userService;

    /*
     * 跳转管理菜单
     * */
    @RequestMapping("toMenuManager")
    public String toMenuManager() {
        return "view/menu/menuManager";
    }

    /*
     * 跳转加载菜单管理左边的菜单树
     * */
    @RequestMapping("toMenuLeft")
    public String toMenuLeft() {
        return "view/menu/menuLeft";
    }

    /*
     * 跳转加载菜单管理左边的增删改
     * */
    @RequestMapping("toMenuRight")
    public String toMenuRight() {
        return "view/menu/menuRight";
    }
    /*
     * 跳转加载角色
     * */
    @RequestMapping("toLoadAllRole")
    public String toLoadAllRole() {
        return "view/role/roleManager";
    }
    /*
     * 跳转加载用户
     * */
    @RequestMapping("toLoadAllUser")
    public String toLoadAllUser() {
        return "view/user/userManager";
    }

    /*
     * 跳转加载doctor.html
     * */
    @RequestMapping("toDoctor")
    public String toDoctor() {
        return "view/center/doctor";
    }
    /*
     * 跳转加载departments.html
     * */
    @RequestMapping("toDepartments")
    public String toDepartments() {
        return "view/center/departments";
    }
    /*
     * 跳转加载registeredtype.html
     * */
    @RequestMapping("toRegisteredType")
    public String toRegisteredtype() {
        return "view/center/registeredType";
    }

    /*
     * 跳转加载icon.html
     * */
    @RequestMapping("icon")
    public String icon() {
        return "view/center/icon";
    }

    /*
     * 跳转加载type.html
     * */
    @RequestMapping("toType")
    public String toType() {
        return "view/center/type";
    }
    /*
     * 跳转加载area.html
     * */
    @RequestMapping("toArea")
    public String toArea() {
        return "view/center/area";
    }

    /*
     * 跳转加载skull.html
     * */
    @RequestMapping("toSkull")
    public String toSkull() {
        return "view/center/skull";
    }
    /*
     * 跳转加载warehuose.html
     * */
    @RequestMapping("toWarehuose")
    public String toWarehuose() {
        return "view/center/warehuose";
    }

    /*
     * 跳转加载supplyManage.html
     * */
    @RequestMapping("toSupplyManage")
    public String toSupplyManage() {
        return "view/center/supplyManage";
    }
    /*
     * 跳转加载supply.html
     * */
    @RequestMapping("toSupply")
    public String toSupply() {
        return "view/center/supply";
    }
    /*
     * 跳转加载unit.html
     * */
    @RequestMapping("toUnit")
    public String toUnit() {
        return "view/center/unit";
    }

    /*
     * 跳转加载updateLogin.html
     * */
    @RequestMapping("toUpdateLogin")
    public String toUpdateLogin(User user, Integer userid, Model model) {
        List<User> users = userService.updateLogin(user);
        model.addAttribute("usersLogin",users);
        return "view/user/updateLogin";
    }
    /*
     * 跳转加载projectTypeManage.html
     * */
    @RequestMapping("toProjectTypeManage")
    public String toProjectTypeManage() {
        return "view/center/projectTypeManage";
    }
    /*
     * 跳转加载paiban.html
     * */
    @RequestMapping("toPaiban")
    public String toPaiban() {
        return "view/center/paiban";
    }
    /*
     * 跳转加载drugdictionary.html
     * */
    @RequestMapping("toDrugdictionary")
    public String toDrugdictionary() {
        return "view/center/drugdictionary";
    }
    /*
     * 跳转加载main.html
     * */
    @RequestMapping("toMain")
    public String toMain() {
        return "view/main/main";
    }
    /*
     * 跳转加载reportManage.html
     * */
    @RequestMapping("toReportFinance")
    public String toReportFinance() {
        return "view/finance/reportManage";
    }

    /*
     * 跳转加载zhuYuanManage.html
     * */
    @RequestMapping("toZhuYaunManage")
    public String toZhuYaunManage() {
        return "view/finance/zhuYuanManage";
    }
    /*
     * 跳转加载zhuYuanManage.html
     * */
    @RequestMapping("toBingYear")
    public String toBingYear() {
        return "view/finance/reportBing";
    }
    /*
     * 跳转加载zhuYuanBing.html
     * */
    @RequestMapping("toBing2")
    public String toBing2() {
        return "view/finance/zhuYuanBing";
    }
    /*
     * 跳转加载doctorDuibi.html
     * */
    @RequestMapping("toDoctorDuibi")
    public String toDoctorDuibi() {
        return "view/finance/doctorDuibi";
    }

    /*
     * 跳转加载current.html
     * */
    @RequestMapping("toCurrent")
    public String toCurrenti() {
        return "view/finance/current";
    }
}

源码获取:俺的博客首页 "资源" 里下载!

一、项目简介 本项目是一套基于JavaWeb的私人诊所管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 二、技术实现 ​后台框架:JSP、Servlet、JDBC ​数据库:MySQL 开发环境:JDK、Eclipse、Tomcat 三、系统功能 该私人诊所管理系统采用B/S结构,使用JAVA开发语言,结合JSP技术,以MySQL作为后台数据库。 该系统包含多个角色:用户、医生、管理员等,系统的功能模块如下所示: (1)登陆模块,可分为普通用户、医生、管理员等角色登录。 (2)用户注册模块,对用户注册的用户名的要求,不同的用户要求要有不同的用户名。 (3)系统管理模块,包括添加管理员,管理员密码的修改。 (4)挂号管理模块,包括患者的名字、性别、年龄、现住地址和患者简介。 (5)患者管理模块,对患者进行增加、患者删除、患者信息的修改。 (6)开药管理模块,对药品的增加、删除、修改、查询,患者病历查 (7)科室管理模块,管理员可以新建,修改,删除,科室信息 (8)留言管理,管理员可以新建,修改,删除留言信息 (9)预约挂号模块,用户可以在线进行预约挂号,用户可以选择普通号和专家号。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
### 回答1: Java是一种编程语言,Vue是一种前端框架,Spring Boot是一种后端框架,Maven是一种构建工具,MyBatis是一种ORM框架,MySQL是一种关系型数据库。这些技术可以一起使用来开发Web应用程序。 ### 回答2: JavaVueSpringBoot、Maven、MyBatisMySQL 是现代软件开发中常见的工具和技术。Java 是一门强大的编程语言,非常适合构建企业级应用程序。Vue 是一种现代的 JavaScript 框架,用于构建可交互的单页应用程序。SpringBoot 是一种基于 Spring 框架的服务端开发解决方案,可用于构建 RESTful Web 服务或基于微服务体系结构的应用程序。Maven 是一个构建工具,可用于自动化构建和管理软件项目的依赖项。MyBatis 是一个数据持久化框架,可以方便地将 Java 应用程序连接到各种关系型数据库中。MySQL 是一个流行的、开源的关系型数据库管理系统,是许多 Web 应用程序的默认选择。 在软件开发中,JavaVueSpringBoot、Maven、MyBatisMySQL 可以相互配合使用,以构建跨平台、云端部署、高效稳定的应用程序。JavaSpringBoot 可用于构建 Web 服务和 RESTful API,而 VueSpringBoot 可用于构建面向用户的 Web 应用程序。Maven 可用于管理项目依赖项和自动化构建过程,而 MyBatis 可以方便地将数据从数据库中提取并转换为对象。MySQL 可用于存储应用程序生成的数据。 总之,在软件开发中,选择适合您团队和项目需求的工具和技术非常重要。JavaVueSpringBoot、Maven、MyBatisMySQL 已经得到了广泛的应用和实践验证,并且可以帮助您轻松地构建高效、可靠和安全的应用程序。 ### 回答3: Java是一种面向对象的高级编程语言,被广泛使用于开发各种应用程序,从桌面应用程序到企业级应用程序。它具有强大的编程能力、跨平台兼容性和开源社区的支持。Java中有很多库、框架和工具,可以简化编程任务并提高应用程序的性能和稳定性。 Vue是一个流行的JavaScript前端框架,用于构建用户界面。它被设计为轻量级、高效和灵活,可以用来建立单页应用程序和大型复杂应用程序。Vue提供了许多有用的工具和组件,可以帮助开发人员快速建立优秀的用户界面。 Spring Boot是一个基于Spring框架的轻量级应用程序开发框架,目的是简化企业级应用程序的开发过程。Spring Boot具有自动配置、快速启动、简单的部署和许多其他特性,可以快速构建高性能应用程序。它还具有用于构建RESTful API和微服务的功能。 Maven是一个强大的项目管理和构建工具,用于构建Java应用程序。Maven可以帮助开发人员自动化项目构建过程,并可以帮助组织项目结构和管理库依赖。Maven具有许多插件和工具,可以帮助开发人员编译、测试和打包应用程序。 MyBatis是一个流行的Java持久层框架,用于简化与关系型数据库的交互。它使用SQL映射文件将Java对象映射到数据库表中,提供了一种简单而强大的方式来处理数据库操作。MyBatis还提供了许多有用的特性,如动态SQL、事务管理和缓存。 MySQL是一个开源的关系型数据库管理系统,被广泛使用于Web应用程序和企业级应用程序。MySQL具有可靠的性能、高度可扩展性和广泛的API支持,可以处理大型数据集和高并发访问。它还拥有丰富的特性和工具,支持多种编程语言和操作系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyondwild

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值