基于 Spring Boot 的健康咨询系统

 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表示更新失败。

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

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

相关文章

论文阅读_基于嵌入的Facebook搜索

英文名称&#xff1a;Embedding-based Retrieval in Facebook Search 中文名称&#xff1a;基于嵌入式检索的Facebook搜索 时间&#xff1a;Wed, 29 Jul 2020 (v2) 地址&#xff1a;https://arxiv.org/abs/2006.11632 作者&#xff1a;Jui-Ting Huang, Ashish Sharma, Shuying …

Postman设置请求间自动保存返回参数,方便后续请求调用,减少复制粘贴

postman中常常出现&#xff1a;有两个请求&#xff0c;一个请求首先获取验证码或者token&#xff0c;再由得到的验证码或token编写body发送另一个请求。如何设置两个请求间自动关联相关数据呢&#xff1f; 通过环境存储全局变量 现在有两个请求如下图&#xff0c;生成验证码是…

如何将Hive表的分区字段插入PG表对应的时间戳字段?

文章目录 1、背景描述2、场景分析 1、背景描述 数据仓库的建设通常是为业务和决策服务的。在数仓开发的应用层阶段&#xff0c;BI可以直接从主题层/业务层取数&#xff0c;而前端需要根据具体的作图需求通过后端查询数据库 作图的指标需要根据主题层/业务层做查询计算&#xf…

保姆教程教你如何使用数据集运行ORB-SLAM3

链接: 自学SLAM&#xff08;2&#xff09;—保姆教程教你如何使用自己的视频运行ORB-SLAM2 这篇文章是详细教怎么运行ORB-SLAM2的&#xff0c;那么下来我们就看看怎么运行ORB-SLAM3 理论上ORB-SLAM2的环境也是可以跑ORB-SLAM3的&#xff0c;因为我之前试过&#xff0c;编译成功…

最佳学习率和Batch Size缩放中的激增现象

前言 《Surge Phenomenon in Optimal Learning Rate and Batch Size Scaling》原文地址GitHub项目地址Some-Paper-CN。本项目是译者在学习长时间序列预测、CV、NLP和机器学习过程中精读的一些论文&#xff0c;并对其进行了中文翻译。还有部分最佳示例教程。如果有帮助到大家&a…

Linux源码-进程描述符

Linux操作系统引入了PCB(Process Control Block,进程控制块)结构。PCB是Linux操作系统识别进程的通道。 创建进程时&#xff0c;首先会创建PCB&#xff0c;根据PCB中的信息对进程实施有效管理。当进程终止后&#xff0c;Linux操作系统会释放对应的PCB资源。 PCB的数据结构是s…

2022年第十三届蓝桥杯比赛Java B组 【全部真题答案解析-第二部分】

上一篇文章&#xff1a;2022年第十三届蓝桥杯比赛Java B组 【全部真题答案解析-第一部分】_尘封的CPU的博客-CSDN博客最近回顾了Java B组的试题&#xff0c;深有感触&#xff1a;脑子长时间不用会锈住&#xff0c;很可怕。兄弟们&#xff0c;都给我从被窝里爬起来&#xff0c;赶…

解决error Error: certificate has expired问题

安装环境遇到下面问题&#xff1a; 产生原因&#xff1a;可能是开了服务器代理访问导致ssl安全证书失效 解决办法&#xff1a; 在终端输入以下命令&#xff1a; yarn config set "strict-ssl" false -g

3ds Max导出fbx贴图问题简单记录

1.前言 工作中发现3ds Max导出的fbx在其它软件&#xff08;Autodesk viewer&#xff0c;blender&#xff0c;navisworks&#xff0c;FBXReview等&#xff09;中丢失了部分贴图&#xff0c;但导出的fbx用3ds Max打开却正常显示。 fbx格式使用范围较广&#xff0c;很多常见的三…

Milvus【部署 01】向量数据库Milvus在Linux环境下的在线+离线安装

向量数据库Milvus在Linux环境下的在线离线安装 1.千问简介2.在线安装2.离线安装 1.千问简介 Milvus 是一款专为处理高维向量数据设计的开源云原生数据库&#xff0c;旨在满足海量向量数据的实时召回需求。它由 Zilliz 公司开发并维护&#xff0c;基于Apache许可证2.0版本发布。…

