基于 Spring Boot 的健康咨询系统

news2024/11/16 13:39:27

 1 项目介绍

1.1 摘要

本项目旨在通过构建一个对用户更加友好的健康咨询平台,帮助用户方便、快捷地获取专业并且准确的健康咨询服务,同时为医疗机构提供一个高效易用的可以提供信息管理的服务平台。

项目采用了Spring Boot框架作为主要的开发平台。本系统的用户功能包括:用户注册与登录、在线健康咨询、药品查询、订单查询、智能咨询等。管理员功能包括:用户管理、药品管理、医生管理、权限配置等。医生功能包括:在线健康咨询回复等。系统架构采用了分层设计。前端使用了HTML、CSS和JavaScript进行开发,后端则采用了Spring Boot框架。数据存储方面,选择了MySQL数据库来管理用户数据和健康咨询记录。为了确保系统的安全性和稳定性,采用了JWT(JSON Web Token)进行用户身份验证,并引入了Spring Security框架来加强系统的安全性。

通过实际应用,本系统显著提升了用户获得专业健康咨询意见的效率、满意度和系统使用体验。用户可以在智能医生界面中输入自身症状,系统会调用数据库来判断咨询者的健康问题,也可以对医生进行在线咨询,给咨询者提供持续并且高效的健康咨询服务。

论文针对用户在日常生活中对自身健康问题的咨询和解决等需求,设计了健康咨询系统的框架,给出了系统的总体设计,并对系统的架构及关键模块的实现过程进行了详细论述。实现了一个完整系统的设计,为用户提供了更加准确、便携的健康咨询服务。

1.2 系统技术栈

Spring Boot

Maven

Shrio

MySQL

Vue

VueRout

ElementUI

Bootstrap

1.3 系统角色

管理员

医生

用户

1.4 系统功能介绍

1.4.1 管理员功能

用户管理

药品管理

医生管理

科室管理

个人信息管理

权限配置

角色管理

1.4.2 医生功能

咨询回复

药品信息管理

病症标签管理

1.4.3 用户功能

在线咨询

评论

订单查询

药品查询

医生及医院查询

智能咨询

1.5 系统功能框架图

1.6 系统数据库

系统相关的数据库如下:

本系统主要使用下列8张表:hsw_biaoqian标签信息表、hsw_bzguanlianbq病症标签关联信息表、hsw_bzxinxi病症信息表、hsw_dingdanbiao问诊医生表、 hsw_keshibiao科室表、hsw_juese角色表、hsw_juese_bumen角色与部门对应关系表、hsw_yaopin药品表。

2 详细设计与实现

2.1 登录功能的设计与实现

为了完成用户登录,本系统设计了三个输入框,分别用于输入账号、密码和验证码。每个输入框此系统都设置了相应的样式和占位符,以提供良好的用户体验。使用了Vue.js的v-model指令,将输入框的值与Vue实例中的数据属性进行绑定,实现数据的双向绑定。本系统通过在验证码输入框上监听键盘事件,当系统接收到按下回车键的事件时,系统会触发login方法进行登录操作

<div class="form-group has-feedback">

<input type="text" class="form-control" v-model="username" style=base_one placeholder="账号">

<spanclass="glyphiconglyphicon-userform-control-feedback">

</span>

</div>

<div class="form-group has-feedback">

<input type="password" class="form-control" v-model="password style=base_one placeholder="密码">

<span class="glyphicon glyphicon-lock form-control-feedback">

</span>

</div>

<div class="form-group has-feedback">

<input type="text" class="form-control" v-model="captcha"      style=base_one @keyup.enter="login" placeholder="验证码">

<spanclass=" glyphicon-warning-sign form-control-feedback">

</span>

</div>

以上代码是一个简单的前端HTML表单,包含了账号、密码和验证码三个输入字段,使用了Bootstrap样式类美化,并且使用Vue.js的v-model指令进行数据绑定。

SysUser queryByUserName(String username);

以上代码定义的方法是接口SysUserService中的一个抽象方法,用于根据用户名查询系统用户信息。

public Map<String, Object> login(String username, String password, String captcha)throws IOException {

System.out.println("usernameusernameusername"+username);

System.out.println("passwordpasswordpassword"+password);

System.out.println("captchacaptchacaptchacaptcha"+captcha);

String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY);

