1. 高校竞赛管理系统架构设计
高校竞赛管理系统采用前后端分离架构,后端基于SpringBoot框架搭建,前端使用Vue.js框架开发。这种架构选择主要基于以下几个考量:
-
前后端分离的优势:
- 开发效率提升:前后端可以并行开发,互不干扰
- 技术栈灵活:前端可独立演进,不影响后端服务
- 性能优化:前端负责渲染,减轻服务器压力
- 易于维护:职责清晰,降低系统耦合度
-
后端技术选型:
- SpringBoot:简化了Spring应用的初始搭建和开发过程,内置Tomcat服务器,提供自动配置和starter依赖
- MyBatis:轻量级ORM框架,SQL与代码分离,便于复杂查询优化
- MySQL:关系型数据库,事务支持完善,适合结构化数据存储
- Redis:缓存高频访问数据,如竞赛列表、用户信息等
-
前端技术选型:
- Vue.js:渐进式JavaScript框架,组件化开发,响应式数据绑定
- ElementUI:基于Vue的UI组件库,提供丰富的现成组件
- Axios:处理HTTP请求,与后端API交互
1.1 系统功能模块设计
系统主要分为以下几个功能模块:
-
用户管理模块:
- 用户注册、登录、权限控制
- 角色划分(管理员、教师、学生)
- 个人信息管理
-
竞赛管理模块:
- 竞赛发布与编辑
- 竞赛分类与检索
- 报名时间设置
-
报名管理模块:
- 在线报名
- 团队报名支持
- 报名审核流程
-
评审管理模块:
- 评委分配
- 评分标准设置
- 多维度评分
-
成绩统计模块:
- 自动计算总分
- 排名生成
- 成绩公示
-
系统管理模块:
- 基础数据配置
- 系统日志
- 数据备份
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据库设计与实现
2.1 核心数据表结构
2.1.1 竞赛信息表(t_competition_info)
sql复制CREATE TABLE `t_competition_info` (
`comp_id` bigint NOT NULL COMMENT '竞赛编号,主键',
`comp_title` varchar(100) NOT NULL COMMENT '竞赛标题',
`comp_desc` text COMMENT '竞赛详细描述',
`organizer_id` bigint NOT NULL COMMENT '主办方ID(关联用户表)',
`start_time` datetime NOT NULL COMMENT '报名开始时间',
`end_time` datetime NOT NULL COMMENT '报名结束时间',
`comp_status` tinyint NOT NULL COMMENT '状态(0未开始,1进行中)',
`max_participants` int DEFAULT NULL COMMENT '最大参与人数限制',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`comp_id`),
KEY `idx_organizer` (`organizer_id`),
KEY `idx_time` (`start_time`,`end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='竞赛信息表';
2.1.2 报名记录表(t_enrollment)
sql复制CREATE TABLE `t_enrollment` (
`enroll_id` bigint NOT NULL COMMENT '报名记录ID,主键',
`user_id` bigint NOT NULL COMMENT '用户ID(关联用户表)',
`comp_id` bigint NOT NULL COMMENT '竞赛ID(关联竞赛表)',
`enroll_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '报名时间',
`audit_status` tinyint NOT NULL DEFAULT '0' COMMENT '审核状态(0待审,1通过)',
`team_leader` varchar(50) DEFAULT NULL COMMENT '团队负责人姓名',
PRIMARY KEY (`enroll_id`),
UNIQUE KEY `uk_user_comp` (`user_id`,`comp_id`),
KEY `idx_comp` (`comp_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报名记录表';
2.1.3 评审成绩表(t_score_record)
sql复制CREATE TABLE `t_score_record` (
`score_id` bigint NOT NULL COMMENT '成绩ID,主键',
`enroll_id` bigint NOT NULL COMMENT '报名记录ID(关联报名表)',
`judge_id` bigint NOT NULL COMMENT '评委ID(关联用户表)',
`technical_score` decimal(5,2) NOT NULL COMMENT '技术评分(满分100)',
`creative_score` decimal(5,2) NOT NULL COMMENT '创新评分(满分100)',
`comment` text COMMENT '评委评语',
`submit_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '提交时间',
PRIMARY KEY (`score_id`),
KEY `idx_enroll` (`enroll_id`),
KEY `idx_judge` (`judge_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评审成绩表';
2.2 数据库优化策略
-
索引设计:
- 为所有外键字段创建索引
- 为高频查询条件创建组合索引
- 避免过度索引,影响写入性能
-
分表策略:
- 历史数据归档:将过期竞赛数据迁移到历史表
