基于springboot+vue的牙科就诊管理系统

发布时间:2023年12月27日

??博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
??热门专栏推荐订阅?? 订阅收藏起来,防止下次找不到

🔎千套JAVA项目实战持续更新中~

🔎百套小程序APP项目实战持续更新中~

🔎百套Python实战项目持续更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我

??文末获取源码联系??? ? ? ????一定要先收藏??

?

4?系统设计

4.1 总体功能

牙科就诊管理系统是根据需求定制开发,开发软件选用idea平台配合MySQL数据库进行开发环境的搭建操作,网站采用为微信小程序结构进行开发,用户通过小程序访问项目,管理人员通过访问系统数据仅仅需要在客户端安装谷歌浏览器或者是当下常用浏览器就可以访问网站后台管理内容。

4.2 系统概要设计

本次拟开发的系统为了节约开发成本,也为了后期在维护和升级上的便利性,打算通过浏览器来实现系统功能界面的展示,让程序软件的主要事务集中在后台的服务器端处理,前端部分只用处理少量的事务逻辑。下面使用一张图(如图4.2所示)来说明程序的工作原理。

图4.2?程序工作的原理图

4.3 系统功能结构设计

在分析并得出使用者对程序的功能要求时,就可以进行程序设计了。如图4.3展示的就是管理员功能结构图,管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。

图4.3 管理员功能结构图

4.4 数据库设计

程序功能操作不管是添加,修改,还是删除等功能产生的数据都是经由数据库进行数据保存和更新的,所以一个数据库设计的好坏也是程序是否好坏的判定标准,因为程序的成功,有一半的功劳都是靠数据库的优秀设计。数据库一旦设计得良好是可以减轻开发人员的开发负担的。

4.4.1?数据库E-R图设计

这个部分的设计需要使用到E-R图绘制工具,常用的工具就是Visio工具来绘制E-R模型图,这款工具不仅可以快速创建需要的E-R模型图,而且该工具提供的操作界面很简单,可以短时间内修改绘图界面的图形或者是文字的属性。在绘制E-R模型图时,要分清楚各个图形代表的含义,以免绘制出错,E-R模型图由长方形(实体),椭圆形(属性),菱形(关系)这三部分图形符号组成,绘制期间要区分开来,用准确的图形符号代表相应的数据元素。

4.4.2 数据库结构设计

数据库系统一旦选定之后,需要根据程序要求在数据库中建立数据库文件,并在已经完成创建的数据库文件里面,为程序运行中产生的数据建立对应的数据表格,数据表结构设计就是对创建的数据表格进行字段设计,字段长度设计,字段类型设计等,当数据表格合理设计完成之后,才能正常存储相关程序运行产生的数据信息。?

表4.1病例表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

bingli_uuid_number

String

病例编号

3

yonghu_id

Integer

用户

4

yayi_id

Integer

牙医

5

bingren_name

String

病人名称

6

sex_types

Integer

性别

7

age

Integer

年龄

8

bingli_zhusu_content

String

主诉

9

bingli_xianbingshi_content

String

现病史

10

bingli_jiwangshi_content

String

既往史

11

bingli_tijianjieguo_content

String

体检结果

12

bingli_fuzhujieguo_content

String

辅助检查结果

13

bingli_chubuzhenduan_content

String

初步诊断

14

bingli_zhiliaoyijian_content

String

治疗意见

15

insert_time

Date

上传时间

16

create_time

Date

创建时间

表4.2字典表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

dic_code

String

字段

3

dic_name

String

字段名

4

code_index

Integer

编码

5

index_name

String

编码名字

6

super_id

Integer

父字段id

7

beizhu

String

备注

8

create_time

Date

创建时间

表4.3公告表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

gonggao_name

String

公告名称

3

gonggao_photo

String

公告图片

4

gonggao_types

Integer

公告类型

5

insert_time

Date

发布时间

6

gonggao_content

String

公告详情

7

create_time

Date

创建时间

表4.4药单表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yaodan_uuid_number

String

药单编号

3

yonghu_id

Integer

用户

4

yayi_id

Integer

牙医

5

jiancha_time

Date

检查时间

6

bingrenzishu_content

String

病人自述

7

jianchajieguo_content

String

检查结果

8

yishengkaifang_yaopin_content

String

药品信息

9

yishengkaifang_content

String

医生开方

10

yishengjianyi_content

String

医生建议

11

huafeijine

BigDecimal

花费金额

12

xiacijiuzhen_time

Date

下次就诊时间

13

bingli_types

Integer

状态

14

insert_time

Date

录入时间

