# 在线考试系统 **Repository Path**: haonan_Li/examination-system ## Basic Information - **Project Name**: 在线考试系统 - **Description**: 考试管理系统,使用的小伙伴留下个star。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-20 - **Last Updated**: 2026-04-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能在线考试系统 一个基于Spring Boot 2 + MyBatis Plus + Vue 3 + Vite + Naive UI的前后端分离在线考试系统。 ## 项目结构 ``` examination-system/ ├── backend/ # 后端项目 │ ├── src/ │ │ ├── main/ │ │ │ ├── java/com/exam/ │ │ │ │ ├── controller/ # 控制层 │ │ │ │ ├── service/ # 服务层 │ │ │ │ ├── mapper/ # 数据访问层 │ │ │ │ ├── entity/ # 实体类 │ │ │ │ ├── config/ # 配置类 │ │ │ │ ├── common/ # 公共类 │ │ │ │ └── util/ # 工具类 │ │ │ └── resources/ │ │ │ ├── application.properties # 配置文件 │ │ │ └── schema.sql # 数据库脚本 │ │ └── pom.xml │ └── └── frontend/ # 前端项目 ├── src/ │ ├── views/ # 页面组件 │ ├── api/ # API接口 │ ├── stores/ # 状态管理 │ ├── router/ # 路由配置 │ ├── utils/ # 工具类 │ ├── App.vue │ └── main.js ├── package.json └── vite.config.js ``` ## 功能模块 ### 用户模块 - 用户登录/注册(MD5加密存储密码) - 个人中心(查看/编辑个人信息) - 基于 JWT 的无状态认证与角色权限控制 ### 题目模块 - 题目列表浏览(支持难度、类型、标签筛选) - 五种题型:**算法题**、**数据库题**、**单选题**、**多选题**、**简答题** - 题目详情查看,含样例输入/输出、时间/内存限制 - 在线代码提交与评测(支持 Java、Python、C++、JavaScript 等多种语言) ### 竞赛模块 - 竞赛列表(公开赛 / 私有赛,私有赛需密码参与) - 竞赛详情与参赛报名 - 竞赛考场(在线答题、计时倒计时) - 竞赛实时排行榜 ### 文章模块 - 文章列表浏览(支持分类/标签筛选) - 文章详情查看(Markdown 渲染) - 文章发布与编辑(Markdown 编辑器) - 文章删除 ### 评测模块 - 代码提交与在线评测 - 评测状态跟踪(等待/评测中/通过/错误/超时/内存超限) - 个人评测记录查询 - 评测详情查看(运行时间、内存使用、错误信息) ### 学习分析模块 - **学习概览**:答题总数、正确率、连续学习天数、成就积分统计 - **每日学习趋势**:最近 30 天答题数与正确数折线图(ECharts) - **难度分布**:各难度等级答题占比饼图 - **题型分布**:各题型答题与正确数柱状图 - **知识点掌握**:基于标签的正确率雷达图 - **成就系统**:15+ 成就(普通/稀有/史诗/传说四级),覆盖答题数量、正确数量、连续学习、竞赛参与等维度 - **错题本**:自动记录错题、支持标记已掌握、添加个人笔记 ### 管理员模块 - 用户管理(查看、启用/禁用) - 题目管理(创建、编辑、上架/下架、删除) - 竞赛管理(创建、编辑、发布、删除) - 文章管理(审核、删除) - 评测管理(查看所有评测记录) - 数据统计分析(全局答题总数、活跃用户、今日答题量、热门标签、题目通过率分析) ## 技术栈 ### 后端 - **框架**: Spring Boot 2.7.14 - **ORM**: MyBatis Plus 3.5.3 - **数据库**: MySQL 8.0 - **安全**: MD5加密 + JWT认证 - **工具**: Lombok, Hutool, FastJson ### 前端 - **框架**: Vue 3.3.4 - **构建工具**: Vite 4.4.9 - **UI组件**: Naive UI 2.35.0 - **图标**: @vicons/ionicons5 - **路由**: Vue Router 4.2.4 - **状态管理**: Pinia 2.1.6 - **HTTP客户端**: Axios 1.5.0 ## 快速开始 ### 数据库配置 1. 创建数据库: ```sql CREATE DATABASE examination_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 执行数据库脚本: ```bash cd backend/src/main/resources mysql -u root -p examination_system < schema.sql ``` 3. 修改数据库连接配置 `backend/src/main/resources/application.properties`: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/examination_system?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=你的密码 ``` ### 后端启动 1. 进入后端目录: ```bash cd backend ``` 2. 使用Maven构建并运行: ```bash mvn clean install mvn spring-boot:run ``` 或使用IDE(IDEA/Eclipse)直接运行 `ExaminationSystemApplication` 主类 后端服务默认运行在: http://localhost:8080 ### 前端启动 1. 进入前端目录: ```bash cd frontend ``` 2. 安装依赖: ```bash npm install ``` 3. 启动开发服务器: ```bash npm run dev ``` 前端应用默认运行在: http://localhost:3000 ## 默认账户 系统已预置以下测试账户: ### 管理员账户 - 用户名: `admin` - 密码: `admin123` ### 普通用户 - 用户名: `user1` - 密码: `user123` ## 主要特性 1. **登录界面**: 左右布局(左60%、右40%),主题色#4d58b5 2. **MD5加密**: 用户密码采用MD5加密存储 3. **JWT认证**: 基于Token的无状态认证 4. **代码评测**: 支持多种编程语言的代码提交与评测 5. **响应式设计**: 适配不同屏幕尺寸 6. **角色权限**: 区分普通用户和管理员权限 ## API接口 ### 用户相关 - POST `/api/user/login` - 用户登录 - POST `/api/user/register` - 用户注册 - GET `/api/user/{id}` - 获取用户信息 - PUT `/api/user/{id}` - 更新用户信息 - GET `/api/user/list` - 用户列表(管理员) ### 题目相关 - GET `/api/question/list` - 题目列表 - GET `/api/question/{id}` - 题目详情 - POST `/api/question` - 创建题目(管理员) - PUT `/api/question/{id}` - 更新题目(管理员) - DELETE `/api/question/{id}` - 删除题目(管理员) ### 评测相关 - POST `/api/evaluation/submit` - 提交代码评测 - GET `/api/evaluation/list` - 评测记录列表 - GET `/api/evaluation/{id}` - 评测详情 ### 竞赛相关 - GET `/api/contest/list` - 竞赛列表 - GET `/api/contest/{id}` - 竞赛详情 - POST `/api/contest/join` - 参加竞赛 - GET `/api/contest/{id}/ranking` - 竞赛排行榜 ### 文章相关 - GET `/api/article/list` - 文章列表 - GET `/api/article/{id}` - 文章详情 - POST `/api/article` - 发布文章 - PUT `/api/article/{id}` - 更新文章 - DELETE `/api/article/{id}` - 删除文章 ### 学习分析相关 - GET `/api/analytics/overview/{userId}` - 用户学习概览 - GET `/api/analytics/daily/{userId}` - 每日学习统计 - GET `/api/analytics/tags/{userId}` - 知识点标签统计 - GET `/api/analytics/difficulty/{userId}` - 难度分布统计 - GET `/api/analytics/type/{userId}` - 题型分布统计 - GET `/api/analytics/achievements/{userId}` - 用户成就列表 - GET `/api/analytics/wrong-questions/{userId}` - 错题本列表 - PUT `/api/analytics/wrong-questions/{userId}/{questionId}/mastered` - 标记已掌握 - GET `/api/analytics/global` - 全局统计(管理员) - GET `/api/analytics/question-analysis` - 题目分析(管理员) ## 开发说明 ### 代码规范 - 后端遵循阿里巴巴Java开发规范 - 前端使用ESLint + Prettier格式化 - 代码注释完整,便于维护 ### 数据库表说明 - `user` - 用户表 - `question` - 题目表 - `contest` - 竞赛表 - `contest_participant` - 竞赛参与记录表 - `contest_answer` - 竞赛答题记录表 - `article` - 文章表 - `evaluation` - 评测记录表 - `learning_record` - 学习记录表 - `achievement` - 成就定义表 - `user_achievement` - 用户成就表 - `wrong_question` - 错题表 ## 浏览器支持 - Chrome (推荐) - Firefox - Safari - Edge ## 许可证 MIT License ## 联系方式 如有问题,请提交Issue或联系开发团队。