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

5.5 KiB
Raw Permalink Blame History

考试信息管理系统

基于 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. 安装依赖
go mod tidy
  1. 配置数据库 修改 config/config.yaml 中的数据库连接信息

  2. 创建数据库

CREATE DATABASE exam_registration CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. 启动服务
go run cmd/main.go

服务将在 http://localhost:8080 启动

前端启动

  1. 进入前端目录
cd frontend
  1. 安装依赖
npm install
  1. 启动开发服务器
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