分享好友 最新资讯首页 最新资讯分类 切换频道
医院挂号预约管理系统 毕业设计-附源码42832
2024-11-20 19:53

医院挂号预约管理系统的详细设计与实现主要是根据前面的医院挂号预约管理系统的需求分析和医院挂号预约管理系统的总体设计来设计页面并实现业务逻辑。主要从医院挂号预约管理系统界面实现、业务逻辑实现这两部分进行介绍。

医院挂号预约管理系统 毕业设计-附源码42832

4.1用户功能模块

4.1.1 前台首页界面

当进入医院挂号预约管理系统的时候,首先映入眼帘的是系统的导航栏,下面是轮播图以及系统内容,其主界面展示如下图4-1所示。

图4-1 前台首页界面图

4.1.2用户登录界面

医院挂号预约管理系统中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到医院挂号预约管理系统的首页中;否则将会提示相应错误信息,用户登录界面如下图4-2所示。

图4-2用户登录界面图

登录关键代码如下所示。

 

    @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;

        QueryWrapper wrapper = new QueryWrapper<User>();

        Map<String, String> map = new HashMap<>();

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

            map.put("username", username);

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

        }

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

            map.put("email", email);

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

        }

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

            map.put("phone", phone);

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

        }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.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));

        if (groupList.size()<1){

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

        }

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

        //查询用户审核状态

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

            String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

            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, "账号或密码不正确");

        }

}

    public String select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

        sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

        }

        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

        }

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

        return sql.toString();

}

    public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

4.1.3用户注册界面

不是医院挂号预约管理系统中正式用户的是可以在线进行注册的,如果你没有本医院挂号预约管理系统的账号的话,添加“注册”,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。其用用户注册界面展示如下图4-3所示。

          

图4-2用户注册界面图

注册关键代码如下所示。

    @PostMapping("register")

    public Map<String, Object> signUp(HttpServletRequest request) throws IOException {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        Map<String,Object> map = service.readBody(request.getReader());

        query.put("username",String.valueOf(map.get("username")));

        List list = service.selectBaseList(service.select(query, new HashMap<>()));

        if (list.size()>0){

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

        }

        map.put("password",service.encryption(String.valueOf(map.get("password"))));

        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){

        E entity = JSON.parseObject(JSON.toJSONString(body),eClass);

        baseMapper.insert(entity);

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

}

4.1.4医疗新闻界面

用户点击“医疗新闻”菜单显示所有的医疗新闻信息,可以按照条件进行医疗新闻的筛选或者输入关键词进行局部搜索,点击可以进入医疗新闻详细展示界面,在此界面用户可以收藏、点赞和评论。界面如图4-4所示。

              

图4-4医疗新闻界面图

4.1.5医生出诊详情界面

用户可以查看医生出诊,在查询到自己想要了解的医生出诊的时候,可以进入查看详细的介绍,点击“挂号预约”这一按钮以后会跳转到挂号预约信息填写的界面,根据提示填写好挂号预约的信息,点击“提交”以后挂号预约就完成了,在医生出诊详情这个界面,同时支持用户对喜欢的医生出诊进行评论的功能,医生出诊详情展示页面如图4-5所示。

图4-5医生出诊详情界面图

4.1.6 科室介绍详情界面

用户可以查看科室介绍信息,在查询到自己想要了解的科室介绍的时候,可以进入查看详细的介绍。界面如下图4-6所示。

图4-6 科室介绍详情界面图

4.1.7我的账户界面

当用户点击右上角“我的”这个按钮,会出现子菜单,点击“我的账户”可以对个人的资料、登录系统的密码以及自己收藏的信息进行设置管理,我的账户界面如下图4-7所示。

图4-7我的账户界面图

4.2管理员功能模块

医院挂号预约管理系统的理员拥有最高的权限,可以对用户信息、系统信息以及医院挂号预约管理系统相关信息进行管控。

4.2.1登录界面

管理员在后台可以通过账号和密码进行登录,管理员的账号和密码是在数据库中直接设定的。界面展示如下图4-8所示。

图4-8登录界面图

4.2.2系统用户管理界面

管理员点击“系统用户”这一菜单会显示管理员、医生用户、普通用户这三个子菜单,管理员可以对这三个角色的信息进行增删改查操作。界面如下图4-9所示。

图4-9系统用户管理界面图

系统用户管理管理关键代码如下所示。

public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

4.2.3系统公告管理界面

管理员点击“系统公告管理”菜单可以查看到系统中的所有系统公告,对已经存在的系统公告,管理员可以修改,也可以添加新的系统公告或者删除系统公告。界面如下图4-10所示。

图4-10系统公告管理界面图

4.2.4资源管理界面

管理员点击“资源管理”菜单能够对其下子菜单医疗新闻和新闻的分类进行增删改查。界面如下图4-11所示。

图4-11资源管理界面图

4.2.5模块管理界面

