基于SpringBoot的计算机竞赛管理平台计算机毕业设计(源码+lw+部署文档+讲解等)
博主介绍✌ 专注于VUE,小程序安卓Java,python,物联网专业有18年开发经验长年从事毕业指导项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题我会尽力帮助你。一、研究目的随着信息技术的迅猛发展计算机竞赛已成为高校培养创新人才的重要载体。然而传统的竞赛管理模式多依赖人工登记、纸质成绩单和分散的电子表格这不仅导致信息更新滞后还易出现数据冲突与安全隐患。为此亟需一种统一、自动化的平台来整合参赛者报名、赛程安排、在线评测及结果发布等核心功能。SpringBoot作为基于Spring框架的快速开发平台具备模块化、易扩展和社区支持丰富的优势适合作为实现该目标的技术基础。本研究旨在构建一套基于SpringBoot的计算机竞赛管理平台该平台将实现参赛者信息采集、题库管理、在线评测、实时排名与成绩统计等功能并通过RESTful API与前端交互支持移动端与桌面端多终端访问。平台将采用微服务架构将报名服务、评测服务、结果服务等拆分为独立模块以提升系统的可维护性和弹性扩展能力。为保障数据安全系统将实现基于JWT的身份认证与角色授权并在数据库层面采用加密存储与访问控制策略。通过该平台的实现预期能够显著降低竞赛组织者的工作负担提高信息处理速度和准确性同时为参赛者提供统一、透明的报名与成绩查询渠道提升竞赛体验。平台还将提供可视化的数据分析模块帮助赛事主办方实时监控比赛进程、评测结果分布以及参赛者行为模式为后续赛事策划与资源配置提供决策依据。综上所述本研究不仅具有技术创新价值也具备广泛的应用前景可为高校、科研机构乃至企业内部竞赛管理提供可复制、可扩展的解决方案。二、研究意义本研究意义体现在技术创新、教育实践与社会应用三大维度。首先技术创新方面基于SpringBoot构建的竞赛管理平台通过微服务架构与RESTful接口实现了模块化、可扩展的系统设计为计算机竞赛信息化提供了可复制、可推广的技术范式其次在教育实践层面该平台能够为高校教师与学生提供统一、高效、透明的竞赛报名与成绩查询渠道降低人工操作成本提升教学管理效率再次社会应用层面平台具备对接企业内部技术评测与人才选拔的能力可为企业招聘、项目评估提供实时数据支持从而促进校企合作与人才流动。除此之外该研究通过实现在线评测与即时排名功能为竞赛组织者提供实时监控与数据分析工具帮助其及时发现并解决竞赛过程中的技术瓶颈与公平性问题。平台的数据安全设计亦为敏感信息的保护提供了可靠保障符合信息安全管理的相关法规要求。综上所述本研究不仅在技术层面推进了基于SpringBoot的分布式系统开发实践也在教育与社会层面推动了计算机竞赛管理模式的现代化与信息化为高校教学改革、企业人才选拔以及公共服务体系提供了有价值的技术支撑。三、国内外研究现状国内外在计算机竞赛管理与在线评测领域的研究已形成多条互补的发展脉络。首先在系统架构层面国外研究者普遍采用分布式微服务或容器化技术以提升系统的弹性与可扩展性国内学者则更多聚焦于基于传统Web框架的单体应用并在此基础上逐步引入微服务概念。两种思路各有优势后者在开发周期短、维护成本低方面表现突出而前者在高并发场景下具备更强的容错与伸缩能力。其次在数据管理与安全层面国外研究强调对评测数据的加密存储、访问控制以及审计日志记录以满足国际数据保护法规国内研究则侧重于构建统一的数据仓库与实时统计模块为竞赛结果提供可视化分析。再次在在线评测算法层面国际学术界已提出多种判题策略包括基于沙箱的隔离执行、动态内存限制、以及多语言支持的统一接口国内研究则在此基础上探索了针对大规模数据集的分布式判题框架并通过实验验证其在高并发情况下的稳定性。第四在用户体验与交互层面国外平台普遍提供移动端与桌面端同步访问、即时排名更新以及社交化学习功能国内平台则更注重与高校教学管理系统的无缝对接支持课程作业提交、成绩导入等功能。第五在学术评价与公平性保障方面国际研究已开展了基于机器学习的抄袭检测、作弊行为识别等工作国内研究则在此基础上引入了多维度评分模型以兼顾题目难度、解题时间与代码质量。综上所述国内外在系统架构、数据安全、评测算法、用户体验以及公平性保障等方面已形成多元化的研究方向并取得了显著成果。未来的研究可进一步融合两者优势构建既具备高并发性能又兼顾教学需求的综合竞赛管理平台。四、预期达到目标及解决的关键问题预期目标主要聚焦于构建一套高效、可靠且易于维护的计算机竞赛管理平台该平台应实现参赛者信息统一登记、题库与评测模块分离、实时排名与结果统计以及多终端访问等核心功能。为满足这些需求系统将采用SpringBoot作为基础框架并通过微服务架构将报名服务、评测服务、结果服务等拆分为独立模块以实现高内聚低耦合的设计同时利用Docker容器化技术与Kubernetes编排实现弹性伸缩与灰度发布。平台的数据层面将采用分布式数据库与缓存组合支持读写分离、事务一致性以及大数据量下的查询性能优化在安全层面将实现基于JWT的身份认证、细粒度权限控制以及对敏感数据的加密存储与传输。前端方面将采用响应式设计与RESTful API交互支持移动端与桌面端统一体验并通过WebSocket实现实时排名推送。通过上述设计预期能够显著降低竞赛组织者的人工成本、提升评测效率并为参赛者提供透明、即时的成绩查询渠道。关键问题主要集中在系统可扩展性、数据一致性与评测延迟控制等方面。首先随着竞赛规模扩大报名人数与在线提交量将呈指数增长系统必须能够在毫秒级别完成请求响应并支持水平扩容其次在分布式环境下保持数据一致性尤为关键尤其是对成绩统计与排名更新的实时性要求需要采用合适的事务管理与缓存失效策略再次在线评测环节对CPU与内存资源的占用极高如何在保证判题准确性的前提下降低评测延迟是实现高并发判题的核心技术挑战。除此之外平台还需兼容多种编程语言与提交格式并支持与高校教学管理系统、第三方评测平台的无缝对接这要求接口设计具有高度可扩展性与标准化。解决上述关键问题将为实现一个稳健、高性能且易于推广的竞赛管理平台奠定技术基础。五、研究内容本研究围绕基于SpringBoot的计算机竞赛管理平台展开整体研究内容可分为需求分析、系统设计与实现、性能评估与优化以及应用验证四个主要阶段。首先在需求分析阶段将通过访谈高校教师、学生及竞赛组织者系统梳理竞赛报名、题目发布、在线评测、成绩统计与结果发布等业务流程并对数据安全、权限管理、多语言支持及移动端访问等非功能需求进行细化。此阶段将形成详细的功能规格说明书为后续设计提供依据。其次在系统设计与实现阶段平台将采用SpringBoot作为核心框架并通过微服务架构拆分为报名服务、题库管理服务、评测服务、结果统计服务及用户管理服务等模块。每个模块均采用RESTful API进行通信并通过Spring Cloud Config统一配置管理。数据库层面将采用分布式关系型数据库与Redis缓存组合支持读写分离与事务一致性评测服务将基于Docker容器化技术使用沙箱技术隔离执行环境并通过消息队列如RabbitMQ实现判题任务的异步调度。前端层面将采用响应式Vue.js框架结合Element UI实现统一的用户界面并通过WebSocket实现实时排名推送。第三在性能评估与优化阶段将构建测试环境对系统在不同并发负载下的响应时间、吞吐量、资源占用等指标进行监测。针对评测延迟高、数据库热点问题将采用分布式缓存、读写分离、查询优化以及容器化水平扩容等技术手段进行性能调优。最后在应用验证阶段将在多所高校的真实竞赛场景中部署平台收集用户体验反馈并对系统的功能完整性、稳定性与安全性进行综合评估。通过对比传统手工管理模式验证平台在降低人工成本、提升评测效率与增强数据安全方面的优势。整个研究过程将遵循敏捷开发与持续集成的理念确保系统在迭代中不断完善功能并保持高质量交付。六、需求分析用户需求方面平台的主要使用者包括参赛者、竞赛组织者、评审人员与系统管理员等多类角色。参赛者需要能够在统一的界面完成个人信息登记、团队组建、题目浏览与代码提交并通过实时排名与成绩查询功能获取比赛进展同时参赛者还期望平台支持多语言编程环境与自动判题避免因语言不兼容导致的误判。竞赛组织者则关注赛事流程的可视化管理包括报名截止时间设置、赛程安排、题目上传与审核、评测参数配置以及成绩统计与导出等功能并希望通过后台管理系统对参赛者信息进行批量导入导出以便与高校教学管理系统对接。评审人员需要能够在评测完成后查看判题结果、判题日志与提交代码支持人工复核或纠错并可对判题规则进行微调同时评审人员也需要访问历史比赛数据以进行经验总结。系统管理员则需拥有完整的权限管理与安全审计功能包括用户角色分配、接口权限控制、日志记录与异常监控以保障平台在大规模并发访问时的稳定性与安全性。功能需求方面平台应实现报名管理模块支持个人或团队报名、信息校验、报名状态查询以及自动发送确认邮件赛程管理模块需提供比赛时间表编辑、阶段划分与自动提醒功能题库管理模块应支持题目上传包括题目描述、输入输出样例、评测脚本、题目分类与标签管理并可对题目进行版本控制与权限限制在线评测模块需实现代码提交接收、沙箱化执行、资源限制CPU、内存、时间与判分规则的灵活配置并通过消息队列异步处理判题任务以提升并发吞吐量结果统计模块应实时更新排名表支持多维度查询按题目、按团队、按个人以及成绩导出为CSV/Excel格式权限与安全模块需实现基于JWT的身份认证、细粒度角色授权、密码加盐哈希存储与HTTPS传输此外平台还需提供移动端响应式界面支持WebSocket推送实时排名更新并对接第三方学习管理系统实现单点登录与数据同步。上述功能模块在技术实现层面将采用SpringBoot微服务架构、Docker容器化、Redis缓存与分布式数据库确保系统在高并发情况下保持低延迟与高可用性。七、可行性分析经济可行性方面平台的开发与部署成本主要集中在软件工程、人力资源与运维费用。基于SpringBoot的技术栈已被广泛采用相关框架与中间件如Docker、Kubernetes、Redis、RabbitMQ均为开源或低成本商业授权可显著降低许可费用开发团队可采用敏捷迭代模式分阶段投入人力从而控制项目初期的资本支出。平台上线后运维成本主要由服务器租赁与云服务计费组成利用容器化与弹性伸缩可实现按需扩容避免资源闲置导致的浪费此外通过自动化监控与日志分析可减少人工运维比例。预期在首次投入完成后一年内即可实现成本回收随后每年可通过平台服务费、数据分析服务或与高校教学系统的接口授权等方式获得持续收益。整体而言项目的经济可行性良好且具有可扩展的盈利模式。社会可行性方面平台直接服务于高校与科研机构的计算机竞赛活动能够提升赛事组织效率、降低管理成本并为参赛者提供公平、透明的评测环境。随着信息技术教育的深入推进社会对在线教育与竞赛平台的需求日益增长平台的推出可满足国家关于信息化教学改革与创新人才培养的政策导向。平台设计将兼顾多语言支持与移动端访问降低技术门槛提升参赛者和教师的使用体验同时通过统一的数据管理可为教育评估与科研提供可靠的数据来源。平台在数据安全与隐私保护方面将遵循相关法规如个人信息保护法并通过加密存储与访问控制等技术手段获得用户信任。综上平台具备较高的社会可行性可在教育领域得到广泛推广。技术可行性方面采用SpringBoot微服务架构能够实现业务模块的高内聚低耦合便于后期功能扩展与维护Docker容器化与Kubernetes编排保证了系统的可移植性与弹性伸缩能够满足竞赛期间突发高并发请求的需求Redis缓存与分布式数据库设计可有效缓解读写热点提高数据访问性能。在线评测模块通过沙箱化执行和资源限制技术确保判题过程的安全与公平消息队列实现判题任务的异步处理进一步提升系统吞吐量。权限管理采用JWT与细粒度角色控制可满足多角色用户的安全需求HTTPS与加密存储等措施保障数据传输与存储安全。整体技术方案已在类似在线评测平台中得到验证具备成熟性与可靠性。因此从技术层面来看该平台的实现具有高度可行性。八、功能分析系统功能模块的设计依据需求分析结果逻辑上可划分为七大核心模块分别为用户管理模块、报名管理模块、赛程管理模块、题库管理模块、在线评测服务模块、结果统计与排名服务模块以及通知与日志审计服务模块。用户管理模块负责统一处理参赛者、组织者、评审人员及系统管理员等多角色的身份认证与授权支持基于JWT的登录机制、密码加盐哈希存储以及多因素身份校验并提供角色与权限细粒度控制接口以满足不同用户对系统功能的访问需求。报名管理模块实现参赛者个人信息登记、团队组建与管理、报名状态查询及自动发送确认邮件功能支持批量导入导出参赛者数据并通过表单校验与业务规则引擎确保报名信息的完整性与合法性。赛程管理模块提供比赛时间表编辑、阶段划分、题目发布与审核等功能支持对比赛流程的可视化配置并可设置自动提醒与截止时间监控以保证赛事按计划进行。题库管理模块支持题目上传含题目描述、输入输出样例、判题脚本、标签与分类管理、版本控制以及权限限制允许组织者对题目进行增删改查操作并通过审核机制确保题目质量与合规性。在线评测服务模块是系统的核心负责接收参赛者代码提交、在沙箱化容器中执行、资源限制CPU、内存、时间与判分规则的灵活配置并通过消息队列实现判题任务的异步调度最终将判题结果返回给结果统计模块。结果统计与排名服务模块实时更新各参赛者或团队的得分与排名支持多维度查询按题目、按团队、按个人以及成绩导出为CSV/Excel格式并提供历史比赛数据的分析接口以供评审人员和组织者进行后续评估。通知与日志审计服务模块统一管理系统内的邮件、短信与WebSocket推送通知确保重要事件如报名截止、比赛开始、判题完成及时传达给相关用户同时记录所有关键操作日志支持安全审计与异常监控以保障系统的可追溯性与合规性。上述模块通过RESTful API相互协作并在微服务架构下实现高内聚低耦合保证系统在功能扩展与维护时的灵活性与可持续发展。九、数据库设计表1用户(User)字段名 | 说明 | 大小 | 类型 | 主外键 | 备注UserID | 用户唯一标识 | 36 | VARCHAR | 主键 | UUIDUsername | 登录名 | 50 | VARCHAR ||PasswordHash| 密码哈希值| 64|VARCHAR||Role| 用户角色参赛者、组织者、评审、管理员|10|VARCHAR||Email| 邮箱地址|100|VARCHAR||CreatedAt| 创建时间 | 19 | DATETIME ||UpdatedAt | 更新时间 | 19 | DATETIME ||表2团队(Team)字段名 | 说明 | 大小 | 类型 | 主外键 | 备注TeamID | 团队唯一标识 |36|VARCHAR|主键||TeamName | 团队名称 |100|VARCHAR||LeaderUserID| 组长用户ID|36|VARCHAR|外键→User.UserID||CreatedAt| 创建时间 |19|DATETIME||UpdatedAt| 更新时间 |19|DATETIME||表3报名(Registration)字段名 | 说明 | 大小 | 类型 | 主外键 | 备注RegID | 报名唯一标识 |36|VARCHAR|主键||UserID | 参赛者用户ID |36|VARCHAR|外键→User.UserID||TeamID | 所属团队ID可空|36|VARCHAR|外键→Team.TeamID||CompetitionID | 比赛ID |36|VARCHAR|外键→Competition.CompetitionID||Status | 报名状态已提交、审核中、通过、拒绝|10|VARCHAR||SubmittedAt | 提交时间 |19|DATETIME||ReviewedAt | 审核时间 |19|DATETIME||表4比赛(Competition)字段名 | 说明 | 大小 | 类型 | 主外键 | 备注CompetitionID | 比赛唯一标识 |36|VARCHAR|主键||Title | 比赛标题 |200|VARCHAR||Description | 详细描述 |5000|TEXT||StartTime | 开始时间 |19|DATETIME||EndTime | 结束时间 |19|DATETIME||CreatedByUserID | 创建者ID|36|VARCHAR|外键→User.UserID||表5赛程(Schedule)字段名 | 说明 | 大小 | 类型 | 主外键 | 备注ScheduleID | 赛程唯一标识 |36|VARCHAR|主键||CompetitionID | 比赛ID |36|VARCHAR|外键→Competition.CompetitionID||ProblemID | 题目ID |36|VARCHAR|外键→Problem.ProblemID||RoundNumber | 阶段编号 |4|INT||StartTime | 开始时间 |19|DATETIME||EndTime | 结束时间 |19|DATETIME||表6题目(Problem)字段名 | 说明 | 大小 | 类型 | 主外键 | 备注ProblemID | 题目唯一标识 |36|VARCHAR|主键||Title | 题目标题 |200|VARCHAR||Description | 题目描述 |5000|TEXT||InputSpec | 输入规范 |2000|TEXT||OutputSpec | 输出规范 |2000|TEXT||SampleInput | 样例输入 |2000|TEXT||SampleOutput | 样例输出 |2000|TEXT||TimeLimit | 时间限制毫秒 |10|INT||MemoryLimit | 内存限制MB |10|INT||DifficultyLevel | 难度等级1-5|1|TINYINT||CreatedByUserID | 创建者ID|36|VARCHAR|外键→User.UserID||表7提交(Submission)字段名 | 说明 | 大小 | 类型 | 主外键 | 备注SubmissionID | 提交唯一标识 |36|VARCHAR|主键||UserID | 提交者用户ID |36|VARCHAR|外键→User.UserID||ProblemID | 题目ID |36|VARCHAR|外键→Problem.ProblemID||TeamID | 团队ID可空|36|VARCHAR|外键→Team.TeamID||Language | 编程语言 |20|VARCHAR||Code | 源代码 |4000|TEXT||SubmittedAt | 提交时间 |19|DATETIME||表8判题结果(Result)字段名 | 说明 | 大小 | 类型 | 主外键 | 备注ResultID | 结果唯一标识 |36|VARCHAR|主键||SubmissionID | 关联提交ID|36|VARCHAR|外键→Submission.SubmissionID||Verdict | 判决结果Accepted、Wrong Answer、Time Limit Exceeded等|20|VARCHAR||Score | 得分整数 |10|INT||ExecutionTime | 执行时间毫秒 |10|INT||MemoryUsed | 内存使用KB |10|INT||Message | 运行时信息/错误信息 |2000|TEXT||EvaluatedAt | 判题时间 |19|DATETIME||表9通知日志(NotificationLog)字段名 | 说明 | 大小 | 类型 | 主外键 | 备注NotificationID | 通知唯一标识 |36|VARCHAR|主键||UserID | 接收用户ID |36|VARCHAR|外键→User.UserID||Type | 通知类型邮件、短信、推送|20|VARCHAR||Content | 内容摘要 |5000|TEXT||SentAt | 发送时间 |19|DATETIME||Status | 状态已发送、失败|10|VARCHAR||表10审计日志(AuditLog)字段名 | 说明 | 大小 | 类型 | 主外键 | 备注AuditID | 审计唯一标识 |36|VARCHAR|主键||UserID | 操作用户ID |36|VARCHAR|外键→User.UserID||Action | 操作描述 |2000|TEXT||TargetTable | 目标表名 |50|VARCHAR||TargetID | 目标记录ID |36|VARCHAR||Timestamp | 操作时间 |19|DATETIME||上述表结构均采用UUID字符串作为主键外键字段均为36字符所有时间字段采用DATETIME类型长度19。该设计满足第一、第二、第三范式避免了数据冗余与更新异常。十、建表语句CREATE TABLE User (UserID VARCHAR(36) NOT NULL,Username VARCHAR(50) NOT NULL,PasswordHash VARCHAR(64) NOT NULL,Role VARCHAR(10) NOT NULL,Email VARCHAR(100) NOT NULL,CreatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,UpdatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (UserID),UNIQUE KEY idx_user_username (Username),UNIQUE KEY idx_user_email (Email)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE Team (TeamID VARCHAR(36) NOT NULL,TeamName VARCHAR(100) NOT NULL,LeaderUserID VARCHAR(36) NOT NULL,CreatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,UpdatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (TeamID),KEY idx_team_leader_userid (LeaderUserID),CONSTRAINT fk_team_leader_userid FOREIGN KEY (LeaderUserID) REFERENCES User(UserID) ON DELETE RESTRICT ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE Competition (CompetitionID VARCHAR(36) NOT NULL,Title VARCHAR(200) NOT NULL,Description TEXT,StartTime DATETIME NOT NULL,EndTime DATETIME NOT NULL,CreatedByUserID VARCHAR(36) NOT NULL,PRIMARY KEY (CompetitionID),KEY idx_competition_createdby_userid (CreatedByUserID),CONSTRAINT fk_competition_createdby_userid FOREIGN KEY (CreatedByUserID) REFERENCES User(UserID) ON DELETE RESTRICT ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE Problem (ProblemID VARCHAR(36) NOT NULL,Title VARCHAR(200) NOT NULL,Description TEXT,InputSpec TEXT,OutputSpec TEXT,SampleInput TEXT,SampleOutput TEXT,TimeLimit INT NOT NULL,MemoryLimit INT NOT NULL,DifficultyLevel TINYINT NOT NULL,CreatedByUserID VARCHAR(36) NOT NULL,PRIMARY KEY (ProblemID),KEY idx_problem_createdby_userid (CreatedByUserID),CONSTRAINT fk_problem_createdby_userid FOREIGN KEY (CreatedByUserID) REFERENCES User(UserID) ON DELETE RESTRICT ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE Registration (RegID VARCHAR(36) NOT NULL,UserID VARCHAR(36) NOT NULL,TeamID VARCHAR(36),CompetitionID VARCHAR(36) NOT NULL,Status VARCHAR(10) NOT NULL,SubmittedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,ReviewedAt DATETIME,PRIMARY KEY (RegID),KEY idx_registration_userid (UserID),KEY idx_registration_teamid (TeamID),KEY idx_registration_competitionid (CompetitionID),CONSTRAINT fk_registration_userid FOREIGN KEY (UserID) REFERENCES User(UserID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_registration_teamid FOREIGN KEY (TeamID) REFERENCES Team(TeamID) ON DELETE SET NULL ON UPDATE CASCADE,CONSTRAINT fk_registration_competitionid FOREIGN KEY (CompetitionID) REFERENCES Competition(CompetitionID) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE Schedule (ScheduleID VARCHAR(36) NOT NULL,CompetitionID VARCHAR(36) NOT NULL,ProblemID VARCHAR(36) NOT NULL,RoundNumber INT NOT NULL,StartTime DATETIME NOT NULL,EndTime DATETIME NOT NULL,PRIMARY KEY (ScheduleID),KEY idx_schedule_competitionid (CompetitionID),KEY idx_schedule_problemid (ProblemID),CONSTRAINT fk_schedule_competitionid FOREIGN KEY (CompetitionID) REFERENCES Competition(CompetitionID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_schedule_problemid FOREIGN KEY (ProblemID) REFERENCES Problem(ProblemID) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE Submission (SubmissionID VARCHAR(36) NOT NULL,UserID VARCHAR(36) NOT NULL,ProblemID VARCHAR(36) NOT NULL,TeamID VARCHAR(36),Language VARCHAR(20) NOT NULL,Code LONGTEXT NOT NULL,SubmittedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (SubmissionID),KEY idx_submission_userid (UserID),KEY idx_submission_problemid (ProblemID),KEY idx_submission_teamid (TeamID),CONSTRAINT fk_submission_userid FOREIGN KEY (UserID) REFERENCES User(UserID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_submission_problemid FOREIGN KEY (ProblemID) REFERENCES Problem(ProblemID) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT fk_submission_teamid FOREIGN KEY (TeamID) REFERENCES Team(TeamID) ON DELETE SET NULL ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE Result (ResultID VARCHAR(36) NOT NULL,SubmissionID VARCHAR(36) NOT NULL,Verdict VARCHAR(20) NOT NULL,Score INT NOT NULL,ExecutionTime INT NOT NULL,MemoryUsed INT NOT NULL,Message TEXT,EvaluatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (ResultID),KEY idx_result_submissionid (SubmissionID),CONSTRAINT fk_result_submissionid FOREIGN KEY (SubmissionID) REFERENCES Submission(SubmissionID) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE NotificationLog (NotificationID VARCHAR(36) NOT NULL,UserID VARCHAR(36) NOT NULL,Type VARCHAR(20) NOT NULL,Content TEXT,SentAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,Status VARCHAR(10) NOT NULL,PRIMARY KEY (NotificationID),KEY idx_notification_userid (UserID),CONSTRAINT fk_notification_userid FOREIGN KEY (UserID) REFERENCES User(UserID) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;CREATE TABLE AuditLog (AuditID VARCHAR(36) NOT NULL,UserID VARCHAR(36) NOT NULL,Action TEXT NOT NULL,TargetTable VARCHAR(50) NOT NULL,TargetID VARCHAR(36),Timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (AuditID),KEY idx_audit_userid (UserID),CONSTRAINT fk_audit_userid FOREIGN KEY (UserID) REFERENCES User(UserID) ON DELETE CASCADE ON UPDATE CASCADE) ENGINEInnoDB DEFAULT CHARSETutf8mb4;文章下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看下方获取联系方式