15

create_time

Date

创建时间

表4.5药品表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yaopin_name

String

药品名称

3

yaopin_uuid_number

String

药品编号

4

yaopin_photo

String

药品照片

5

yaopin_types

Integer

药品类型

6

yaopin_kucun_number

Integer

药品库存

7

yaopin_old_money

BigDecimal

药品原价

8

yaopin_new_money

BigDecimal

现价

9

yaopin_cangku

String

所属仓库

10

yaopin_clicknum

Integer

药品热度

11

yaopin_content

String

药品介绍

12

yaopin_jinji_content

String

禁忌

13

yaopin_gongxiao_content

String

功效

14

yaopin_shuomingshu_content

String

说明书

15

shangxia_types

Integer

是否上架

16

yaopin_delete

Integer

逻辑删除

17

insert_time

Date

录入时间

18

create_time

Date

创建时间

表4.6药品收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yaopin_id

Integer

药品

3

yonghu_id

Integer

用户

4

yaopin_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.7药品评价表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yaopin_id

Integer

药品

3

yonghu_id

Integer

用户

4

yaopin_commentback_text

String

评价内容

5

insert_time

Date

评价时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.8药品订单表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yaopin_order_uuid_number

String

订单编号

3

yaopin_id

Integer

药品

4

yonghu_id

Integer

用户

5

buy_number

Integer

购买数量

6

yaopin_order_true_price

BigDecimal

实付价格

7

yaopin_order_types

Integer

订单类型

8

yaopin_order_payment_types

Integer

支付类型

9

insert_time

Date

订单创建时间

10

create_time

Date

创建时间

表4.9牙医表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yayi_uuid_number

String

牙医编号

3

yayi_name

String

牙医姓名

4

yayi_phone

String

牙医手机号

5

yayi_id_number

String

牙医身份证号

6

yayi_photo

String

牙医头像

7

yayi_email

String

牙医邮箱

8

new_money

BigDecimal

挂号费用

9

zhiwei_types

Integer

职位

10

yayi_content

String

医生介绍

11

yayi_shanchang_content

String

擅长

12

yayi_rongyu_content

String

所获荣誉

13

jinyong_types

Integer

账户状态

14

create_time

Date

创建时间

表4.10牙医收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yayi_id

Integer

牙医

3

yonghu_id

Integer

用户

4

yayi_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.11牙医评价表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yayi_id

Integer

牙医

3

yonghu_id

Integer

用户

4

yayi_commentback_text

String

评价内容

5

insert_time

Date

评价时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.12牙医挂号表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yayi_order_uuid_number

String

订单编号

3

yayi_id

Integer

牙医

4

yonghu_id

Integer

用户

5

yayi_order_yuyue_types

Integer

预约类型

6

insert_time

Date

申请时间

7

yayi_order_time

Date

预约日期

8

yayi_order_types

Integer

预约状态

9

create_time

Date

创建时间

表4.13用户表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_uuid_number

String

用户编号

3

yonghu_name

String

用户姓名

4

yonghu_phone

String

用户手机号

5

yonghu_id_number

String

用户身份证号

6

yonghu_photo

String

用户头像

7

yonghu_email

String

用户邮箱

8

new_money

BigDecimal

余额

9

jinyong_types

Integer

账户状态

10

create_time

Date

创建时间

表4.14管理员表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

username

String

员工名

3

password

String

密码

4

role

String

角色

5

addtime

Date

新增时间


5?系统实现

系统实现部分就是将系统分析,系统设计部分的内容通过编码进行功能实现,以一个实际应用系统的形式展示系统分析与系统设计的结果。前面提到的系统分析,系统设计最主要还是进行功能,系统操作逻辑的设计,也包括了存储数据的数据库方面的设计等内容,系统实现就是一个最终的实施阶段,将前面的设计成果进行物理转化,最终出具可以运用于实际的软件系统。

5.1 管理员功能介绍

5.1.1?牙医列表

如图5.1显示的就是牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。

图5.1 牙医列表页面

5.1.2 公告信息管理

公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。下图就是公告信息管理页面。

图5.3 公告信息管理页面

5.1.4 药品管理

如图5.4显示的就是药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。

图5.4药品管理页面

JAVA后端代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注?,让更多需要的同学看到

不同开发语言专栏推荐订阅

?🔎千套JAVA项目实战持续更新中~

🔎百套小程序APP项目实战持续更新中~

🔎百套Python实战项目持续更新中~

👇下方有我的微信名片👇

文章来源:https://blog.csdn.net/itrjxxs_2/article/details/135116735
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。