医院挂号预约管理系统中的管理人员在“模块管理”这一菜单下是可以对医院挂号预约管理系统内的医生出诊、科室、挂号信息、科室介绍进行管控的,其管理界面如下图4-12所示。

图4-12模块管理界面图

模块管理关键代码如下所示。

 @RequestMapping("/get_obj")

    public Map<String, Object> obj(HttpServletRequest request) {

        List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

}

5.1系统测试的目的

系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些bug,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。

5.2 系统测试用例

系统测试包括:用户登录功能测试、医生出诊展示功能测试、医生出诊添加、医生出诊搜索、密码修改功能测试,如表5-1、5-2、5-3、5-4、5-5所示

用户登录功能测试

表5-1 用户登录功能测试表

用例名称

用户登录系统

目的

测试用户通过正确的用户名和密码可否登录功能

前提

未登录的情况下

测试流程

1) 进入登录页面

2) 输入正确的用户名和密码

预期结果

用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入

实际结果

实际结果与预期结果一致

医生出诊查看功能测试

表5-2 医生出诊查看功能测试表

用例名称

医生出诊查看

目的

测试医生出诊查看功能

前提

用户登录

测试流程

点击医生出诊列表

预期结果

可以查看到所有医生出诊

实际结果

实际结果与预期结果一致

管理员添加医生出诊界面测试

表5-3 管理员添加医生出诊界面测试表

用例名称

医生出诊发布测试用例

目的

测试医生出诊发布功能

前提

用户正常登录情况下

测试流程

1)点击医生出诊管理就,然后点击添加后并填写信息。

2)点击进行提交。

预期结果

提交以后,页面首页会显示新的医生出诊 

实际结果

实际结果与预期结果一致

医生出诊搜索功能测试

表5-4医生出诊搜索功能测试表

用例名称

医生出诊搜索测试

目的

测试医生出诊搜索功能

前提

测试流程

1)在搜索框填入搜索关键字。

2)点击搜索按钮。

预期结果

页面显示包含有搜索关键字的医生出诊

实际结果

实际结果与预期结果一致

密码修改功能测试

表5-5 密码修改功能测试表

用例名称

密码修改测试用例

目的

测试管理员密码修改功能

前提

管理员用户正常登录情况下

测试流程

1)管理员密码修改并完成填写。

2)点击进行提交。

预期结果

使用新的密码可以登录

实际结果

实际结果与预期结果一致

5.3 系统测试结果

通过编写医院挂号预约管理系统的测试用例,已经检测完毕用户登录模块、医生出诊查看模块、医生出诊添加模块、医生出诊搜索模块、密码修改功能测试,通过这5大模块为医院挂号预约管理系统的后期推广运营提供了强力的技术支撑。

最新文章
【增长】机构:预计2024年Mini LED背光产品出货增长至1379万台;天钰:AMOLED驱动芯片将于2024年Q2量产;大尺寸LCD/OLED面板供需情况改善
1.机构:预计2024年Mini LED背光产品出货增长至1379万台2.天钰:AMOLED驱动芯片将于2024年Q2量产3.京东方终止云南OLED项目10亿元
2025年百度广告投放最新实战指南
在数字化营销日益重要的今天,百度广告投放已成为众多企业推广品牌、吸引潜在客户的重要手段。然而,随着市场竞争的加剧,如何高
SEO优化站长如何提高搜索排名
在当今竞争激烈的数字市场中,提升网站的搜索排名是每位站长的主要目标。通过有效的SEO策略,不仅可以提高网站的可见性,还能吸
企业在线竞争力提升——专业SEO推广服务助力突破
网站优化SEO推广服务,专注于帮助企业提升在线竞争力。通过专业技术和策略,优化网站排名,吸引潜在客户,助力企业拓展市场,实
全面解析宏碁暗影骑士软件:提升游戏性能的利器
在现代游戏环境中,电脑性能往往是决定玩家游戏体验的关键因素之一。对于游戏爱好者来说,拥有一款能够有效提升游戏性能的软件是
SEO优化推广软件,点击精灵(SEO流量软件)是否真有用?
各位亲爱的小伙伴们,今天小编要和大家一起聊聊关于SEO优化推广软件中的一员——点击精灵(SEO流量软件)。大家都知道,在如今激烈
SEO排名神器套装全面解析,轻松驾驭网站优化
全面解析SEO排名工具套装,涵盖关键词分析、网站结构优化、内容质量评估等功能,助您轻松提升网站排名,快速吸引更多流量。无论
百度网址收录提交入口(百度收录网站链接入口)
对于国内广大中文博客站长来说,百度搜索仍是绕不开的话题,不被搜索引擎抓取,网友很难找到你的文章,网站的访问量定然高不了。
【数据结构】顺序表(Sequential List) && 单链表(Singly Linked List )
01 预备知识1.0 什么是线性表?线性表(List)是零个或者多个数据元素的有限序列.1.1 线性表的基本操作(描述)关于线性表的基本操作