大学生在线焦虑测试系统
这是一个专为大学生设计的在线心理健康评估与咨询平台,集成了焦虑测评、在线咨询、个性化建议等核心功能。系统采用前后端分离架构,支持学生、医生、管理员三种角色,提供专业的心理健康服务。
项目封面

项目说明
大学生在线焦虑测试系统
项目简介
这是一个专为大学生设计的在线心理健康评估与咨询平台,集成了焦虑测评、在线咨询、个性化建议等核心功能。系统采用前后端分离架构,支持学生、医生、管理员三种角色,提供专业的心理健康服务。
技术栈
后端技术
| 技术 | 版本/说明 |
|---|---|
| 开发语言 | Java 17 |
| 框架 | Spring Boot 3.4.3 |
| ORM框架 | MyBatis-Plus 3.5.8 |
| 数据库 | MySQL 8.0+ |
| API文档 | Knife4j 4.5.0 (Swagger增强) |
| 工具库 | Hutool 5.8.36 |
| 身份认证 | JWT (jjwt 0.12.3) |
| 构建工具 | Maven |
前端技术
| 技术 | 版本/说明 |
|---|---|
| 框架 | Vue 3.5.13 |
| 构建工具 | Vite 6.2.4 |
| UI组件库 | Element Plus 2.9.8 |
| 状态管理 | Pinia 3.0.1 |
| 路由管理 | Vue Router 4.5.0 |
| HTTP请求 | Axios 1.8.4 |
| 包管理器 | pnpm |
| 代码规范 | ESLint + Prettier + Oxlint |
项目特点
- 前后端分离:后端提供RESTful API,前端独立开发部署
- 多角色管理:支持学生、医生、管理员三种角色
- 专业测评:标准化焦虑测评问卷,科学评估心理状态
- 在线咨询:实时消息系统,支持学生与医生在线沟通
- 个性化建议:医生根据测评结果提供针对性建议
- 数据可视化:测评结果图表展示,趋势分析
- API文档:集成Knife4j,提供美观的API文档界面
功能模块
学生端功能
1. 用户管理
- 用户注册/登录
- 个人信息管理
- 密码修改
- 个人资料编辑
2. 焦虑测评
- 查看可用问卷列表
- 在线答题
- 提交测评
- 查看测评结果
- 历史测评记录
- 测评结果分析
3. 在线咨询
- 发起咨询请求
- 选择咨询医生
- 实时消息沟通
- 查看咨询历史
- 咨询状态跟踪
4. 个性化建议
- 查看医生建议
- 建议收藏
- 建议分类浏览
5. 疾病知识库
- 浏览心理疾病信息
- 症状查询
- 治疗方法了解
- 预防措施学习
6. 系统通知
- 查看系统公告
- 接收测评提醒
- 咨询消息通知
医生端功能
1. 测评管理
- 查看待处理测评
- 测评结果分析
- 填写处理意见
- 测评统计分析
2. 在线咨询
- 接收咨询请求
- 回复学生消息
- 咨询会话管理
- 咨询记录查看
3. 个性化建议
- 创建个性化建议
- 编辑建议内容
- 发布建议
- 建议管理
4. 患者管理
- 查看患者列表
- 患者测评历史
- 患者咨询记录
- 患者档案管理
管理员功能
1. 用户管理
- 用户列表查看
- 用户信息编辑
- 用户状态管理
- 角色权限分配
2. 医生管理
- 医生信息管理
- 医生资质审核
- 医生职称管理
- 医生专业设置
3. 问卷管理
- 问卷创建/编辑
- 问题管理
- 选项配置
- 问卷发布/下架
4. 疾病管理
- 疾病信息录入
- 疾病分类管理
- 症状描述编辑
- 治疗方案维护
5. 通知管理
- 发布系统通知
- 通知编辑
- 通知状态管理
- 通知历史查看
6. 数据统计
- 测评数据统计
- 咨询数据分析
- 用户活跃度统计
- 系统使用报表
项目结构
java-kaoshijiaolv/
├── backend/ # 后端项目(Spring Boot)
│ ├── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── org/sqa/anxiety/
│ │ │ ├── controller/ # 控制器层
│ │ │ ├── service/ # 业务逻辑层
│ │ │ ├── mapper/ # 数据访问层
│ │ │ ├── entity/ # 实体类
│ │ │ ├── dto/ # 数据传输对象
│ │ │ ├── vo/ # 视图对象
│ │ │ ├── config/ # 配置类
│ │ │ ├── common/ # 公共类
│ │ │ ├── exception/ # 异常处理
│ │ │ └── util/ # 工具类
│ │ └── resources/
│ │ ├── application.yml # 应用配置
│ │ └── mapper/ # MyBatis映射文件
│ ├── sql/
│ │ └── anxiety.sql # 数据库脚本
│ └── pom.xml # Maven配置
│
├── web-java/ # 前端项目(Vue 3)
│ ├── public/ # 静态资源
│ ├── src/
│ │ ├── api/ # API接口封装
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 公共组件
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # Pinia状态管理
│ │ ├── views/ # 页面视图
│ │ │ ├── student/ # 学生端页面
│ │ │ ├── doctor/ # 医生端页面
│ │ │ ├── admin/ # 管理员页面
│ │ │ └── common/ # 公共页面
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ ├── package.json # 依赖配置
│ └── vite.config.js # Vite配置
│
├── 大学生在线焦虑测试系统.xmind # 项目思维导图
├── 功能图.jpg # 功能架构图
└── 演示视频.mp4 # 系统演示视频
数据模型
用户表 (users)
{
id: BIGINT, // 用户ID
username: VARCHAR(50), // 用户名
password: VARCHAR(100), // 密码
nickname: VARCHAR(50), // 昵称
phone: VARCHAR(20), // 手机号
email: VARCHAR(100), // 邮箱
role: ENUM, // 角色 (user/doctor/admin)
status: ENUM, // 状态 (active/disabled)
created_at: TIMESTAMP, // 创建时间
updated_at: TIMESTAMP // 更新时间
}
医生信息表 (doctor_profiles)
{
id: BIGINT, // 医生ID
user_id: BIGINT, // 关联用户ID
title: VARCHAR(50), // 职称
specialty: VARCHAR(100) // 专业
}
问卷表 (questionnaires)
{
id: BIGINT, // 问卷ID
title: VARCHAR(100), // 问卷标题
cate: VARCHAR(100), // 问卷类型
description: TEXT, // 问卷描述
status: ENUM, // 状态 (active/inactive)
created_at: TIMESTAMP, // 创建时间
updated_at: TIMESTAMP // 更新时间
}
问卷问题表 (questionnaire_questions)
{
id: BIGINT, // 问题ID
questionnaire_id: BIGINT, // 问卷ID
content: TEXT, // 问题内容
question_order: INT // 问题顺序
}
问卷选项表 (questionnaire_options)
{
id: BIGINT, // 选项ID
question_id: BIGINT, // 问题ID
content: VARCHAR(255), // 选项内容
value: INT, // 选项值
option_order: INT // 选项顺序
}
测评结果表 (test_results)
{
id: BIGINT, // 测评结果ID
user_id: BIGINT, // 用户ID
questionnaire_id: BIGINT, // 问卷ID
doctor_id: BIGINT, // 处理医生ID
total_score: INT, // 总分
level: ENUM, // 评估等级 (normal/mild/moderate/severe)
answers: JSON, // 答案记录
status: ENUM, // 处理状态 (pending/processed)
doctor_opinion: TEXT, // 医生处理意见
created_at: TIMESTAMP, // 创建时间
updated_at: TIMESTAMP // 更新时间
}
在线咨询会话表 (consultation_sessions)
{
id: BIGINT, // 会话ID
user_id: BIGINT, // 用户ID
doctor_id: BIGINT, // 医生ID
title: VARCHAR(100), // 咨询标题
status: ENUM, // 咨询状态 (pending/processing/completed/cancelled)
created_at: TIMESTAMP, // 创建时间
updated_at: TIMESTAMP // 更新时间
}
咨询消息表 (consultation_messages)
{
id: BIGINT, // 消息ID
session_id: BIGINT, // 会话ID
sender_id: BIGINT, // 发送者ID
receiver_id: BIGINT, // 接收者ID
content: TEXT, // 消息内容
message_type: ENUM, // 消息类型 (text/image/file)
is_read: BOOLEAN, // 是否已读
created_at: TIMESTAMP // 创建时间
}
个性化建议表 (personalized_advice)
{
id: BIGINT, // 建议ID
user_id: BIGINT, // 用户ID
doctor_id: BIGINT, // 医生ID
title: VARCHAR(100), // 建议标题
content: TEXT, // 建议内容
status: ENUM, // 状态 (draft/published)
created_at: TIMESTAMP, // 创建时间
updated_at: TIMESTAMP // 更新时间
}
疾病表 (diseases)
{
id: BIGINT, // 疾病ID
name: VARCHAR(100), // 疾病名称
description: TEXT, // 疾病描述
symptoms: TEXT, // 症状
treatments: TEXT, // 治疗方法
preventions: TEXT, // 预防措施
severity: ENUM, // 严重程度 (mild/moderate/severe)
created_at: TIMESTAMP, // 创建时间
updated_at: TIMESTAMP // 更新时间
}
通知表 (notifications)
{
id: BIGINT, // 通知ID
title: VARCHAR(100), // 通知标题
content: TEXT, // 通知内容
status: ENUM, // 状态 (draft/published)
created_at: TIMESTAMP, // 创建时间
updated_at: TIMESTAMP // 更新时间
}
焦虑评估等级
| 等级 | 英文标识 | 分数范围 | 说明 |
|---|---|---|---|
| 正常 | normal | 0-20分 | 心理状态良好,无明显焦虑症状 |
| 轻度 | mild | 21-40分 | 存在轻微焦虑,建议自我调节 |
| 中度 | moderate | 41-60分 | 焦虑症状明显,建议咨询专业人士 |
| 重度 | severe | 61分以上 | 焦虑严重,需要及时就医治疗 |
运行环境要求
后端环境
- JDK 17+
- Maven 3.6+
- MySQL 8.0+
- IDE: IntelliJ IDEA / Eclipse
前端环境
- Node.js 18.0+
- pnpm 8.0+
- 现代浏览器(Chrome、Firefox、Edge等)
快速开始
1. 数据库配置
- 创建MySQL数据库
CREATE DATABASE exam_anxiety CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 导入数据库文件
mysql -u root -p exam_anxiety < backend/sql/anxiety.sql
- 修改数据库配置
编辑
backend/src/main/resources/application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/exam_anxiety?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: your_password # 修改为你的密码
2. 启动后端服务
# 进入后端目录
cd backend
# 使用Maven编译
mvn clean install
# 启动Spring Boot应用
mvn spring-boot:run
后端服务默认运行在 http://localhost:8080
API文档访问地址: http://localhost:8080/doc.html
3. 启动前端服务
# 进入前端目录
cd web-java
# 安装依赖
pnpm install
# 启动开发服务器
pnpm dev
前端服务默认运行在 http://localhost:5173
4. 配置前端API地址
如果后端地址不是默认的 http://localhost:8080,需要修改前端配置:
编辑 web-java/src/api/request.js 或相关配置文件,修改API基础地址。
默认账号
管理员账号
- 用户名:
admin - 密码:
123456
测试账号
系统启动后可以通过注册功能创建新账号,或由管理员添加。
核心业务流程
1. 学生测评流程
- 学生登录系统
- 选择焦虑测评问卷
- 逐题作答
- 提交测评
- 系统自动计算分数和等级
- 查看测评结果
- 等待医生处理
- 查看医生意见
2. 医生处理流程
- 医生登录系统
- 查看待处理测评列表
- 查看学生测评详情
- 分析测评结果
- 填写处理意见
- 提交处理结果
- 可选:创建个性化建议
3. 在线咨询流程
- 学生发起咨询请求
- 选择咨询医生
- 填写咨询标题和初始问题
- 医生接收咨询请求
- 双方实时消息沟通
- 医生提供专业建议
- 咨询完成或取消
API接口说明
用户相关
POST /api/auth/register- 用户注册POST /api/auth/login- 用户登录GET /api/user/profile- 获取个人信息PUT /api/user/profile- 更新个人信息PUT /api/user/password- 修改密码
问卷相关
GET /api/questionnaires- 获取问卷列表GET /api/questionnaires/{id}- 获取问卷详情POST /api/questionnaires- 创建问卷(管理员)PUT /api/questionnaires/{id}- 更新问卷(管理员)DELETE /api/questionnaires/{id}- 删除问卷(管理员)
测评相关
POST /api/test-results- 提交测评GET /api/test-results- 获取测评列表GET /api/test-results/{id}- 获取测评详情PUT /api/test-results/{id}/process- 处理测评(医生)
咨询相关
POST /api/consultations- 创建咨询会话GET /api/consultations- 获取咨询列表GET /api/consultations/{id}- 获取咨询详情POST /api/consultations/{id}/messages- 发送消息GET /api/consultations/{id}/messages- 获取消息列表
建议相关
POST /api/advice- 创建建议(医生)GET /api/advice- 获取建议列表GET /api/advice/{id}- 获取建议详情PUT /api/advice/{id}- 更新建议(医生)
疾病相关
GET /api/diseases- 获取疾病列表GET /api/diseases/{id}- 获取疾病详情POST /api/diseases- 创建疾病(管理员)PUT /api/diseases/{id}- 更新疾病(管理员)
通知相关
GET /api/notifications- 获取通知列表GET /api/notifications/{id}- 获取通知详情POST /api/notifications- 发布通知(管理员)
扩展建议
如需进一步完善项目,可考虑以下扩展:
- 数据分析:添加数据可视化图表,展示测评趋势
- 预约系统:支持学生预约医生咨询时间
- 视频咨询:集成WebRTC实现视频通话
- 移动端:开发微信小程序或APP
- AI辅助:集成AI进行初步心理评估
- 报告导出:支持测评报告PDF导出
- 提醒功能:定期测评提醒、复诊提醒
- 匿名模式:支持匿名咨询保护隐私
- 社区功能:添加心理健康交流社区
- 多语言支持:国际化支持
注意事项
- 本项目为学习演示项目,实际应用需完善安全机制
- 生产环境部署需要配置HTTPS
- 敏感信息需要加密存储
- 建议定期备份数据库数据
- 心理咨询功能需要专业资质支持
- 遵守相关法律法规和隐私保护政策
常见问题
Q: 后端启动失败?
A: 检查JDK版本是否为17+,MySQL服务是否启动,数据库配置是否正确
Q: 前端无法连接后端?
A: 检查后端服务是否启动,前端API地址配置是否正确,跨域配置是否正确
Q: 数据库连接失败?
A: 检查MySQL服务是否启动,数据库名称、用户名、密码是否正确
Q: API文档无法访问?
A: 确认后端服务已启动,访问 http://localhost:8080/doc.html
Q: 前端页面空白?
A: 检查浏览器控制台错误信息,确认Node.js版本是否符合要求
技术支持
如有问题,请查看:
- 项目思维导图:
大学生在线焦虑测试系统.xmind - 功能架构图:
功能图.jpg - 演示视频:
演示视频.mp4
许可证
本项目仅供学习交流使用,请勿用于商业用途。
祝学习顺利! 📚💻
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
大学生就业信息管理系统
这是一个面向高校大学生的就业信息管理系统,采用前后端分离架构,实现了学生求职、企业招聘、管理员后台管理三端功能。系统涵盖职位发布、简历管理、面试安排、合同签署、就业指南等完整的就业服务流程,适合作为计算机设计或学习项目参考。

