Online-Prüfungssystem
Entwicklungsumgebung
Umgebung konfigurieren
Programm | Version | veranschaulichen |
---|
Jdk | 1.8.0 161 | Java-Entwicklungskit |
MySQL | 5.5.27 | relationale Datenbank |
Redis | 7.0.5 | nicht relationale Datenbank |
Apache-Maven | 3.9.0 | Java-Projektmanagement- und Build-Tools |
Nvm | 1.10 | Node.js-Versionsmanager |
Knoten | 8.12.0 | Node.js JavaScript-Laufzeitumgebung |
Entwicklungstools
Werkzeug | Version | veranschaulichen |
---|
IDEE | 2022.3.2 | Back-End- und Front-End-Entwicklungs-IDE |
Git | 2.24.1 | Code-Hosting-Plattform |
Google Chrome | 75.0.3770.100 | Browser, Front-End-Debugging-Tools |
Navicat | 11.1.13 | Datenbankverbindungstool |
Briefträger | 7.1.0 | Schnittstellentesttools |
VMware Workstation Pro | 14.1.3 | Virtuelle Maschine (nicht verwendet, vielleicht werden Sie sie verwenden) |
PowerDesigner | 15 | Datenbank-Design-Tool (wird nicht verwendet, vielleicht werden Sie es verwenden) |
SQLyog | 12.0.3 | Datenbankverbindungstool (wird nicht verwendet, vielleicht werden Sie es verwenden) |
Visio | 2013 | Sequenzdiagramme, Flussdiagramme und andere Zeichenwerkzeuge (falls nicht verwendet, werden Sie sie vielleicht verwenden) |
ProcessOn | —— | Zeichenwerkzeuge wie Architekturdiagramme (werden nicht verwendet, vielleicht werden Sie sie verwenden) |
XMind ZEN | 9.2.0 | Mindmapping-Tool (wird nicht verwendet, vielleicht werden Sie es verwenden) |
RedisDesktop | 0.9.3.817 | Redis-Client-Verbindungstool (wird nicht verwendet, vielleicht werden Sie es verwenden) |
Codierungsstandards
- Standardisierter Ansatz: Halten Sie sich strikt an die Kodierungskonventionen von Alibaba.
- Einheitliche Benennung: Durch die Einleitung wird ein bestmögliches Verständnis des Namens erreicht.
- Klare Unterauftragsvergabe: Durch die klare Hierarchie können Sie den Code-Standort schnell finden.
- Vollständige Kommentare: Eine hohe Beschreibungsdichte reduziert die Arbeitsbelastung des Entwicklers beim Lesen des Codes erheblich.
- Tool-Spezifikationen: Verwenden Sie einheitliche JAR-Pakete, um Inhaltskonflikte zu vermeiden.
- Sauberer Code: gut lesbar und wartbar.
Paketstruktur
- 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-Technologie-Stack
Technologie | Version | veranschaulichen |
---|
Spring Boot Starter Parent | 2.2.7.FREIGABE | Die übergeordnete Abhängigkeitsversion von Spring Boot |
Spring Boot Starter-Web | - | Spring Boot Web Starter |
MySQL Connector/J | - | MySQL-Datenbanktreiber |
Log4j | 1.2.17 | Protokollierungsframework |
Aliyun SDK OSS | 2.8.2 | Alibaba Cloud Object Storage SDK |
Lombok | - | Java-Dienstprogrammbibliothek |
Java JWT | 3.8.2 | JSON-Web-Token-Implementierungsbibliothek |
Springfox Swagger2 | 2.9.2 | Swagger-API-Dokumentationsgenerator |
Springfox Swagger-Benutzeroberfläche | 2.9.2 | Swagger-UI-Seite |
Druide | 1.1.22 | Datenbankverbindungspool |
Spring Boot Starter Data Redis | - | Redis-Starter |
MyBatis Plus | 3.0.5 | MyBatis-Erweiterungstools |
Spring Boot Starter-Test | - | Spring-Boot-Teststarter |
Front-End-Technologie-Stack
Technologie | Version | veranschaulichen |
---|
Axios | ^0.20.0 | Promise-basierter HTTP-Anfrage-Client, verfügbar für Browser und node.js |
core-js | ^3.6.5 | Modulare Implementierung der JavaScript-Standardbibliothek |
Echarts | ^4.9.0 | Leistungsstarke, interaktive Diagramm- und Visualisierungsbibliothek |
element-ui | ^2.4.5 | Vue.js 2.0 UI-Komponentenbibliothek für das Web |
Node-Sass | ^4.14.1 | Node.js-Wrapper für libsass |
Sass-Loader | ^10.0.3 | Laden Sie Sass/SCSS-Dateien und kompilieren Sie sie in CSS |
vue | ^2.6.11 | Progressives JavaScript-Framework, das zunehmend für die Erstellung von Benutzeroberflächen im Web eingesetzt wird |
Vue-Router | ^3.2.0 | Der offizielle Router für Vue.js |
@vue/cli-plugin-babel | ~4.5.0 | Babel-Plugin für Vue CLI |
@vue/cli-plugin-eslint | ~4.5.0 | ESlint-Plugin für Vue CLI |
@vue/cli-plugin-router | ~4.5.0 | Vue Router-Plugin für Vue CLI |
@vue/cli-service | ~4.5.0 | Lokale Dienstleistungen für Entwicklung und Bau |
@vue/eslint-config-standard | ^5.1.2 | Gemeinsam nutzbare ESLint-Konfiguration für den JavaScript-Standardstil |
babel-eslint | ^10.1.0 | Benutzerdefinierter Parser für ESLint |
babel-plugin-komponente | ^1.1.1 | Anpassbares modulares Babel-Plug-in zum Importieren von Element-UI-Komponenten bei Bedarf |
eslint-plugin-import | ^2.20.2 | Hilfe bei der Überprüfung korrekt importierter ESLint-Plugins |
eslint-plugin-node | ^11.1.0 | Andere ESLint-Regeln für Node.js |
eslint-plugin-promise | ^4.2.1 | Best Practices zur Durchsetzung von JavaScript-Versprechen |
eslint-plugin-standard | ^4.0.0 | JavaScript-Community-Standard-ESLint-Plug-in |
eslint-plugin-vue | ^6.2.2 | Vue.js offizielles ESLint-Plug-in |
vue-cli-plugin-element | ^1.0.1 | Vue CLI-Plugin für Element-UI |
vue-template-compiler | ^2.6.11 | Ein Compiler, der Vue.js-Vorlagen in Rendering-Funktionen kompiliert |
Installationsanleitung
- Führen Sie das Datenbankskript in Navicat aus, um die entsprechende Datenbanktabelle zu generieren
- Ändern Sie den Datenbanknamen (Redis/Mysql) oder das Datenbankkennwort in der Datei src/main/resources/application.yml
- Führen Sie mvn clean spring-boot:run im übergeordneten Verzeichnis der Datei pom.xml aus, um das Backend zu starten
- Um das Frontend zu starten, können Sie den folgenden Befehl im übergeordneten Verzeichnis von package.json ausführen oder direkt in IDEA klicken, um ihn auszuführen. Erwähnenswert ist, dass die letzten beiden Befehle der Paketierungsbefehl und der Prüf- und Reparaturbefehl sind.
Anmeldekonto
Benutzername: admin Passwort: 12345
Screenshot