)
博主介绍✌ 专注于VUE,小程序安卓Java,python,物联网专业有18年开发经验长年从事毕业指导项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题我会尽力帮助你。一、研究目的研究目的在于构建一种基于SpringBoot框架的课堂签到与互动系统以解决传统手工签到方式所带来的效率低下、误差大以及学生参与度不足等问题。该系统通过整合WebSocket技术与移动端应用实现教师与学生之间的实时交互从而提升课堂管理的自动化水平和教学质量。首先本研究旨在设计一种高效的数据采集与存储机制利用SpringBoot的RESTful API接口对签到数据进行统一管理并通过Redis缓存技术降低数据库访问延迟。其次系统将采用JWT鉴权方式保证用户身份信息的安全性同时利用Spring Security对不同角色进行细粒度权限控制以防止未授权访问。再次为了增强学生参与感研究计划在系统中嵌入即时投票、弹幕互动等功能使课堂氛围更加活跃。与此同时本研究将关注系统的可扩展性与可维护性采用模块化设计与Docker容器化部署以便于后期功能迭代与跨平台部署。最后通过对比实验验证系统在签到准确率、响应速度以及教师工作负担方面的改进效果从而为教育信息化提供实证依据。二、研究意义本研究旨在通过构建基于SpringBoot的课堂签到与互动系统显著提升教育管理的自动化与信息化水平从而实现教学过程的精准监控与即时反馈。该系统能够将传统人工签到所产生的误差率降低至接近零并通过实时数据同步技术确保教师对学生出勤状态的即时掌握进而减少因缺席导致的教学资源浪费。与此同时系统内置的互动模块如投票、弹幕与即时问答等功能将有效激发学生课堂参与热情提升学习动机与课堂活跃度从而在整体上优化教学质量与学习效果。从技术层面而言本研究通过SpringBoot框架实现了服务端的高可维护性与高并发处理能力并采用Redis缓存技术降低数据库访问延迟确保系统在大规模用户并发情况下保持低响应时间。系统采用JWT鉴权机制与Spring Security细粒度权限控制为多角色教师、学生、管理员提供安全可靠的访问保障防止未授权操作导致的数据泄露与系统滥用。通过Docker容器化部署与模块化设计研究实现了系统的可扩展性与跨平台兼容性为后续功能迭代与业务拓展提供了坚实基础。在学术价值方面本研究为教育信息化领域提供了一套完整的技术实现方案填补了基于Java生态体系下课堂签到与互动系统设计与实现的空白。通过对比实验验证系统在签到准确率、响应速度以及教师工作负担方面的显著提升为后续相关研究提供了可量化的数据支持与经验借鉴。进一步而言该系统的模块化架构与开放式接口设计为教育软件生态中的插件化发展奠定了技术基础具有推广至其他教学管理场景的潜力。综上所述本研究不仅在实践层面解决了课堂管理中的痛点问题也在理论与技术层面为教育信息化的发展提供了新的思路与方法。三、国内外研究现状国内外学术界对课堂签到与互动系统的研究主要集中在三大方向一是签到技术的自动化与准确性提升二是课堂交互体验的丰富化与即时反馈机制三是系统安全性与可扩展性的保障。国际上早期研究多采用RFID标签与读卡器实现学生身份识别其优点在于无需人工操作、误差率低但受限于硬件部署成本和校园网络覆盖。随后出现的二维码扫描签到方式利用智能手机摄像头完成身份验证进一步降低了设备投入并通过云端服务实现数据同步。近年来面部识别技术与深度学习模型被引入签到系统实现了无接触、高效的身份确认同时结合时间戳与位置信息为教师提供更精准的出勤记录。除此之外一些研究将物联网传感器与可穿戴设备结合以实现对学生课堂行为的多维度监测进而为教学质量评估提供数据支撑。在课堂交互方面国外学者普遍关注即时反馈与参与度提升。通过WebSocket或MQTT协议实现教师与学生之间的低延迟消息推送使得投票、问答、弹幕等功能能够实时呈现。基于云端的学习管理系统LMS进一步集成了学习资源、作业提交与成绩管理形成闭环式教学平台。国内研究则侧重于与校园信息系统的深度融合例如将校园卡系统与签到模块无缝对接利用已有的身份认证基础设施降低开发成本。与此同时移动端应用的普及促使许多高校开发了基于小程序或APP的签到工具这些工具往往采用简洁的用户界面与快速扫描功能显著提升了教师与学生的使用体验。安全性与可扩展性是两国研究共同关注的问题。国外研究多采用OAuth 2.0与JWT进行身份授权并通过微服务架构实现系统模块化以便于横向扩展和弹性伸缩。国内学者则倾向于利用SpringBoot等开源框架搭建后端服务结合Redis缓存与分布式数据库提升并发处理能力。两者在数据加密、访问控制与审计日志方面均取得了显著进展确保了系统在大规模部署时的安全可靠。总体而言国内外研究已形成了从硬件感知、软件实现到系统运营的完整技术链条。国际上强调技术创新与标准化国内则注重与校园信息化体系的深度整合。未来研究可在多模态身份识别、AI驱动的学习行为分析以及跨平台协同等方面进一步突破为课堂管理与教学互动提供更为高效、智能的解决方案。四、预期达到目标及解决的关键问题预期目标在于构建一套基于SpringBoot框架的课堂签到与互动系统该系统能够实现学生身份的快速识别、签到信息的实时同步以及教师与学生之间的即时交互从而显著提升课堂管理效率与教学体验。系统设计将采用RESTful API与WebSocket双通道通信利用Redis缓存技术降低数据库访问延迟并通过JWT鉴权机制保障数据安全。通过模块化架构与Docker容器化部署系统将具备良好的可扩展性和跨平台兼容性以满足不同规模教育机构的需求。关键问题主要集中在数据一致性与事务管理、实时通信延迟、设备兼容性以及隐私保护与合规四个方面。首先签到信息在多节点环境下需要保持一致必须设计高效的分布式事务处理方案其次WebSocket通信的低延迟是实现即时互动的前提需要优化网络协议栈和服务器资源调度再次不同移动设备与浏览器对二维码扫描与WebSocket支持程度差异较大系统需提供统一的兼容层最后学生个人信息涉及隐私法规系统必须实现数据加密存储、访问审计与合规审核以防止信息泄露。综上所述本研究旨在通过技术创新与架构优化实现一套安全、可靠、可扩展的课堂签到与互动平台并在此基础上解决上述关键问题为教育信息化提供可复制、可推广的技术方案。五、研究内容本研究以SpringBoot框架为核心构建一套完整的课堂签到与互动系统旨在实现学生身份的高效识别、签到信息的实时同步以及教师与学生之间的即时交互。系统整体采用前后端分离架构前端基于Vue.js实现响应式界面后端通过SpringBoot提供RESTful API与WebSocket服务数据层使用MySQL进行持久化存储并结合Redis缓存技术降低查询延迟消息层采用RabbitMQ实现异步任务调度与事件驱动。系统功能模块划分为身份认证、签到管理、互动交互、数据分析与管理后台四大核心子系统。身份认证模块通过JWT令牌实现无状态授权配合Spring Security完成细粒度权限控制签到管理模块支持二维码扫描、面部识别与蓝牙定位等多种识别方式并将签到记录同步至后端数据库互动交互模块提供实时投票、弹幕聊天与即时问答功能利用WebSocket实现低延迟双向通信数据分析与管理后台则为教师提供出勤统计、课堂活跃度分析与课程反馈报告。系统设计遵循微服务原则将核心业务拆分为独立服务便于水平扩展和持续集成同时采用Docker容器化部署实现环境一致性与快速迭代。安全性方面系统对所有敏感数据进行AES-256加密存储并在传输层使用TLS 1.3协议日志审计模块记录用户操作与异常事件满足教育信息化合规要求。为验证系统性能本研究将开展多场景实验包括200名学生同时签到、实时投票以及大规模课堂弹幕测试测量平均响应时间、并发处理能力与数据一致性。实验结果将与传统手工签到方式进行对比评估系统在准确率、效率提升与用户满意度方面的优势。通过上述研究内容本项目不仅提供了技术实现方案还为后续功能扩展与跨平台集成奠定了基础。六、需求分析用户需求方面教师需要一套能够在课堂开始前快速完成签到、实时获取学生出勤情况并在课后进行数据统计与分析的系统以便及时调整教学策略学生则期望通过手机或其他移动终端以最简便的方式完成签到避免携带纸质签到表或手工记录的繁琐并希望在课堂中能够参与即时投票、弹幕聊天等互动功能从而提升学习兴趣与课堂活跃度管理员则关注系统整体的稳定性与安全性需要对用户权限进行细粒度管理能够对签到数据进行备份与恢复并满足教育信息化相关法规的合规要求。所有用户群体共同期望系统界面友好、操作直观、响应迅速并且在网络环境不佳时仍能保持基本功能的可用性。除此之外教师与管理员还希望系统能够提供多维度的数据报表包括出勤率统计、课堂互动热度分析以及学生个体参与度评估以支持教学质量监控与改进。学生方面则关注隐私保护期望个人签到信息仅在授权范围内可见并能对自己的数据进行查询与删除。综上所述用户需求涵盖了功能性、易用性、安全性与合规性等多维度要素。功能需求方面系统必须实现基于JWT的无状态身份认证与Spring Security的细粒度权限控制以保障不同角色教师、学生、管理员的访问安全签到管理模块需支持二维码扫描、面部识别与蓝牙定位等多种识别方式并将签到结果以RESTful API形式实时推送至后端数据库同时通过WebSocket将最新签到状态广播给教师端互动交互模块应提供即时投票、弹幕聊天与问答功能利用WebSocket实现低延迟双向通信并在后台记录交互日志供后期分析数据分析与管理后台需具备可视化仪表盘展示出勤率、课堂活跃度、学生参与度等关键指标并支持导出Excel或PDF报表安全模块必须对所有敏感数据采用AES-256加密存储并在传输层使用TLS 1.3协议日志审计功能需记录用户操作与异常事件系统架构应采用微服务拆分与Docker容器化部署便于水平扩展与持续集成最后为满足教育信息化合规要求系统需实现数据备份、恢复与访问审计机制。通过上述功能实现系统能够满足教师、学生与管理员在课堂签到与互动过程中的多样化需求并提供可靠的数据支持与安全保障。七、可行性分析经济可行性方面本系统的开发成本主要集中在软件研发、硬件采购与后期运维三个环节。软件研发采用开源框架SpringBoot与Vue.js能够显著降低技术实现费用并通过敏捷迭代快速交付功能硬件方面二维码扫描与蓝牙定位仅需学生手机即可完成无需额外设备投入若选择面部识别功能则可利用现有校园摄像头或低成本摄像头进行部署成本相对可控。后期运维成本主要包括服务器租赁、数据库备份与安全维护采用Docker容器化部署后可在云平台上按需扩容节省硬件采购与运维人力。与传统手工签到相比本系统通过自动化流程将教师每学期约100节课的签到工作量降低至数分钟从而节约教师时间成本同时减少纸质材料与人工录入错误提升数据准确性。若进一步将系统商业化可通过按校区或按功能模块收取使用费、提供增值服务如数据分析报表订制、跨平台集成等实现收入多元化。综合而言初期投入与长期运营成本相对可控且在教育信息化趋势推动下具备良好的经济回报前景。社会可行性方面系统面向的主要用户群体为教师、学生与学校管理人员其接受度与使用意愿直接决定项目落地效果。教师普遍关注课堂效率与教学质量本系统通过实时签到与互动功能可显著提升课堂管理效率与学生参与度从而获得教师的积极支持学生则倾向于使用便捷的移动端签到方式并期望在课堂中通过弹幕、投票等互动形式提升学习体验系统正好满足此需求。社会层面还需关注数据隐私与合规问题系统将严格遵守教育信息化相关法规对学生个人信息进行加密存储与访问控制并提供数据删除与导出功能以获得家长与监管部门的信任。进一步而言系统的普及将有助于推进校园数字化转型、提升教学质量与管理透明度符合国家教育现代化发展战略。综上所述从用户接受度、合规性与社会效益三方面来看本项目具备较高的社会可行性。技术可行性方面系统采用成熟的SpringBoot框架构建后端服务可实现高并发请求处理与易于维护的代码结构前端Vue.js提供响应式界面兼容主流移动浏览器与桌面浏览器RESTful API与WebSocket双通道通信方案能够满足实时数据同步与即时互动需求。数据层使用MySQL进行事务性存储并通过Redis缓存提升查询性能RabbitMQ实现异步消息队列支持任务调度与事件驱动保证系统在高并发场景下的稳定性。安全层面结合Spring Security与JWT令牌实现细粒度权限控制并采用TLS 1.3协议保障数据传输安全所有敏感信息均使用AES-256加密存储满足教育信息化合规要求。容器化部署与微服务拆分进一步提升系统的可扩展性与运维效率可在云平台上按需扩容。鉴于上述技术架构已在多家高校或企业项目中得到验证并且所用技术栈均为开源成熟方案系统实现的技术难度可控风险可预估。故从技术实现角度来看本项目具备充分的可行性。八、功能分析系统功能模块划分为用户管理、身份认证与权限控制、签到管理、课堂互动、数据分析与报表以及后台运维与安全合规等六大核心部分。用户管理模块负责维护教师、学生及管理员等角色的基本信息包括个人资料、联系方式以及角色归属并提供批量导入与导出功能以支持校园信息系统的无缝对接。身份认证与权限控制模块采用JWT令牌实现无状态登录结合Spring Security细粒度权限策略对不同角色在系统中的访问范围进行严格限制确保教师只能查看所属班级的签到数据学生只能操作自己的签到与互动功能而管理员则拥有全局视图与配置权限。签到管理模块支持多种识别方式二维码扫描、面部识别与蓝牙定位所有签到结果均通过RESTful API即时写入MySQL数据库并在Redis缓存中保持最新状态随后通过WebSocket推送给教师端实现实时可视化的出勤列表。课堂互动模块提供即时投票、弹幕聊天与问答功能采用WebSocket实现低延迟双向通信并将交互日志同步至后端以供后期分析。数据分析与报表模块以可视化仪表盘形式展示出勤率、课堂活跃度以及学生个体参与度等关键指标支持多维度筛选与自定义报表导出为Excel或PDF格式帮助教师与管理者进行教学质量评估。后台运维与安全合规模块负责系统监控、日志审计、数据备份与恢复以及对敏感信息的AES-256加密存储和TLS 1.3传输加密满足教育信息化相关法规要求并提供权限变更审计与异常告警功能。通过上述模块的协同工作系统能够实现从用户身份验证、签到记录到课堂互动与数据分析的完整闭环为高校课堂管理与教学质量提升提供技术支撑。九、数据库设计字段名(英文) | 说明(中文) | 大小 | 类型 | 主外键 | 备注---|---|---|---|---|---id | 用户编号 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 | 用于唯一标识用户username | 登录用户名 | 50 | VARCHAR(50) NOT NULL UNIQUE | | 用户登录凭证password_hash | 密码哈希值 | 255 | VARCHAR(255) NOT NULL | |email | 邮箱地址 | 100 | VARCHAR(100) NOT NULL UNIQUE | |role_id | 所属角色编号 | 11 | INT UNSIGNED NOT NULL | 外键引用 Role.id |created_at | 创建时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | |updated_at | 更新时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | |id | 角色编号 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 | 用于区分教师、学生、管理员role_name | 角色名称 | 20 | VARCHAR(20) NOT NULL UNIQUE | |description | 角色描述 | 255 | VARCHAR(255) NULL | |id | 班级编号 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 | 用于唯一标识班级class_name | 班级名称 | 50 | VARCHAR(50) NOT NULL UNIQUE | |teacher_id | 班主任编号 | 11 | INT UNSIGNED NOT NULL | 外键引用 User.id |created_at | 创建时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | |updated_at | 更新时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | |student_id | 学生编号 | 11 | INT UNSIGNED NOT NULL | 外键引用 User.id |class_id | 班级编号 | 11 | INT UNSIGNED NOT NULL | 外键引用 Class.id |enrolled_at | 入学时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | |id | 签到记录编号 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 | 用于唯一标识签到记录student_id | 学生编号 | 11 | INT UNSIGNED NOT NULL | 外键引用 User.id |class_id | 班级编号 | 11 | INT UNSIGNED NOT NULL | 外键引用 Class.id |sign_in_time | 签到时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | |location_latitude | 纬度坐标 | 10,7 | DECIMAL(10,7) NULL | |location_longitude | 经度坐标 | 10,7 | DECIMAL(10,7) NULL | |sign_in_method | 签到方式二维码、面部、蓝牙 | 20 | VARCHAR(20) NOT NULL | |id | 投票编号 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 | 用于唯一标识投票class_id | 班级编号 | 11 | INT UNSIGNED NOT NULL | 外键引用 Class.id |title | 投票标题 | 100 | VARCHAR(100) NOT NULL | |description | 投票说明 | 255 | VARCHAR(255) NULL | |start_time | 开始时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | |end_time | 截止时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | |id | 投票选项编号 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 | 用于唯一标识投票选项vote_id | 投票编号 | 11 | INT UNSIGNED NOT NULL | 外键引用 Vote.id |option_text | 选项内容 | 100 | VARCHAR(100) NOT NULL | |vote_count | 投票数目缓存 | 11 | INT UNSIGNED DEFAULT 0 | |id | 投票结果记录编号 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 | 用于唯一标识投票结果vote_id | 投票编号 | 11 | INT UNSIGNED NOT NULL | 外键引用 Vote.id |student_id | 学生编号 | 11 | INT UNSIGNED NOT NULL | 外键引用 User.id |option_id | 选项编号 | 11 | INT UNSIGNED NOT NULL | 外键引用 VoteOption.id |voted_at | 投票时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | |id | 弹幕/聊天记录编号 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 | 用于唯一标识交互消息class_id | 班级编号 | 11 | INT UNSIGNED NOT NULL | 外键引用 Class.id |sender_id | 发送者编号教师或学生 | 11 | INT UNSIGNED NOT NULL | 外键引用 User.id |message_type | 消息类型弹幕、问答、公告 | 20 | VARCHAR(20) NOT NULL | |content | 消息内容 | 500 | VARCHAR(500) NOT NULL | |sent_at | 发送时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | |id | 系统设置编号 | 11 | INT UNSIGNED AUTO_INCREMENT | 主键 | 用于唯一标识系统设置setting_key | 设置键名如签到超时阈值 | 50 | VARCHAR(50) NOT NULL UNIQUE | |setting_value | 设置值JSON或字符串 | 255 | VARCHAR(255) NOT NULL | |updated_at | 更新时间戳 | 19 | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | |以上表结构遵循第一范式与第二范式所有复合属性拆分为独立表外键关系明确避免数据冗余与更新异常。十、建表语句CREATE DATABASE IF NOT EXISTS classroom CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;USE classroom;-- 角色表CREATE TABLE role (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,role_name VARCHAR(20) NOT NULL UNIQUE,description VARCHAR(255) NULL) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;-- 用户表CREATE TABLE user (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,password_hash VARCHAR(255) NOT NULL,email VARCHAR(100) NOT NULL UNIQUE,role_id INT UNSIGNED NOT NULL,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,CONSTRAINT fk_user_role FOREIGN KEY (role_id) REFERENCES role(id) ON DELETE RESTRICT ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;CREATE INDEX idx_user_role ON user(role_id);-- 班级表CREATE TABLE class (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,class_name VARCHAR(50) NOT NULL UNIQUE,teacher_id INT UNSIGNED NOT NULL,created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,CONSTRAINT fk_class_teacher FOREIGN KEY (teacher_id) REFERENCES user(id) ON DELETE RESTRICT ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;CREATE INDEX idx_class_teacher ON class(teacher_id);-- 学生与班级关联表CREATE TABLE student_class (student_id INT UNSIGNED NOT NULL,class_id INT UNSIGNED NOT NULL,enrolled_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (student_id, class_id),CONSTRAINT fk_sc_student FOREIGN KEY (student_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_sc_class FOREIGN KEY (class_id) REFERENCES class(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;CREATE INDEX idx_sc_class ON student_class(class_id);-- 签到记录表CREATE TABLE sign_in (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,student_id INT UNSIGNED NOT NULL,class_id INT UNSIGNED NOT NULL,sign_in_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,location_latitude DECIMAL(10,7) NULL,location_longitude DECIMAL(10,7) NULL,sign_in_method VARCHAR(20) NOT NULL,CONSTRAINT fk_signin_student FOREIGN KEY (student_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_signin_class FOREIGN KEY (class_id) REFERENCES class(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;CREATE INDEX idx_signin_student ON sign_in(student_id);CREATE INDEX idx_signin_class ON sign_in(class_id);-- 投票表CREATE TABLE vote (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,class_id INT UNSIGNED NOT NULL,title VARCHAR(100) NOT NULL,description VARCHAR(255) NULL,start_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,end_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,CONSTRAINT fk_vote_class FOREIGN KEY (class_id) REFERENCES class(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;CREATE INDEX idx_vote_class ON vote(class_id);-- 投票选项表CREATE TABLE vote_option (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,vote_id INT UNSIGNED NOT NULL,option_text VARCHAR(100) NOT NULL,vote_count INT UNSIGNED DEFAULT 0,CONSTRAINT fk_option_vote FOREIGN KEY (vote_id) REFERENCES vote(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;CREATE INDEX idx_option_vote ON vote_option(vote_id);-- 投票结果表CREATE TABLE vote_result (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,vote_id INT UNSIGNED NOT NULL,student_id INT UNSIGNED NOT NULL,option_id INT UNSIGNED NOT NULL,voted_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,CONSTRAINT fk_result_vote FOREIGN KEY (vote_id) REFERENCES vote(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_result_student FOREIGN KEY (student_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_result_option FOREIGN KEY (option_id) REFERENCES vote_option(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;CREATE INDEX idx_result_vote ON vote_result(vote_id);CREATE INDEX idx_result_student ON vote_result(student_id);-- 弹幕/聊天记录表CREATE TABLE chat_message (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,class_id INT UNSIGNED NOT NULL,sender_id INT UNSIGNED NOT NULL,message_type VARCHAR(20) NOT NULL,content VARCHAR(500) NOT NULL,sent_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,CONSTRAINT fk_chat_class FOREIGN KEY (class_id) REFERENCES class(id) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_chat_sender FOREIGN KEY (sender_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;CREATE INDEX idx_chat_class ON chat_message(class_id);CREATE INDEX idx_chat_sender ON chat_message(sender_id);-- 系统设置表CREATE TABLE system_setting (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,setting_key VARCHAR(50) NOT NULL UNIQUE,setting_value VARCHAR(255) NOT NULL,updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;文章下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方获取联系方式