原创

基于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 核心功能模块

  1. 用户/医生管理

    • 支持用户和医生的注册、登录、信息维护(头像、手机号等)。
    • 医生的注册需要管理员审核(sfsh字段)才能生效。
    • 管理员可以对医生信息进行增删改查及审核操作。
  2. 在线测试(考试)系统

    • 测试模板管理:管理员可以创建、编辑、删除测试模板(试卷),并设定考试时长。
    • 试题管理:管理员可以为每个测试模板添加试题,支持单选题、多选题、判断题和填空题。可以设置题目内容、选项、分值和正确答案及解析。
    • 在线考试:用户登录后可以选择已发布的测试模板进行在线答题,系统会自动计时。
    • 自动阅卷:用户提交答案后,系统会将其答案与正确答案比对并自动计算得分。
    • 考试记录:用户可以查看自己的历史考试记录和得分。系统会将错题自动归入“错题本”。
  3. 咨询与诊断

    • 在线咨询:用户可以浏览医生列表,并向特定医生发起图文咨询(支持富文本和图片)。
    • 咨询审核:用户的咨询请求需要经过医生审核(sfsh字段)后才会被受理和回复。
    • 诊断记录:医生在处理完咨询后,可以为用户创建诊断记录,并可上传诊断文件(如图片、PDF等)。用户可以查看自己的诊断历史。
  4. 信息发布

    • 公告管理:管理员可以发布、编辑、删除系统公告,公告会展示在前端页面。
    • 轮播图管理:管理员可以配置系统首页的轮播图。

4.2 数据库设计要点

  • 用户体系yonghu (用户)、yisheng (医生)、users (管理员) 三张表独立,通过不同的登录接口区分。
  • 考试体系exampaper (试卷模板) 与 examquestion (试题) 通过 paperid 关联。用户的考试过程和结果记录在 examrecord 表中,通过 userid, paperid, questionid 关联。
  • 咨询诊断体系zixunxinxi (咨询信息) 连接 yonghuyisheng 表。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. 部分截图

img1
img2
img3
img4
img5
img6
img7
img8
img9
img10
img11
img12
img13
img14
img15
img16
img17
img18
img19
img20
img21
img22
img23
img24
img25
img26
img27
img28
img29
img30
img31
img32
img33
img34
img35

7. 项目总结

本项目是一个功能完备、结构清晰的“人格障碍诊断系统”。通过分析其代码和配置,可以得出以下结论:

  1. 业务逻辑完整:系统涵盖了从用户注册、在线测试、自动阅卷、错题整理,到在线咨询、诊断记录管理等完整业务流程,形成了一个闭环的在线医疗辅助与教育平台。
  2. 权限体系清晰:通过Token认证和角色(管理员、用户、医生)区分,实现了不同身份用户访问不同功能和数据的权限控制,保障了系统安全。
  3. 技术栈实用:后端采用经典的Spring Boot + MyBatis-Plus组合,开发效率高,易于维护。前端针对不同用户群体(管理员与普通用户)分别采用了Vue.js和Layui技术,兼顾了开发体验与页面响应速度。
  4. 代码规范性良好:后端代码遵循了MVC分层架构,前端组件化程度较高,配置与业务代码分离,整体具有良好的可读性和扩展性。

总而言之,这是一个高质量的毕业设计或中小型实战项目模板,对于理解Web应用全栈开发、权限管理、在线考试系统设计等具有很好的参考价值。

自助获取:https://fifteen.xiaobias.com/source/216

正文到此结束
本文目录