Online exam system
development environment
Configure environment
program | Version | illustrate |
---|
Jdk | 1.8.0 161 | Java Development Kit |
Mysql | 5.5.27 | relational database |
Redis | 7.0.5 | non-relational database |
Apache-maven | 3.9.0 | Java project management and build tools |
Nvm | 1.10 | Node.js version manager |
Node | 8.12.0 | Node.js JavaScript runtime environment |
development tools
tool | Version | illustrate |
---|
IDEA | 2022.3.2 | Back-end and front-end development IDE |
Git | 2.24.1 | Code hosting platform |
Google Chrome | 75.0.3770.100 | Browser, front-end debugging tools |
Navicat | 11.1.13 | Database connection tool |
Postman | 7.1.0 | Interface testing tools |
VMware Workstation Pro | 14.1.3 | Virtual machine (not used, maybe you will use it) |
PowerDesigner | 15 | Database design tool (not used, maybe you will use it) |
SQLyog | 12.0.3 | Database connection tool (not used, maybe you will use it) |
Visio | 2013 | Sequence diagrams, flow charts and other drawing tools (if not used, maybe you will use them) |
ProcessOn | —— | Drawing tools such as architecture diagrams (not used, maybe you will use them) |
XMind ZEN | 9.2.0 | Mind mapping tool (not used, maybe you will use it) |
RedisDesktop | 0.9.3.817 | redis client connection tool (not used, maybe you will use it) |
Coding standards
- Standardized approach: Strictly abide by Alibaba coding conventions.
- Unified naming: The introduction achieves the best possible understanding of the name.
- Clear subcontracting: The clear hierarchy allows you to quickly locate the code location.
- Complete comments: High descriptiveness greatly reduces the developer's code reading workload.
- Tool specifications: Use unified jar packages to avoid content conflicts.
- Clean code: highly readable and maintainable.
Package structure
- exam -- 整个项目
| +- .idea -- 存放项目的IDE配置文件
| +- exam-admin -- 考试管理模块
| | +- .idea -- 存放考试管理模块的IDE配置文件
| | +- pom.xml -- Maven项目配置文件
| | +- src -- 存放源代码的目录
| | | +- main -- 主要的源代码目录
| | | | +- java -- Java源代码目录
| | | | | +- com.wzz -- 项目的根包名
| | | | | | +- config -- 配置文件目录
| | | | | | | +- AdminInterceptor.java -- 管理员拦截器,用于拦截管理员相关请求
| | | | | | | +- CorsConfig.java -- 跨域配置,用于允许跨域请求
| | | | | | | +- DruidConfig.java -- Druid数据源配置,用于配置数据库连接池
| | | | | | | +- MybatisPlusConfig.java -- MyBatis Plus配置,用于配置MyBatis Plus相关功能
| | | | | | | +- RedisConfig.java -- Redis配置,用于配置Redis连接和操作
| | | | | | | +- StudentInterceptor.java -- 学生拦截器,用于拦截学生相关请求
| | | | | | | +- SwaggerConfig.java -- Swagger配置,用于生成API文档
| | | | | | | +- TeacherInterceptor.java -- 教师拦截器,用于拦截教师相关请求
| | | | | | | +- WebAppConfigurer.java -- Web应用配置,用于配置Web应用相关设置
| | | | | | | +- controller -- 控制器
| | | | | | | | +- AdminController.java -- 管理员相关的控制器
| | | | | | | | +- CommonController.java -- 通用的控制器
| | | | | | | | +- StudentController.java -- 学生相关的控制器
| | | | | | | | +- TeacherController.java -- 教师相关的控制器
| | | | | | | | +- UtilController.java -- 实用工具相关的控制器
| | | | | | | +- entity -- 实体
| | | | | | | | +- Answer.java -- 答案实体类
| | | | | | | | +- Exam.java -- 考试实体类
| | | | | | | | +- ExamQuestion.java -- 考试题目实体类
| | | | | | | | +- ExamRecord.java -- 考试记录实体类
| | | | | | | | +- Question.java -- 题目实体类
| | | | | | | | +- QuestionBank.java -- 题库实体类
| | | | | | | | +- User.java -- 用户实体类
| | | | | | | | +- UserRole.java -- 用户角色实体
| | | | | | | +- ExamAdminApplication.java -- 应用程序的入口点,用于启动整个应用程序
| | | | | | | +- mapper -- 数据库映射接口目录
| | | | | | | | +- AnswerMapper.java -- 答案实体类的数据库映射接口,用于与数据库进行交互
| | | | | | | | +- ExamMapper.java -- 考试实体类的数据库映射接口,用于与数据库进行交互。
| | | | | | | | +- ExamQuestionMapper.java -- 考试题目实体类的数据库映射接口,用于与数据库进行交互。
| | | | | | | | +- ExamRecordMapper.java -- 考试记录实体类的数据库映射接口,用于与数据库进行交互。
| | | | | | | | +- QuestionBankMapper.java -- 题库实体类的数据库映射接口,用于与数据库进行交互。
| | | | | | | | +- QuestionMapper.java -- 题目实体类的数据库映射接口,用于与数据库进行交互。
| | | | | | | | +- UserMapper.java -- 用户实体类的数据库映射接口,用于与数据库进行交互。
| | | | | | | | +- UserRoleMapper.java -- 用户角色实体类的数据库映射接口,用于与数据库进行交互。
| | | | | | | +- service -- 服务接口目录
| | | | | | | | +- AnswerService.java -- 答案相关的服务接口,定义了答案相关的业务逻辑。
| | | | | | | | +- ExamQuestionService.java -- 考试题目相关的服务接口,定义了考试题目相关的业务逻辑。
| | | | | | | | +- ExamRecordService.java -- 考试记录相关的服务接口,定义了考试记录相关的业务逻辑。
| | | | | | | | +- ExamService.java -- 考试相关的服务接口,定义了考试相关的业务逻辑。
| | | | | | | | +- impl -- 服务接口实现类目录
| | | | | | | | | +- AnswerServiceImpl.java -- 答案相关的服务接口的实现类,实现了答案相关的业务逻辑。
| | | | | | | | | +- ExamQuestionServiceImpl.java -- 考试题目相关的服务接口的实现类,实现了考试题目相关的业务逻辑。
| | | | | | | | | +- ExamRecordServiceImpl.java -- 考试记录相关的服务接口的实现类,实现了考试记录相关的业务逻辑。
| | | | | | | | | +- ExamServiceImpl.java -- 考试相关的服务接口的实现类,实现了考试相关的业务逻辑。
| | | | | | | | | +- QuestionBankServiceImpl.java -- 题库相关的服务接口的实现类,实现了题库相关的业务逻辑。
| | | | | | | | | +- QuestionServiceImpl.java -- 题目相关的服务接口的实现类,实现了题目相关的业务逻辑。
| | | | | | | | | +- UserRoleServiceImpl.java -- 用户角色相关的服务接口的实现类,实现了用户角色相关的业务逻辑。
| | | | | | | | | +- UserServiceImpl.java -- 用户相关的服务接口的实现类,实现了用户相关的业务逻辑。
| | | | | | | | +- QuestionBankService.java -- 题库相关的服务接口,定义了题库相关的业务逻辑。
| | | | | | | | +- QuestionService.java -- 题目相关的服务接口,定义了题目相关的业务逻辑。
| | | | | | | | +- UserRoleService.java -- 用户角色相关的服务接口,定义了用户角色相关的业务逻辑
| | | | | | | | +- UserService.java -- 用户相关的服务接口,定义了用户相关的业务逻辑。
| | | | | | | +- Util -- 实用工具目录
| | | | | | | | +- CheckToken.java -- 检查令牌有效性的工具类。
| | | | | | | | +- createVerificationCode.java -- 生成验证码的工具类。
| | | | | | | | +- OSSUtil.java -- OSS 工具类。
| | | | | | | | +- RedisUtil.java -- Redis 工具类。
| | | | | | | | +- SaltEncryption.java -- 加密工具类。
| | | | | | | | +- TokenUtils.java -- 令牌工具类。
| | | | | | | +- vo -- 值对象目录
| | | | | | | | +- AddExamByBankVo.java -- 根据题库添加考试时的请求参数对象。
| | | | | | | | +- AddExamByQuestionVo.java -- 根据题目添加考试时的请求参数对象。
| | | | | | | | +- BankHaveQuestionSum.java -- 题库包含的题目数量信息对象。
| | | | | | | | +- CommonResult.java -- 通用响应结果对象。
| | | | | | | | +- ExamQueryVo.java -- 考试查询请求参数对象。
| | | | | | | | +- QuestionVo.java -- 题目信息对象。
| | | | | | | | +- TokenVo.java -- 令牌信息对象。
| | | | +- resources -- 资源文件目录
| | | +- test -- 测试代码目录
| | | | +- java -- Java 测试代码目录
| | | | | +- com
| | | | | | +- wzz -- 测试代码包名
| | | | | | | +- ExamAdminApplicationTests.java -- 应用程序测试类,用于测试应用程序的正确性。
| | +- target -- 构建输出目录
| +- exam-vue -- 项目前端
| | +- .browserslistrc -- 浏览器兼容性配置文件。
| | +- .editorconfig -- 编辑器配置文件。
| | +- .eslintrc.js -- ESLint 配置文件。
| | +- .gitignore -- Git 忽略文件列表。
| | +- babel.config.js -- Babel 配置文件。
| | +- debug.log -- 调试日志文件。
| | +- dist -- 前端构建输出目录
| | | +- css -- CSS 样式文件目录。
| | | +- favicon.ico -- 网站图标文件。
| | | +- fonts -- 字体文件目录。
| | | +- img -- 图片文件目录。
| | | +- index.html -- 前端应用程序主页面。
| | | +- js -- JavaScript 脚本文件目录。
| | +- node_modules -- Node.js 模块目录。
| | +- package-lock.json -- NPM 包依赖版本锁定文件。
| | +- package.json -- NPM 包管理配置文件。
| | +- public -- 前端公共资源目录
| | | +- favicon.ico -- 网站图标文件。
| | | +- index.html -- 前端应用程序主页面模板文件。
| | +- src -- 前端源代码目录
| | | +- api -- 前端 API 目录
| | | | +- api.js -- 前端 API 定义文件,用于与后端进行交互。
| | | +- App.vue -- Vue.js 应用程序的根组件。
| | | +- assets -- 前端资源目录
| | | | +- css -- CSS 样式文件目录。
| | | | +- imgs -- 图片文件目录。
| | | | +- logo.png -- 前端应用程序的 Logo 图片文件。
| | | +- components -- Vue.js 组件目录。
| | | +- main.js -- Vue.js 应用程序的入口文件。
| | | +- plugins -- Vue.js 插件目录
| | | | +- element.js -- Element UI 插件定义文件。
| | | +- Vue.js 路由目录
| | | | +- Vue.js 路由定义文件。
| | +- vue.config.js -- Vue CLI 配置文件。
| +- README.md -- 项目的说明文档。
| +- sql -- 数据库脚本目录
| | +- exam_system.sql -- 考试系统的数据库脚本。
| +- 图片
Backend technology stack
technology | Version | illustrate |
---|
Spring Boot Starter Parent | 2.2.7.RELEASE | Spring Boot parent dependency version |
Spring Boot Starter Web | - | Spring Boot Web Starter |
MySQL Connector/J | - | MySQL database driver |
Log4j | 1.2.17 | Logging framework |
Aliyun SDK OSS | 2.8.2 | Alibaba Cloud Object Storage SDK |
Lombok | - | Java utility library |
Java JWT | 3.8.2 | JSON Web Token implementation library |
Springfox Swagger2 | 2.9.2 | Swagger API documentation generator |
Springfox Swagger UI | 2.9.2 | Swagger UI page |
Druid | 1.1.22 | Database connection pool |
Spring Boot Starter Data Redis | - | Redis Starter |
MyBatis Plus | 3.0.5 | MyBatis enhancement tools |
Spring Boot Starter Test | - | Spring Boot Test Starter |
Front-end technology stack
technology | Version | illustrate |
---|
axios | ^0.20.0 | Promise-based HTTP request client, available for browsers and node.js |
core-js | ^3.6.5 | Modular implementation of the JavaScript standard library |
echarts | ^4.9.0 | Powerful, interactive charting and visualization library |
element-ui | ^2.4.5 | Vue.js 2.0 UI component library for the web |
node-sass | ^4.14.1 | Node.js wrapper for libsass |
sass-loader | ^10.0.3 | Load Sass/SCSS files and compile them into CSS |
vue | ^2.6.11 | Progressive JavaScript framework increasingly adopted for building UI on the web |
vue-router | ^3.2.0 | The official router for Vue.js |
@vue/cli-plugin-babel | ~4.5.0 | Babel plugin for Vue CLI |
@vue/cli-plugin-eslint | ~4.5.0 | ESlint plugin for Vue CLI |
@vue/cli-plugin-router | ~4.5.0 | Vue Router plugin for Vue CLI |
@vue/cli-service | ~4.5.0 | Local services for development and builds |
@vue/eslint-config-standard | ^5.1.2 | ESLint shareable configuration for JavaScript Standard Style |
babel-eslint | ^10.1.0 | Custom parser for ESLint |
babel-plugin-component | ^1.1.1 | Customizable modular babel plug-in for importing Element-UI components on demand |
eslint-plugin-import | ^2.20.2 | Help verifying correctly imported ESLint plugins |
eslint-plugin-node | ^11.1.0 | Other ESLint rules for Node.js |
eslint-plugin-promise | ^4.2.1 | Best practices for enforcing JavaScript promises |
eslint-plugin-standard | ^4.0.0 | JavaScript community-standard ESLint plug-in |
eslint-plugin-vue | ^6.2.2 | Vue.js official ESLint plug-in |
vue-cli-plugin-element | ^1.0.1 | Vue CLI plugin for Element-UI |
vue-template-compiler | ^2.6.11 | A compiler that compiles Vue.js templates into rendering functions |
Installation tutorial
- Run the database script in navicat to generate the corresponding database table
- Change the database (Redis/Mysql) name or database password in the src/main/resources/application.yml file
- Run mvn clean spring-boot:run in the parent directory of the pom.xml file to start the backend
- To start the front end, you can execute the following command in the parent directory of package.json or click directly in IDEA to run it. It is worth mentioning that the last two commands are the packaging command and the check and repair command.
Login account
Username: admin Password: 12345
screenshot