SpringBoot+Vue实现前后端分离的宠物医院管理系统

文末获取源码

开发语言:Java

使用框架:spring boot

前端技术:JavaScript、Vue.js 、css3

开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code

数据库:MySQL 5.7/8.0

数据库管理工具:phpstudy/Navicat

JDK版本:Java jdk8

Maven:apache-maven 3.8.1-bin

目录

一、前言介绍 

二、功能需求分析

2.1用户功能分析

2.2管理员功能分析

三、系统前台模块

3.1系统首页页面

3.2宠物百科页面

3.3医生介绍页面 

3.4医生详情页面 

3.5预约挂号页面 

四、管理员功能模块

4.1用户管理页面

4.2宠物百科管理页面 

4.3医生介绍管理页面 

4.4预约挂号管理页面 

5.5病历记录管理页面 

五、医生功能模块

5.1预约挂号管理页面 

5.2在线咨询管理页面 

六、用户功能模块

6.1预约挂号页面 

七、部分核心代码

7.1病历记录管理的关键代码 

7.2密码修改关键代码

7.3登录界面关键代码


一、前言介绍 

本系统是基于浏览器与服务器架构平台,完整的办公信息处理的欢欢宠物医院管理系统。采用跨平台的JAVA语言开发,利用WEB浏览器就可以使工作人员操作本应用,实现对系统各方位信息的操作,无论大型宠物医院还是小型宠物诊所,均可自建局域网管理,方便办公,减少不必要的成本消耗。该系统沿用MVC思想,利用springboot类的封装进行逻辑控制,利用Java技术完成访问页面的展示,利用MySQL数据库存储数据,最后Tomcat服务器完成网站发布,系统可在多个环境下运行。

本课题在经过了宠物医院正常办公流程下的需求分析后,完成实现了系统用户、医生介绍、预约挂号、病历记录、医疗器械、在线咨询、维修上报等功能。

二、功能需求分析

欢欢宠物医院管理系统主要是为了更加地完善宠物医疗的服务情况,对用户的信息、宠物信息和用户管理、宠物热点管理、会员留言管理、疫苗药物管理、订单列表管理、遗弃宠物管理、宠物饲料情况、招聘员工、志愿者申请等提供了方便的机制。本系统有多类使用者,分别是管理员和用户注册。以下是从这两种用户的角度分别介绍本系统所要实现的功能。

2.1用户功能分析

注册:首先检查用户名和邮箱是否存在,如不存在即可进行注册,并将用户输入的密码进行MD5加密,注册成功后提示注册成功,并将用户信息保存到数据库中。

登录:使用欢欢宠物医院管理系统前是需要用户登录个人账号。

医生介绍:用户登录宠物医院管理系统首页时,可以浏览医生介绍信息,根据不同地医生可以查看每个不同医生介绍信息等。

宠物百科:用户可以浏览宠物百科可以自行搜索某样宠物列表相关评论详情。遗弃

预约挂号:用户可以查看预约信息表的挂号状态,可以根据预约状态发起挂号申请:包括填写订单号、医生工号、医生姓名、科室、挂号费、用户名。

2.2管理员功能分析

用户管理:对用户进行管理,用户的注册,包括用户昵称、用户名、用户的宠物信息(宠物类别、宠物性别、年龄等)用户的账号信息:

医生介绍信息管理:对医生介绍信息进行维护,添加、删除、修改信息。

预约挂号信息管理:对预约挂号信息进行维护,添加、删除、修改信息。

病历记录信息管理:对病历记录信息进行维护,添加、删除、修改信息。

医疗器械信息管理:对医疗器械信息进行维护,添加、删除、修改信息。

维修上报信息管理:对维修上报信息进行维护,添加、删除、修改信息。

三、系统前台模块

3.1系统首页页面

3.2宠物百科页面

SpringBoot+Vue实现前后端分离的宠物医院管理系统_第1张图片

3.3医生介绍页面 

SpringBoot+Vue实现前后端分离的宠物医院管理系统_第2张图片

3.4医生详情页面 

SpringBoot+Vue实现前后端分离的宠物医院管理系统_第3张图片

