This commit is contained in:
2026-03-20 21:41:00 +08:00
Unverified
commit 3d1d4cf506
53 changed files with 7105 additions and 0 deletions
+223
View File
@@ -0,0 +1,223 @@
# 考试信息管理系统
基于 Go (Gin) + MySQL + Vue 3 + Ant Design Pro 开发的考试信息管理系统。
## 技术栈
### 后端
- **框架**: Gin v1.9.1
- **ORM**: GORM v1.25.5
- **数据库**: MySQL 8.0+
- **配置管理**: Viper v1.18.2
- **JWT 认证**: jwt-go v5.2.0
- **密码加密**: bcrypt
### 前端
- **框架**: Vue 3.4
- **UI 组件库**: Ant Design Vue 4.1
- **状态管理**: Pinia 2.1
- **路由**: Vue Router 4.2
- **HTTP 客户端**: Axios 1.6
- **构建工具**: Vite 5.0
## 功能模块
### 1. 用户管理
- 用户注册与登录
- JWT Token 认证
- 用户信息管理
- 角色权限控制(管理员/普通用户)
### 2. 考试管理
- 发布考试(支持设置时间、地点、费用、人数限制等)
- 考试列表查询
- 考试详情查看
- 考试信息编辑与删除
- 考试状态管理(未开始/进行中/已结束)
### 3. 考试报名
- 在线报名功能
- 报名信息查询
- 报名状态跟踪(待审核/已通过/已拒绝/已取消)
- 报名审核(管理员)
- 报名信息管理
### 4. 考试通知
- 发布考试通知
- 通知分类(普通/重要/紧急)
- 通知列表查询
- 通知详情查看
- 通知编辑与删除
### 5. 准考证管理
- 自动生成准考证号
- 考场座位编排
- 准考证打印下载
### 6. 成绩管理
- 成绩录入(单条/批量)
- 成绩查询
- 成绩排名
- 成绩发布
- 及格/不及格判定
## 项目结构
```
Exam_registration/
├── cmd/ # 应用入口
│ └── main.go
├── internal/ # 内部包
│ ├── handler/ # HTTP 处理器
│ ├── model/ # 数据模型
│ ├── dao/ # 数据访问层
│ ├── service/ # 业务逻辑层
│ ├── middleware/ # 中间件
│ └── routes/ # 路由配置
├── pkg/ # 公共包
│ ├── response/ # 统一响应格式
│ ├── utils/ # 工具函数
│ └── config/ # 配置加载
├── config/ # 配置文件
│ └── config.yaml
├── frontend/ # 前端项目
│ ├── src/
│ │ ├── api/ # API 接口
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 组件
│ │ ├── layouts/ # 布局
│ │ ├── router/ # 路由
│ │ ├── store/ # 状态管理
│ │ ├── utils/ # 工具函数
│ │ └── views/ # 页面
│ ├── package.json
│ └── vite.config.js
├── uploads/ # 上传文件目录
├── go.mod
└── README.md
```
## 快速开始
### 环境要求
- Go 1.21+
- MySQL 8.0+
- Node.js 18+
### 后端启动
1. 安装依赖
```bash
go mod tidy
```
2. 配置数据库
修改 `config/config.yaml` 中的数据库连接信息
3. 创建数据库
```sql
CREATE DATABASE exam_registration CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
4. 启动服务
```bash
go run cmd/main.go
```
服务将在 http://localhost:8080 启动
### 前端启动
1. 进入前端目录
```bash
cd frontend
```
2. 安装依赖
```bash
npm install
```
3. 启动开发服务器
```bash
npm run dev
```
前端将在 http://localhost:3000 启动
## API 接口
### 认证相关
- POST `/api/login` - 用户登录
- POST `/api/register` - 用户注册
### 考试相关
- GET `/api/exams` - 获取考试列表
- GET `/api/exams/:id` - 获取考试详情
- POST `/api/exams` - 创建考试(需管理员权限)
- PUT `/api/exams/:id` - 更新考试(需管理员权限)
- DELETE `/api/exams/:id` - 删除考试(需管理员权限)
### 报名相关
- POST `/api/registrations` - 创建报名
- GET `/api/registrations` - 获取报名列表
- PUT `/api/registrations/:id` - 更新报名信息
- DELETE `/api/registrations/:id` - 取消报名
- PUT `/api/registrations/:id/audit` - 审核报名(需管理员权限)
### 通知相关
- GET `/api/notices` - 获取通知列表
- GET `/api/notices/:id` - 获取通知详情
- POST `/api/notices` - 创建通知(需管理员权限)
- PUT `/api/notices/:id` - 更新通知(需管理员权限)
- DELETE `/api/notices/:id` - 删除通知(需管理员权限)
### 成绩相关
- POST `/api/scores` - 录入成绩
- POST `/api/scores/batch` - 批量录入成绩
- GET `/api/scores/exam/:exam_id` - 查询个人成绩
- GET `/api/scores` - 获取成绩列表
- PUT `/api/scores/:id/publish` - 发布成绩(需管理员权限)
- DELETE `/api/scores/:id` - 删除成绩(需管理员权限)
## 数据库设计
### 主要数据表
1. **user** - 用户表
- 包含用户基本信息、角色权限等
2. **exam** - 考试表
- 记录考试基本信息、时间安排、容量限制等
3. **exam_registration** - 报名表
- 关联用户和考试,记录报名状态和支付情况
4. **exam_notice** - 考试通知表
- 存储考试相关通知
5. **exam_score** - 考试成绩表
- 记录考生成绩和排名
所有表使用 `utf8mb4` 字符集,启用软删除(`deleted_at` 字段)
## 安全特性
- JWT Token 认证
- 密码 bcrypt 加密存储
- CORS 跨域配置
- SQL 注入防护(GORM 参数化查询)
- 角色权限控制
## 开发计划
- [ ] 准考证 PDF 生成与下载
- [ ] Excel 批量导入成绩
- [ ] 邮件通知功能
- [ ] 短信通知功能
- [ ] 数据统计图表展示
- [ ] 移动端适配
## License
MIT License