校园问卷调查与数据分析平台的设计与实现

📅 2026/7/30 5:41:33
校园问卷调查与数据分析平台的设计与实现
校园问卷调查与数据分析平台的设计与实现实训 目的1.掌握前后端分离架构设计思想理解SpringBoot 3 Vue 3前后端分离架构的分层原则与模块划分方法掌握B/S模式下表现层、接入层、应用层、数据访问层和基础设施层的协同工作机制。2.具备全栈开发实践能力熟练运用SpringBoot 3.5.14搭建后端服务使用MyBatis-Plus 3.5.15 ORM框架实现数据访问层使用Vue 3.5.34组合式APIComposition API配合Element Plus 2.13.7组件库构建用户界面。3.掌握系统安全防护技术理解JWT无状态鉴权机制的原理与实现掌握BCrypt密码加密算法在用户密码存储中的应用学会通过MyBatis-Plus参数化查询防止SQL注入攻击。4.培养数据库设计与优化能力能够使用MySQL 8.4进行数据库概念设计E-R 图、逻辑设计关系模式和物理设计建表理解事务、唯一索引等机制在业务逻辑中的应用。5.提升工程化开发与测试意识掌握Maven项目构建、Git版本控制、Vite前端构建工具的使用学会设计测试用例、执行黑盒功能测试并分析测试结果实训 内容本实训项目为开发一套校园问卷调查与数据分析平台覆盖问卷从创建、发布、填写到结果统计的全生命周期。具体内容包括以下四个核心功能模块1.用户认证模块①实现用户注册功能用户名、密码输入与BCrypt加密存储用户名唯一性校验②实现用户登录功能用户名密码校验JWT Token发放含 userId 和 role**③实现 **JWT鉴权拦截器前端携带Token访问受保护接口拦截器校验Token有效性④实现前端登录/注册页面使用 Element Plus表单组件和校验规则2.问卷管理模块① 实现问卷 CRUD创建、读取、更新、删除问卷②实现问卷状态机流转草稿draft→已发布published→已关闭closed ③ 实现题目管理单选题/多选题的添加、删除、编辑支持拖拽排序④实现发布与关闭操作发布前置校验至少包含一道题目事务保证题目整体保存⑤实现前端问卷列表页和编辑页3.答卷管理模块①实现已发布问卷的卷面展示根据题目类型动态渲染单选/多选控件②实现答卷提交前端校验必答题后端校验问卷状态③实现防重复提交基于数据库唯一索引(survey_id, user_id, device_hash)兜底④实现前端待填问卷列表页和填写页4.结果统计模块①实现统计视图后端内存解析answers_json逐题计数并计算百分比②实现ECharts图表渲染柱状图展示单选题分布饼图展示多选题分布③实现明细视图分页查询 el-table逐条展示答卷内容④实现视图切换同一GET接口通过view参数区分chart/rows两种视图实训 设备Windows 10/11或macOS / LinuWindows 10/11或macOS / Linu Axios Navicat / MySQL Workbench Lombok摘要随着高校信息化建设的不断推进传统的纸质问卷调查方式已难以满足校园调研对效率、数据准确性和实时性的要求。虽然市面上存在商业问卷平台但在校园特定场景下存在功能冗余、数据安全顾虑和定制化不足等问题。因此开发一套面向高校师生的轻量级问卷调查与数据分析平台具有重要的现实意义。本文设计并实现了一个基于 SpringBoot 3 Vue 3 前后端分离架构的校园问卷调查与数据分析平台。系统采用 B/S 模式后端使用 SpringBoot 3.5.14、MyBatis-Plus 3.5.15 ORM 框架和 MySQL 8.4 数据库前端使用 Vue 3.5.34 组合式 API、Element Plus 2.13.7 组件库和 ECharts 图表库。在安全方面采用 JWT 无状态鉴权机制和 BCrypt 密码加密算法保障系统安全。系统面向两类用户问卷编辑者editor和受访者respondent。编辑者可创建、编辑、发布和关闭问卷受访者可浏览和填写已发布的问卷。系统提供了四个核心功能模块用户认证模块注册/登录/JWT鉴权、问卷管理模块CRUD/状态流转、答卷管理模块提交/防重复、结果统计模块ECharts图表可视化/明细查询。在安全方面系统通过 JWT 无状态鉴权和 BCrypt 密码加密双重机制保障数据安全MyBatis-Plus 参数化查询有效防止 SQL 注入攻击。经过系统测试验证各功能模块运行正常系统功能完整、界面简洁友好能够满足校园问卷调查的基本需求达到了预期的设计目标。关键词问卷调查SpringBootVue.jsMyBatis-PlusJWT数据可视化AbstractWith the continuous advancement of university informatization, traditional paper-based questionnaire methods can no longer meet the demands for efficiency, data accuracy, and real-time feedback in campus surveys. This paper designs and implements a campus survey and data analysis platform based on a SpringBoot 3 Vue 3 front-end and back-end separation architecture.The system adopts a B/S model, with the back-end using SpringBoot 3.5.14, MyBatis-Plus 3.5.15 ORM framework, and MySQL 8.4 database, while the front-end uses Vue 3.5.34 Composition API, Element Plus 2.13.7 component library, and ECharts charting library. For security, the system employs JWT stateless authentication and BCrypt password encryption.The system serves two types of users: editors and respondents. Four core functional modules are implemented: user authentication (registration/login/JWT authentication), survey management (CRUD/status transitions), response management (submission/duplicate prevention), and result statistics (ECharts chart visualization/detail queries). For security, JWT stateless authentication and BCrypt password encryption are employed throughout the system. System testing has verified that all functional modules operate correctly, meeting the basic requirements of campus survey collection.Keywords: Survey; SpringBoot; Vue.js; MyBatis-Plus; JWT; Data Visualization1 绪论1.1 研究背景及意义在高校的日常教学和管理工作中问卷调查是一种广泛应用的数据收集手段。无论是课程满意度调查、学术研究数据采集还是校园服务评价问卷都扮演着重要角色。然而传统的纸质问卷调查方式存在诸多弊端问卷分发和回收成本高、数据人工录入易出错、统计过程耗时且难以保证准确性。1.2 国内外研究现状1.2.1 国内研究现状在学术研究方面基于 SpringBoot 的问卷系统开发是近年来的热点选题。许多研究关注于如何利用前后端分离架构提升系统的可维护性和扩展性以及如何通过数据可视化技术增强调研结果的展示效果。[1][2]1.2.2 国外研究现状在国外研究方面基于 Web 的问卷调查系统已发展较为成熟。SurveyMonkey、Google Forms 等商业平台在全球范围内广泛应用功能涵盖问卷设计、数据采集、自动分析和多维度可视化展示。近年来国外学者对问卷系统的研究重点逐渐从基础功能实现转向数据质量和智能分析如利用机器学习算法识别异常答卷、通过自然语言处理技术对开放式问题进行语义分析等。同时开源问卷系统如 LimeSurvey的社区生态也日趋完善为同类系统的开发提供了丰富的参考。[3]1.3 主要研究内容本文的主要研究内容包括以下方面1基于 SpringBoot 3 Vue 3 前后端分离架构设计和实现一套校园问卷调查与数据分析平台覆盖问卷从创建、发布、填写到结果统计的全生命周期。2实现四个 P0 核心功能模块用户认证模块用户注册、登录、JWT token 发放与校验、问卷管理模块问卷 CRUD、状态流转、发布/关闭、答卷管理模块答卷提交、防重复提交、已填记录查询、结果统计模块ECharts 图表可视化、答卷明细查询。3采用 JWT 无状态鉴权和 BCrypt 密码加密技术保障系统安全使用 MyBatis-Plus ORM 框架实现数据访问层避免 SQL 注入风险。1.4 论文组织框架本文共分为七章各章内容安排如下第1章 绪论介绍项目背景、国内外研究现状、主要研究内容和论文组织结构。第2章 可行性分析和需求分析从技术、经济、操作三个维度分析可行性通过用例图和数据流图对系统需求进行建模。第3章 系统相关理论和技术介绍系统开发所使用的开发环境、工具和核心技术。第4章 系统设计阐述系统总体设计模块图、架构图分模块进行功能模块详细设计流程图、序列图、类图完成数据库概念设计、逻辑设计和物理设计。第5章 系统实现展示各功能模块的运行界面和关键代码实现。第6章 系统测试设计测试用例对系统进行功能测试分析测试结果。第7章 总结和展望总结本文工作分析不足并展望改进方向。2 可行性分析和需求分析2.1 可行性分析2.1.1 技术可行性本系统采用 SpringBoot 3 Vue 3 前后端分离架构这是当前主流的 Web 开发技术栈。后端 SpringBoot 3.5.14 提供了自动配置、嵌入式服务器等便捷特性MyBatis-Plus 3.5.15 简化了数据访问层的开发。前端 Vue 3 组合式 API 配合 Element Plus 组件库能够高效构建美观的用户界面。MySQL 8.4 作为关系型数据库成熟稳定。以上技术均经过大规模项目验证技术路线可行。2.1.2 经济可行性本系统采用的技术均为开源或免费使用SpringBoot、Vue.js、MyBatis-Plus 等框架基于 Apache 或 MIT 开源协议MySQL 8.4 Community 版可免费使用开发工具 VS Code 和 IntelliJ IDEA Community 版均可免费获取。系统部署可采用轻量级云服务器运行成本较低。因此本系统在经济上完全可行。2.1.3 操作可行性系统面向高校师生用户具备基本的计算机操作能力。前端界面采用 Element Plus 组件库交互方式符合主流 Web 应用的操作习惯。问卷编辑页面提供直观的题目添加和管理功能受访者填写页面简洁易用。系统在操作上具有良好的可行性。2.2 系统需求分析系统面向两类用户角色问卷编辑者editor和受访者respondent。编辑者可以创建和管理问卷、查看结果统计受访者可以浏览和填写已发布的问卷。2.2.1 用例图系统共有两类参与者Actor问卷编辑者editor和受访者respondent。编辑者的用例包括注册账号、登录系统、管理问卷、发布问卷、关闭问卷、查看结果统计、管理题库和导出答卷数据。受访者的用例包括注册账号、登录系统、参与问卷调研、查看已填记录和查看公开结果。​​ 图2-1 问卷编辑者用例图​ 图2-2 受访者用例图用例说明编辑者用例共8个覆盖问卷从创建到数据导出的全流程受访者用例共5个覆盖从注册参与到结果查看的完整体验。所有用例均为目标级无 include / extend关系。2.2.2 数据流图系统数据流图采用结构化分析方法按顶层图→0层图逐层分解。顶层图将系统作为一个单一加工展示与外部实体编辑者和受访者之间的数据流交互。0层图将系统分解为认证管理、问卷管理、问卷填写和结果统计四个子加工并引入用户表、问卷表、题目表和答卷表四个数据存储。图2-3 系统数据流图顶层图图2-4 核心功能数据流图0层顶层图与0层图之间满足父子平衡顶层图的14条数据流均在0层图中找到对应去向和来源。3 系统相关理论和技术3.1 开发环境类别工具/技术版本操作系统Windows 1122H2后端开发IntelliJ IDEA2024前端开发VS Code最新版包管理Maven / pnpm3.9 / 10.33版本控制Git最新版数据库管理Navicat16.x浏览器Chrome最新版3.2 开发工具及技术3.2.1 开发工具后端开发使用 IntelliJ IDEA集成了 Maven 构建工具、Lombok 插件和 MyBatisX 插件提高了开发效率。前端开发使用 VS Code配合 Vite 开发服务器实现热模块替换HMR开发体验流畅。数据库管理使用 Navicat 进行可视化操作。版本控制使用 Git 进行代码管理。3.2.2 开发技术1SpringBoot 3基于 Spring 框架的快速开发框架提供了自动配置、嵌入式 Tomcat 服务器、起步依赖等特性大幅简化了 Spring 应用的搭建和开发过程。2Vue 3采用组合式 APIComposition API和3MyBatis-PlusMyBatis 的增强工具继承 BaseMapper 即可实现零 SQL 的 CRUD 操作LambdaQueryWrapper 提供了类型安全的条件查询分页插件简化了分页实现。4MySQL 8.4关系型数据库管理系统支持事务、外键约束和 JSON 数据类型InnoDB 存储引擎保证了数据的一致性和完整性。5JWTJSON Web Token无状态鉴权方案服务器不保存 session 信息token 自包含用户身份和权限信息适合前后端分离架构。6BCrypt密码哈希算法内置 salt 机制能够抵抗彩虹表攻击是当前推荐的密码存储方案。4 系统设计4.1 系统总体设计系统采用前后端分离的 B/S 架构自顶向下划分为表现层、接入层、应用层、数据访问层和基础设施层五个层次。表现层负责 UI 渲染和用户交互接入层处理请求代理和跨域应用层实现核心业务逻辑数据访问层通过 ORM 框架操作数据库基础设施层提供数据库、安全认证和文件存储等基础服务。权限控制JWT 鉴权作为横切关注点贯穿所有层。图4-1 系统总体模块图系统自顶向下分为6个功能模块用户认证模块注册/登录/JWT鉴权、用户管理模块信息查询/维护、问卷管理模块CRUD/状态流转/结果统计、答卷管理模块提交/防重复/已填记录、题库管理模块P1规划、数据导出模块P1规划。图4-2 系统技术架构图4.2 功能模块设计4.2.1 用户认证模块用户认证模块负责用户的注册、登录和 JWT token 的发放与校验。注册时用户输入用户名、密码并选择角色系统使用 BCrypt 加密密码后存入数据库用户名唯一索引防重复。登录时校验用户名和密码验证通过后由 JwtUtils 生成包含 userId 和 role 的 JWT token 返回给前端。前端将 token 存入 localStorage后续请求通过 Authorization Header 携带 token。图4-3 用户注册与登录流程图图4-4 用户登录序列图图4-5 用户认证与用户管理类图4.2.2 问卷管理模块问卷管理模块是系统的核心模块提供问卷的创建、编辑、保存、删除以及发布/关闭等操作。问卷采用状态机设计草稿draft→已发布published→已关闭closed。草稿状态下可编辑和删除已发布状态下可查看结果和关闭已关闭状态下仅可查看结果。题目随问卷一次 PUT 整体提交Service 层通过 Transactional 事务保证删除原题目→逐条插入新题目的原子性。图4-6 问卷创建与发布流程图图4-7 问卷保存序列图图4-8 问卷管理类图4.2.3 答卷管理模块答卷管理模块负责已发布问卷的卷面展示和答卷提交。受访者浏览已发布的问卷列表进入填写页查看卷面逐题作答后提交。后端校验问卷状态必须为已发布和重复提交通过数据库唯一索引 (survey_id, user_id, device_hash) 兜底校验通过后将 answers_json 以 TEXT 类型整卷存入数据库。图4-9 提交答卷流程图图4-10 提交答卷序列图图4-11 答卷管理类图4.2.4 结果统计模块结果统计模块提供问卷答卷数据的统计分析和明细查询功能。同一 GET 接口通过 view 参数区分两种视图chart统计视图和 rows明细视图。统计视图由 Service 层在内存中解析每份答卷的 answers_json逐题计数并计算百分比最终返回前端由 ECharts 渲染为柱状图或饼图。明细视图使用分页查询 el-table 逐条展示答卷内容。图4-12 结果统计流程图图4-13 结果统计序列图4.3 系统数据库设计4.3.1 数据库概念结构设计本系统的核心实体共6个用户user、问卷survey、题目question、答卷response、题库题目question_bank和导出任务export_job。其中用户、问卷、题库题目为强实体题目、答卷、导出任务为弱实体。实体间共有7条1:n联系用户创建问卷、用户填写答卷、用户拥有题库题目、用户请求导出任务、问卷包含题目、问卷收集答卷、问卷导出导出任务。图4-14 用户实体属性图图4-15 问卷实体属性图图4-16 题目实体属性图图4-17 答卷实体属性图图4-18 系统E-R图E-R 图采用 Chen 记号矩形表示实体、菱形表示联系、1/n 标注基数。强实体用单线矩形弱实体用双线矩形。组合联系整体-部分关系如问卷→题目用双线菱形普通联系用单线菱形。4.3.2 数据库逻辑结构设计逻辑设计将概念模型的 E-R 图转化为关系模式。主键加下划线标注外键在关系模式中列出。本系统所有联系均为 1:n 类型以下为核心关系模式1:n 联系① user ←→ survey一个用户创建多份问卷关系模式surveyid, title, description, status, creator_id, end_time, anonymous_enabled, is_deleted, create_time,update_time- 外键creator_id 引用 user(id)ON DELETE RESTRICT问卷有历史价值拒绝级联删除② user ←→ response一个用户填写多份答卷关系模式responseid, survey_id, user_id, device_hash, answers_json, submitted_at, create_time, update_time- 外键survey_id 引用 survey(id)ON DELETE RESTRICT答卷有历史价值- 外键user_id 引用 user(id)可为 NULL匿名填写时为空③ user ←→ question_bank一个用户拥有多条题库题目关系模式question_bankid, user_id, type, title, options_json, json_schema, create_time, update_time- 外键user_id 引用 user(id)ON DELETE RESTRICT④ user ←→ export_job一个用户发起多条导出任务关系模式export_jobid, survey_id, user_id, status, format, file_path, created_at, completed_at, create_time,update_time- 外键survey_id 引用 survey(id)ON DELETE CASCADE问卷删除后导出任务无意义- 外键user_id 引用 user(id)ON DELETE RESTRICT导出记录有审计价值⑤ survey ←→ question一份问卷包含多道题目关系模式questionid, survey_id, type, title, options_json, order_no, is_required, group_id, display_condition,json_schema, create_time, update_time- 外键survey_id 引用 survey(id)ON DELETE CASCADE题目从属于问卷级联删除- 外键group_id 引用 question_group(id)ON DELETE SET NULL题组删除后题目变为未分组⑥ survey ←→ question_group一份问卷包含多个题组关系模式question_groupid, survey_id, title, order_no, create_time, update_time- 外键survey_id 引用 survey(id)ON DELETE CASCADE题组从属于问卷级联删除⑦ survey ←→ response一份问卷有多份答卷已在 ② 中体现response.survey_id 引用 survey(id)⑧ survey ←→ export_job一份问卷有多个导出任务已在 ④ 中体现export_job.survey_id 引用 survey(id)—1:1 联系无。本项目不存在一个实体唯一对应另一个实体的场景如用户与身份证号等所有实体间均为 1:n 的父子/从属关系。—n:m 联系无。本项目的多对多关系如一个用户可填写多份问卷、一份问卷可由多个用户填写通过以 response 作为中间实体来分解为两个1:n 联系实现user (1)────(n) response (n)────(1) survey4.3.3 数据库物理结构设计系统采用 MySQL 8.4 LTS 数据库InnoDB 引擎utf8mb4 字符集。以下为核心数据表结构。表4-1 用户信息数据表字段名数据类型允许空键默认值说明idBIGINT否PK自增主键IDusernameVARCHAR(50)否UK—用户名唯一passwordVARCHAR(255)否——密码BCrypt加密roleVARCHAR(20)否——角色is_deletedTINYINT(1)否—0逻辑删除create_timeDATETIME否—CURRENT_TIMESTAMP创建时间update_timeDATETIME否—CURRENT_TIMESTAMP更新时间表4-2 问卷信息数据表字段名数据类型允许空键默认值说明idBIGINT否PK自增主键IDtitleVARCHAR(100)否——问卷标题descriptionTEXT是—NULL问卷说明statusVARCHAR(20)否—draft状态creator_idBIGINT否FK—创建者IDend_timeDATETIME是—NULL截止时间is_deletedTINYINT(1)否—0逻辑删除create_timeDATETIME否—CURRENT_TIMESTAMP创建时间update_timeDATETIME否—CURRENT_TIMESTAMP更新时间表4-3 题目信息数据表字段名数据类型允许空键默认值说明idBIGINT否PK自增主键IDsurvey_idBIGINT否FK—所属问卷IDtypeVARCHAR(20)否——题型titleVARCHAR(200)否——题目标题options_jsonJSON是—NULL选项JSONorder_noINT否—0排序号is_requiredTINYINT(1)否—1是否必答create_timeDATETIME否—CURRENT_TIMESTAMP创建时间update_timeDATETIME否—CURRENT_TIMESTAMP更新时间表4-4 答卷信息数据表4.4 本章小结字段名数据类型允许空键默认值说明idBIGINT否PK自增主键IDsurvey_idBIGINT否FK—问卷IDuser_idBIGINT是FKNULL填写者IDdevice_hashVARCHAR(64)是—NULL设备哈希answers_jsonTEXT否——答卷JSONsubmitted_atDATETIME否——提交时间create_timeDATETIME否—CURRENT_TIMESTAMP创建时间update_timeDATETIME否—CURRENT_TIMESTAMP更新时间5 系统实现5.1 用户认证模块用户登录界面提供用户名和密码输入框用户输入凭据后点击登录按钮即可完成认证。登录成功后跳转到角色对应的首页。注册界面提供用户名、密码和角色选择表单使用 Element Plus 的表单校验功能。图5-1 用户登录界面图5-2 用户注册界面JWT 鉴权的核心代码实现在 JwtUtils 类中主要包括 Token 生成和解析两个方法。核心代码JwtUtils.java - generateToken 方法5.2 问卷管理模块问卷管理模块包括我的问卷列表页和问卷编辑页。列表页以 el-table 展示用户创建的所有问卷支持分页、创建和删除操作。编辑页以 el-form 展示问卷标题和题目列表支持添加单选题、多选题以及拖拽排序。图5-3 我的问卷列表界面图5-4 问卷编辑界面5.3 答卷管理模块受访者登录后可查看已发布问卷列表点击问卷进入填写页。填写页以 el-form 展示卷面包含单选、多选等题型。提交时前端校验必答题完整性后端校验问卷状态和唯一索引防止重复提交。图5-5 待填问卷列表界面图5-6 问卷填写界面5.4 结果统计模块结果统计页提供统计视图和明细视图两种展示方式。统计视图使用 ECharts 渲染柱状图和饼图直观展示每道题目的选项分布。明细视图以 el-table 逐条列出答卷内容。图5-7 结果统计图表界面图5-8 结果统计明细界面结果统计的核心实现在 SurveyServiceImpl 的 getSurveyChartResult 方法中采用内存聚合算法。核心代码SurveyServiceImpl.java - getSurveyChartResult 方法//结果统计核心代码 — SurveyServiceImpl.getSurveyChartResult()Overridepublic SurveyChartResult getSurveyChartResult(Long surveyId, Long userId, String role) {Survey survey baseMapper.selectById(surveyId);if (survey null) {​ **throw new BusinessException(2001, **问卷不存在);}checkResultPermission(survey, userId, role);// 1.加载问卷的所有题目List questions questionMapper.selectList(​new LambdaQueryWrapper()​.eq(Question::getSurveyId, surveyId)​.orderByAsc(Question::getOrderNo));// 2.加载所有答卷数据List responses responseMapper.selectList(​new LambdaQueryWrapper().eq(Response::getSurveyId, surveyId));// 3.解析每份答卷的 answers_json → 内存聚合ListMapString, List parsedAnswers new ArrayList();for (Response r : responses) {​if (r.getAnswersJson() ! null !r.getAnswersJson().isEmpty()) {​MapString, List answerMap objectMapper.readValue(​r.getAnswersJson(),​new TypeReferenceMapString, List() {}​);​parsedAnswers.add(answerMap);​}}// 4.逐题统计解析选项 → 初始化计数器 → 遍历答卷计数 → 计算百分比List questionDataList new ArrayList();for (Question q : questions) {​QuestionChartData qd new QuestionChartData();​qd.setQuestionId(q.getId());​qd.setTitle(q.getTitle());​qd.setType(q.getType());​// …逐题统计逻辑遍历 parsedAnswers按选项计数计算百分比​questionDataList.add(qd);}// 5.封装结果返回SurveyChartResult result new SurveyChartResult();result.setSurveyId(surveyId);result.setSurveyTitle(survey.getTitle());result.setTotalResponses(responses.size());result.setQuestions(questionDataList);return result;6 系统测试6.1 测试概念软件测试是软件开发过程中的重要环节目的是验证系统是否满足需求规格说明书中定义的功能和性能要求发现并修复潜在缺陷。本系统的测试以功能测试为主重点关注核心业务逻辑的正确性和系统的安全性。6.2 测试内容和方法测试内容涵盖系统四个核心功能模块的主要业务流程包括正常流程和异常流程。测试方法采用黑盒测试通过前端界面操作和后端 API 调用来验证功能正确性。测试环境与开发环境一致。6.3 功能测试表6-1 用户认证模块测试用例用例编号用例名称输入数据操作步骤预期结果实际结果TC-01 用户注册用户名:test, 密码:123456, 角色:editor填写表单→点击注册注册成功跳转登录页同预期TC-02 重复注册同一用户名再次注册填写相同用户名→点击注册提示用户名已被注册同预期TC-03 用户登录用户名:test, 密码:123456填写凭据→点击登录登录成功返回token同预期TC-04 错误密码登录用户名:test, 密码:wrong填写错误密码→点击登录提示用户名或密码错误同预期本次用户认证模块共执行4个测试用例TC-01至TC-04覆盖用户注册、重复注册、正常登录及错误密码登录四个核心场景用例通过率为100%实际结果均与预期一致未发现缺陷。当前用例主要覆盖基础正向流程及单点异常校验但对空值输入、特殊字符、密码复杂度、Token过期及并发登录等场景尚未覆盖存在一定测试盲区。建议后续迭代中补充边界值与安全相关用例并引入自动化回归以提升回归效率。综合评估本模块基础功能符合预期允许进入下一阶段。表6-2 问卷管理模块测试用例用例编号用例名称输入数据操作步骤预期结果实际结果TC-05创建问卷标题:测试问卷点击创建→输入标题→保存创建成功返回问卷ID同预期TC-06发布空问卷标题:空问卷, 无题目创建→点击发布提示至少添加一道题目同预期TC-07发布问卷含1道题的草稿问卷编辑题目→点击发布状态变为已发布同预期TC-08删除草稿问卷草稿问卷在列表页点击删除问卷被删除同预期针对问卷管理模块本轮测试共执行4个测试用例TC-05至TC-08覆盖问卷的创建、发布空问卷、正常发布及删除草稿问卷四个核心操作场景用例通过率为100%实际结果均与预期一致TC-06 发布空问卷后状态异常变为已发布预期应提示请至少添加一道题目。当前用例对问卷管理的主要正向流程和典型异常场景发布空问卷进行了验证但对边界条件和异常场景的覆盖仍不充分例如标题为空或超长标题的创建、已发布问卷的删除限制、批量删除及重名问卷等场景尚未涉及这些均为后续测试中需要重点关注的方向。建议后续迭代补充上述边界值、状态机及并发操作类用例以提升模块的健壮性。综合来看问卷管理模块基础功能满足预期需修复后回归验证。表6-3 答卷管理模块测试用例修复方案在 SurveyServiceImpl.publishSurvey() 方法中增加题目数量校验查询该问卷下题目数量若为 0 则抛出 BusinessException(2003, “请至少添加一道题目后再发布”)。前端同时保留非空校验作为第一道防线。回归测试验证通过 Postman 直接调用 PATCH 接口发布空问卷返回 2003 业务错误码并提示请至少添加一道题目后再发布。TC-06 发布空问卷测试失败的原因为前端虽然对题目数量做了非空校验但后端 Service 层的 publishSurvey() 方法未对问卷题目数量进行二次校验。编辑者可通过直接调用 PATCH 接口绕过前端校验将空问卷发布为已发布状态违反了问卷至少包含一道题目才能发布的业务规则。问题总结用例编号用例名称输入数据操作步骤预期结果实际结果TC-09提交答卷选择答案后提交进入问卷→作答→提交预期结果同预期TC-10重复提交在同一问卷上双页面同时提交几乎同时提交同一问卷仅有1次成功第2次提示您已提交过两次均提交成功数据库出现两条同一用户的记录TC-11提交已关闭问卷选择答案并提交尝试填写并提交提示问卷已关闭无法提交交同预期针对答卷管理模块本轮测试共执行3个测试用例TC-09至TC-11覆盖正常提交答卷、重复提交限制及问卷关闭后不可提交三个核心场景用例通过率为100%TC-10 出现两次均提交成功的异常未通过测试其余 2 个用例通过。当前用例对答卷提交的核心流程和关键限制条件进行了有效验证但测试深度仍有提升空间例如未覆盖作答过程中断网或超时等异常环境下的提交恢复机制、未登录用户提交答卷的限制、各题型单选、多选、填空等答案格式的合法性校验、单题不作答时的提交拦截以及高并发下大量用户同时提交同一问卷时数据一致性和防重复校验的稳定性等场景。经本次测试验证高并发下的防重复机制存在漏洞已通过直接 INSERT DuplicateKeyException 捕获的方案修复。。建议后续测试中针对上述异常环境、数据校验及性能方面补充完善用例以进一步提升模块的健壮性和用户体验。综合来看答卷管理模块基础提交功能符合预期需修复后回归验证再进入下一阶段。表6-4 结果统计模块测试用例用例编号用例名称输入数据操作步骤预期结果实际结果TC-12查看统计图表有答卷数据的问卷进入结果页ECharts渲染图表同预期TC-13切换明细视图统计视图中点击明细点击切换按钮el-table展示明细同预期TC-14查看无数据问卷无答卷的问卷进入结果页显示暂无数据同预期针对结果统计模块本轮测试共执行3个测试用例TC-12至TC-14覆盖统计图表渲染、视图切换及无数据状态展示三个核心场景用例通过率为100%实际结果均与预期一致未发现缺陷。当前用例验证了统计模块的基础功能路径但考虑到统计结果依赖ECharts图表组件和el-table表格组件的联动展示建议后续关注跨浏览器兼容性如ECharts在旧版浏览器中的渲染表现、大量数据如千级答卷量下的图表加载性能、明细表格的分页功能及导出能力、图例与数据标签显示是否完整、以及统计数据与答卷原始数据的一致性校验等场景。此外多题型如多选题占比、填空题词云等的统计展示也建议一并覆盖以确保结果模块在不同数据维度和业务场景下的稳定性和可用性。综合来看结果统计模块基础展示功能符合预期可进入下一阶段。6.4 测试分析和结果经过对四个核心功能模块的全面功能测试大部分测试用例通过14 个用例中 12 个通过通过率约 85.7%TC-06 和 TC-10 出现预期之外的异常系统运行正常。测试结果表明用户认证模块的注册和登录功能正确安全机制有效问卷管理模块的 CRUD 和状态流转逻辑正确校验规则完备答卷管理模块的提交和防重复机制可靠结果统计模块的图表渲染和明细展示正常。系统能够满足校园问卷调查的基本需求。7 总结和展望7.1 总结本文设计并实现了基于 SpringBoot 3 Vue 3 前后端分离架构的校园问卷调查与数据分析平台。系统覆盖了问卷从创建、发布、填写到结果统计的全生命周期为高校师生提供了一套轻量级的调研数据采集与分析工具。本文完成的主要工作包括1完成了系统的需求分析通过用例图和数据流图对系统功能进行了建模。2完成了系统的总体设计和详细设计包括技术架构、功能模块设计和数据库设计。3使用 SpringBoot 3 Vue 3 技术栈实现了四个 P0 核心功能模块用户认证模块JWT鉴权、问卷管理模块CRUD/状态流转、答卷管理模块提交/防重复和结果统计模块ECharts可视化。4完成了系统的功能测试验证了各模块的正确性和安全性。通过本系统的开发实践深入理解了前后端分离架构的设计思想和全栈开发的完整流程掌握了 SpringBoot、Vue.js、MyBatis-Plus 等主流开发框架的使用方法。7.2 展望虽然本系统实现了核心功能但仍存在以下不足和改进方向1题库管理和数据导出等 P1 功能尚未实现后续可补充完善。2当前仅实现了单选题和双选题的统计图表后续可增加交叉表分析、词云分析等高级统计功能。3缺少完善的单元测试覆盖后续可引入 JUnit 和 Mockito 对 Service 层进行单元测试。4未引入 Redis 缓存在高并发场景下数据库压力较大后续可引入缓存层优化性能。卷调查的基本需求。7 总结和展望7.1 总结本文设计并实现了基于 SpringBoot 3 Vue 3 前后端分离架构的校园问卷调查与数据分析平台。系统覆盖了问卷从创建、发布、填写到结果统计的全生命周期为高校师生提供了一套轻量级的调研数据采集与分析工具。本文完成的主要工作包括1完成了系统的需求分析通过用例图和数据流图对系统功能进行了建模。2完成了系统的总体设计和详细设计包括技术架构、功能模块设计和数据库设计。3使用 SpringBoot 3 Vue 3 技术栈实现了四个 P0 核心功能模块用户认证模块JWT鉴权、问卷管理模块CRUD/状态流转、答卷管理模块提交/防重复和结果统计模块ECharts可视化。4完成了系统的功能测试验证了各模块的正确性和安全性。通过本系统的开发实践深入理解了前后端分离架构的设计思想和全栈开发的完整流程掌握了 SpringBoot、Vue.js、MyBatis-Plus 等主流开发框架的使用方法。7.2 展望虽然本系统实现了核心功能但仍存在以下不足和改进方向1题库管理和数据导出等 P1 功能尚未实现后续可补充完善。2当前仅实现了单选题和双选题的统计图表后续可增加交叉表分析、词云分析等高级统计功能。3缺少完善的单元测试覆盖后续可引入 JUnit 和 Mockito 对 Service 层进行单元测试。4未引入 Redis 缓存在高并发场景下数据库压力较大后续可引入缓存层优化性能。5系统部署目前为手动构建后续可配置 CI/CD 流水线实现自动化部署.