This repository has been archived on 2026-04-05. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Exam_registration/README.md
2026-03-20 21:41:00 +08:00

224 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 考试信息管理系统
基于 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