# 考试信息管理系统 基于 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