3.5预约挂号页面 

SpringBoot+Vue实现前后端分离的宠物医院管理系统_第4张图片

四、管理员功能模块

4.1用户管理页面

SpringBoot+Vue实现前后端分离的宠物医院管理系统_第5张图片

4.2宠物百科管理页面 

SpringBoot+Vue实现前后端分离的宠物医院管理系统_第6张图片

4.3医生介绍管理页面 

SpringBoot+Vue实现前后端分离的宠物医院管理系统_第7张图片

4.4预约挂号管理页面 

SpringBoot+Vue实现前后端分离的宠物医院管理系统_第8张图片

5.5病历记录管理页面 

SpringBoot+Vue实现前后端分离的宠物医院管理系统_第9张图片

五、医生功能模块

5.1预约挂号管理页面 

SpringBoot+Vue实现前后端分离的宠物医院管理系统_第10张图片

5.2在线咨询管理页面 

SpringBoot+Vue实现前后端分离的宠物医院管理系统_第11张图片

六、用户功能模块

6.1预约挂号页面 

SpringBoot+Vue实现前后端分离的宠物医院管理系统_第12张图片

七、部分核心代码

7.1病历记录管理的关键代码 

 @PostMapping("/add")

    @Transactional

    public Map add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

    @Transactional

    public Map addMap(Map map){

        service.insert(map);

        return success(1);

}

    public Map readBody(BufferedReader reader){

        BufferedReader br = null;

        StringBuilder sb = new StringBuilder("");

        try{

            br = reader;

            String str;

            while ((str = br.readLine()) != null){

                sb.append(str);

            }

            br.close();

            String json = sb.toString();

            return JSONObject.parseObject(json, Map.class);

        }catch (IOException e){

            e.printStackTrace();

        }finally{

            if (null != br){

                try{

                    br.close();

                }catch (IOException e){

                    e.printStackTrace();

                }

            }

        }

        return null;

}

    public void insert(Map body){

        StringBuffer sql = new StringBuffer("INSERT INTO ");

        sql.append("`").append(table).append("`").append(" (");

        for (Map.Entry entry:body.entrySet()){

            sql.append("`"+humpToLine(entry.getKey())+"`").append(",");

        }

        sql.deleteCharAt(sql.length()-1);

        sql.append(") VALUES (");

        for (Map.Entry entry:body.entrySet()){

            Object value = entry.getValue();

            if (value instanceof String){

                sql.append("'").append(entry.getValue()).append("'").append(",");

            }else {

                sql.append(entry.getValue()).append(",");

            }

        }

        sql.deleteCharAt(sql.length() - 1);

        sql.append(")");

        log.info("[{}] - 插入操作:{}",table,sql);

        Query query = runCountSql(sql.toString());

        query.executeUpdate();

    }

7.2密码修改关键代码

/**

     * 修改密码

     * @param data

     * @param request

     * @return

     */

    @PostMapping("change_password")

    public Map change_password(@RequestBody Map data, HttpServletRequest request){

        // 根据Token获取UserId

        String token = request.getHeader("x-auth-token");

        Integer userId = tokenGetUserId(token);

        // 根据UserId和旧密码获取用户

        Map query = new HashMap<>();

        String o_password = data.get("o_password");

        query.put("user_id" ,String.valueOf(userId));

        query.put("password" ,service.encryption(o_password));

        Query ret = service.count(query, service.readConfig(request));

        List list = ret.getResultList();

        Object s = list.get(0);

        int count = Integer.parseInt(list.get(0).toString());

        if(count > 0){

            // 修改密码

            Map form = new HashMap<>();

            form.put("password",service.encryption(data.get("password")));

            service.update(query,service.readConfig(request),form);

            return success(1);

        }

        return error(10000,"密码修改失败!");

    }

7.3登录界面关键代码

/**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map login(@RequestBody Map data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        Map map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();

            String res = String.valueOf(service.runCountSql(sql).getSingleResult());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

}

你可能感兴趣的:(课程设计,毕业设计,spring,boot,vue.js,java,宠物医院管理系统,前端)