if(!captcha.equalsIgnoreCase(kaptcha)){

return R.error("验证码不正确");

 }

//用户信息

SysUser user = sysUserService.queryByUserName(username);

System.out.println("useruseruseruser"+user);

//账号不存在、密码错误

if(user == null || !user.getPassword().equals(new Sha256Hash(password, user.getSalt()).toHex())) {

return R.error("账号或密码不正确");

以上代码实现本系统的登录功能。接受用户输入的用户名、密码和验证码,并进行相应的验证。它首先检查用户输入的验证码是否与系统生成的验证码匹配,如果不匹配,则返回验证码错误的提示信息。之后查询输入的用户名对应的用户信息,并验证输入的密码是否与数据库中存储的密码匹配,如果用户名不存在或密码错误,则返回相应的错误提示信息。

SysUser queryByUserName(String username);

public SysUser queryByUserName(String username) {

return sysUserDao.queryByUserName(username);

}

以上代码定义了一个名为queryByUserName的方法,用于查询系统用户信息。该方法接受一个用户名作为参数,然后调用sysUserDao对象的queryByUserName方法来执行查询,并返回查询到的用户信息。

2.2 个人信息查看及修改功能

用户点击进入个人信息页面后,系统将展示当前登录账号的基本信息。具体功能有:对当前账户的密码进行修改,对姓名、性别、电子邮箱进行输入或修改,还可以编写当前账号的个人简介。用户可以随时登录系统对这些信息进行修改,此功能保证了用户的基本信息时时刻刻都为最新且最正确。

<tr>

<td width="30%" rowspan="5">

<img :src=sysuser.photopath style="width: 200px;height:

200px;" alt=""/></td>

<td width="12%">姓名</td>

<td width="26%"><input type="text" v-model="sysuser.realname"

style="width:95%">

</td>

<td width="10%">性别</td>

<td width="31%"><select style="width: 96%" v-model="sysuser.x   b">

<option>男</option>

<option>女</option>

</select></td>

</tr>

以上代码的功能包含用户信息的展示和编辑。其中,第一个单元格使用了一个图片路径来展示用户的照片,图片的大小被设置为200px,接着是一个包含姓名和性别编辑输入框的单元格,姓名信息通过v-model与Vue.js中的sysuser.realname双向绑定,性别信息通过v-model与sysuser.xb绑定到下拉选择框中。当选择男或女时,对应的值会被保存到sysuser.xb中,保存按钮的前端代码如下:

<tr>

<td colspan="4" align="right">

<a class="btn btn-primary btn-sm"

@click="updateuser"> 修改

</a>

</td>

</tr>

以上包含一个按钮,按钮的显示为"修改"。当点击这个按钮时,会触发一个名为"updateuser"的事件,在Vue.js的实例中有相应的处理函数来处理这个事件,用于触发用户信息的修改操作。

private String updateuser;

public String getUpdateuser() {

return updateuser;

}

public void setUpdateuser(String updateuser) {

this.updateuser = updateuser;

}

以上代码定义了一个私有属性 updateuser,并提供了对该属性的访问和设置方法。getUpdateuser() 方法用于获取对象的更新用户信息,而 setUpdateuser(String updateuser) 方法则用于设置更新用户信息。通过这些方法,可以对 updateuser 属性进行安全的读取和修改操作。

public R save(@RequestBody SysBqxxb bqxxb) {

ValidatorUtils.validateEntity(bqxxb);

bqxxb.setCreatetime(new Date());

bqxxb.setCreateuser(getUser().getUsername());

bqxxb.setUpdatetime(new Date());

bqxxb.setUpdateuser(getUser().getUsername());

sysBqxxbService.insert(bqxxb);

if (bqxxb.getFiles() != null) {

tMaterialFileService.setTMaterialFilePrintId(bqxxb.getFil es(), bqxxb.getId());

}

return R.ok();

}

以上这段代码是一个后端接口的实现,用于保存SysBqxxb对象到数据库中。在保存之前,通过ValidatorUtils验证对象的有效性,设置对象的创建时间、创建者、更新时间和更新者,将对象存储到数据库中。如果对象包含文件信息,则将文件信息与对象关联起来。返回表示操作成功的响应对象。

boolean updateById(T t);

public boolean updateById(T entity) {

return retBool(this.baseMapper.updateById(entity));

}

以上代码定义了个人信息的更新方法updateById,用于更新数据库中指定主键对应的记录。通过传入entity,该方法会将对象的属性值映射到数据库记录中,并进行更新操作。方法会返回一个布尔值,表示更新操作的结果,true表示更新成功,false表示更新失败。

详细内容联系作者获取

编码不易需要源码和文档的用户加微信  Mrzys1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1864871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑马苍穹外卖8 Spring Task+WebSocket 来单提醒和客户催单

Spring Task Spring提供的任务调度工具&#xff0c;按照约定时间自动执行代码。【以前的都是基于请求(http)响应的】 cron表达式 通过cron表达式可以定义任务触发时间。 cron表达式生成器 &#xff08;1&#xff09;导入spring-context &#xff08;2&#xff09;EnableSc…

IEEE-Trans系列!版面稀缺,现在投稿可加急处理,代表作神刊!

【SciencePub学术】今天小编给大家推荐一本计算机领域的SCI&#xff0c;隶属于IEEE出版社旗下&#xff0c;现已稳定检索49年&#xff01;影响因子4.0-5.0之间&#xff0c;JCR1区&#xff0c;中科院2区&#xff0c;质量口碑甚誉&#xff01; 有论文发表需求的学者可以后台联系张…

加速业务布局,30年老将加盟ATFX,掌舵运营新篇章

全球领先的差价合约经纪商ATFX日前宣布了一项重大人事任命&#xff0c;聘请业界资深人士约翰博格(John Bogue)为机构业务运营总监。约翰博格是一名行业老将&#xff0c;曾在差价合约界深耕三十余载。伴随其加入ATFX&#xff0c;相信他的深厚专业知识和从业经验将为ATFX机构业务…

视频云计算的未来发展趋势:智能化、个性化与云端协同助力智慧城市安防监控

随着信息技术的飞速发展&#xff0c;云计算作为一种全新的服务模式&#xff0c;正在改变我们处理数据和信息的方式。而视频云计算技术&#xff0c;作为云计算领域的一个重要分支&#xff0c;以其独特的优势&#xff0c;正在逐步渗透到我们生活的各个领域。 一、视频云计算技术…

祝贺:东兴朱雀桥成为一点点的NFC果汁供应商。

东兴朱雀桥进出口&#xff1a;品质之选&#xff0c;护航一点点奶茶的成长&#xff01; 据记者了解&#xff0c;该家公司是专注于进口越南特色NFC果汁&#xff1a;薇妮她VINUT人参果汁饮料的研发与生产&#xff0c;以其丰富的产品线和卓越品质&#xff0c;成为了行业内的佼佼者…

多用户商城进销存管理如何处理?

竞争激烈的市场环境&#xff0c;多用户商城管理是一项复杂而具有挑战性的任务。特别是在进销存&#xff08;进货、销售、库存&#xff09;管理方面&#xff0c;面对多用户商城的复杂结构&#xff0c;传统的手动操作已经难以满足高效和准确的需求。因此&#xff0c;借助现代化的…

自动驾驶系统功能安全解决方案解析

电信、公用事业、运输和国防等关键基础设施服务需要定位、导航和授时&#xff08;PNT&#xff09;技术来运行。但是&#xff0c;广泛采用定位系统&#xff08;GPS&#xff09;作为PNT信息的主要会引入漏洞。 在为关键基础设施制定PNT解决方案时&#xff0c;运营商必须做出两个…

Ubuntu使用apt-get指令下载

一、前言 本节来学习 ubuntu 中的 apt-get 命令&#xff0c;ubuntu 为什么而闻名&#xff1f;第一&#xff0c; ubuntu 有一个非常好的图形界面&#xff0c;第二就是 ubuntu 的 apt-get 功能强大。 什么是 apt-get 呢&#xff0c;在 windows 上安装软件&#xff0c;大家一定都…

使用c++栈刷题时踩坑的小白错误

根据图片中提供的代码&#xff0c;可以发现以下三处错误&#xff1a; 错误原因&#xff1a;条件判断语句的逻辑错误。 代码行&#xff1a;if (res.top() ! e || res.empty())&#xff08;第7行&#xff09; 问题&#xff1a;如果 res 为空&#xff08;res.empty() 为 true&…

已解决javax.xml.datatype.DatatypeConfigurationException异常的正确解决方法,亲测有效!!!

已解决javax.xml.datatype.DatatypeConfigurationException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 示例场景 报错原因 解决思路 解决方法 分析错误日志 检查类路径 验证自定义实现类 检查系统属…

怎么实现微信支付?

微信小程序中微信支付&#xff08;前端流程&#xff09; 微信支付前准备工作 微信公众平台绑定商户号 微信支付平台配置好后端信息支付前要有用户的openid 1. 客户端点击支付按钮 在用户点击支付按钮时&#xff0c;触发支付流程。 // 绑定支付按钮点击事件 function onPayB…

【PC端】魔力宝贝服务端+登录器源码+配套网站+后台

配套源码 启动也很简单 一共两部 下载地址 www.t1gm.com 下面上图

itsm服务管理工具有哪些?

itsm&#xff08;IT服务管理&#xff09;是现代企业管理IT服务的关键框架&#xff0c;可帮助组织提供高效的IT服务&#xff0c;并确保业务持续运行。使用itsm服务管理工具是实现这一目标的关键&#xff0c;下面我们来看看itsm服务管理工具有哪些&#xff1a; 1. ServiceDesk Pl…

Stable Diffusion 亲测这几个SDXL大模型,真的非常好用!

大家好我是极客菌&#xff0c;前两周Stable Diffusion WebUI1.6.0发布了&#xff0c;新增了很多对SDXL生态的支持。 而ControlNET也对SDXL的支持也逐渐稳定。 SDXL的生态终于有一点起色了&#xff0c;我也觉得是时候&#xff0c;可以来写一篇SDXL的大模型推荐了。 在推荐之前…

云层区分神经网络模型——二分类

云层区分神经网络模型——二分类 问奶奶&#xff0c;是什么让他们维护一份感情长达年&#xff0c;奶奶说那个年代什么东西坏了都会想要修&#xff0c;现在什么坏了都想着换。 安装依赖 # 要运行脚本&#xff0c;请先安装以下库&#xff1a;pip install tensorflowpip install …

uniapp——上传图片获取到file对象而非临时地址——基础积累

最近在看uniapp的代码&#xff0c;遇到一个需求&#xff0c;就是要实现上传图片的功能 uniapp 官网地址&#xff1a;https://uniapp.dcloud.net.cn/ 上传图片有对应的API&#xff1a; uni.chooseImage方法&#xff1a;https://uniapp.dcloud.net.cn/api/media/image.html#choo…

探索Linux的奇妙世界:第二关---Linux的基本指令(上篇)

1. xshell与服务器的连接 想必大家在看过上一期视频时已经搭建好了Linux的环境了并且已经下好了终端---xshell了吧?让我来带大家看一看下好了是什么样子的: 第一次登陆会让你连接你的服务器,就是我们买的云服务器,买完之后需要把公网地址ip复制过来进行链接,需要用户名和密码连…

秋招Java后端开发冲刺——关系型数据库篇(Mysql)

本文介绍关系型数据库及其代表Mysql数据库&#xff0c;并介常见面试题目。 一、数据库概述 1. 数据库&#xff08;Database, DB&#xff09;&#xff1a;是长期储存在计算机内的、有组织的、可共享的数据集合。 2. 数据库管理系统&#xff08;Database Management System, D…

MATLAB-NGO-CNN-SVM,基于NGO苍鹰优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)

NGO-CNN-SVM&#xff0c;基于NGO苍鹰优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类) 1.数据均为Excel数据&#xff0c;直接替换数据就可以运行程序。 2.所有程序都经过验证&#xff0c;保证程序可以运行。 3.具有良好的编程习惯&#xff0c;程序均…

408计算机网络--物理层

一、物理层概述 物理层是干嘛使得&#xff1f; 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是指具体的传输媒体。 物理层主要任务是确定与传输媒体接口有关的一些特性。定义标准可以理解为插排上的两孔三孔 机械特性&#xff1a;定义物理连接…