基于SpringBoot2+vue2的人格障碍诊断系统
温馨提示:
本文最后更新于 2026年05月28日,已超过 13 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
1. 资源
浏览全文可获取
2. 项目简介
本项目是一个名为“人格障碍诊断系统”的综合性Web应用程序,旨在提供一个在线平台,用于进行人格障碍相关的在线测试、用户与医生之间的在线咨询以及诊断管理。
系统支持三种角色:管理员、用户和医生。
- 用户可以参与在线测试(考试)、查看测试记录和错题本、浏览公告、向医生发起咨询。
- 医生可以处理用户的咨询请求、为用户创建并管理诊断记录。
- 管理员负责管理所有用户、医生、公告、测试模板、试题以及系统轮播图等核心数据和配置。
项目采用主流的前后端分离架构,后端提供RESTful API,前端分别为管理员和普通用户提供了独立的访问界面。
3. 技术栈
- 后端技术:
- 核心框架: Spring Boot (v2.2.2.RELEASE)
- 持久层框架: MyBatis-Plus (v2.3) 与 MyBatis (v2.1.1)
- 数据库: MySQL (驱动: mysql-connector-java)
- 安全与权限: Apache Shiro (v1.3.2)
- 工具库: Hutool (v4.0.12), Fastjson (v1.2.8), Commons-lang3, Commons-io
- 其他集成: 百度人工智能(人脸比对,代码可见)、POI(Excel操作,依赖可见)。
- 前端技术:
- 后台管理:
- 核心框架: Vue.js
- UI组件库: Element UI
- HTTP客户端: Axios
- 图表库: ECharts
- 用户前台:
- 核心库: Layui, Vue.js, jQuery
- 富文本编辑器: TinyMCE
- 后台管理:
4. 详细介绍
4.1 核心功能模块
用户/医生管理:
- 支持用户和医生的注册、登录、信息维护(头像、手机号等)。
- 医生的注册需要管理员审核(
sfsh字段)才能生效。 - 管理员可以对医生信息进行增删改查及审核操作。
在线测试(考试)系统:
- 测试模板管理:管理员可以创建、编辑、删除测试模板(试卷),并设定考试时长。
- 试题管理:管理员可以为每个测试模板添加试题,支持单选题、多选题、判断题和填空题。可以设置题目内容、选项、分值和正确答案及解析。
- 在线考试:用户登录后可以选择已发布的测试模板进行在线答题,系统会自动计时。
- 自动阅卷:用户提交答案后,系统会将其答案与正确答案比对并自动计算得分。
- 考试记录:用户可以查看自己的历史考试记录和得分。系统会将错题自动归入“错题本”。
咨询与诊断:
- 在线咨询:用户可以浏览医生列表,并向特定医生发起图文咨询(支持富文本和图片)。
- 咨询审核:用户的咨询请求需要经过医生审核(
sfsh字段)后才会被受理和回复。 - 诊断记录:医生在处理完咨询后,可以为用户创建诊断记录,并可上传诊断文件(如图片、PDF等)。用户可以查看自己的诊断历史。
信息发布:
- 公告管理:管理员可以发布、编辑、删除系统公告,公告会展示在前端页面。
- 轮播图管理:管理员可以配置系统首页的轮播图。
4.2 数据库设计要点
- 用户体系:
yonghu(用户)、yisheng(医生)、users(管理员) 三张表独立,通过不同的登录接口区分。 - 考试体系:
exampaper(试卷模板) 与examquestion(试题) 通过paperid关联。用户的考试过程和结果记录在examrecord表中,通过userid,paperid,questionid关联。 - 咨询诊断体系:
zixunxinxi(咨询信息) 连接yonghu和yisheng表。zhenduanjilu(诊断记录) 由医生创建,关联具体的用户和医生。
4.3 项目结构概览
- 后端 (Java):标准Spring Boot工程结构,包含
controller(控制层),service(业务层),dao(数据访问层),entity(实体类),utils(工具类),config(配置类) 和interceptor(拦截器)。 - 前端 (Vue):后台管理系统的前端代码位于
src/main/resources/admin/admin/目录下,使用Vue CLI构建。 - 前端 (Layui/HTML):用户前台系统的静态页面位于
src/main/resources/front/front/目录下,采用传统的HTML + Layui + Vue.js(混合使用)的方式实现。
5. 部分代码
5.1 后端:医生登录接口 (YishengController.java)
该代码展示了医生登录的核心逻辑:根据医生账号查询数据库并验证密码,验证通过后生成用于身份认证的Token。
@RestController
@RequestMapping("/yisheng")
public class YishengController {
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
// 根据医生账号查询用户
YishengEntity user = yishengService.selectOne(new EntityWrapper<YishengEntity>().eq("yishengzhanghao", username));
// 校验账号和密码
if(user==null || !user.getMima().equals(password)) {
return R.error("账号或密码不正确");
}
// 校验账号是否被锁定(审核状态)
if("否".equals(user.getSfsh())) return R.error("账号已锁定,请联系管理员审核。");
// 生成并返回Token
String token = tokenService.generateToken(user.getId(), username,"yisheng", "医生" );
return R.ok().put("token", token);
}
}
5.2 后端:考试记录分组查询 (ExamrecordController.java)
此代码展示了如何按用户和试卷对考试记录进行分组,以获取每个用户的每次考试总分。
@RestController
@RequestMapping("/examrecord")
public class ExamrecordController {
/**
* 考试记录接口 (分组查询)
*/
@RequestMapping("/groupby")
public R page2(@RequestParam Map<String, Object> params, ExamrecordEntity examrecord, HttpServletRequest request){
// 非管理员用户只能查看自己的记录
if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
examrecord.setUserid((Long)request.getSession().getAttribute("userId"));
}
// 执行分组查询
PageUtils page = examrecordService.queryPageGroupBy(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, examrecord), params), params));
return R.ok().put("data", page);
}
}
5.3 后端:MyBatis-Plus 分页配置 (MybatisPlusConfig.java)
配置了MyBatis-Plus的分页插件,这是后端实现数据分页查询的基础。
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
5.4 前端:Vue路由配置 (router-static.js)
展示了后台管理系统的前端路由定义,包括主页、登录页以及各个业务模块(如用户、医生、试题等)的映射。
const routes = [{
path: '/index',
name: '首页',
component: Index,
children: [{
path: '/',
name: '首页',
component: Home,
}, {
path: '/updatePassword',
name: '修改密码',
component: UpdatePassword,
},
// ... 更多子路由
{
path: '/yonghu',
name: '用户',
component: yonghu
},
{
path: '/yisheng',
name: '医生',
component: yisheng
},
{
path: '/examquestion',
name: '试题管理',
component: examquestion
}]
},
{
path: '/login',
name: 'login',
component: Login,
}]
5.5 前端:Axios请求拦截 (http.js)
配置了全局的HTTP请求拦截器,在每次请求头中自动添加存储在本地Token,用于后端接口的权限验证。
const http = axios.create({
timeout: 1000 * 86400,
withCredentials: true,
baseURL: '/springboot212h6',
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
})
// 请求拦截
http.interceptors.request.use(config => {
// 请求头带上token
config.headers['Token'] = storage.get('Token')
return config
}, error => {
return Promise.reject(error)
})
6. 部分截图



































