224 lines
5.5 KiB
Markdown
224 lines
5.5 KiB
Markdown
# 考试信息管理系统
|
||
|
||
基于 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
|