ASUS华硕A豆14笔记本电脑I421EAYB,I421EQYB_ADOL14EA工厂模式原厂Win11系统安装包下载

适用型号&#xff1a;ADOL14EA笔记本I421EAYB、I421EQYB 链接&#xff1a;https://pan.baidu.com/s/1krU8m_lbApyUfZQo5E4cCQ?pwd0ewl 提取码&#xff1a;0ewl 华硕原装WIN11系统工厂安装包&#xff0c;带有MyASUS WinRE RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系…

Linux上安装JDK,Java起飞,开启编程之旅

在Linux环境下搭建Java开发平台&#xff0c;是许多开发者入门Java世界的第一步。Java的跨平台特性使得在Linux上安装JDK尤为重要&#xff0c;它不仅能为Linux开发者提供更广阔的应用场景&#xff0c;也是探索Java强大功能的起点。 接下来&#xff0c;让我们一起在Linux中完成J…

【SpringMVC】_SpringMVC实现留言墙

目录 1. 需求分析 2. 接口定义 2.1 提交留言 2.2 获取全部留言 3. 响应数据 4. 服务器代码 4.1 MessageInfo 文件 4.2 MessageController 文件 5. 前端页面代码 5. 运行测试 1. 需求分析 实现如下页面&#xff1a; 1、输入留言信息&#xff0c;点击提交后&#xff0…

使用腾讯云服务器从0搭建个人网站,超简单图文教程

使用腾讯云服务器搭建网站全流程&#xff0c;包括轻量应用服务器和云服务器CVM建站教程&#xff0c;轻量可以使用应用镜像一键建站&#xff0c;云服务器CVM可以通过安装宝塔面板的方式来搭建网站&#xff0c;腾讯云服务器网txyfwq.com整理使用腾讯云服务器建站教程&#xff0c;…

NPOI入门指南:轻松操作Excel文件的.NET库

目录 引言 一、NPOI概述 二、NPOI的主要用途 三、安装NPOI库 四、NPOI基本使用 六、性能优化和内存管理 七、常见问题与解决方案 八、结论 附录 引言 Excel文件作为数据处理的重要工具&#xff0c;广泛应用于各种场景。然而&#xff0c;在没有安装Microsoft Office的…

llama.cpp

https://github.com/echonoshy/cgft-llm 【大模型量化】- Llama.cpp轻量化模型部署及量化_哔哩哔哩_bilibili github.com/ggerganov/llama.cpp cd ~/code/llama.cpp/build_cuda/bin ./quantize --allow-requantize /root/autodl-tmp/models/Llama3-8B-Chinese-Chat-GGUF/Llama…

海尔智家:科技优秀是一种习惯

海尔智家&#xff1a;科技优秀是一种习惯 2024-06-28 15:19代锡海 6月24日&#xff0c;2023年度国家科学技术奖正式揭晓。海尔智家“温湿氧磁多维精准控制家用保鲜电器技术创新与产业化”项目荣获国家科学技术进步奖&#xff0c;成为家电行业唯一牵头获奖企业。 很多人说&…

分布式kettle调度管理平台简介

介绍 Kettle&#xff08;也称为Pentaho Data Integration&#xff09;是一款开源的ETL&#xff08;Extract, Transform, Load&#xff09;工具&#xff0c;由Pentaho&#xff08;现为Hitachi Vantara&#xff09;开发和维护。它提供了一套强大的数据集成和转换功能&#xff0c…

【C++】类、静态、枚举、重载、多态、继承、重写、虚函数

五、类 面向对象编程是一个巨大的编程范式。C中的类class就是基于对象的程序设计。 我们可以用类来定义一个新的类型&#xff0c;这些新类型就可以像内置类型一样使用。 内置类型颗粒度太太小&#xff0c;现实需求又非常复杂&#xff0c;这就需要我们把内置类型适度的进行拼搭…

源码学习:文件描述符

在进程描述学习中&#xff0c;扯到了max_fds&#xff0c;接着就联想到了日常运维中常见的ulimit参数、sysctl内核参数&#xff0c;原来以为max_fds与这些个关联性比较强&#xff0c;但经过一早上折腾以后&#xff0c;发现其实还是有一些差距的。但是在学习过程中&#xff0c;却…