7. 项目总结
本项目是一个功能完备、结构清晰的“人格障碍诊断系统”。通过分析其代码和配置,可以得出以下结论:
- 业务逻辑完整:系统涵盖了从用户注册、在线测试、自动阅卷、错题整理,到在线咨询、诊断记录管理等完整业务流程,形成了一个闭环的在线医疗辅助与教育平台。
- 权限体系清晰:通过Token认证和角色(管理员、用户、医生)区分,实现了不同身份用户访问不同功能和数据的权限控制,保障了系统安全。
- 技术栈实用:后端采用经典的Spring Boot + MyBatis-Plus组合,开发效率高,易于维护。前端针对不同用户群体(管理员与普通用户)分别采用了Vue.js和Layui技术,兼顾了开发体验与页面响应速度。
- 代码规范性良好:后端代码遵循了MVC分层架构,前端组件化程度较高,配置与业务代码分离,整体具有良好的可读性和扩展性。
总而言之,这是一个高质量的毕业设计或中小型实战项目模板,对于理解Web应用全栈开发、权限管理、在线考试系统设计等具有很好的参考价值。
正文到此结束
- 本文标签: Java Spring Boot 毕业设计
- 本文链接: https://blog.xiaobias.com/article/13
- 版权声明: 本文由十五喵原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
