- 前后端分离架构 (Nuxt 3 + Element Plus) - SQLite 数据库 (better-sqlite3) - 比赛项目管理 (田赛/径赛/团体赛) - 队伍管理 (5 个组别) - 成绩录入与积分统计 - 记分板展示 (排名/奖牌榜) - 移动端响应式适配 - 侧边栏布局 + 抽屉菜单 - 自动生成初始化数据接口
2.8 KiB
2.8 KiB
运动会记分板系统
基于 Nuxt 3 + Element Plus + SQLite 的运动会管理系统
功能特性
- 比赛项目管理:支持田赛、径赛、团体赛三大类别
- 队伍管理:管理不同组别的参赛队伍
- 成绩录入:实时录入比赛成绩和排名
- 记分板展示:实时展示积分排名和奖牌统计
比赛项目
田赛
- 跳高、跳远、掷铅球
径赛
- 100m、200m、400m、4×100m、4×400m、20×50m
团体赛
- 旱地龙舟、跳长绳、折返跑
组别
- 教师组
- 航空班组
- 体育班组
- 文化班甲组
- 文化班乙组
积分规则
- 第1名:7分 + 金牌
- 第2名:5分 + 银牌
- 第3名:3分 + 铜牌
技术栈
- 前端框架:Nuxt 3
- UI 组件库:Element Plus
- 包管理器:pnpm
- 数据库:SQLite (better-sqlite3)
- 后端 API:Nuxt Server API
安装依赖
pnpm install
初始化数据库
首次运行前,需要初始化数据库和种子数据:
# 启动开发服务器
pnpm dev
# 在浏览器中访问或使用 curl 初始化数据
curl -X POST http://localhost:3000/api/seed
开发
pnpm dev
构建生产版本
pnpm build
预览生产版本
pnpm preview
项目结构
D:\SportMeetingAdminSys
├── app/
│ ├── layouts/
│ │ └── default.vue # 侧边栏布局
│ └── pages/
│ ├── index.vue # 首页仪表盘
│ ├── events.vue # 比赛项目管理
│ ├── teams.vue # 队伍管理
│ ├── results.vue # 成绩录入
│ └── scoreboard.vue # 记分板展示
├── server/
│ ├── api/
│ │ ├── config/ # 配置接口
│ │ ├── events/ # 比赛项目接口
│ │ ├── teams/ # 队伍接口
│ │ ├── results/ # 成绩接口
│ │ ├── scoreboard/ # 记分板接口
│ │ └── seed.post.ts # 数据初始化
│ └── db/
│ └── index.ts # SQLite 数据库连接
└── data/
└── sports.db # SQLite 数据库文件
API 接口
配置接口
GET /api/config- 获取系统配置(类别、组别、项目类型)
比赛项目
GET /api/events- 获取比赛项目列表POST /api/events- 创建比赛项目
队伍管理
GET /api/teams- 获取队伍列表POST /api/teams- 创建队伍
成绩管理
GET /api/results- 获取成绩列表POST /api/results- 录入成绩
记分板
GET /api/scoreboard- 获取积分排名
数据初始化
POST /api/seed- 初始化示例数据