springboot067中小型医院网站设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

4.2 系统结构设计

在结构设计过程中,首先对系统进行需求分析,然后进行系统初步设计,将系统功能模块细化,具体分析每一个功能模块具体应该首先哪些功能,最后将各个模块进行整合,实现系统结构的最终设计。本基于Spring Boot的中小型医院网站主要实现了用户功能模块、医师功能模块和管理员功能模块三大部分,系统的功能结构设计如图4-2所示。

图4-2系统结构图

4.3 数据库设计

4.3.1数据库实体(E-R图)

E-R图是一种描述显示数据类型间的关系的数据描述方法,E-R图可以完整地映射出现实模型的关系。E-R图中的三个最为重要的元素就是实体、属性、关系。E-R图即由这三点组成。

实体:E-R图中数据的实体,用矩形表示上面为实体名,下面为实体属性,实体包含主外键等关系。

属性:E-R图中的属性,是指实体的属性,实体由多条属性所构成,属性拥有自己的数据类型,数据大小。属性的优劣决定了E-R图中实体的健全性、完整性。

关系:E-R图中的关系是指实体之间的关系,用菱形来表示实体间的关系,这些菱形关系的联系上有着一对多或多对多的数据联系,这些构成了E-R图的关系,E-R图的关系紧密连接了实体,使实体间的关联性更加的显著、易懂。本基于Spring Boot的中小型医院网站的E-R图如下所示:

4.3.2数据库表设计

本基于Spring Boot的中小型医院网站需要后台数据库,本系统采用MYSQL数据库作为数据存储,下面介绍数据库中的各个表的详细信息。

表4-1  jiaofeiqingdan缴费清单信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime

创建时间

timestamp

feiyongbianhao

费用编号

varchar

200

feiyongxiangmu

费用项目

longtext

feiyongjiage

费用价格

int

11

feiyongxiangqing

费用详情

longtext

jianmianjine

减免金额

int

11

jianmianyuanyin

减免原因

longtext

`shifujine

实付金额

varchar

200

zhanghao

账号

varchar

200

xingming

姓名

varchar

200

sfsh

是否审核

varchar

200

`shhf`

审核回复

longtext

`ispay

是否支付

varchar

200

表4-2  yuyueguahao预约挂号信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime

创建时间

timestamp

keshibianhao

科室编号

varchar

200

keshileixing

科室类型

varchar

200

yishixingming

医师姓名

varchar

200

`guahaofei

挂号费

varchar

200

guahaoshijian

挂号时间

datetime

beizhu`

备注

longtext

shouji

手机

varchar

200

zhanghao

账号

varchar

200

sfsh

是否审核

varchar

200

`shhf`

审核回复

longtext

`ispay

是否支付

varchar

200

表4-3  yishi医师信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime

创建时间

timestamp

yishigonghao

医师工号

varchar

200

mima

密码

varchar

200

`yishixingming`

医师姓名

varchar

200

`xingbie

性别

varchar

200

zhicheng`

职称

varchar

200

shouji

手机

varchar

200

`youxiang

邮箱

varchar

200

shenfenzheng

身份证

varchar

200

tupian

图片

varchar

200

表4-4  users`管理员信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

username`

用户名

varchar

100

password

密码

varchar

100

role`

角色

varchar

100

addtime

新增时间

timestamp

表4-5  yonghu用户信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime

创建时间

timestamp

zhanghao

账号

varchar

200

mima

密码

varchar

200

xingming

姓名

varchar

200

xingbie

性别

varchar

200

shouji`

手机

varchar

200

youxiang

邮箱

varchar

200

shenfenzheng

身份证

varchar

200

表4-6  menzhenxinxi门诊信息表

字段名称

字段意义

字段类型

字段长度

是否主键

能否为空

id

编号

bigint

20

addtime

创建时间

timestamp

keshibianhao

科室编号

varchar

200

keshileixing

科室类型

varchar

200

yishixingming

医师姓名

longtext

zhicheng

职称

varchar

200

zhuanyetezhang

专业特长

longtext

guahaofei

挂号费

int

11

xiangqing

详情

longtext

zhibanbiao

值班表

longtext

tupian

图片

varchar

200

5 系统实现

5.1 用户功能模块的实现

用户进入本系统可查看系统信息,包括首页、门诊信息、药库信息以及系统公告信息等,系统前台主界面展示如图5-1所示。

图5-1系统前台主界面图

5.1.1用户登录界面

用户要想实现预约挂号功能,必须登录系统,在登录界面输入正确的登录账号和密码点击登录按钮进行登录,系统会对用户输入的登录信息进行验证,信息正确则登录成功,反之登录失败,用户登录界面展示如图5-2所示。

图5-2 用户登录界面图

5.1.2用户注册界面

没有账号的用户可进行注册操作,用户注册界面展示如图5-3所示。

图5-3 用户注册界面图

5.1.3门诊信息详情界面

用户可选择门诊查看详情信息,登录后可进行预约挂号操作,门诊信息详情界面展示如图5-4所示。

图5-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.format.annotation.DateTimeFormat;
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.MenzhenxinxiEntity;
import com.entity.view.MenzhenxinxiView;

import com.service.MenzhenxinxiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 门诊信息
 * 后端接口
 * @author 
 * @email 
 * @date 2021-04-19 18:06:31
 */
@RestController
@RequestMapping("/menzhenxinxi")
public class MenzhenxinxiController {
    @Autowired
    private MenzhenxinxiService menzhenxinxiService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,MenzhenxinxiEntity menzhenxinxi,
		HttpServletRequest request){
        EntityWrapper<MenzhenxinxiEntity> ew = new EntityWrapper<MenzhenxinxiEntity>();
		PageUtils page = menzhenxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, menzhenxinxi), params), params));

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

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( MenzhenxinxiEntity menzhenxinxi){
       	EntityWrapper<MenzhenxinxiEntity> ew = new EntityWrapper<MenzhenxinxiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( menzhenxinxi, "menzhenxinxi")); 
        return R.ok().put("data", menzhenxinxiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(MenzhenxinxiEntity menzhenxinxi){
        EntityWrapper< MenzhenxinxiEntity> ew = new EntityWrapper< MenzhenxinxiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( menzhenxinxi, "menzhenxinxi")); 
		MenzhenxinxiView menzhenxinxiView =  menzhenxinxiService.selectView(ew);
		return R.ok("查询门诊信息成功").put("data", menzhenxinxiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        MenzhenxinxiEntity menzhenxinxi = menzhenxinxiService.selectById(id);
        return R.ok().put("data", menzhenxinxi);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        MenzhenxinxiEntity menzhenxinxi = menzhenxinxiService.selectById(id);
        return R.ok().put("data", menzhenxinxi);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody MenzhenxinxiEntity menzhenxinxi, HttpServletRequest request){
    	menzhenxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(menzhenxinxi);
        menzhenxinxiService.insert(menzhenxinxi);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody MenzhenxinxiEntity menzhenxinxi, HttpServletRequest request){
    	menzhenxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(menzhenxinxi);
        menzhenxinxiService.insert(menzhenxinxi);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        menzhenxinxiService.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<MenzhenxinxiEntity> wrapper = new EntityWrapper<MenzhenxinxiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


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


}

5.1.4预约挂号界面

用户在预约挂号时需要填写相关数据,预约挂号界面展示如图5-5所示。

图5-5  预约挂号界面图

大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

翰文编程

你的鼓励 是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值