![Java 8](https://images.downcodes.com/uploads/20250124/img_6792ef72c579a30.png)
Sistema de examen en línea
entorno de desarrollo
Configurar el entorno
programa | Versión | ilustrar |
---|
jdk | 1.8.0 161 | Kit de desarrollo Java |
mysql | 5.5.27 | base de datos relacional |
Redis | 7.0.5 | base de datos no relacional |
experto en apache | 3.9.0 | Herramientas de construcción y gestión de proyectos Java. |
nvm | 1.10 | Administrador de versiones de Node.js |
Nodo | 8.12.0 | Entorno de ejecución de JavaScript Node.js |
herramientas de desarrollo
herramienta | Versión | ilustrar |
---|
IDEA | 2022.3.2 | IDE de desarrollo back-end y front-end |
git | 2.24.1 | Plataforma de alojamiento de código |
Google Chrome | 75.0.3770.100 | Navegador, herramientas de depuración de front-end |
Navegar | 11.1.13 | Herramienta de conexión de base de datos |
Cartero | 7.1.0 | Herramientas de prueba de interfaz |
Estación de trabajo VMware Pro | 14.1.3 | Máquina virtual (no utilizada, tal vez la uses) |
Diseñador de energía | 15 | Herramienta de diseño de bases de datos (no utilizada, tal vez la utilices) |
SQLyog | 12.0.3 | Herramienta de conexión a base de datos (no utilizada, tal vez la uses) |
Visio | 2013 | Diagramas de secuencia, diagramas de flujo y otras herramientas de dibujo (si no las usas, tal vez las uses) |
Proceso activado | —— | Herramientas de dibujo como diagramas de arquitectura (no utilizadas, tal vez las utilices) |
Xmente ZEN | 9.2.0 | Herramienta de mapas mentales (no utilizada, tal vez la uses) |
RedisEscritorio | 0.9.3.817 | Herramienta de conexión del cliente Redis (no utilizada, tal vez la uses) |
Estándares de codificación
- Enfoque estandarizado: respetar estrictamente las convenciones de codificación de Alibaba.
- Denominación unificada: La introducción consigue la mejor comprensión posible del nombre.
- Subcontratación clara: la jerarquía clara le permite localizar rápidamente la ubicación del código.
- Comentarios completos: la alta descriptividad reduce en gran medida la carga de trabajo de lectura de código del desarrollador.
- Especificaciones de la herramienta: utilice paquetes jar unificados para evitar conflictos de contenido.
- Código limpio: altamente legible y mantenible.
Estructura del paquete
- 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 -- 考试系统的数据库脚本。
| +- 图片
Pila de tecnología backend
tecnología | Versión | ilustrar |
---|
Padre inicial de arranque de primavera | 2.2.7.LIBERACIÓN | Versión de dependencia principal de Spring Boot |
Web de inicio de arranque de primavera | - | Iniciador web de arranque de primavera |
Conector MySQL/J | - | Controlador de base de datos MySQL |
Log4j | 1.2.17 | Marco de registro |
Aliyun SDK OSS | 2.8.2 | SDK de almacenamiento de objetos en la nube de Alibaba |
lombok | - | Biblioteca de utilidades Java |
JWT de Java | 3.8.2 | Biblioteca de implementación de token web JSON |
Springfox arrogancia2 | 2.9.2 | Generador de documentación API Swagger |
Interfaz de usuario de Springfox Swagger | 2.9.2 | Página de interfaz de usuario de Swagger |
druida | 1.1.22 | Grupo de conexiones de base de datos |
Redis de datos de inicio de arranque de primavera | - | Iniciador de Redis |
MiBatis Plus | 3.0.5 | Herramientas de mejora de MyBatis |
Prueba de inicio de arranque de primavera | - | Iniciador de prueba de arranque de primavera |
Pila de tecnología front-end
tecnología | Versión | ilustrar |
---|
axios | ^0.20.0 | Cliente de solicitud HTTP basado en promesas, disponible para navegadores y node.js |
núcleo-js | ^3.6.5 | Implementación modular de la biblioteca estándar de JavaScript. |
echarts | ^4.9.0 | Potente biblioteca interactiva de gráficos y visualización. |
elemento-ui | ^2.4.5 | Biblioteca de componentes de interfaz de usuario Vue.js 2.0 para la web |
nodo-descarado | ^4.14.1 | Envoltorio Node.js para libsass |
cargador descarado | ^10.0.3 | Cargue archivos Sass/SCSS y compílelos en CSS |
vista | ^2.6.11 | Se adopta cada vez más un marco de JavaScript progresivo para crear interfaces de usuario en la web |
enrutador vue | ^3.2.0 | El enrutador oficial para Vue.js |
@vue/cli-plugin-babel | ~4.5.0 | Complemento de Babel para Vue CLI |
@vue/cli-plugin-eslint | ~4.5.0 | Complemento ESlint para Vue CLI |
@vue/cli-plugin-enrutador | ~4.5.0 | Complemento de enrutador Vue para Vue CLI |
@vue/cli-servicio | ~4.5.0 | Servicios locales para promoción y construcción. |
@vue/eslint-config-estándar | ^5.1.2 | Configuración compartible de ESLint para el estilo estándar de JavaScript |
babel-eslint | ^10.1.0 | Analizador personalizado para ESLint |
componente-plugin-de-babel | ^1.1.1 | Complemento de babel modular personalizable para importar componentes Element-UI a pedido |
importación-plugin-eslint | ^2.20.2 | Ayuda para verificar los complementos de ESLint importados correctamente |
nodo-plugin-eslint | ^11.1.0 | Otras reglas de ESLint para Node.js |
promesa-plugin-eslint | ^4.2.1 | Mejores prácticas para hacer cumplir las promesas de JavaScript |
estándar-complemento-eslint | ^4.0.0 | Complemento ESLint estándar de la comunidad JavaScript |
eslint-plugin-vue | ^6.2.2 | Complemento ESLint oficial de Vue.js |
elemento-plugin-vue-cli | ^1.0.1 | Complemento Vue CLI para Element-UI |
compilador-de-plantillas-vue | ^2.6.11 | Un compilador que compila plantillas de Vue.js en funciones de renderizado |
Tutorial de instalación
- Ejecute el script de la base de datos en navicat para generar la tabla de base de datos correspondiente
- Cambie el nombre de la base de datos (Redis/Mysql) o la contraseña de la base de datos en el archivo src/main/resources/application.yml
- Ejecute mvn clean spring-boot:run en el directorio principal del archivo pom.xml para iniciar el backend
- Para iniciar la interfaz, puede ejecutar el siguiente comando en el directorio principal de package.json o hacer clic directamente en IDEA para ejecutarlo. Vale la pena mencionar que los dos últimos comandos son el comando de empaquetado y el comando de verificación y reparación.
- Como se muestra a continuación
![](https://images.downcodes.com/uploads/20250124/img_6792ef72c5b6b31.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72c694c32.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72c723a33.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72c788734.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72c823335.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72c926c36.png)
Iniciar sesión en la cuenta
Nombre de usuario: administrador Contraseña: 12345
captura de pantalla
![](https://images.downcodes.com/uploads/20250124/img_6792ef72ca78a37.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72cce5938.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72cd6f539.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72cdfd1310.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72ce8b9311.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72cef72312.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72cf607313.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72cfdaa314.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72d0522315.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72d0e1e316.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72d188a317.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72d1f0c318.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72d2691319.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72d2e4b320.png)
![](https://images.downcodes.com/uploads/20250124/img_6792ef72d3679321.png)