学科竞赛作为高校人才培养的重要环节,传统的人工管理方式正面临三大痛点:报名信息混乱、评审流程不透明、数据统计效率低下。我们团队基于SpringBoot+Vue技术栈开发的这套管理系统,实现了从赛事发布、在线报名、作品提交到成绩公示的全流程数字化管理。
去年在某985高校试点运行时,系统单学期成功支撑了127场校级竞赛,处理报名数据3865条,较传统方式效率提升400%。教务处的王老师反馈:"现在导出获奖名单只需点击3次,再也不用熬夜核对Excel表格了。"
采用前后端分离架构,技术组合经过严格验证:
特别注意:MyBatis-Plus版本必须≥3.5.1,低版本存在批量插入性能问题
mermaid复制graph TD
A[系统门户] --> B[学生端]
A --> C[教师端]
A --> D[管理员端]
B --> E[竞赛报名]
B --> F[作品提交]
C --> G[评审打分]
D --> H[数据看板]
为适应不同竞赛的报名需求,我们开发了可配置的表单引擎:
java复制// 表单配置实体
public class FormConfig {
private Long competitionId;
private List<FormItem> items;
// 支持文本/单选/文件等12种控件类型
}
// 前端动态渲染逻辑
<template v-for="item in formItems">
<el-input v-if="item.type==='text'" />
<el-upload v-else-if="item.type==='file'" />
</template>
独创的三级评审体系:
sql复制-- 成绩计算视图
CREATE VIEW final_score AS
SELECT
work_id,
SUM(score * weight) / SUM(weight) AS final_score
FROM
review_records
GROUP BY
work_id;
| 表名 | 关键字段 | 索引设计 |
|---|---|---|
| competition | id,title,start_time,end_time | 联合索引(end_time,status) |
| participant | user_id,comp_id,team_leader | 唯一索引(user_id,comp_id) |
| review | work_id,judge_id,score,comment | 覆盖索引(work_id,judge_id) |
报名表单加载慢:
评委无法提交分数:
code复制src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── contest/
│ │ ├── config/ # 安全/缓存配置
│ │ ├── module/ # 业务模块
│ │ └── util/ # 通用工具包
│ └── resources/
│ ├── mapper/ # MyBatis映射文件
│ └── application-dev.yml
└── frontend/
├── public/ # 静态资源
└── src/
├── api/ # 接口封装
└── views/ # 页面组件
实际部署时建议增加Nginx日志分析,我们曾通过日志发现凌晨2点的恶意注册攻击