商品管理系统HTML(登录注册增删增删改查)
这是一个基于 Node.js + MySQL + HTML(Vue2) 的商品管理系统,包含用户登录注册和商品的增删改查功能。

高校快递代取系统
本系统是一套高校快递代取微信小程序全栈平台,包含用户端小程序、骑手接单端与 PC 管理后台。用户可发布代取预约、在线支付、跟踪订单进度与申诉;骑手可在大厅接单、取件配送并填写备注;管理员负责驿站与价格配置、公告发布、骑手审核、订单改派及数据统计。后端采用 Express + MySQL,适合作为校园 O2O 类小程序计算机设计参考。

高校选课系统
这是一个完整的高校选课管理系统,采用前后端分离架构,实现了院系管理、专业管理、班级管理、学生管理、教师管理、课程管理、选课管理等核心功能。系统支持多角色(超级管理员、普通管理员、教师、学生)权限控制,适合作为Vue3全栈开发学习项目或计算机设计参考。

高校查分系统
高校学生成绩查询与管理系统,采用前后端分离架构,支持管理员、教师、学生三种角色。

鲜花商城(HTML版)
鲜花商城是一个面向移动端的鲜花电商前端演示项目,采用纯 HTML + CSS + JavaScript 实现,无需构建工具即可直接运行。项目模拟了完整的购物流程:浏览商品、查看详情、下单确认、订单管理以及用户登录注册,适合作为前端大作业或移动端页面练习。