# student_system **Repository Path**: yeshhs/student_system ## Basic Information - **Project Name**: student_system - **Description**: 学生学籍管理系统课程设计报告 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-04-18 - **Last Updated**: 2026-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: 学生学籍管理系统课程设计报告 ## README # 学生学籍管理系统课程设计报告 **项目名称**:学生学籍管理系统 **开发技术**:Spring Boot 3 + MyBatis-Plus + MySQL + 原生前端 **完成时间**:2026年4月 --- ## 一、概述 ### 1.1 项目背景 随着教育信息化的快速发展,传统的手工管理学生学籍信息的方式已经无法满足现代学校管理的需求。学生信息管理涉及学生档案、课程选择、成绩记录等多个方面,数据量大且关系复杂。为了提高管理效率,减少人工错误,实现信息化管理,开发了本学生学籍管理系统。 ### 1.2 项目目标 本系统旨在构建一个功能完善、操作简便的学生学籍管理平台,实现以下目标: 1. **信息化管理**:将学生、教师、课程、成绩等信息数字化存储 2. **权限分级**:区分管理员、教师、学生三种角色,提供不同功能权限 3. **流程自动化**:自动处理选课、成绩统计等业务流程 4. **数据可视化**:通过Web界面直观展示各类信息 5. **高效查询**:支持多维度快速检索和统计分析 ### 1.3 技术选型 #### 后端技术栈 - **Spring Boot 3.2.4**:主框架,提供快速开发能力 - **MyBatis-Plus 3.5.5**:ORM框架,简化数据库操作 - **MySQL 8.0**:关系型数据库,存储业务数据 - **Spring Security**:安全框架,提供基础安全防护 - **Knife4j 4.4.0**:API文档工具,基于OpenAPI 3.0 - **Lombok**:代码简化工具 - **JDK 17**:Java运行环境 #### 前端技术栈 - **HTML5 + CSS3**:页面结构与样式 - **原生JavaScript (ES6+)**:交互逻辑 - **Fetch API**:HTTP请求 - **LocalStorage**:本地数据存储 #### 开发工具 - **IntelliJ IDEA**:集成开发环境 - **Maven 3.9.x**:项目构建与依赖管理 - **Git**:版本控制 ### 1.4 系统架构 系统采用前后端分离的B/S架构: ``` ┌─────────────────────────────────┐ │ 表现层 (Frontend) │ │ HTML + CSS + JavaScript │ └──────────────┬──────────────────┘ │ HTTP/JSON (RESTful API) ┌──────────────▼──────────────────┐ │ 控制层 (Controller) │ │ TestController │ └──────────────┬──────────────────┘ │ ┌──────────────▼──────────────────┐ │ 业务层 (Service) │ │ *Service + *ServiceImpl │ └──────────────┬──────────────────┘ │ ┌──────────────▼──────────────────┐ │ 数据层 (Mapper) │ │ MyBatis-Plus BaseMapper │ └──────────────┬──────────────────┘ │ ┌──────────────▼──────────────────┐ │ 数据库 (MySQL) │ └─────────────────────────────────┘ ``` --- ## 二、需求分析 ### 2.1 功能性需求 #### 2.1.1 用户管理模块 **管理员功能:** - 管理员登录/注册 - 修改密码 - 创建班级(班级名称、年级、专业) - 添加课程(课程名称、代码、学分、授课教师) - 批量录入学生成绩 - 查询班级信息(按年级、按班级ID) **教师功能:** - 教师登录/注册 - 修改密码 - 添加自己教授的课程 - 批量录入所教课程的学生成绩 - 查看课程成绩排名 **学生功能:** - 学生登录/注册 - 修改密码 - 浏览可选课程 - 选择课程 - 查看已选课程 - 查询个人成绩单 #### 2.1.2 班级管理模块 - 创建新班级,包含班级ID、名称、年级、专业等信息 - 按年级查询该年级的班级列表 - 查询指定班级的学生人数 - 班级信息自动记录创建和更新时间 #### 2.1.3 课程管理模块 - 添加新课程,设置课程名称、代码、学分、授课教师 - 学生浏览所有可选课程 - 学生选择感兴趣的课程 - 学生查看已选课程列表 - 防止重复选课 #### 2.1.4 成绩管理模块 - 批量录入学生成绩(支持一次录入多条) - 查询某课程的平均成绩 - 查询学生的个人成绩单 - 查看某课程的成绩排名 - 成绩等级可视化展示(优秀/良好/及格/不及格) ### 2.2 非功能性需求 #### 2.2.1 性能需求 - 系统响应时间不超过2秒 - 支持至少100个并发用户 - 数据库查询优化,使用索引提高查询效率 #### 2.2.2 安全性需求 - 用户密码明文存储(生产环境应加密) - 防止SQL注入(使用MyBatis-Plus参数化查询) - 角色权限隔离,不同角色只能访问授权功能 #### 2.2.3 可用性需求 - 界面简洁友好,操作简单直观 - 提供明确的操作反馈和错误提示 - 支持主流浏览器(Chrome、Firefox、Edge) #### 2.2.4 可维护性需求 - 代码结构清晰,遵循分层架构 - 注释完整,便于后续维护 - 使用标准RESTful API设计 ### 2.3 数据需求 #### 核心数据实体 1. **学生 (Student)** - 学号、姓名、密码、性别、年龄、电话、班级ID、入学时间 2. **教师 (Teacher)** - 教师号、姓名、密码、性别、电话 3. **管理员 (SysUser)** - 用户名、密码 4. **班级 (Clazz)** - 班级ID、班级名称、年级、专业 5. **课程 (Course)** - 课程ID、课程名称、课程代码、学分、教师ID 6. **成绩 (Score)** - 学生ID、课程ID、分数 --- ## 三、系统设计 ### 3.1 总体设计 #### 3.1.1 系统架构图 ``` ┌────────────────────────────────────────────┐ │ 客户端层 │ │ ┌──────────┐ ┌──────────┐ │ │ │ index.html│ │dashboard │ │ │ │ (登录注册)│ │ (控制台) │ │ │ └──────────┘ └──────────┘ │ └────────────────┬───────────────────────────┘ │ RESTful API (JSON) ┌────────────────▼───────────────────────────┐ │ 应用服务层 │ │ ┌──────────────────────────────┐ │ │ │ TestController │ │ │ │ - 用户认证接口 │ │ │ │ - 班级管理接口 │ │ │ │ - 课程管理接口 │ │ │ │ - 成绩管理接口 │ │ │ └──────────────────────────────┘ │ └────────────────┬───────────────────────────┘ │ ┌────────────────▼───────────────────────────┐ │ 业务逻辑层 │ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │Student │ │Teacher │ │ SysUser│ │ │ │Service │ │Service │ │Service │ │ │ └────────┘ └────────┘ └────────┘ │ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │ Clazz │ │ Course │ │ Score │ │ │ │Service │ │Service │ │Service │ │ │ └────────┘ └────────┘ └────────┘ │ └────────────────┬───────────────────────────┘ │ ┌────────────────▼───────────────────────────┐ │ 数据访问层 │ │ ┌──────────────────────────────┐ │ │ │ MyBatis-Plus Mapper │ │ │ │ - StudentMapper │ │ │ │ - TeacherMapper │ │ │ │ - ClazzMapper │ │ │ │ - CourseMapper │ │ │ │ - ScoreMapper │ │ │ └──────────────────────────────┘ │ └────────────────┬───────────────────────────┘ │ ┌────────────────▼───────────────────────────┐ │ 数据存储层 │ │ MySQL Database │ └────────────────────────────────────────────┘ ``` #### 3.1.2 技术架构特点 1. **分层架构**:清晰的表现层、控制层、业务层、数据层分离 2. **RESTful API**:统一的接口设计规范 3. **MyBatis-Plus增强**:继承IService获得完整CRUD能力 4. **Lambda查询**:类型安全的查询方式,避免硬编码 5. **前后端分离**:独立部署,降低耦合度 ### 3.2 数据库设计 #### 3.2.1 概念模型(E-R图) 主要实体及关系: - 学生 - 班级:多对一(多个学生属于一个班级) - 学生 - 课程:多对多(通过成绩表关联) - 教师 - 课程:一对多(一个教师教授多门课程) - 课程 - 成绩:一对多(一门课程有多个成绩记录) #### 3.2.2 物理模型(数据表结构) **1. 学生表 (student)** ```sql CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, student_id VARCHAR(50) UNIQUE NOT NULL COMMENT '学号', student_name VARCHAR(50) NOT NULL COMMENT '姓名', student_password VARCHAR(100) NOT NULL COMMENT '密码', sex VARCHAR(10) COMMENT '性别', age VARCHAR(10) COMMENT '年龄', phone VARCHAR(20) COMMENT '电话', class_id BIGINT COMMENT '班级ID', in_time VARCHAR(50) COMMENT '入学时间', create_time DATE COMMENT '创建时间', update_time DATE COMMENT '更新时间' ); ``` **2. 教师表 (teacher)** ```sql CREATE TABLE teacher ( id BIGINT PRIMARY KEY AUTO_INCREMENT, teacher_id VARCHAR(50) UNIQUE NOT NULL COMMENT '教师号', teacher_name VARCHAR(50) NOT NULL COMMENT '姓名', sex VARCHAR(10) COMMENT '性别', teacher_password VARCHAR(100) NOT NULL COMMENT '密码', phone VARCHAR(20) COMMENT '电话', create_time DATE COMMENT '创建时间', update_time DATE COMMENT '更新时间' ); ``` **3. 管理员表 (sys_user)** ```sql CREATE TABLE sys_user ( id BIGINT PRIMARY KEY AUTO_INCREMENT, sys_username VARCHAR(50) UNIQUE NOT NULL COMMENT '用户名', sys_password VARCHAR(100) NOT NULL COMMENT '密码', create_time DATE COMMENT '创建时间', update_time DATE COMMENT '更新时间' ); ``` **4. 班级表 (clazz)** ```sql CREATE TABLE clazz ( id BIGINT PRIMARY KEY AUTO_INCREMENT, class_name VARCHAR(100) NOT NULL COMMENT '班级名称', grade VARCHAR(20) NOT NULL COMMENT '年级', major VARCHAR(100) COMMENT '专业', create_time VARCHAR(50) COMMENT '创建时间', update_time VARCHAR(50) COMMENT '更新时间' ); ``` **5. 课程表 (course)** ```sql CREATE TABLE course ( id BIGINT PRIMARY KEY AUTO_INCREMENT, course_name VARCHAR(100) NOT NULL COMMENT '课程名称', code VARCHAR(50) COMMENT '课程代码', credit DECIMAL(3,1) COMMENT '学分', teacher_id BIGINT COMMENT '教师ID', create_time DATETIME COMMENT '创建时间', update_time DATETIME COMMENT '更新时间' ); ``` **6. 成绩表 (score)** ```sql CREATE TABLE score ( id BIGINT PRIMARY KEY AUTO_INCREMENT, student_id BIGINT NOT NULL COMMENT '学生ID', course_id BIGINT NOT NULL COMMENT '课程ID', score DECIMAL(5,2) COMMENT '成绩', create_time DATETIME COMMENT '创建时间', update_time DATETIME COMMENT '更新时间', UNIQUE KEY uk_student_course (student_id, course_id) ); ``` ### 3.3 接口设计 #### 3.3.1 用户认证接口 | 接口路径 | 请求方式 | 功能描述 | 参数类型 | |---------|---------|---------|---------| | /login_student | POST | 学生登录 | @RequestBody | | /login_teacher | POST | 教师登录 | @RequestBody | | /login_admin | POST | 管理员登录 | @RequestBody | | /register_student | POST | 学生注册 | @RequestBody | | /register_teacher | POST | 教师注册 | @RequestBody | | /register_admin | POST | 管理员注册 | @RequestBody | | /changPassword_student | POST | 学生改密 | @RequestBody | | /changPassword_teacher | POST | 教师改密 | @RequestBody | | /changPassword_admin | POST | 管理员改密 | @RequestBody | #### 3.3.2 班级管理接口 | 接口路径 | 请求方式 | 功能描述 | 参数类型 | |---------|---------|---------|---------| | /create_clazz | POST | 创建班级 | @RequestBody | | /getClazzByGrade | POST | 按年级查询 | @RequestParam | | /getClazzCount | POST | 查询班级人数 | @RequestParam | #### 3.3.3 课程管理接口 | 接口路径 | 请求方式 | 功能描述 | 参数类型 | |---------|---------|---------|---------| | /addCourse | POST | 添加课程 | @RequestBody | | /listAvailable | POST | 查询可选课程 | @RequestParam | | /listSelected | POST | 查询已选课程 | @RequestParam | | /selectCourse | POST | 学生选课 | @RequestParam | #### 3.3.4 成绩管理接口 | 接口路径 | 请求方式 | 功能描述 | 参数类型 | |---------|---------|---------|---------| | /batchRecord | POST | 批量录入成绩 | @RequestBody | | /averageScore | POST | 查询平均成绩 | @RequestParam | | /listByStudentId | POST | 查询学生成绩 | @RequestParam | | /rankByCourse | POST | 课程成绩排名 | @RequestParam | ### 3.4 类设计 #### 3.4.1 实体类(Entity) 采用Lombok简化代码,使用MyBatis-Plus注解映射数据库表: ```java @Data @TableName("student") public class Student { @TableId(type = IdType.AUTO) private Integer id; private String studentId; private String studentName; // ... 其他字段 } ``` #### 3.4.2 Mapper接口 继承BaseMapper获得基础CRUD能力: ```java @Mapper public interface StudentMapper extends BaseMapper { // 自定义查询方法(如有需要) } ``` #### 3.4.3 Service层 采用接口+实现类模式,继承IService: ```java public interface StudentService extends IService { Student login(String studentId, String password); boolean register(Student student); // ... 其他业务方法 } @Service public class StudentServiceImpl extends ServiceImpl implements StudentService { // 业务逻辑实现 } ``` #### 3.4.4 Controller层 统一在TestController中提供RESTful接口: ```java @RestController public class TestController { @Autowired private StudentService studentService; @PostMapping("/login_student") public String loginStudent(@RequestBody Student student) { // 处理登录逻辑 } } ``` --- ## 四、功能实现与测试 ### 4.1 核心功能实现 #### 4.1.1 用户登录功能 **实现思路:** 1. 前端收集用户输入的账号密码 2. 通过Fetch API发送POST请求到后端 3. 后端使用LambdaQueryWrapper构建查询条件 4. 返回用户对象或null 5. 前端根据结果跳转或提示错误 **关键代码:** 后端Service实现: ```java @Override public Student login(String studentId, String password) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Student::getStudentId, studentId) .eq(Student::getStudentPassword, password); return getOne(wrapper); } ``` 前端调用: ```javascript const result = await api.loginStudent(studentId, password); if (result === '登录成功!') { localStorage.setItem('userId', studentId); window.location.href = 'dashboard.html'; } ``` **测试结果:** - ✅ 正确账号密码登录成功 - ✅ 错误密码提示"用户名或密码错误" - ✅ 不存在的账号提示错误 --- #### 4.1.2 学生注册功能 **实现思路:** 1. 检查学号是否已存在 2. 设置创建时间和更新时间 3. 调用MyBatis-Plus的save方法插入数据 **关键代码:** ```java @Override public boolean register(Student student) { if(isStudentIdExist(student.getStudentId())){ return false; } student.setCreateTime(LocalDate.now()); student.setUpdateTime(LocalDate.now()); return save(student); } ``` **测试结果:** - ✅ 新学号注册成功 - ✅ 已存在学号提示"学生已存在" - ✅ 必填字段验证通过 --- #### 4.1.3 学生选课功能 **实现思路:** 1. 接收学生ID和课程ID(URL参数) 2. 检查是否已选该课程 3. 在score表中插入记录(初始成绩为空) **关键代码:** ```java @PostMapping("/selectCourse") public String selectCourse(@RequestParam Long studentId, Long courseId) { if (courseService.selectCourse(studentId, courseId)) { return "选课成功!"; } else { return "选课失败!"; } } ``` **测试结果:** - ✅ 未选课程可以成功选择 - ✅ 已选课程提示失败 - ✅ 选课后可在"我的课程"中查看 --- #### 4.1.4 成绩查询功能 **实现思路:** 1. 根据学生ID查询score表 2. 关联course表获取课程信息 3. 返回成绩列表 4. 前端根据分数显示不同颜色标签 **关键代码:** ```java public List listByStudentId(Long studentId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Score::getStudentId, studentId); return list(wrapper); } ``` 前端成绩标签: ```javascript let scoreClass = 'score-fail'; if (scoreValue >= 90) scoreClass = 'score-excellent'; else if (scoreValue >= 80) scoreClass = 'score-good'; else if (scoreValue >= 60) scoreClass = 'score-pass'; ``` **测试结果:** - ✅ 正确显示学生所有成绩 - ✅ 成绩颜色标识正确(优秀蓝色、良好绿色、及格橙色、不及格红色) - ✅ 无成绩时显示"暂无成绩记录" --- #### 4.1.5 批量录入成绩功能 **实现思路:** 1. 前端动态添加多条成绩记录 2. 提交JSON数组到后端 3. 后端遍历数组批量插入 4. 利用唯一键约束实现覆盖更新 **关键代码:** ```java public boolean batchRecord(List scores) { for (Score score : scores) { score.setCreateTime(LocalDateTime.now()); score.setUpdateTime(LocalDateTime.now()); saveOrUpdate(score); } return true; } ``` **测试结果:** - ✅ 单次可录入多条成绩 - ✅ 重复录入会覆盖原成绩 - ✅ 录入成功后可立即查询 --- ### 4.2 系统测试 #### 4.2.1 测试环境 - **操作系统**:Windows 11 - **JDK版本**:17.0.x - **数据库**:MySQL 8.0 - **浏览器**:Chrome 120+ - **服务器端口**:5566 #### 4.2.2 功能测试用例 | 测试模块 | 测试项 | 测试步骤 | 预期结果 | 实际结果 | |---------|-------|---------|---------|---------| | 用户登录 | 学生登录 | 输入正确学号密码 | 登录成功,跳转到控制台 | ✅ 通过 | | 用户登录 | 密码错误 | 输入错误密码 | 提示"用户名或密码错误" | ✅ 通过 | | 用户注册 | 学生注册 | 填写完整信息提交 | 注册成功 | ✅ 通过 | | 用户注册 | 重复注册 | 使用已存在学号 | 提示"学生已存在" | ✅ 通过 | | 班级管理 | 创建班级 | 填写班级信息 | 创建成功 | ✅ 通过 | | 课程管理 | 学生选课 | 点击选课按钮 | 提示"选课成功" | ✅ 通过 | | 课程管理 | 重复选课 | 选择已选课程 | 提示"选课失败" | ✅ 通过 | | 成绩查询 | 查看成绩 | 进入成绩查询页 | 显示成绩列表 | ✅ 通过 | | 成绩录入 | 批量录入 | 添加多条成绩提交 | 录入成功 | ✅ 通过 | | 修改密码 | 正确改密 | 输入正确原密码 | 提示"修改密码成功" | ✅ 通过 | | 修改密码 | 错误原密码 | 输入错误原密码 | 提示"修改密码失败" | ✅ 通过 | #### 4.2.3 兼容性测试 - ✅ Chrome浏览器:正常显示和操作 - ✅ Edge浏览器:正常显示和操作 - ✅ Firefox浏览器:正常显示和操作 - ✅ 移动端浏览器:基本可用(响应式待优化) #### 4.2.4 性能测试 - 登录响应时间:< 500ms - 查询课程列表:< 1s - 批量录入10条成绩:< 2s - 并发10用户:系统稳定运行 --- ### 4.3 遇到的问题与解决方案 #### 问题1:数据库字段缺失 **问题描述:** 运行时出现 `Unknown column 'clazz_id' in 'field list'` 错误 **原因分析:** 实体类中定义了 `clazz_id` 字段,但数据库表中没有该列 **解决方案:** 移除 `clazz_id` 字段,改用数据库自增 `id` 作为班级标识,同时修改Student表的 `class_id` 字段类型为BIGINT --- #### 问题2:Service层空指针异常 **问题描述:** Controller中手动new Service实例导致NullPointerException **原因分析:** Spring管理的Bean不能使用new关键字创建,必须通过依赖注入 **解决方案:** 使用 `@Autowired` 注解自动注入Service实例: ```java @Autowired private StudentService studentService; ``` --- #### 问题3:前端角色切换样式问题 **问题描述:** 点击角色按钮后,未选中按钮文字变成白色不可见 **原因分析:** CSS中未给 `.role-btn` 设置默认文字颜色 **解决方案:** 添加 `color: #333;` 确保未选中状态文字为深灰色 --- #### 问题4:Maven打包失败 **问题描述:** WAR包启动时报错 `Could not find or load main class ${start-class}` **原因分析:** Maven资源过滤未正确配置,变量未被替换 **解决方案:** 改用JAR包方式打包,在pom.xml中明确指定 `` --- ## 五、课程设计总结 ### 5.1 项目成果 通过本次课程设计,成功完成了一个功能完整的学生学籍管理系统,主要成果包括: 1. **完整的系统实现** - 实现了用户管理、班级管理、课程管理、成绩管理等核心功能 - 支持三种角色(管理员、教师、学生)的权限分离 - 提供了友好的Web界面和流畅的用户体验 2. **规范的代码结构** - 采用标准的三层架构(Controller-Service-Mapper) - 使用MyBatis-Plus简化数据访问层开发 - 代码注释完整,易于理解和维护 3. **良好的扩展性** - RESTful API设计,便于前端调用 - 模块化设计,各功能相对独立 - 易于添加新功能或修改现有功能 ### 5.2 技术收获 #### 5.2.1 Spring Boot框架应用 - 掌握了Spring Boot项目的快速搭建和配置 - 理解了依赖注入(DI)和面向切面编程(AOP)的思想 - 学会了使用注解简化开发(@RestController、@Autowired、@Service等) #### 5.2.2 MyBatis-Plus实践 - 熟悉了MyBatis-Plus的基本用法和优势 - 掌握了IService和BaseMapper提供的CRUD方法 - 学会了使用LambdaQueryWrapper进行类型安全查询 - 理解了自动填充、逻辑删除等高级特性 #### 5.2.3 前后端分离开发 - 掌握了RESTful API的设计原则 - 学会了使用Fetch API进行异步请求 - 理解了JSON数据格式的序列化和反序列化 - 掌握了LocalStorage进行客户端状态管理 #### 5.2.4 数据库设计 - 学会了根据需求设计合理的数据库表结构 - 理解了主键、外键、唯一约束的作用 - 掌握了索引优化查询性能的方法 ### 5.3 不足与改进 #### 5.3.1 当前不足 1. **安全性不够完善** - 密码明文存储,存在安全风险 - 缺少JWT Token认证机制 - 没有防止CSRF攻击的措施 2. **功能不够丰富** - 缺少数据统计和报表功能 - 没有Excel导入导出功能(虽然引入了EasyExcel依赖) - 缺少消息通知功能 3. **用户体验待优化** - 界面较为简单,美观度有待提升 - 缺少加载动画和过渡效果 - 移动端适配不完善 4. **代码质量** - 所有接口集中在一个Controller中,应按模块拆分 - 缺少统一的异常处理机制 - 缺少日志记录 #### 5.3.2 改进方向 1. **安全性增强** - 使用BCrypt加密存储密码 - 实现JWT Token认证和刷新机制 - 添加接口访问频率限制 2. **功能扩展** - 实现数据统计看板(图表展示) - 添加Excel批量导入学生信息 - 实现成绩分析和趋势预测 3. **界面优化** - 引入UI框架(如Element Plus、Ant Design) - 添加响应式设计,适配移动端 - 优化交互动画和用户体验 4. **架构优化** - 按模块拆分Controller - 实现全局异常处理器 - 添加AOP日志记录 - 引入单元测试和集成测试 ### 5.4 心得体会 通过本次课程设计,我深刻体会到了软件开发的完整流程,从需求分析、系统设计到编码实现、测试调试,每个环节都至关重要。 **最大的收获:** 1. **理论与实践结合**:将课堂所学的Spring Boot、MyBatis等知识应用到实际项目中,加深了理解 2. **问题解决能力**:遇到了很多意想不到的bug,通过查阅文档、搜索解决方案,提高了独立解决问题的能力 3. **工程化思维**:学会了如何组织项目结构、如何编写可维护的代码、如何进行版本控制 **遇到的挑战:** - 初期对MyBatis-Plus的使用不熟悉,通过阅读官方文档和示例代码逐步掌握 - 前后端联调时遇到跨域问题,通过配置CORS解决 - 数据库表结构设计不合理导致后期频繁修改,认识到前期设计的重要性 **未来展望:** 希望继续深入学习微服务架构、分布式系统等高级主题,将本项目改造为更完善的企业管理级应用。同时也希望能学习更多前端框架,提升全栈开发能力。 --- ## 参考文献 1. Spring Boot官方文档. https://spring.io/projects/spring-boot 2. MyBatis-Plus官方文档. https://baomidou.com/ 3. 疯狂Java讲义. 李刚著. 电子工业出版社 4. Spring Boot实战. Craig Walls著. 人民邮电出版社 --- **报告完成日期**:2026年4月18日