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

详细内容联系作者获取

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

脚手架构建VUE项目

1.环境 安装node.js至少16以上&#xff0c;node中自动npm包管理工具 2.工具安装脚手架 在需要构建项目的目录下启动cmd,输入npm init vuelatest安装默认最新版本vue,根据提示完成安装。 3.安装依赖 安装提示安装依赖 4.项目构建成功&#xff0c;使用VScode工具打开

黑马程序员——Spring框架——day09——linux初级

目录&#xff1a; 前言 什么是Linux&#xff1f;为什么要学Linux 企业用人要求个人发展需要学完Linux能干什么 1).环境搭建2).常用命令3).安装软件4).项目部署小结2.Linux简介 主流操作系统Linux发展历史Linux系统版本Linux安装 安装方式介绍安装VMware安装Linux网卡设置安装S…

共创未来:订单共享模式驱动新零售增长新引擎

在当今快速变化的商业环境中&#xff0c;创新和效率成为了企业不可或缺的发展动力。为此&#xff0c;我们推出了一种颠覆性的商业模式——联合订单共享商业模式&#xff0c;它正在引领新零售行业的变革&#xff0c;并为企业家们提供了全新的发展机遇。 联合订单共享商业模式&am…

公司软件产品-资源详情列表中无法删除表(缺少删除按钮)

处理方式: 需要更新支撑后台库common_object表中STATE_FLAG 的字段状态 update common_object set STATE_FLAG 000000 where BASE_DIRECTORY 1460067;说明: 1460067 为目录ID 需要先将要删除的表结构迁移到一个新的目录中&#xff0c;迁移成功之后通过开发者工具f12查看dirI…

Spring底层原理之proxyBeanMenthod实例 动态代理 反射 Bean的拦截

proxyBeanMenthod 假设我们要进行一个系统的二次开发 然后第一次开发我们实用的是XML声明bean 二次开发的时候要用注解 我们如何把bean都加载上来呢 我们首先创建一个全新的配置类 package com.bigdata1421.config;public class SpringConfig32 { } 我们创建一个APP 加载…

Intentional设计分析,一款个人提效的AI产品

Intentional 是一款专注于提高工作效率的应用程序。 它允许用户设定上网目标&#xff0c;并会自动屏蔽与目标无关的网站&#xff0c;帮助用户保持专注&#xff0c;避免在网上无谓地浏览和分心。 这款应用程序是由开发者 Samy RAHIM 创造的&#xff0c;为了解决当今上网时容易…

AIPainter:创意绘画的智能助手

AIPainter 介绍 AIPainter是一款简单易用的AI画图工具&#xff0c;支持文生图、图生图&#xff08;提示词改图、图片变体、分辨率增强等&#xff09;&#xff0c;底层大模型基于开源的腾讯混元文生图、SDXL等。 功能特点 提示词库 AIPainter默认提供了一些常用场景的提示词供…

PLC梯形图(置位与复位)的使用方法

置位指令相当于我们把照明灯的开关按到开的状态,即便我们把手离开,开关也是通的,灯也是亮的。 想要关闭必须要把它按到关的状态,即使用复位指令。 复位指令相当于我们把照明灯的开关按到关的状态,把手离开,开关也是断的,灯也是不亮的。 想要打开必须要把它按到开的状…

【JPCS独立出版】2024计算建模与应用数学国际学术会议暨中俄微分方程及其应用学术会议(CMAM 2024 DEA,8月2-4)

2024计算建模与应用数学国际学术会议暨中俄微分方程及其应用学术会议&#xff08;CMAM 2024 & DEA&#xff09;由大连海事大学理学院主办&#xff0c;上海海关学院、俄罗斯科学院科学城数学中心、辽宁省数学学会、大连市数学学会协办&#xff0c;AEIC学术交流中心承办。会议…

还不到6个月,GPTs黄了

相比起来&#xff0c;人们还不如使用一个足够强大、灵活且通用的AI助手来满足各类复杂需求。更严重的是一些独立GPTs显露出的安全隐患。除此之外&#xff0c;最大的问题在于OpenAI模糊不清的货币化政策。 文章正文 上周&#xff0c;不少人发现微软官网忽然更新了一条“GPT Bu…

