基于java+ssm+jsp的网上医院预约挂号系统

本文介绍了开发网上医院预约挂号系统的需求和设计思想,强调其实用性、先进性、高安全性、可维护性和可扩展性。系统采用SSM框架,MySQL数据库,B/S架构,旨在优化医院预约流程,提供包括管理员、医生和用户在内的多功能管理,确保信息安全并简化信息管理。
摘要由CSDN通过智能技术生成

项目介绍

如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式就不适合。为了让医院预约挂号信息的管理模式进行升级,也为了更好的维护医院预约挂号信息,网上医院预约挂号系统的开发运用就显得很有必要。并且通过开发网上医院预约挂号系统,不仅可以让所学的SSM框架得到实际运用,也可以掌握MySQL的使用方法,对自身编程能力也有一个检验和提升的过程。尤其是通过实践,可以对系统的开发流程加深印象,无论是前期的分析与设计,还是后期的编码测试等环节,都可以有一个深刻的了解。

网上医院预约挂号系统根据调研,确定管理员除了管理医生,科室和用户外,也能管理用户预约挂号信息,下载用户病例,发布健康资讯,管理客服聊天信息。医生管理本人的坐诊信息,审核预约挂号,管理用户就诊病例。用户在前台查看医生坐诊,对医生预约挂号,评价并收藏医生,查看健康资讯,联系客服,用户在后台支付挂号价格,下载病例。

借助于网上医院预约挂号系统这样的工具,让信息系统化,流程化,规范化是最终的发展结果,让其遵循实际操作流程的情况下,对医院预约挂号信息实施规范化处理,让医院预约挂号信息通过电子的方式进行保存,无论是管理人员检索医院预约挂号信息,维护医院预约挂号信息都可以便利化操作,真正缩短信息处理时间,节省人力和信息管理的成本。

第四章 系统设计
设计一个系统不单单是设计系统的页面,可以说系统设计其本质是一个结合了众多设计过程的比较复杂的系统工程。一般来说,在完成系统设计时,需要了解和掌握很多设计的知识,有界面布局技术的知识,页面采用的字体和颜色的运用,还有页面空白的规范使用等,如何将这些元素进行组合,让页面可以直观表达信息内容的同时,也能维持页面整体的美观。

4.1 系统设计思想
系统开发必然需要统一设计思想。根据这个设计思想指导系统的开发,可以加快系统开发进程。根据目前用户对网上医院预约挂号系统的需求,确定下述原则即为本系统的设计思想。
(1)实用性:本系统依照用户需求设计功能,遵循用户使用方便的原则,把用户在实际工作中的各个操作细节也充分考虑进来,让使用者在没有系统操作说明书的情况下,也能很容易的完成系统的操作。

(2)先进性:为了让本系统具备高性能,设计时,需要把目前的各种成熟技术加以考虑,比如软件开发技术也要考虑进去,比如计算机技术也需要进行考虑。对于系统结构的选择,本系统将毫不犹豫的选择成熟先进的B/S结构,方便开发的同时,对于后期的维护也提供了便利。

(3)高安全性:设计本系统时,对于一些系统的关键数据要严加看管,比如管理员本人的账号和密码,一定要加密保存在数据库里面。除此以外,也需要充分使用安全措施对用户的共享资源进行保护。

(4)可维护性:设计时,要提前考虑本系统的可维护性,因为一个便于维护的系统在后期产生的维护成本将会大大降低。维护一般包括软硬件的维护还有对于网络的维护等。

(5)可扩展性:重新开发一个新系统相比在原有系统上升级,会花费大量的资金和精力,由此,一个好的系统必定具备良好的可扩展性。在用户需求变动的情况下,可以通过系统的更新和升级来持续满足用户需求,这样的系统就具备了可扩展性。

4.2功能结构设计
这部分内容使用结构图这样的工具,显示设计结果,设计的管理员功能见下图。管理员除了管理医生,科室和用户外,也能管理用户预约挂号信息,下载用户病例,发布健康资讯,管理客服聊天信息。
在这里插入图片描述
图4-1 管理员功能结构图

设计的医生功能见下图。医生管理本人的坐诊信息,审核预约挂号,管理用户就诊病例。
在这里插入图片描述
图4-2 医生功能结构图

设计的用户功能见下图。用户在前台查看医生坐诊,对医生预约挂号,评价并收藏医生,查看健康资讯,联系客服,用户在后台支付挂号价格,下载病例。
在这里插入图片描述
图4-3 用户功能结构图

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序ue/爬虫/c#/asp.net

系统截图

5.1管理员功能实现
5.1.1 客服管理
实现管理员权限的客服管理功能,其运行效果见下图。管理员管理客服聊天信息,一旦接收到用户提交的咨询信息,管理员即可回复。
在这里插入图片描述
图5-1 客服管理页面

5.1.2 医生管理
实现管理员权限的医生管理功能,其运行效果见下图。医生的基本资料,包括医生的联系电话,工号以及科室等可以让管理员增删改查管理。
在这里插入图片描述
图5-2 医生管理页面

5.1.3 用户管理
实现管理员权限的用户管理功能,其运行效果见下图。用户通过注册提交个人信息,管理员可以拉黑用户,也能对用户取消拉黑。
在这里插入图片描述
图5-3 用户管理页面

5.1.4 用户病例管理
实现管理员权限的用户病例管理功能,其运行效果见下图。用户病例附件可以让管理员下载查看,管理员也能查询用户的病例信息。
在这里插入图片描述
图5-4 用户病例管理页面

