1. 项目简介
学科竞赛管理系统是一个基于 Spring Boot + Vue.js 的全栈 Web 应用,旨在为学校或教育机构提供竞赛信息发布、报名管理、奖项统计等功能。系统支持多角色用户(管理员、教师、学生),涵盖赛项发布、在线报名、审核、支付、数据统计等完整业务流程。
2. 技术栈
2.1 后端:
- Spring Boot 2.2.2:核心框架
- MyBatis-Plus:ORM 框架
- MySQL 5.7:数据库
- Shiro:权限认证
- FastJSON:JSON 处理
- Hutool:工具库
- Baidu AI SDK:人工智能集成(可选)
2.2 前端:
- Vue.js:前端框架
- Element UI:UI 组件库
- Layui:传统后台页面 UI
- ECharts:数据可视化
- Swiper:轮播图组件
- Axios:HTTP 请求库
3. 详细介绍
3.1 功能模块:
用户管理
- 学生、教师、管理员三角色
- 注册/登录(含 Token 认证)
- 个人中心信息维护
赛项管理
- 赛项信息发布(名称、类型、地点、费用等)
- 报名截止日期控制
- 赛项内容富文本编辑
报名管理
- 学生在线报名(支持团队/个人赛)
- 教师审核报名材料
- 在线支付(模拟支付接口)
奖项统计
- 按院校、学科统计获奖情况
- 数据可视化展示(ECharts)
新闻与轮播图
- 新闻资讯发布
- 首页轮播图动态配置
权限控制
- 基于 Shiro 的按钮级权限控制
- 不同角色可见不同菜单
3.2 数据库设计:
- 主要表:
xuesheng
(学生)、jiaoshi
(教师)、saixiangxinxi
(赛项)、saixiangbaoming
(报名)、jiangxiangtongji
(奖项统计)、news
(新闻)、config
(配置) - 使用外键和关联查询支持业务逻辑
4. 部分代码示例
3.1 后端接口示例(Spring Boot):
// 赛项报名接口
@PostMapping("/saixiangbaoming/save")
public R save(@RequestBody SaixiangbaomingEntity entity) {
// 业务逻辑:检查报名截止日期、费用等
saixiangbaomingService.save(entity);
return R.ok();
}
3.2 前端页面路由(Vue Router):
{
path: '/saixiangbaoming',
name: '赛项报名',
component: () => import('@/views/modules/saixiangbaoming/list.vue')
}
3.3 权限校验工具函数(前端):
export function isAuth(tableName, key) {
let role = storage.get("role");
// 根据角色和表名校验按钮权限
return buttons.indexOf(key) !== -1 || false;
}
4. 部分截图
5. 项目总结
5.1 亮点:
- 全栈功能完备:涵盖前后端完整业务流,适合作为毕业设计或中小型项目模板。
- 权限设计细致:支持角色菜单动态加载和按钮级权限控制。
- 代码规范:前后端分离,结构清晰,注释详细。
- 扩展性强:集成百度 AI、支付接口等,便于二次开发。
6. 在线演示:
后台:http://springbootpx13e.xiaobias.com/springbootpx13e/admin/dist/index.html
前台:http://springbootpx13e.xiaobias.com/springbootpx13e/front/index.html
管理员:abo/abo
学生:学生1/123456、学生2/123456
教师:教师1/123456、教师2/123456
资源:https://fifteen.xiaobias.com/source/50