AD手动添加网络

AD手动添加网络&#xff0c;&#xff08;用于不画原理图直接画PCB用&#xff09;一看就懂_ad不用原理图画pcb-CSDN博客https://blog.csdn.net/feifeiccode/article/details/107198441#:~:text%E6%B7%BB%E5%8A%A0%E8%A6%81%E6%B7%BB%E5%8A%A0%E7%9A%84%E7%BD%91%E7%BB%9C,%E6%8C…

Android简介-历史、API等级与体系结构

1. Android简介 Android是一种基于Linux内核的自由及开放源代码的操作系统。最初是由安迪鲁宾(Andy Rubin)开发的一款相机操作系统。2005年8月被Google收购。2007年11月&#xff0c;Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。…

GISSERVER 管理器 1.0(私有化地图离线部署)

一、 简介 QGIS现在在全世界已经成为ARCGIS的最佳代替产品,而且是开源免费的。其用户社区和产品功能都已经可以与arcgis相媲美! GISSERVER管理工具是一个零代码地图网站建站工具(私有化地图离线部署)&#xff0c;可以直接将QGIS工程转换为GIS网站&#xff08;功能类似ARCGISM…

中国版Sora来了!一键生成16秒1080P的AI视频,直面对标OpenAI

追赶 OpenAI 文生视频模型 Sora 需要多久?在中关村论坛未来人工智能先锋论坛上&#xff0c;中国首个长时长、高一致性、高动态视频大模型 Vidu 正式发布&#xff0c;支持一键生成长达 16 秒、分辨率为 1080P 的高清视频内容。 Vidu 生成的视频 demo 甫一发布&#xff0c;便迅速…

Java25年还有更多的工作岗位适合二本学生就业吗?

Java作为一种广泛使用的编程语言。尽管技术领域不断发展和变化&#xff0c;Java依然在许多行业中占据重要地位。以下是一些原因&#xff0c;刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「JAVA的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区…

Linux通用LInux高危漏洞(CVE-2024-1086)修复案例

一、漏洞描述 2024年3月28日&#xff0c;监 Linux kernel权限提升漏洞&#xff08;CVE-2024-1086&#xff09;的PoC/EXP在互联网上公开&#xff0c;该漏洞的CVSS评分为7.8&#xff0c;目前漏洞细节已经公开披露&#xff0c;美国网络安全与基础设施安全局&#xff08;CISA&…

政务网站(.gov)应选择什么样的SSL证书

政府网站作为公共服务的重要平台&#xff0c;承载着发布政策信息、提供在线服务、促进政民互动等功能&#xff0c;其数据安全性和网站可信度尤为重要。因此&#xff0c;选择合适的SSL证书对于政府网站而言&#xff0c;不仅是遵循网络安全法规的需要&#xff0c;也是提升公众信任…

OpenCV-Python——环境配置及图像基本操作

一、环境配置 1、在虚拟环境中安装以下库&#xff1a; opencv-python3.4.1.15 opencv-contrib-python3.4.1.15 建议安装3.4.1的版本&#xff0c;3.4.2之后的版本做了专利保护&#xff0c;有的功能不能实现。 虚拟环境的安装以及安装库的问题见PyQt5专栏中的第一节。 2、安…

权限传递,提取明文密码

一、cs与msf权限传递 创建foreign监听器-->msf监听模块设置端口-->cs执行新建会话选择创建的监听器 1.创建监听器&#xff1a; 2.msf监听设置端口&#xff1a; use exploit/multi/hander set payload windows/meterpreter/reverse_http set lport 4444 exploit 二、mi…

书酒共舞:品味文字之韵,沉醉酒香之境

在喧嚣的都市中&#xff0c;我们常常渴望找到一片宁静的角落&#xff0c;让心灵得到片刻的休憩。此刻&#xff0c;一杯雷盛红酒与一本心仪的书籍&#xff0c;便成了很好的伴侣&#xff0c;它们相互映衬&#xff0c;共同编织出一幅优雅的画卷&#xff0c;让我们在品味中感受文字…