5.2医生功能实现
5.2.1 医生坐诊管理
实现医生权限的医生坐诊管理功能,其运行效果见下图。医生在个人后台增删改查本人的坐诊信息,坐诊信息描述了坐诊时间,挂号价格等。
在这里插入图片描述
图5-5 医生坐诊管理页面

5.2.2 预约挂号管理
实现医生权限的预约挂号管理功能,其运行效果见下图。用户对医生进行预约挂号,医生只需审核挂号,对前来就诊的用户登记病例信息。
在这里插入图片描述
图5-6 预约挂号管理页面

5.2.3 用户病例管理
实现医生权限的用户病例管理功能,其运行效果见下图。医生登记的用户病例资料都会显示在本页面,医生可以下载病例附件。
在这里插入图片描述
图5-7 用户病例管理页面

5.3用户功能实现
5.3.1 查看医生坐诊
实现用户权限的查看医生坐诊功能,其运行效果见下图。用户在本页面查看坐诊时间和挂号价格信息,点击预约挂号即可提交资料进行挂号,用户也能评价本页面显示的医生,或者点击红色五角星收藏医生。
在这里插入图片描述

5.3.2 联系客服
实现用户权限的联系客服功能,其运行效果见下图。用户在操作系统期间有疑问可以向客服进行咨询。
在这里插入图片描述

5.3.3 预约挂号
实现用户权限的预约挂号功能,其运行效果见下图。用户在前台提交了预约挂号信息之后,可以进入用户后台支付挂号的价格,查看挂号明细。
在这里插入图片描述
5.3.4 用户病例
实现用户权限的用户病例功能,其运行效果见下图。用户就诊之后,医生会登记用户的病例,用户在本人的后台可以下载病例附件。
在这里插入图片描述

部分代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.KeshiEntity;
import com.entity.view.KeshiView;

import com.service.KeshiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 科室
 * 后端接口
 */
@RestController
@RequestMapping("/keshi")
public class KeshiController {
    @Autowired
    private KeshiService keshiService;



    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,KeshiEntity keshi, HttpServletRequest request){

        EntityWrapper<KeshiEntity> ew = new EntityWrapper<KeshiEntity>();
    	PageUtils page = keshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, keshi), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }

    /**
     * 前端列表
     */
    @RequestMapping("st")
    public R list(@RequestParam Map<String, Object> params,KeshiEntity keshi, HttpServletRequest request){
        EntityWrapper<KeshiEntity> ew = new EntityWrapper<KeshiEntity>();
    	PageUtils page = keshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, keshi), params), params));
		request.setAttribute("data", page);
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("sts")
    public R list( KeshiEntity keshi){
       	EntityWrapper<KeshiEntity> ew = new EntityWrapper<KeshiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( keshi, "keshi"));
        return R.ok().put("data", keshiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(KeshiEntity keshi){
        EntityWrapper< KeshiEntity> ew = new EntityWrapper< KeshiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( keshi, "keshi"));
		KeshiView keshiView =  keshiService.selectView(ew);
		return R.ok("查询科室成功").put("data", keshiView);
    }

    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        KeshiEntity keshi = keshiService.selectById(id);
        return R.ok().put("data", keshi);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
        KeshiEntity keshi = keshiService.selectById(id);
        return R.ok().put("data", keshi);
    }




    /**
     * 后端保存
     */
    @RequestMapping("ve")
    public R save(@RequestBody KeshiEntity keshi, HttpServletRequest request){
    	keshi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(keshi);

        keshiService.insert(keshi);
        return R.ok();
    }

    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody KeshiEntity keshi, HttpServletRequest request){
    	keshi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(keshi);

        keshiService.insert(keshi);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody KeshiEntity keshi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(keshi);
        keshiService.updateById(keshi);//全部更新
        return R.ok();
    }


    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        keshiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }

    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);

		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}

		Wrapper<KeshiEntity> wrapper = new EntityWrapper<KeshiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = keshiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}




}

论文参考

在这里插入图片描述

目 录
第一章 绪论 1
1.1 选题背景 1
1.2 选题意义 1
1.3 研究内容 2
第二章 开发环境 3
2.1 SSM框架 3
2.2 JSP技术 3
2.3 MYSQL数据库 4
第三章 系统分析 5
3.1可行性分析 5
3.1.1技术可行性 5
3.1.2操作可行性 5
3.1.3经济可行性 5
3.2系统流程分析 6
3.3系统性能分析 9
3.3.1数据完整性 9
3.3.2系统可扩展性 10
3.3.3系统安全性 10
3.4系统功能分析 10
第四章 系统设计 14
4.1 系统设计思想 14
4.2功能结构设计 15
4.3数据库设计 16
4.3.1 数据库E-R图 16
4.3.2 数据库表结构 20
第五章 系统实现 25
5.1管理员功能实现 25
5.1.1 客服管理 25
5.1.2 医生管理 25
5.1.3 用户管理 26
5.1.4 用户病例管理 26
5.2医生功能实现 27
5.2.1 医生坐诊管理 27
5.2.2 预约挂号管理 27
5.2.3 用户病例管理 28
5.3用户功能实现 28
5.3.1 查看医生坐诊 28
5.3.2 联系客服 29
5.3.3 预约挂号 30
5.3.4 用户病例 31
第六章 系统测试 32
6.1系统测试的特点 32
6.2 系统功能测试 32
6.2.1 用户登录测试 32
6.2.2 医生查询功能测试 33
6.3 系统测试结果 33
结 论 34
致 谢 35
参考文献 36

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

q_2781179521

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

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

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

打赏作者

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

抵扣说明:

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

余额充值