查與數(shù)據(jù)分析平臺的設(shè)計(jì)與實(shí)現(xiàn))
校園問卷調(diào)查與數(shù)據(jù)分析平臺的設(shè)計(jì)與實(shí)現(xiàn)實(shí)訓(xùn) 目的1.掌握前后端分離架構(gòu)設(shè)計(jì)思想理解SpringBoot 3 Vue 3前后端分離架構(gòu)的分層原則與模塊劃分方法掌握B/S模式下表現(xiàn)層、接入層、應(yīng)用層、數(shù)據(jù)訪問層和基礎(chǔ)設(shè)施層的協(xié)同工作機(jī)制。2.具備全棧開發(fā)實(shí)踐能力熟練運(yùn)用SpringBoot 3.5.14搭建后端服務(wù)使用MyBatis-Plus 3.5.15 ORM框架實(shí)現(xiàn)數(shù)據(jù)訪問層使用Vue 3.5.34組合式APIComposition API配合Element Plus 2.13.7組件庫構(gòu)建用戶界面。3.掌握系統(tǒng)安全防護(hù)技術(shù)理解JWT無狀態(tài)鑒權(quán)機(jī)制的原理與實(shí)現(xiàn)掌握BCrypt密碼加密算法在用戶密碼存儲(chǔ)中的應(yīng)用學(xué)會(huì)通過MyBatis-Plus參數(shù)化查詢防止SQL注入攻擊。4.培養(yǎng)數(shù)據(jù)庫設(shè)計(jì)與優(yōu)化能力能夠使用MySQL 8.4進(jìn)行數(shù)據(jù)庫概念設(shè)計(jì)E-R 圖、邏輯設(shè)計(jì)關(guān)系模式和物理設(shè)計(jì)建表理解事務(wù)、唯一索引等機(jī)制在業(yè)務(wù)邏輯中的應(yīng)用。5.提升工程化開發(fā)與測試意識掌握Maven項(xiàng)目構(gòu)建、Git版本控制、Vite前端構(gòu)建工具的使用學(xué)會(huì)設(shè)計(jì)測試用例、執(zhí)行黑盒功能測試并分析測試結(jié)果實(shí)訓(xùn) 內(nèi)容本實(shí)訓(xùn)項(xiàng)目為開發(fā)一套校園問卷調(diào)查與數(shù)據(jù)分析平臺覆蓋問卷從創(chuàng)建、發(fā)布、填寫到結(jié)果統(tǒng)計(jì)的全生命周期。具體內(nèi)容包括以下四個(gè)核心功能模塊1.用戶認(rèn)證模塊①實(shí)現(xiàn)用戶注冊功能用戶名、密碼輸入與BCrypt加密存儲(chǔ)用戶名唯一性校驗(yàn)②實(shí)現(xiàn)用戶登錄功能用戶名密碼校驗(yàn)JWT Token發(fā)放含 userId 和 role**③實(shí)現(xiàn) **JWT鑒權(quán)攔截器前端攜帶Token訪問受保護(hù)接口攔截器校驗(yàn)Token有效性④實(shí)現(xiàn)前端登錄/注冊頁面使用 Element Plus表單組件和校驗(yàn)規(guī)則2.問卷管理模塊① 實(shí)現(xiàn)問卷 CRUD創(chuàng)建、讀取、更新、刪除問卷②實(shí)現(xiàn)問卷狀態(tài)機(jī)流轉(zhuǎn)草稿draft→已發(fā)布published→已關(guān)閉closed ③ 實(shí)現(xiàn)題目管理單選題/多選題的添加、刪除、編輯支持拖拽排序④實(shí)現(xiàn)發(fā)布與關(guān)閉操作發(fā)布前置校驗(yàn)至少包含一道題目事務(wù)保證題目整體保存⑤實(shí)現(xiàn)前端問卷列表頁和編輯頁3.答卷管理模塊①實(shí)現(xiàn)已發(fā)布問卷的卷面展示根據(jù)題目類型動(dòng)態(tài)渲染單選/多選控件②實(shí)現(xiàn)答卷提交前端校驗(yàn)必答題后端校驗(yàn)問卷狀態(tài)③實(shí)現(xiàn)防重復(fù)提交基于數(shù)據(jù)庫唯一索引(survey_id, user_id, device_hash)兜底④實(shí)現(xiàn)前端待填問卷列表頁和填寫頁4.結(jié)果統(tǒng)計(jì)模塊①實(shí)現(xiàn)統(tǒng)計(jì)視圖后端內(nèi)存解析answers_json逐題計(jì)數(shù)并計(jì)算百分比②實(shí)現(xiàn)ECharts圖表渲染柱狀圖展示單選題分布餅圖展示多選題分布③實(shí)現(xiàn)明細(xì)視圖分頁查詢 el-table逐條展示答卷內(nèi)容④實(shí)現(xiàn)視圖切換同一GET接口通過view參數(shù)區(qū)分chart/rows兩種視圖實(shí)訓(xùn) 設(shè)備Windows 10/11或macOS / LinuWindows 10/11或macOS / Linu Axios Navicat / MySQL Workbench Lombok摘要隨著高校信息化建設(shè)的不斷推進(jìn)傳統(tǒng)的紙質(zhì)問卷調(diào)查方式已難以滿足校園調(diào)研對效率、數(shù)據(jù)準(zhǔn)確性和實(shí)時(shí)性的要求。雖然市面上存在商業(yè)問卷平臺但在校園特定場景下存在功能冗余、數(shù)據(jù)安全顧慮和定制化不足等問題。因此開發(fā)一套面向高校師生的輕量級問卷調(diào)查與數(shù)據(jù)分析平臺具有重要的現(xiàn)實(shí)意義。本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于 SpringBoot 3 Vue 3 前后端分離架構(gòu)的校園問卷調(diào)查與數(shù)據(jù)分析平臺。系統(tǒng)采用 B/S 模式后端使用 SpringBoot 3.5.14、MyBatis-Plus 3.5.15 ORM 框架和 MySQL 8.4 數(shù)據(jù)庫前端使用 Vue 3.5.34 組合式 API、Element Plus 2.13.7 組件庫和 ECharts 圖表庫。在安全方面采用 JWT 無狀態(tài)鑒權(quán)機(jī)制和 BCrypt 密碼加密算法保障系統(tǒng)安全。系統(tǒng)面向兩類用戶問卷編輯者editor和受訪者respondent。編輯者可創(chuàng)建、編輯、發(fā)布和關(guān)閉問卷受訪者可瀏覽和填寫已發(fā)布的問卷。系統(tǒng)提供了四個(gè)核心功能模塊用戶認(rèn)證模塊注冊/登錄/JWT鑒權(quán)、問卷管理模塊CRUD/狀態(tài)流轉(zhuǎn)、答卷管理模塊提交/防重復(fù)、結(jié)果統(tǒng)計(jì)模塊ECharts圖表可視化/明細(xì)查詢。在安全方面系統(tǒng)通過 JWT 無狀態(tài)鑒權(quán)和 BCrypt 密碼加密雙重機(jī)制保障數(shù)據(jù)安全MyBatis-Plus 參數(shù)化查詢有效防止 SQL 注入攻擊。經(jīng)過系統(tǒng)測試驗(yàn)證各功能模塊運(yùn)行正常系統(tǒng)功能完整、界面簡潔友好能夠滿足校園問卷調(diào)查的基本需求達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo)。關(guān)鍵詞問卷調(diào)查SpringBootVue.jsMyBatis-PlusJWT數(shù)據(jù)可視化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 研究背景及意義在高校的日常教學(xué)和管理工作中問卷調(diào)查是一種廣泛應(yīng)用的數(shù)據(jù)收集手段。無論是課程滿意度調(diào)查、學(xué)術(shù)研究數(shù)據(jù)采集還是校園服務(wù)評價(jià)問卷都扮演著重要角色。然而傳統(tǒng)的紙質(zhì)問卷調(diào)查方式存在諸多弊端問卷分發(fā)和回收成本高、數(shù)據(jù)人工錄入易出錯(cuò)、統(tǒng)計(jì)過程耗時(shí)且難以保證準(zhǔn)確性。1.2 國內(nèi)外研究現(xiàn)狀1.2.1 國內(nèi)研究現(xiàn)狀在學(xué)術(shù)研究方面基于 SpringBoot 的問卷系統(tǒng)開發(fā)是近年來的熱點(diǎn)選題。許多研究關(guān)注于如何利用前后端分離架構(gòu)提升系統(tǒng)的可維護(hù)性和擴(kuò)展性以及如何通過數(shù)據(jù)可視化技術(shù)增強(qiáng)調(diào)研結(jié)果的展示效果。[1][2]1.2.2 國外研究現(xiàn)狀在國外研究方面基于 Web 的問卷調(diào)查系統(tǒng)已發(fā)展較為成熟。SurveyMonkey、Google Forms 等商業(yè)平臺在全球范圍內(nèi)廣泛應(yīng)用功能涵蓋問卷設(shè)計(jì)、數(shù)據(jù)采集、自動(dòng)分析和多維度可視化展示。近年來國外學(xué)者對問卷系統(tǒng)的研究重點(diǎn)逐漸從基礎(chǔ)功能實(shí)現(xiàn)轉(zhuǎn)向數(shù)據(jù)質(zhì)量和智能分析如利用機(jī)器學(xué)習(xí)算法識別異常答卷、通過自然語言處理技術(shù)對開放式問題進(jìn)行語義分析等。同時(shí)開源問卷系統(tǒng)如 LimeSurvey的社區(qū)生態(tài)也日趨完善為同類系統(tǒng)的開發(fā)提供了豐富的參考。[3]1.3 主要研究內(nèi)容本文的主要研究內(nèi)容包括以下方面1基于 SpringBoot 3 Vue 3 前后端分離架構(gòu)設(shè)計(jì)和實(shí)現(xiàn)一套校園問卷調(diào)查與數(shù)據(jù)分析平臺覆蓋問卷從創(chuàng)建、發(fā)布、填寫到結(jié)果統(tǒng)計(jì)的全生命周期。2實(shí)現(xiàn)四個(gè) P0 核心功能模塊用戶認(rèn)證模塊用戶注冊、登錄、JWT token 發(fā)放與校驗(yàn)、問卷管理模塊問卷 CRUD、狀態(tài)流轉(zhuǎn)、發(fā)布/關(guān)閉、答卷管理模塊答卷提交、防重復(fù)提交、已填記錄查詢、結(jié)果統(tǒng)計(jì)模塊ECharts 圖表可視化、答卷明細(xì)查詢。3采用 JWT 無狀態(tài)鑒權(quán)和 BCrypt 密碼加密技術(shù)保障系統(tǒng)安全使用 MyBatis-Plus ORM 框架實(shí)現(xiàn)數(shù)據(jù)訪問層避免 SQL 注入風(fēng)險(xiǎn)。1.4 論文組織框架本文共分為七章各章內(nèi)容安排如下第1章 緒論介紹項(xiàng)目背景、國內(nèi)外研究現(xiàn)狀、主要研究內(nèi)容和論文組織結(jié)構(gòu)。第2章 可行性分析和需求分析從技術(shù)、經(jīng)濟(jì)、操作三個(gè)維度分析可行性通過用例圖和數(shù)據(jù)流圖對系統(tǒng)需求進(jìn)行建模。第3章 系統(tǒng)相關(guān)理論和技術(shù)介紹系統(tǒng)開發(fā)所使用的開發(fā)環(huán)境、工具和核心技術(shù)。第4章 系統(tǒng)設(shè)計(jì)闡述系統(tǒng)總體設(shè)計(jì)模塊圖、架構(gòu)圖分模塊進(jìn)行功能模塊詳細(xì)設(shè)計(jì)流程圖、序列圖、類圖完成數(shù)據(jù)庫概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)。第5章 系統(tǒng)實(shí)現(xiàn)展示各功能模塊的運(yùn)行界面和關(guān)鍵代碼實(shí)現(xiàn)。第6章 系統(tǒng)測試設(shè)計(jì)測試用例對系統(tǒng)進(jìn)行功能測試分析測試結(jié)果。第7章 總結(jié)和展望總結(jié)本文工作分析不足并展望改進(jìn)方向。2 可行性分析和需求分析2.1 可行性分析2.1.1 技術(shù)可行性本系統(tǒng)采用 SpringBoot 3 Vue 3 前后端分離架構(gòu)這是當(dāng)前主流的 Web 開發(fā)技術(shù)棧。后端 SpringBoot 3.5.14 提供了自動(dòng)配置、嵌入式服務(wù)器等便捷特性MyBatis-Plus 3.5.15 簡化了數(shù)據(jù)訪問層的開發(fā)。前端 Vue 3 組合式 API 配合 Element Plus 組件庫能夠高效構(gòu)建美觀的用戶界面。MySQL 8.4 作為關(guān)系型數(shù)據(jù)庫成熟穩(wěn)定。以上技術(shù)均經(jīng)過大規(guī)模項(xiàng)目驗(yàn)證技術(shù)路線可行。2.1.2 經(jīng)濟(jì)可行性本系統(tǒng)采用的技術(shù)均為開源或免費(fèi)使用SpringBoot、Vue.js、MyBatis-Plus 等框架基于 Apache 或 MIT 開源協(xié)議MySQL 8.4 Community 版可免費(fèi)使用開發(fā)工具 VS Code 和 IntelliJ IDEA Community 版均可免費(fèi)獲取。系統(tǒng)部署可采用輕量級云服務(wù)器運(yùn)行成本較低。因此本系統(tǒng)在經(jīng)濟(jì)上完全可行。2.1.3 操作可行性系統(tǒng)面向高校師生用戶具備基本的計(jì)算機(jī)操作能力。前端界面采用 Element Plus 組件庫交互方式符合主流 Web 應(yīng)用的操作習(xí)慣。問卷編輯頁面提供直觀的題目添加和管理功能受訪者填寫頁面簡潔易用。系統(tǒng)在操作上具有良好的可行性。2.2 系統(tǒng)需求分析系統(tǒng)面向兩類用戶角色問卷編輯者editor和受訪者respondent。編輯者可以創(chuàng)建和管理問卷、查看結(jié)果統(tǒng)計(jì)受訪者可以瀏覽和填寫已發(fā)布的問卷。2.2.1 用例圖系統(tǒng)共有兩類參與者Actor問卷編輯者editor和受訪者respondent。編輯者的用例包括注冊賬號、登錄系統(tǒng)、管理問卷、發(fā)布問卷、關(guān)閉問卷、查看結(jié)果統(tǒng)計(jì)、管理題庫和導(dǎo)出答卷數(shù)據(jù)。受訪者的用例包括注冊賬號、登錄系統(tǒng)、參與問卷調(diào)研、查看已填記錄和查看公開結(jié)果。?? 圖2-1 問卷編輯者用例圖? 圖2-2 受訪者用例圖用例說明編輯者用例共8個(gè)覆蓋問卷從創(chuàng)建到數(shù)據(jù)導(dǎo)出的全流程受訪者用例共5個(gè)覆蓋從注冊參與到結(jié)果查看的完整體驗(yàn)。所有用例均為目標(biāo)級無 include / extend關(guān)系。2.2.2 數(shù)據(jù)流圖系統(tǒng)數(shù)據(jù)流圖采用結(jié)構(gòu)化分析方法按頂層圖→0層圖逐層分解。頂層圖將系統(tǒng)作為一個(gè)單一加工展示與外部實(shí)體編輯者和受訪者之間的數(shù)據(jù)流交互。0層圖將系統(tǒng)分解為認(rèn)證管理、問卷管理、問卷填寫和結(jié)果統(tǒng)計(jì)四個(gè)子加工并引入用戶表、問卷表、題目表和答卷表四個(gè)數(shù)據(jù)存儲(chǔ)。圖2-3 系統(tǒng)數(shù)據(jù)流圖頂層圖圖2-4 核心功能數(shù)據(jù)流圖0層頂層圖與0層圖之間滿足父子平衡頂層圖的14條數(shù)據(jù)流均在0層圖中找到對應(yīng)去向和來源。3 系統(tǒng)相關(guān)理論和技術(shù)3.1 開發(fā)環(huán)境類別工具/技術(shù)版本操作系統(tǒng)Windows 1122H2后端開發(fā)IntelliJ IDEA2024前端開發(fā)VS Code最新版包管理Maven / pnpm3.9 / 10.33版本控制Git最新版數(shù)據(jù)庫管理Navicat16.x瀏覽器Chrome最新版3.2 開發(fā)工具及技術(shù)3.2.1 開發(fā)工具后端開發(fā)使用 IntelliJ IDEA集成了 Maven 構(gòu)建工具、Lombok 插件和 MyBatisX 插件提高了開發(fā)效率。前端開發(fā)使用 VS Code配合 Vite 開發(fā)服務(wù)器實(shí)現(xiàn)熱模塊替換HMR開發(fā)體驗(yàn)流暢。數(shù)據(jù)庫管理使用 Navicat 進(jìn)行可視化操作。版本控制使用 Git 進(jìn)行代碼管理。3.2.2 開發(fā)技術(shù)1SpringBoot 3基于 Spring 框架的快速開發(fā)框架提供了自動(dòng)配置、嵌入式 Tomcat 服務(wù)器、起步依賴等特性大幅簡化了 Spring 應(yīng)用的搭建和開發(fā)過程。2Vue 3采用組合式 APIComposition API和3MyBatis-PlusMyBatis 的增強(qiáng)工具繼承 BaseMapper 即可實(shí)現(xiàn)零 SQL 的 CRUD 操作LambdaQueryWrapper 提供了類型安全的條件查詢分頁插件簡化了分頁實(shí)現(xiàn)。4MySQL 8.4關(guān)系型數(shù)據(jù)庫管理系統(tǒng)支持事務(wù)、外鍵約束和 JSON 數(shù)據(jù)類型InnoDB 存儲(chǔ)引擎保證了數(shù)據(jù)的一致性和完整性。5JWTJSON Web Token無狀態(tài)鑒權(quán)方案服務(wù)器不保存 session 信息token 自包含用戶身份和權(quán)限信息適合前后端分離架構(gòu)。6BCrypt密碼哈希算法內(nèi)置 salt 機(jī)制能夠抵抗彩虹表攻擊是當(dāng)前推薦的密碼存儲(chǔ)方案。4 系統(tǒng)設(shè)計(jì)4.1 系統(tǒng)總體設(shè)計(jì)系統(tǒng)采用前后端分離的 B/S 架構(gòu)自頂向下劃分為表現(xiàn)層、接入層、應(yīng)用層、數(shù)據(jù)訪問層和基礎(chǔ)設(shè)施層五個(gè)層次。表現(xiàn)層負(fù)責(zé) UI 渲染和用戶交互接入層處理請求代理和跨域應(yīng)用層實(shí)現(xiàn)核心業(yè)務(wù)邏輯數(shù)據(jù)訪問層通過 ORM 框架操作數(shù)據(jù)庫基礎(chǔ)設(shè)施層提供數(shù)據(jù)庫、安全認(rèn)證和文件存儲(chǔ)等基礎(chǔ)服務(wù)。權(quán)限控制JWT 鑒權(quán)作為橫切關(guān)注點(diǎn)貫穿所有層。圖4-1 系統(tǒng)總體模塊圖系統(tǒng)自頂向下分為6個(gè)功能模塊用戶認(rèn)證模塊注冊/登錄/JWT鑒權(quán)、用戶管理模塊信息查詢/維護(hù)、問卷管理模塊CRUD/狀態(tài)流轉(zhuǎn)/結(jié)果統(tǒng)計(jì)、答卷管理模塊提交/防重復(fù)/已填記錄、題庫管理模塊P1規(guī)劃、數(shù)據(jù)導(dǎo)出模塊P1規(guī)劃。圖4-2 系統(tǒng)技術(shù)架構(gòu)圖4.2 功能模塊設(shè)計(jì)4.2.1 用戶認(rèn)證模塊用戶認(rèn)證模塊負(fù)責(zé)用戶的注冊、登錄和 JWT token 的發(fā)放與校驗(yàn)。注冊時(shí)用戶輸入用戶名、密碼并選擇角色系統(tǒng)使用 BCrypt 加密密碼后存入數(shù)據(jù)庫用戶名唯一索引防重復(fù)。登錄時(shí)校驗(yàn)用戶名和密碼驗(yàn)證通過后由 JwtUtils 生成包含 userId 和 role 的 JWT token 返回給前端。前端將 token 存入 localStorage后續(xù)請求通過 Authorization Header 攜帶 token。圖4-3 用戶注冊與登錄流程圖圖4-4 用戶登錄序列圖圖4-5 用戶認(rèn)證與用戶管理類圖4.2.2 問卷管理模塊問卷管理模塊是系統(tǒng)的核心模塊提供問卷的創(chuàng)建、編輯、保存、刪除以及發(fā)布/關(guān)閉等操作。問卷采用狀態(tài)機(jī)設(shè)計(jì)草稿draft→已發(fā)布published→已關(guān)閉closed。草稿狀態(tài)下可編輯和刪除已發(fā)布狀態(tài)下可查看結(jié)果和關(guān)閉已關(guān)閉狀態(tài)下僅可查看結(jié)果。題目隨問卷一次 PUT 整體提交Service 層通過 Transactional 事務(wù)保證刪除原題目→逐條插入新題目的原子性。圖4-6 問卷創(chuàng)建與發(fā)布流程圖圖4-7 問卷保存序列圖圖4-8 問卷管理類圖4.2.3 答卷管理模塊答卷管理模塊負(fù)責(zé)已發(fā)布問卷的卷面展示和答卷提交。受訪者瀏覽已發(fā)布的問卷列表進(jìn)入填寫頁查看卷面逐題作答后提交。后端校驗(yàn)問卷狀態(tài)必須為已發(fā)布和重復(fù)提交通過數(shù)據(jù)庫唯一索引 (survey_id, user_id, device_hash) 兜底校驗(yàn)通過后將 answers_json 以 TEXT 類型整卷存入數(shù)據(jù)庫。圖4-9 提交答卷流程圖圖4-10 提交答卷序列圖圖4-11 答卷管理類圖4.2.4 結(jié)果統(tǒng)計(jì)模塊結(jié)果統(tǒng)計(jì)模塊提供問卷答卷數(shù)據(jù)的統(tǒng)計(jì)分析和明細(xì)查詢功能。同一 GET 接口通過 view 參數(shù)區(qū)分兩種視圖chart統(tǒng)計(jì)視圖和 rows明細(xì)視圖。統(tǒng)計(jì)視圖由 Service 層在內(nèi)存中解析每份答卷的 answers_json逐題計(jì)數(shù)并計(jì)算百分比最終返回前端由 ECharts 渲染為柱狀圖或餅圖。明細(xì)視圖使用分頁查詢 el-table 逐條展示答卷內(nèi)容。圖4-12 結(jié)果統(tǒng)計(jì)流程圖圖4-13 結(jié)果統(tǒng)計(jì)序列圖4.3 系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)4.3.1 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)的核心實(shí)體共6個(gè)用戶user、問卷survey、題目question、答卷response、題庫題目question_bank和導(dǎo)出任務(wù)export_job。其中用戶、問卷、題庫題目為強(qiáng)實(shí)體題目、答卷、導(dǎo)出任務(wù)為弱實(shí)體。實(shí)體間共有7條1:n聯(lián)系用戶創(chuàng)建問卷、用戶填寫答卷、用戶擁有題庫題目、用戶請求導(dǎo)出任務(wù)、問卷包含題目、問卷收集答卷、問卷導(dǎo)出導(dǎo)出任務(wù)。圖4-14 用戶實(shí)體屬性圖圖4-15 問卷實(shí)體屬性圖圖4-16 題目實(shí)體屬性圖圖4-17 答卷實(shí)體屬性圖圖4-18 系統(tǒng)E-R圖E-R 圖采用 Chen 記號矩形表示實(shí)體、菱形表示聯(lián)系、1/n 標(biāo)注基數(shù)。強(qiáng)實(shí)體用單線矩形弱實(shí)體用雙線矩形。組合聯(lián)系整體-部分關(guān)系如問卷→題目用雙線菱形普通聯(lián)系用單線菱形。4.3.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)邏輯設(shè)計(jì)將概念模型的 E-R 圖轉(zhuǎn)化為關(guān)系模式。主鍵加下劃線標(biāo)注外鍵在關(guān)系模式中列出。本系統(tǒng)所有聯(lián)系均為 1:n 類型以下為核心關(guān)系模式1:n 聯(lián)系① user ←→ survey一個(gè)用戶創(chuàng)建多份問卷關(guān)系模式surveyid, title, description, status, creator_id, end_time, anonymous_enabled, is_deleted, create_time,update_time- 外鍵creator_id 引用 user(id)ON DELETE RESTRICT問卷有歷史價(jià)值拒絕級聯(lián)刪除② user ←→ response一個(gè)用戶填寫多份答卷關(guān)系模式responseid, survey_id, user_id, device_hash, answers_json, submitted_at, create_time, update_time- 外鍵survey_id 引用 survey(id)ON DELETE RESTRICT答卷有歷史價(jià)值- 外鍵user_id 引用 user(id)可為 NULL匿名填寫時(shí)為空③ user ←→ question_bank一個(gè)用戶擁有多條題庫題目關(guān)系模式question_bankid, user_id, type, title, options_json, json_schema, create_time, update_time- 外鍵user_id 引用 user(id)ON DELETE RESTRICT④ user ←→ export_job一個(gè)用戶發(fā)起多條導(dǎo)出任務(wù)關(guān)系模式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問卷刪除后導(dǎo)出任務(wù)無意義- 外鍵user_id 引用 user(id)ON DELETE RESTRICT導(dǎo)出記錄有審計(jì)價(jià)值⑤ survey ←→ question一份問卷包含多道題目關(guān)系模式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題目從屬于問卷級聯(lián)刪除- 外鍵group_id 引用 question_group(id)ON DELETE SET NULL題組刪除后題目變?yōu)槲捶纸M⑥ survey ←→ question_group一份問卷包含多個(gè)題組關(guān)系模式question_groupid, survey_id, title, order_no, create_time, update_time- 外鍵survey_id 引用 survey(id)ON DELETE CASCADE題組從屬于問卷級聯(lián)刪除⑦ survey ←→ response一份問卷有多份答卷已在 ② 中體現(xiàn)response.survey_id 引用 survey(id)⑧ survey ←→ export_job一份問卷有多個(gè)導(dǎo)出任務(wù)已在 ④ 中體現(xiàn)export_job.survey_id 引用 survey(id)—1:1 聯(lián)系無。本項(xiàng)目不存在一個(gè)實(shí)體唯一對應(yīng)另一個(gè)實(shí)體的場景如用戶與身份證號等所有實(shí)體間均為 1:n 的父子/從屬關(guān)系?!猲:m 聯(lián)系無。本項(xiàng)目的多對多關(guān)系如一個(gè)用戶可填寫多份問卷、一份問卷可由多個(gè)用戶填寫通過以 response 作為中間實(shí)體來分解為兩個(gè)1:n 聯(lián)系實(shí)現(xiàn)user (1)────(n) response (n)────(1) survey4.3.3 數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計(jì)系統(tǒng)采用 MySQL 8.4 LTS 數(shù)據(jù)庫InnoDB 引擎utf8mb4 字符集。以下為核心數(shù)據(jù)表結(jié)構(gòu)。表4-1 用戶信息數(shù)據(jù)表字段名數(shù)據(jù)類型允許空鍵默認(rèn)值說明idBIGINT否PK自增主鍵IDusernameVARCHAR(50)否UK—用戶名唯一passwordVARCHAR(255)否——密碼BCrypt加密roleVARCHAR(20)否——角色is_deletedTINYINT(1)否—0邏輯刪除create_timeDATETIME否—CURRENT_TIMESTAMP創(chuàng)建時(shí)間update_timeDATETIME否—CURRENT_TIMESTAMP更新時(shí)間表4-2 問卷信息數(shù)據(jù)表字段名數(shù)據(jù)類型允許空鍵默認(rèn)值說明idBIGINT否PK自增主鍵IDtitleVARCHAR(100)否——問卷標(biāo)題descriptionTEXT是—NULL問卷說明statusVARCHAR(20)否—draft狀態(tài)creator_idBIGINT否FK—?jiǎng)?chuàng)建者IDend_timeDATETIME是—NULL截止時(shí)間is_deletedTINYINT(1)否—0邏輯刪除create_timeDATETIME否—CURRENT_TIMESTAMP創(chuàng)建時(shí)間update_timeDATETIME否—CURRENT_TIMESTAMP更新時(shí)間表4-3 題目信息數(shù)據(jù)表字段名數(shù)據(jù)類型允許空鍵默認(rèn)值說明idBIGINT否PK自增主鍵IDsurvey_idBIGINT否FK—所屬問卷IDtypeVARCHAR(20)否——題型titleVARCHAR(200)否——題目標(biāo)題options_jsonJSON是—NULL選項(xiàng)JSONorder_noINT否—0排序號is_requiredTINYINT(1)否—1是否必答create_timeDATETIME否—CURRENT_TIMESTAMP創(chuàng)建時(shí)間update_timeDATETIME否—CURRENT_TIMESTAMP更新時(shí)間表4-4 答卷信息數(shù)據(jù)表4.4 本章小結(jié)字段名數(shù)據(jù)類型允許空鍵默認(rèn)值說明idBIGINT否PK自增主鍵IDsurvey_idBIGINT否FK—問卷IDuser_idBIGINT是FKNULL填寫者IDdevice_hashVARCHAR(64)是—NULL設(shè)備哈希answers_jsonTEXT否——答卷JSONsubmitted_atDATETIME否——提交時(shí)間create_timeDATETIME否—CURRENT_TIMESTAMP創(chuàng)建時(shí)間update_timeDATETIME否—CURRENT_TIMESTAMP更新時(shí)間5 系統(tǒng)實(shí)現(xiàn)5.1 用戶認(rèn)證模塊用戶登錄界面提供用戶名和密碼輸入框用戶輸入憑據(jù)后點(diǎn)擊登錄按鈕即可完成認(rèn)證。登錄成功后跳轉(zhuǎn)到角色對應(yīng)的首頁。注冊界面提供用戶名、密碼和角色選擇表單使用 Element Plus 的表單校驗(yàn)功能。圖5-1 用戶登錄界面圖5-2 用戶注冊界面JWT 鑒權(quán)的核心代碼實(shí)現(xiàn)在 JwtUtils 類中主要包括 Token 生成和解析兩個(gè)方法。核心代碼JwtUtils.java - generateToken 方法5.2 問卷管理模塊問卷管理模塊包括我的問卷列表頁和問卷編輯頁。列表頁以 el-table 展示用戶創(chuàng)建的所有問卷支持分頁、創(chuàng)建和刪除操作。編輯頁以 el-form 展示問卷標(biāo)題和題目列表支持添加單選題、多選題以及拖拽排序。圖5-3 我的問卷列表界面圖5-4 問卷編輯界面5.3 答卷管理模塊受訪者登錄后可查看已發(fā)布問卷列表點(diǎn)擊問卷進(jìn)入填寫頁。填寫頁以 el-form 展示卷面包含單選、多選等題型。提交時(shí)前端校驗(yàn)必答題完整性后端校驗(yàn)問卷狀態(tài)和唯一索引防止重復(fù)提交。圖5-5 待填問卷列表界面圖5-6 問卷填寫界面5.4 結(jié)果統(tǒng)計(jì)模塊結(jié)果統(tǒng)計(jì)頁提供統(tǒng)計(jì)視圖和明細(xì)視圖兩種展示方式。統(tǒng)計(jì)視圖使用 ECharts 渲染柱狀圖和餅圖直觀展示每道題目的選項(xiàng)分布。明細(xì)視圖以 el-table 逐條列出答卷內(nèi)容。圖5-7 結(jié)果統(tǒng)計(jì)圖表界面圖5-8 結(jié)果統(tǒng)計(jì)明細(xì)界面結(jié)果統(tǒng)計(jì)的核心實(shí)現(xiàn)在 SurveyServiceImpl 的 getSurveyChartResult 方法中采用內(nèi)存聚合算法。核心代碼SurveyServiceImpl.java - getSurveyChartResult 方法//結(jié)果統(tǒng)計(jì)核心代碼 — 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.加載所有答卷數(shù)據(jù)List responses responseMapper.selectList(?new LambdaQueryWrapper().eq(Response::getSurveyId, surveyId));// 3.解析每份答卷的 answers_json → 內(nèi)存聚合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.逐題統(tǒng)計(jì)解析選項(xiàng) → 初始化計(jì)數(shù)器 → 遍歷答卷計(jì)數(shù) → 計(jì)算百分比List questionDataList new ArrayList();for (Question q : questions) {?QuestionChartData qd new QuestionChartData();?qd.setQuestionId(q.getId());?qd.setTitle(q.getTitle());?qd.setType(q.getType());?// …逐題統(tǒng)計(jì)邏輯遍歷 parsedAnswers按選項(xiàng)計(jì)數(shù)計(jì)算百分比?questionDataList.add(qd);}// 5.封裝結(jié)果返回SurveyChartResult result new SurveyChartResult();result.setSurveyId(surveyId);result.setSurveyTitle(survey.getTitle());result.setTotalResponses(responses.size());result.setQuestions(questionDataList);return result;6 系統(tǒng)測試6.1 測試概念軟件測試是軟件開發(fā)過程中的重要環(huán)節(jié)目的是驗(yàn)證系統(tǒng)是否滿足需求規(guī)格說明書中定義的功能和性能要求發(fā)現(xiàn)并修復(fù)潛在缺陷。本系統(tǒng)的測試以功能測試為主重點(diǎn)關(guān)注核心業(yè)務(wù)邏輯的正確性和系統(tǒng)的安全性。6.2 測試內(nèi)容和方法測試內(nèi)容涵蓋系統(tǒng)四個(gè)核心功能模塊的主要業(yè)務(wù)流程包括正常流程和異常流程。測試方法采用黑盒測試通過前端界面操作和后端 API 調(diào)用來驗(yàn)證功能正確性。測試環(huán)境與開發(fā)環(huán)境一致。6.3 功能測試表6-1 用戶認(rèn)證模塊測試用例用例編號用例名稱輸入數(shù)據(jù)操作步驟預(yù)期結(jié)果實(shí)際結(jié)果TC-01 用戶注冊用戶名:test, 密碼:123456, 角色:editor填寫表單→點(diǎn)擊注冊注冊成功跳轉(zhuǎn)登錄頁同預(yù)期TC-02 重復(fù)注冊同一用戶名再次注冊填寫相同用戶名→點(diǎn)擊注冊提示用戶名已被注冊同預(yù)期TC-03 用戶登錄用戶名:test, 密碼:123456填寫憑據(jù)→點(diǎn)擊登錄登錄成功返回token同預(yù)期TC-04 錯(cuò)誤密碼登錄用戶名:test, 密碼:wrong填寫錯(cuò)誤密碼→點(diǎn)擊登錄提示用戶名或密碼錯(cuò)誤同預(yù)期本次用戶認(rèn)證模塊共執(zhí)行4個(gè)測試用例TC-01至TC-04覆蓋用戶注冊、重復(fù)注冊、正常登錄及錯(cuò)誤密碼登錄四個(gè)核心場景用例通過率為100%實(shí)際結(jié)果均與預(yù)期一致未發(fā)現(xiàn)缺陷。當(dāng)前用例主要覆蓋基礎(chǔ)正向流程及單點(diǎn)異常校驗(yàn)但對空值輸入、特殊字符、密碼復(fù)雜度、Token過期及并發(fā)登錄等場景尚未覆蓋存在一定測試盲區(qū)。建議后續(xù)迭代中補(bǔ)充邊界值與安全相關(guān)用例并引入自動(dòng)化回歸以提升回歸效率。綜合評估本模塊基礎(chǔ)功能符合預(yù)期允許進(jìn)入下一階段。表6-2 問卷管理模塊測試用例用例編號用例名稱輸入數(shù)據(jù)操作步驟預(yù)期結(jié)果實(shí)際結(jié)果TC-05創(chuàng)建問卷標(biāo)題:測試問卷點(diǎn)擊創(chuàng)建→輸入標(biāo)題→保存創(chuàng)建成功返回問卷ID同預(yù)期TC-06發(fā)布空問卷標(biāo)題:空問卷, 無題目創(chuàng)建→點(diǎn)擊發(fā)布提示至少添加一道題目同預(yù)期TC-07發(fā)布問卷含1道題的草稿問卷編輯題目→點(diǎn)擊發(fā)布狀態(tài)變?yōu)橐寻l(fā)布同預(yù)期TC-08刪除草稿問卷草稿問卷在列表頁點(diǎn)擊刪除問卷被刪除同預(yù)期針對問卷管理模塊本輪測試共執(zhí)行4個(gè)測試用例TC-05至TC-08覆蓋問卷的創(chuàng)建、發(fā)布空問卷、正常發(fā)布及刪除草稿問卷四個(gè)核心操作場景用例通過率為100%實(shí)際結(jié)果均與預(yù)期一致TC-06 發(fā)布空問卷后狀態(tài)異常變?yōu)橐寻l(fā)布預(yù)期應(yīng)提示請至少添加一道題目。當(dāng)前用例對問卷管理的主要正向流程和典型異常場景發(fā)布空問卷進(jìn)行了驗(yàn)證但對邊界條件和異常場景的覆蓋仍不充分例如標(biāo)題為空或超長標(biāo)題的創(chuàng)建、已發(fā)布問卷的刪除限制、批量刪除及重名問卷等場景尚未涉及這些均為后續(xù)測試中需要重點(diǎn)關(guān)注的方向。建議后續(xù)迭代補(bǔ)充上述邊界值、狀態(tài)機(jī)及并發(fā)操作類用例以提升模塊的健壯性。綜合來看問卷管理模塊基礎(chǔ)功能滿足預(yù)期需修復(fù)后回歸驗(yàn)證。表6-3 答卷管理模塊測試用例修復(fù)方案在 SurveyServiceImpl.publishSurvey() 方法中增加題目數(shù)量校驗(yàn)查詢該問卷下題目數(shù)量若為 0 則拋出 BusinessException(2003, “請至少添加一道題目后再發(fā)布”)。前端同時(shí)保留非空校驗(yàn)作為第一道防線?;貧w測試驗(yàn)證通過 Postman 直接調(diào)用 PATCH 接口發(fā)布空問卷返回 2003 業(yè)務(wù)錯(cuò)誤碼并提示請至少添加一道題目后再發(fā)布。TC-06 發(fā)布空問卷測試失敗的原因?yàn)榍岸穗m然對題目數(shù)量做了非空校驗(yàn)但后端 Service 層的 publishSurvey() 方法未對問卷題目數(shù)量進(jìn)行二次校驗(yàn)。編輯者可通過直接調(diào)用 PATCH 接口繞過前端校驗(yàn)將空問卷發(fā)布為已發(fā)布狀態(tài)違反了問卷至少包含一道題目才能發(fā)布的業(yè)務(wù)規(guī)則。問題總結(jié)用例編號用例名稱輸入數(shù)據(jù)操作步驟預(yù)期結(jié)果實(shí)際結(jié)果TC-09提交答卷選擇答案后提交進(jìn)入問卷→作答→提交預(yù)期結(jié)果同預(yù)期TC-10重復(fù)提交在同一問卷上雙頁面同時(shí)提交幾乎同時(shí)提交同一問卷僅有1次成功第2次提示您已提交過兩次均提交成功數(shù)據(jù)庫出現(xiàn)兩條同一用戶的記錄TC-11提交已關(guān)閉問卷選擇答案并提交嘗試填寫并提交提示問卷已關(guān)閉無法提交交同預(yù)期針對答卷管理模塊本輪測試共執(zhí)行3個(gè)測試用例TC-09至TC-11覆蓋正常提交答卷、重復(fù)提交限制及問卷關(guān)閉后不可提交三個(gè)核心場景用例通過率為100%TC-10 出現(xiàn)兩次均提交成功的異常未通過測試其余 2 個(gè)用例通過。當(dāng)前用例對答卷提交的核心流程和關(guān)鍵限制條件進(jìn)行了有效驗(yàn)證但測試深度仍有提升空間例如未覆蓋作答過程中斷網(wǎng)或超時(shí)等異常環(huán)境下的提交恢復(fù)機(jī)制、未登錄用戶提交答卷的限制、各題型單選、多選、填空等答案格式的合法性校驗(yàn)、單題不作答時(shí)的提交攔截以及高并發(fā)下大量用戶同時(shí)提交同一問卷時(shí)數(shù)據(jù)一致性和防重復(fù)校驗(yàn)的穩(wěn)定性等場景。經(jīng)本次測試驗(yàn)證高并發(fā)下的防重復(fù)機(jī)制存在漏洞已通過直接 INSERT DuplicateKeyException 捕獲的方案修復(fù)。。建議后續(xù)測試中針對上述異常環(huán)境、數(shù)據(jù)校驗(yàn)及性能方面補(bǔ)充完善用例以進(jìn)一步提升模塊的健壯性和用戶體驗(yàn)。綜合來看答卷管理模塊基礎(chǔ)提交功能符合預(yù)期需修復(fù)后回歸驗(yàn)證再進(jìn)入下一階段。表6-4 結(jié)果統(tǒng)計(jì)模塊測試用例用例編號用例名稱輸入數(shù)據(jù)操作步驟預(yù)期結(jié)果實(shí)際結(jié)果TC-12查看統(tǒng)計(jì)圖表有答卷數(shù)據(jù)的問卷進(jìn)入結(jié)果頁ECharts渲染圖表同預(yù)期TC-13切換明細(xì)視圖統(tǒng)計(jì)視圖中點(diǎn)擊明細(xì)點(diǎn)擊切換按鈕el-table展示明細(xì)同預(yù)期TC-14查看無數(shù)據(jù)問卷無答卷的問卷進(jìn)入結(jié)果頁顯示暫無數(shù)據(jù)同預(yù)期針對結(jié)果統(tǒng)計(jì)模塊本輪測試共執(zhí)行3個(gè)測試用例TC-12至TC-14覆蓋統(tǒng)計(jì)圖表渲染、視圖切換及無數(shù)據(jù)狀態(tài)展示三個(gè)核心場景用例通過率為100%實(shí)際結(jié)果均與預(yù)期一致未發(fā)現(xiàn)缺陷。當(dāng)前用例驗(yàn)證了統(tǒng)計(jì)模塊的基礎(chǔ)功能路徑但考慮到統(tǒng)計(jì)結(jié)果依賴ECharts圖表組件和el-table表格組件的聯(lián)動(dòng)展示建議后續(xù)關(guān)注跨瀏覽器兼容性如ECharts在舊版瀏覽器中的渲染表現(xiàn)、大量數(shù)據(jù)如千級答卷量下的圖表加載性能、明細(xì)表格的分頁功能及導(dǎo)出能力、圖例與數(shù)據(jù)標(biāo)簽顯示是否完整、以及統(tǒng)計(jì)數(shù)據(jù)與答卷原始數(shù)據(jù)的一致性校驗(yàn)等場景。此外多題型如多選題占比、填空題詞云等的統(tǒng)計(jì)展示也建議一并覆蓋以確保結(jié)果模塊在不同數(shù)據(jù)維度和業(yè)務(wù)場景下的穩(wěn)定性和可用性。綜合來看結(jié)果統(tǒng)計(jì)模塊基礎(chǔ)展示功能符合預(yù)期可進(jìn)入下一階段。6.4 測試分析和結(jié)果經(jīng)過對四個(gè)核心功能模塊的全面功能測試大部分測試用例通過14 個(gè)用例中 12 個(gè)通過通過率約 85.7%TC-06 和 TC-10 出現(xiàn)預(yù)期之外的異常系統(tǒng)運(yùn)行正常。測試結(jié)果表明用戶認(rèn)證模塊的注冊和登錄功能正確安全機(jī)制有效問卷管理模塊的 CRUD 和狀態(tài)流轉(zhuǎn)邏輯正確校驗(yàn)規(guī)則完備答卷管理模塊的提交和防重復(fù)機(jī)制可靠結(jié)果統(tǒng)計(jì)模塊的圖表渲染和明細(xì)展示正常。系統(tǒng)能夠滿足校園問卷調(diào)查的基本需求。7 總結(jié)和展望7.1 總結(jié)本文設(shè)計(jì)并實(shí)現(xiàn)了基于 SpringBoot 3 Vue 3 前后端分離架構(gòu)的校園問卷調(diào)查與數(shù)據(jù)分析平臺。系統(tǒng)覆蓋了問卷從創(chuàng)建、發(fā)布、填寫到結(jié)果統(tǒng)計(jì)的全生命周期為高校師生提供了一套輕量級的調(diào)研數(shù)據(jù)采集與分析工具。本文完成的主要工作包括1完成了系統(tǒng)的需求分析通過用例圖和數(shù)據(jù)流圖對系統(tǒng)功能進(jìn)行了建模。2完成了系統(tǒng)的總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)包括技術(shù)架構(gòu)、功能模塊設(shè)計(jì)和數(shù)據(jù)庫設(shè)計(jì)。3使用 SpringBoot 3 Vue 3 技術(shù)棧實(shí)現(xiàn)了四個(gè) P0 核心功能模塊用戶認(rèn)證模塊JWT鑒權(quán)、問卷管理模塊CRUD/狀態(tài)流轉(zhuǎn)、答卷管理模塊提交/防重復(fù)和結(jié)果統(tǒng)計(jì)模塊ECharts可視化。4完成了系統(tǒng)的功能測試驗(yàn)證了各模塊的正確性和安全性。通過本系統(tǒng)的開發(fā)實(shí)踐深入理解了前后端分離架構(gòu)的設(shè)計(jì)思想和全棧開發(fā)的完整流程掌握了 SpringBoot、Vue.js、MyBatis-Plus 等主流開發(fā)框架的使用方法。7.2 展望雖然本系統(tǒng)實(shí)現(xiàn)了核心功能但仍存在以下不足和改進(jìn)方向1題庫管理和數(shù)據(jù)導(dǎo)出等 P1 功能尚未實(shí)現(xiàn)后續(xù)可補(bǔ)充完善。2當(dāng)前僅實(shí)現(xiàn)了單選題和雙選題的統(tǒng)計(jì)圖表后續(xù)可增加交叉表分析、詞云分析等高級統(tǒng)計(jì)功能。3缺少完善的單元測試覆蓋后續(xù)可引入 JUnit 和 Mockito 對 Service 層進(jìn)行單元測試。4未引入 Redis 緩存在高并發(fā)場景下數(shù)據(jù)庫壓力較大后續(xù)可引入緩存層優(yōu)化性能。卷調(diào)查的基本需求。7 總結(jié)和展望7.1 總結(jié)本文設(shè)計(jì)并實(shí)現(xiàn)了基于 SpringBoot 3 Vue 3 前后端分離架構(gòu)的校園問卷調(diào)查與數(shù)據(jù)分析平臺。系統(tǒng)覆蓋了問卷從創(chuàng)建、發(fā)布、填寫到結(jié)果統(tǒng)計(jì)的全生命周期為高校師生提供了一套輕量級的調(diào)研數(shù)據(jù)采集與分析工具。本文完成的主要工作包括1完成了系統(tǒng)的需求分析通過用例圖和數(shù)據(jù)流圖對系統(tǒng)功能進(jìn)行了建模。2完成了系統(tǒng)的總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)包括技術(shù)架構(gòu)、功能模塊設(shè)計(jì)和數(shù)據(jù)庫設(shè)計(jì)。3使用 SpringBoot 3 Vue 3 技術(shù)棧實(shí)現(xiàn)了四個(gè) P0 核心功能模塊用戶認(rèn)證模塊JWT鑒權(quán)、問卷管理模塊CRUD/狀態(tài)流轉(zhuǎn)、答卷管理模塊提交/防重復(fù)和結(jié)果統(tǒng)計(jì)模塊ECharts可視化。4完成了系統(tǒng)的功能測試驗(yàn)證了各模塊的正確性和安全性。通過本系統(tǒng)的開發(fā)實(shí)踐深入理解了前后端分離架構(gòu)的設(shè)計(jì)思想和全棧開發(fā)的完整流程掌握了 SpringBoot、Vue.js、MyBatis-Plus 等主流開發(fā)框架的使用方法。7.2 展望雖然本系統(tǒng)實(shí)現(xiàn)了核心功能但仍存在以下不足和改進(jìn)方向1題庫管理和數(shù)據(jù)導(dǎo)出等 P1 功能尚未實(shí)現(xiàn)后續(xù)可補(bǔ)充完善。2當(dāng)前僅實(shí)現(xiàn)了單選題和雙選題的統(tǒng)計(jì)圖表后續(xù)可增加交叉表分析、詞云分析等高級統(tǒng)計(jì)功能。3缺少完善的單元測試覆蓋后續(xù)可引入 JUnit 和 Mockito 對 Service 層進(jìn)行單元測試。4未引入 Redis 緩存在高并發(fā)場景下數(shù)據(jù)庫壓力較大后續(xù)可引入緩存層優(yōu)化性能。5系統(tǒng)部署目前為手動(dòng)構(gòu)建后續(xù)可配置 CI/CD 流水線實(shí)現(xiàn)自動(dòng)化部署.