1. 项目背景与技术选型
人格障碍诊断系统作为心理学与计算机技术结合的典型应用,采用SpringBoot+Vue的前后端分离架构具有显著优势。SpringBoot的快速开发特性与Vue的响应式前端完美契合,能够构建专业、高效的诊断平台。
这套毕设方案包含完整源码、SQL脚本和接口文档,为计算机相关专业学生提供了可直接参考的实战案例。系统采用RESTful API设计,前后端通过JSON交互,符合现代Web开发规范。
2. 系统架构设计
2.1 技术栈组成
- 后端:SpringBoot 2.7 + MyBatis-Plus + Spring Security
- 前端:Vue 3 + Element Plus + Axios
- 数据库:MySQL 8.0
- 辅助工具:Lombok + Swagger + Hutool
2.2 分层架构
mermaid复制graph TD
A[前端Vue] -->|HTTP请求| B[SpringBoot]
B --> C[业务逻辑层]
C --> D[数据访问层]
D --> E[MySQL数据库]
B --> F[安全控制层]
3. 核心功能实现
3.1 诊断问卷模块
采用动态表单设计,问卷问题存储在数据库的question表中:
sql复制CREATE TABLE `question` (
`id` int NOT NULL AUTO_INCREMENT,
`question_text` varchar(255) NOT NULL,
`dimension` varchar(50) COMMENT '所属维度',
`options` json COMMENT '选项配置',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
前端通过Vue的动态组件渲染问卷:
vue复制<template>
<div v-for="(item,index) in questionList" :key="index">
<component :is="getComponent(item.type)"
v-model="answers[item.id]"
:question="item"/>
</div>
</template>
3.2 诊断算法实现
采用加权计分算法,后端核心计算逻辑:
java复制public DiagnosisResult calculateResult(List<Answer> answers) {
Map<String, Double> dimensionScores = new HashMap<>();
answers.forEach(answer -> {
Question question = questionService.getById(answer.getQuestionId());
double weight = getDimensionWeight(question.getDimension());
dimensionScores.merge(question.getDimension(),
answer.getScore() * weight,
Double::sum);
});
return analyzeScores(dimensionScores);
}
4. 关键技术实现
4.1 安全控制
采用JWT+Spring Security实现认证授权:
java复制@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/api/auth/**").permitAll()
.anyRequest().authenticated()
.and()
.addFilter(new JwtAuthenticationFilter(authenticationManager()))
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
}
4.2 数据可视化
使用ECharts展示诊断结果:
javascript复制// 在Vue组件中
import * as echarts from 'echarts';
export default {
mounted() {
this.initChart();
},
methods: {
initChart() {
const chart = echarts.init(this.$refs.chartDom);
chart.setOption({
radar: {
indicator: this.dimensions.map(d => ({ name: d }))
},
series: [{
data: [{ value: this.scores }]
}]
});
}
}
}
5. 项目部署指南
5.1 数据库初始化
执行提供的SQL脚本:
bash复制mysql -u root -p < schema.sql
mysql -u root -p < data.sql
5.2 后端启动
配置application.yml后运行:
bash复制mvn spring-boot:run
5.3 前端启动
bash复制npm install
npm run serve
6. 接口文档使用
系统集成Swagger UI,启动后访问:
code复制http://localhost:8080/swagger-ui.html
包含以下主要接口组:
- 认证接口 (/api/auth)
- 问卷管理 (/api/questionnaire)
- 诊断记录 (/api/diagnosis)
- 用户管理 (/api/user)
7. 常见问题解决
7.1 跨域问题
在SpringBoot配置类中添加:
java复制@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*");
}
};
}
7.2 数据加密
采用AES加密敏感数据:
java复制public class CryptoUtils {
private static final String KEY = "your-secret-key";
public static String encrypt(String data) {
AES aes = SecureUtil.aes(KEY.getBytes());
return aes.encryptHex(data);
}
}
8. 扩展建议
- 机器学习集成:收集足够数据后可加入预测模型
- 多端适配:使用Uniapp扩展移动端支持
- 实时监控:集成WebSocket实现实时数据看板
- 国际化:使用Vue I18n实现多语言支持
这个项目完整展示了现代Web应用的开发流程,从技术选型到具体实现都提供了可复用的解决方案。特别适合作为计算机相关专业的毕业设计参考,也可作为实际项目的开发起点。
