文末获取源码
开发语言: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宠物百科页面

3.3医生介绍页面

3.4医生详情页面

3.5预约挂号页面

四、管理员功能模块
4.1用户管理页面

4.2宠物百科管理页面

4.3医生介绍管理页面

4.4预约挂号管理页面

5.5病历记录管理页面

五、医生功能模块
5.1预约挂号管理页面

5.2在线咨询管理页面

六、用户功能模块
6.1预约挂号页面

七、部分核心代码
7.1病历记录管理的关键代码
 @PostMapping("/add")
    @Transactional
    public Map<String, Object> add(HttpServletRequest request) throws IOException {
        service.insert(service.readBody(request.getReader()));
        return success(1);
    }
    @Transactional
    public Map<String, Object> addMap(Map<String,Object> map){
        service.insert(map);
        return success(1);
}
    public Map<String,Object> 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<String,Object> body){
        StringBuffer sql = new StringBuffer("INSERT INTO ");
        sql.append("`").append(table).append("`").append(" (");
        for (Map.Entry<String,Object> entry:body.entrySet()){
            sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
        }
        sql.deleteCharAt(sql.length()-1);
        sql.append(") VALUES (");
        for (Map.Entry<String,Object> 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<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
        // 根据Token获取UserId
        String token = request.getHeader("x-auth-token");
        Integer userId = tokenGetUserId(token);
        // 根据UserId和旧密码获取用户
        Map<String, String> 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<String,Object> 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<String, Object> login(@RequestBody Map<String, String> 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<String, String> 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<String, String> 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, "账号或密码不正确");
        }
} 





![[附源码]Python计算机毕业设计Django房产中介管理系统](https://img-blog.csdnimg.cn/92fcfebc94f34686920f9fd90a5164e9.png)
![[附源码]计算机毕业设计springboot路政管理信息系统](https://img-blog.csdnimg.cn/32cf592261904523843dd7c8525ee211.png)





![[附源码]Python计算机毕业设计SSM辽宁科技大学二手车交易平台(程序+LW)](https://img-blog.csdnimg.cn/05f51247fafc41f7b459d329a0613e80.png)






