# 运动会记分板系统 基于 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 ## 安装依赖 ```bash pnpm install ``` ## 初始化数据库 首次运行前,需要初始化数据库和种子数据: ```bash # 启动开发服务器 pnpm dev # 在浏览器中访问或使用 curl 初始化数据 curl -X POST http://localhost:3000/api/seed ``` ## 开发 ```bash pnpm dev ``` 访问 http://localhost:3000 ## 构建生产版本 ```bash pnpm build ``` ## 预览生产版本 ```bash 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` - 初始化示例数据