{"id":21974103,"url":"https://github.com/javaobjects/exam","last_synced_at":"2025-08-28T16:54:57.925Z","repository":{"id":206726944,"uuid":"717562202","full_name":"javaobjects/exam","owner":"javaobjects","description":"Spring Boot Starter Parent 2.2.7.RELEASE + MyBatis Plus 3.0.5 + Vue 2.6.11 + Element-ui 2.4.5 + Echarts 2.4.5 + Redis 7.0.5 + Mysql 7.0.5 在线考试系统","archived":false,"fork":false,"pushed_at":"2023-11-29T01:17:19.000Z","size":3900,"stargazers_count":3,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-29T15:52:24.475Z","etag":null,"topics":["druid","echarts","element-ui","jwt","lombok","mybatis-plus","mysql","redis","springboot","vue"],"latest_commit_sha":null,"homepage":"https://github.com/javaobjects/exam","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mulanpsl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/javaobjects.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-11T21:02:09.000Z","updated_at":"2023-12-20T08:34:10.000Z","dependencies_parsed_at":"2024-11-29T15:41:12.545Z","dependency_job_id":"cdd12d87-1ced-42a1-bdfa-38a7da1fa9e4","html_url":"https://github.com/javaobjects/exam","commit_stats":null,"previous_names":["javaobjects/exam"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fexam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fexam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fexam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fexam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/javaobjects","download_url":"https://codeload.github.com/javaobjects/exam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235955896,"owners_count":19071963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["druid","echarts","element-ui","jwt","lombok","mybatis-plus","mysql","redis","springboot","vue"],"created_at":"2024-11-29T15:37:56.018Z","updated_at":"2025-01-28T03:17:02.425Z","avatar_url":"https://github.com/javaobjects.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href='https://docs.oracle.com/en/java/javase/8'\u003e\u003cimg alt=\"Java 8\" src=\"Images/Java8.png\"\u003e\u003c/a\u003e\n    \u003ca href='https://docs.spring.io/spring-boot/docs/2.6.2-SNAPSHOT/reference/html'\u003e\u003cimg alt=\"Spring Boot 2\" src=\"https://img.shields.io/badge/Spring%20Boot%202-%23000000.svg?logo=springboot\"\u003e\u003c/a\u003e\n    \u003ca href='https://staging-cn.vuejs.org'\u003e\u003cimg alt=\"Vue 3\" src=\"https://img.shields.io/badge/Vue%202%20-%232b3847.svg?logo=vue.js\"\u003e\u003c/a\u003e\u003cbr/\u003e\n    \u003ca href='#'\u003e\u003cimg alt=\"Github stars\" src=\"https://img.shields.io/github/stars/201206030/novel?logo=github\"\u003e\u003c/a\u003e\n    \u003ca href='#'\u003e\u003cimg alt=\"Github forks\" src=\"https://img.shields.io/github/forks/201206030/novel?logo=github\"\u003e\u003c/a\u003e\n    \u003ca href='#'\u003e\u003cimg alt=\"Gitee stars\" src=\"https://gitee.com/novel_dev_team/novel/badge/star.svg?theme=gitee\"\u003e\u003c/a\u003e\n    \u003ca href='#'\u003e\u003cimg alt=\"Gitee forks\" src=\"https://gitee.com/novel_dev_team/novel/badge/fork.svg?theme=gitee\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# 在线考试系统\n\n#### 开发环境\n\n+ Windows\n\n#### 配置环境\n\n| 程序           | 版本        | 说明                       |\n|--------------|-----------|--------------------------|\n| Jdk          | 1.8.0 161 | Java 开发工具包               |\n| Mysql        | 5.5.27    | 关系型数据库                   |\n| Redis        | 7.0.5     | 非关系型数据库                  |\n| Apache-maven | 3.9.0     | Java 项目管理和构建工具           |\n| Nvm          | 1.10      | Node.js 版本管理器            |\n| Node         | 8.12.0    | Node.js JavaScript 运行时环境 |\n\n#### 开发工具\n\n| 工具                       | 版本            | 说明                      |\n|--------------------------|---------------|-------------------------|\n| IDEA                     | 2022.3.2      | 后前端开发IDE                |\n| Git                      | 2.24.1        | 代码托管平台                  |\n| Google   Chrome          | 75.0.3770.100 | 浏览器、前端调试工具              |\n| Navicat                  | 11.1.13       | 数据库连接工具                 |\n| Postman                  | 7.1.0         | 接口测试工具                  |\n| VMware   Workstation Pro | 14.1.3        | 虚拟机(未用到或许你会用到)          |\n| PowerDesigner            | 15            | 数据库设计工具(未用到或许你会用到)      |\n| SQLyog                   | 12.0.3        | 数据库连接工具 (未用到或许你会用到)     |\n| Visio                    | 2013          | 时序图、流程图等绘制工具(未用到或许你会用到) |\n| ProcessOn                | ——            | 架构图等绘制工具(未用到或许你会用到)     |\n| XMind   ZEN              | 9.2.0         | 思维导图绘制工具(未用到或许你会用到)     |\n| RedisDesktop             | 0.9.3.817     | redis客户端连接工具(未用到或许你会用到) |\n\n#### 编码规范\n\n- 规范方式：严格遵守阿里编码规约。\n- 命名统一：简介最大程度上达到了见名知意。\n- 分包明确：层级分明可快速定位到代码位置。\n- 注释完整：描述性高大量减少了开发人员的代码阅读工作量。\n- 工具规范：使用统一jar包避免出现内容冲突。\n- 代码整洁：可读性、维护性高。\n\n#### 包的结构\n```\n- exam -- 整个项目\n|   +- .idea -- 存放项目的IDE配置文件\n|   +- exam-admin -- 考试管理模块\n|   |   +- .idea -- 存放考试管理模块的IDE配置文件\n|   |   +- pom.xml -- Maven项目配置文件\n|   |   +- src -- 存放源代码的目录\n|   |   |   +- main -- 主要的源代码目录\n|   |   |   |   +- java -- Java源代码目录\n|   |   |   |   |   +- com.wzz -- 项目的根包名\n|   |   |   |   |   |   +- config -- 配置文件目录\n|   |   |   |   |   |   |   +- AdminInterceptor.java -- 管理员拦截器，用于拦截管理员相关请求\n|   |   |   |   |   |   |   +- CorsConfig.java -- 跨域配置，用于允许跨域请求\n|   |   |   |   |   |   |   +- DruidConfig.java -- Druid数据源配置，用于配置数据库连接池\n|   |   |   |   |   |   |   +- MybatisPlusConfig.java -- MyBatis Plus配置，用于配置MyBatis Plus相关功能\n|   |   |   |   |   |   |   +- RedisConfig.java -- Redis配置，用于配置Redis连接和操作\n|   |   |   |   |   |   |   +- StudentInterceptor.java -- 学生拦截器，用于拦截学生相关请求\n|   |   |   |   |   |   |   +- SwaggerConfig.java -- Swagger配置，用于生成API文档\n|   |   |   |   |   |   |   +- TeacherInterceptor.java -- 教师拦截器，用于拦截教师相关请求\n|   |   |   |   |   |   |   +- WebAppConfigurer.java -- Web应用配置，用于配置Web应用相关设置\n|   |   |   |   |   |   |   +- controller -- 控制器\n|   |   |   |   |   |   |   |   +- AdminController.java -- 管理员相关的控制器\n|   |   |   |   |   |   |   |   +- CommonController.java -- 通用的控制器\n|   |   |   |   |   |   |   |   +- StudentController.java -- 学生相关的控制器\n|   |   |   |   |   |   |   |   +- TeacherController.java -- 教师相关的控制器\n|   |   |   |   |   |   |   |   +- UtilController.java -- 实用工具相关的控制器\n|   |   |   |   |   |   |   +- entity -- 实体\n|   |   |   |   |   |   |   |   +- Answer.java -- 答案实体类\n|   |   |   |   |   |   |   |   +- Exam.java -- 考试实体类\n|   |   |   |   |   |   |   |   +- ExamQuestion.java -- 考试题目实体类\n|   |   |   |   |   |   |   |   +- ExamRecord.java -- 考试记录实体类\n|   |   |   |   |   |   |   |   +- Question.java -- 题目实体类\n|   |   |   |   |   |   |   |   +- QuestionBank.java -- 题库实体类\n|   |   |   |   |   |   |   |   +- User.java -- 用户实体类\n|   |   |   |   |   |   |   |   +- UserRole.java -- 用户角色实体\n|   |   |   |   |   |   |   +- ExamAdminApplication.java -- 应用程序的入口点，用于启动整个应用程序\n|   |   |   |   |   |   |   +- mapper -- 数据库映射接口目录\n|   |   |   |   |   |   |   |   +- AnswerMapper.java -- 答案实体类的数据库映射接口，用于与数据库进行交互\n|   |   |   |   |   |   |   |   +- ExamMapper.java -- 考试实体类的数据库映射接口，用于与数据库进行交互。\n|   |   |   |   |   |   |   |   +- ExamQuestionMapper.java -- 考试题目实体类的数据库映射接口，用于与数据库进行交互。\n|   |   |   |   |   |   |   |   +- ExamRecordMapper.java -- 考试记录实体类的数据库映射接口，用于与数据库进行交互。\n|   |   |   |   |   |   |   |   +- QuestionBankMapper.java -- 题库实体类的数据库映射接口，用于与数据库进行交互。\n|   |   |   |   |   |   |   |   +- QuestionMapper.java -- 题目实体类的数据库映射接口，用于与数据库进行交互。\n|   |   |   |   |   |   |   |   +- UserMapper.java -- 用户实体类的数据库映射接口，用于与数据库进行交互。\n|   |   |   |   |   |   |   |   +- UserRoleMapper.java -- 用户角色实体类的数据库映射接口，用于与数据库进行交互。\n|   |   |   |   |   |   |   +- service -- 服务接口目录\n|   |   |   |   |   |   |   |   +- AnswerService.java -- 答案相关的服务接口，定义了答案相关的业务逻辑。\n|   |   |   |   |   |   |   |   +- ExamQuestionService.java -- 考试题目相关的服务接口，定义了考试题目相关的业务逻辑。\n|   |   |   |   |   |   |   |   +- ExamRecordService.java -- 考试记录相关的服务接口，定义了考试记录相关的业务逻辑。\n|   |   |   |   |   |   |   |   +- ExamService.java -- 考试相关的服务接口，定义了考试相关的业务逻辑。\n|   |   |   |   |   |   |   |   +- impl -- 服务接口实现类目录\n|   |   |   |   |   |   |   |   |   +- AnswerServiceImpl.java -- 答案相关的服务接口的实现类，实现了答案相关的业务逻辑。\n|   |   |   |   |   |   |   |   |   +- ExamQuestionServiceImpl.java -- 考试题目相关的服务接口的实现类，实现了考试题目相关的业务逻辑。\n|   |   |   |   |   |   |   |   |   +- ExamRecordServiceImpl.java -- 考试记录相关的服务接口的实现类，实现了考试记录相关的业务逻辑。\n|   |   |   |   |   |   |   |   |   +- ExamServiceImpl.java -- 考试相关的服务接口的实现类，实现了考试相关的业务逻辑。\n|   |   |   |   |   |   |   |   |   +- QuestionBankServiceImpl.java -- 题库相关的服务接口的实现类，实现了题库相关的业务逻辑。\n|   |   |   |   |   |   |   |   |   +- QuestionServiceImpl.java -- 题目相关的服务接口的实现类，实现了题目相关的业务逻辑。\n|   |   |   |   |   |   |   |   |   +- UserRoleServiceImpl.java -- 用户角色相关的服务接口的实现类，实现了用户角色相关的业务逻辑。\n|   |   |   |   |   |   |   |   |   +- UserServiceImpl.java -- 用户相关的服务接口的实现类，实现了用户相关的业务逻辑。\n|   |   |   |   |   |   |   |   +- QuestionBankService.java -- 题库相关的服务接口，定义了题库相关的业务逻辑。\n|   |   |   |   |   |   |   |   +- QuestionService.java -- 题目相关的服务接口，定义了题目相关的业务逻辑。\n|   |   |   |   |   |   |   |   +- UserRoleService.java -- 用户角色相关的服务接口，定义了用户角色相关的业务逻辑\n|   |   |   |   |   |   |   |   +- UserService.java -- 用户相关的服务接口，定义了用户相关的业务逻辑。\n|   |   |   |   |   |   |   +- Util -- 实用工具目录\n|   |   |   |   |   |   |   |   +- CheckToken.java -- 检查令牌有效性的工具类。\n|   |   |   |   |   |   |   |   +- createVerificationCode.java -- 生成验证码的工具类。\n|   |   |   |   |   |   |   |   +- OSSUtil.java -- OSS 工具类。\n|   |   |   |   |   |   |   |   +- RedisUtil.java -- Redis 工具类。\n|   |   |   |   |   |   |   |   +- SaltEncryption.java -- 加密工具类。\n|   |   |   |   |   |   |   |   +- TokenUtils.java -- 令牌工具类。\n|   |   |   |   |   |   |   +- vo -- 值对象目录\n|   |   |   |   |   |   |   |   +- AddExamByBankVo.java -- 根据题库添加考试时的请求参数对象。\n|   |   |   |   |   |   |   |   +- AddExamByQuestionVo.java -- 根据题目添加考试时的请求参数对象。\n|   |   |   |   |   |   |   |   +- BankHaveQuestionSum.java -- 题库包含的题目数量信息对象。\n|   |   |   |   |   |   |   |   +- CommonResult.java -- 通用响应结果对象。\n|   |   |   |   |   |   |   |   +- ExamQueryVo.java -- 考试查询请求参数对象。\n|   |   |   |   |   |   |   |   +- QuestionVo.java -- 题目信息对象。\n|   |   |   |   |   |   |   |   +- TokenVo.java -- 令牌信息对象。\n|   |   |   |   +- resources -- 资源文件目录\n|   |   |   +- test -- 测试代码目录\n|   |   |   |   +- java -- Java 测试代码目录\n|   |   |   |   |   +- com\n|   |   |   |   |   |   +- wzz -- 测试代码包名\n|   |   |   |   |   |   |   +- ExamAdminApplicationTests.java -- 应用程序测试类，用于测试应用程序的正确性。\n|   |   +- target -- 构建输出目录\n|   +- exam-vue -- 项目前端\n|   |   +- .browserslistrc -- 浏览器兼容性配置文件。\n|   |   +- .editorconfig -- 编辑器配置文件。\n|   |   +- .eslintrc.js -- ESLint 配置文件。\n|   |   +- .gitignore -- Git 忽略文件列表。\n|   |   +- babel.config.js -- Babel 配置文件。\n|   |   +- debug.log -- 调试日志文件。\n|   |   +- dist -- 前端构建输出目录\n|   |   |   +- css -- CSS 样式文件目录。\n|   |   |   +- favicon.ico -- 网站图标文件。\n|   |   |   +- fonts -- 字体文件目录。\n|   |   |   +- img -- 图片文件目录。\n|   |   |   +- index.html -- 前端应用程序主页面。\n|   |   |   +- js -- JavaScript 脚本文件目录。\n|   |   +- node_modules -- Node.js 模块目录。\n|   |   +- package-lock.json -- NPM 包依赖版本锁定文件。\n|   |   +- package.json -- NPM 包管理配置文件。\n|   |   +- public -- 前端公共资源目录\n|   |   |   +- favicon.ico -- 网站图标文件。\n|   |   |   +- index.html -- 前端应用程序主页面模板文件。\n|   |   +- src -- 前端源代码目录\n|   |   |   +- api -- 前端 API 目录\n|   |   |   |   +- api.js -- 前端 API 定义文件，用于与后端进行交互。\n|   |   |   +- App.vue -- Vue.js 应用程序的根组件。\n|   |   |   +- assets -- 前端资源目录\n|   |   |   |   +- css -- CSS 样式文件目录。\n|   |   |   |   +- imgs -- 图片文件目录。\n|   |   |   |   +- logo.png -- 前端应用程序的 Logo 图片文件。\n|   |   |   +- components -- Vue.js 组件目录。\n|   |   |   +- main.js -- Vue.js 应用程序的入口文件。\n|   |   |   +- plugins -- Vue.js 插件目录\n|   |   |   |   +- element.js -- Element UI 插件定义文件。\n|   |   |   +- Vue.js 路由目录\n|   |   |   |   +- Vue.js 路由定义文件。\n|   |   +- vue.config.js -- Vue CLI 配置文件。\n|   +- README.md -- 项目的说明文档。\n|   +- sql -- 数据库脚本目录\n|   |   +- exam_system.sql -- 考试系统的数据库脚本。\n|   +- 图片\n```\n\n#### 后端技术栈\n\n| 技术                             | 版本            | 说明                          |\n|--------------------------------|---------------|-----------------------------|\n| Spring Boot Starter Parent     | 2.2.7.RELEASE | Spring Boot 父依赖版本       |\n| Spring Boot Starter Web        | -             | Spring Boot Web Starter       |\n| MySQL Connector/J              | -             | MySQL 数据库驱动              |\n| Log4j                          | 1.2.17        | 日志框架                      |\n| Aliyun SDK OSS                 | 2.8.2         | 阿里云对象存储 SDK            |\n| Lombok                         | -             | Java 实用工具库               |\n| Java JWT                       | 3.8.2         | JSON Web Token 实现库         |\n| Springfox Swagger2             | 2.9.2         | Swagger API 文档生成器        |\n| Springfox Swagger UI           | 2.9.2         | Swagger UI 页面               |\n| Druid                          | 1.1.22        | 数据库连接池                  |\n| Spring Boot Starter Data Redis | -             | Redis Starter                 |\n| MyBatis Plus                   | 3.0.5         | MyBatis 增强工具              |\n| Spring Boot Starter Test       | -             | Spring Boot 测试 Starter      |\n\n#### 前端技术栈\n\n| 技术                             | 版本      | 说明                                             |\n|--------------------------------|---------|------------------------------------------------|\n| axios                          | ^0.20.0 | 基于 Promise 的 HTTP 请求客户端，可用于浏览器和 node.js |\n| core-js                        | ^3.6.5  | JavaScript 标准库的模块化实现                         |\n| echarts                        | ^4.9.0  | 强大、交互式的图表和可视化库                         |\n| element-ui                     | ^2.4.5  | 面向 Web 的 Vue.js 2.0 UI 组件库                     |\n| node-sass                      | ^4.14.1 | libsass 的 Node.js 封装                              |\n| sass-loader                    | ^10.0.3 | 加载 Sass/SCSS 文件并将其编译为 CSS                   |\n| vue                            | ^2.6.11 | 逐渐被采用的渐进式 JavaScript 框架，用于构建 Web 上的 UI |\n| vue-router                     | ^3.2.0  | Vue.js 的官方路由器                                 |\n| @vue/cli-plugin-babel          | ~4.5.0  | Vue CLI 的 Babel 插件                              |\n| @vue/cli-plugin-eslint        | ~4.5.0  | Vue CLI 的 ESlint 插件                             |\n| @vue/cli-plugin-router        | ~4.5.0  | Vue CLI 的 Vue Router 插件                         |\n| @vue/cli-service              | ~4.5.0  | 用于开发和构建的本地服务                             |\n| @vue/eslint-config-standard   | ^5.1.2  | JavaScript Standard Style 的 ESLint 可共享配置       |\n| babel-eslint                  | ^10.1.0 | ESLint 的自定义解析器                                |\n| babel-plugin-component         | ^1.1.1  | 可定制的模块化 babel 插件，用于按需导入 Element-UI 组件 |\n| eslint-plugin-import          | ^2.20.2 | 帮助验证正确导入的 ESLint 插件                        |\n| eslint-plugin-node            | ^11.1.0 | Node.js 的其他 ESLint 规则                           |\n| eslint-plugin-promise         | ^4.2.1  | 强制执行 JavaScript promises 的最佳实践             |\n| eslint-plugin-standard        | ^4.0.0  | JavaScript 社区标准的 ESLint 插件                     |\n| eslint-plugin-vue             | ^6.2.2  | Vue.js 官方的 ESLint 插件                            |\n| vue-cli-plugin-element        | ^1.0.1  | Element-UI 的 Vue CLI 插件                          |\n| vue-template-compiler         | ^2.6.11 | 将 Vue.js 模板编译成渲染函数的编译器                  |\n\n#### 安装教程\n1.  在navicat中运行数据库脚本生成对应的数据库表\n2.  在src/main/resources/application.yml文件里更改数据库(Redis/Mysql)名称或数据库密码\n3.  在pom.xml文件的父目录运行 mvn clean spring-boot:run 启动后端\n4.  启动前端 你可以在package.json的父目录执行下如命令 或者 直接在IDEA里点击也可运行 值得一提的是后两命令分别是打包命令和检查修复命令\n\n```\nnpm install\n```\n```\nnpm run serve\n```\n```\nnpm run build\n```\n```\nnpm run lint\n```\n+ 如下图所示\n\n![](Images/后端启动_1.png)\n![](Images/后端启动_2.png)\n![](Images/前端启动_1.png)\n![](Images/前端启动_2.png)\n![](Images/Redis.png)\n![](Images/postman_1.png)\n\n#### 登录账户\n\n用户名：admin\n密码：12345\n\n#### 截图\n\n![](Images/exam_1.png)\n![](Images/exam_2.png)\n![](Images/exam_3.png)\n![](Images/exam_4.png)\n![](Images/exam_5.png)\n![](Images/exam_6.png)\n![](Images/exam_7.png)\n![](Images/exam_8.png)\n![](Images/exam_9.png)\n![](Images/exam_10.png)\n![](Images/exam_11.png)\n![](Images/exam_12.png)\n![](Images/exam_13.png)\n![](Images/exam_14.png)\n![](Images/exam_15.png)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavaobjects%2Fexam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjavaobjects%2Fexam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavaobjects%2Fexam/lists"}