Add files via upload

This commit is contained in:
2025-07-18 22:47:09 +08:00
committed by GitHub
parent 32751daea1
commit c2011266d3
+374 -323
View File
@@ -1,323 +1,374 @@
# 学生成绩管理系统 # 学生成绩管理系统
一个功能完整的C语言学生成绩管理系统,支持学生信息管理、成绩统计分析、用户权限控制等功能。采用高度模块化设计,代码结构清晰,易于维护和扩展。 一个功能完整的C语言学生成绩管理系统,支持学生信息管理、成绩统计分析、用户权限控制等功能。采用高度模块化设计,代码结构清晰,易于维护和扩展。
## 📋 目录 ## 📋 目录
- [功能特性](#功能特性) - [功能特性](#功能特性)
- [系统架构](#系统架构) - [系统架构](#系统架构)
- [安装与编译](#安装与编译) - [安装与编译](#安装与编译)
- [使用说明](#使用说明) - [使用说明](#使用说明)
- [数据格式](#数据格式) - [数据格式](#数据格式)
- [项目结构](#项目结构) - [项目结构](#项目结构)
- [开发指南](#开发指南) - [开发指南](#开发指南)
- [贡献指南](#贡献指南) - [贡献指南](#贡献指南)
## ✨ 功能特性 ## ✨ 功能特性
### 🎯 核心功能 ### 🎯 核心功能
- **学生信息管理**:添加、删除、修改、查询学生信息 - **学生信息管理**:添加、删除、修改、查询学生信息
- **成绩管理**:支持多门课程成绩录入和管理 - **成绩管理**:支持多门课程成绩录入和管理
- **数据持久化**:CSV格式存储,便于查看和编辑 - **数据持久化**:CSV格式存储,便于查看和编辑
- **统计分析**:课程分析、成绩分布、排名统计等 - **统计分析**:课程分析、成绩分布、排名统计等
- **用户管理**:多用户登录、权限控制 - **用户管理**:多用户登录、权限控制
### 🔧 技术特性 ### 🔧 技术特性
- **统一类型管理**v3.0.0版本创建types.h统一管理所有数据结构 - **统一类型管理**v3.0.0版本创建types.h统一管理所有数据结构
- **全局变量优化**:排序参数和统计缓存移至全局作用域,提升性能 - **全局变量优化**:排序参数和统计缓存移至全局作用域,提升性能
- **高度模块化**:v2.2版本完成深度模块化重构,功能模块职责清晰 - **高度模块化**:v2.2版本完成深度模块化重构,功能模块职责清晰
- **工具库分离**:独立的IO、验证、字符串、文件、数学、系统工具模块 - **工具库分离**:独立的IO、验证、字符串、文件、数学、系统工具模块
- **输入验证**:完善的数据校验机制 - **输入验证**:完善的数据校验机制
- **错误处理**:友好的错误提示和异常处理 - **错误处理**:友好的错误提示和异常处理
- **彩色输出**:美观的控制台界面 - **彩色输出**:美观的控制台界面
- **编译优化**:支持直接编译,无需生成中间.o文件 - **编译优化**:支持直接编译,无需生成中间.o文件
- **跨平台**:支持Windows、Linux、macOS - **跨平台**:支持Windows、Linux、macOS
## 🏗️ 系统架构 ## 🏗️ 系统架构
``` ```
学生成绩管理系统 (v3.0.0 统一类型管理架构) 学生成绩管理系统 (v3.0.0 统一类型管理架构)
├── 用户界面层 (UI Layer) ├── 用户界面层 (UI Layer)
│ ├── 主菜单 (main_menu.c) │ ├── 主菜单 (main_menu.c)
│ └── 学生IO操作 (student_io.c) │ └── 学生IO操作 (student_io.c)
├── 业务逻辑层 (Business Layer) ├── 业务逻辑层 (Business Layer)
│ ├── 核心处理器 (core_handlers.c) │ ├── 核心处理器 (core_handlers.c)
│ ├── 学生数据管理 (stu_data.c) │ ├── 学生数据管理 (stu_data.c)
│ ├── 学生CRUD操作 (student_crud.c) │ ├── 学生CRUD操作 (student_crud.c)
│ ├── 学生搜索 (student_search.c) │ ├── 学生搜索 (student_search.c)
│ ├── 统计分析 (statistical_analysis.c) │ ├── 统计分析 (statistical_analysis.c)
│ └── 用户管理 (user_manage.c) │ └── 用户管理 (user_manage.c)
├── 工具库层 (Utility Layer) ├── 工具库层 (Utility Layer)
│ ├── IO工具 (io_utils.c) │ ├── IO工具 (io_utils.c)
│ ├── 验证工具 (validation.c) │ ├── 验证工具 (validation.c)
│ ├── 字符串工具 (string_utils.c) │ ├── 字符串工具 (string_utils.c)
│ ├── 文件工具 (file_utils.c) │ ├── 文件工具 (file_utils.c)
│ ├── 数学工具 (math_utils.c) │ ├── 数学工具 (math_utils.c)
│ └── 系统工具 (system_utils.c) │ └── 系统工具 (system_utils.c)
├── 数据访问层 (Data Layer) ├── 数据访问层 (Data Layer)
│ ├── CSV文件操作 │ ├── CSV文件操作
│ └── 数据验证 │ └── 数据验证
└── 配置层 (Config Layer) └── 配置层 (Config Layer)
├── 统一类型定义 (types.h) - v3.0.0新增 ├── 统一类型定义 (types.h) - v3.0.0新增
├── 系统配置 (config.h) ├── 系统配置 (config.h)
└── 全局变量 (globals.c/h) └── 全局变量 (globals.c/h)
``` ```
## 🚀 安装与编译 ## 🚀 安装与编译
### 环境要求 ### 环境要求
- GCC编译器 4.8+ - GCC编译器 4.8+
- C99标准支持 - C99标准支持
- 操作系统:Windows/Linux/macOS - 操作系统:Windows/Linux/macOS
### 编译步骤 ### 编译步骤
1. **克隆项目** 1. **克隆项目**
```bash ```bash
git clone <repository-url> git clone <repository-url>
cd Stu_scores_system cd Stu_scores_system
``` ```
2. **使用GCC编译** 2. **使用GCC编译**
```bash ```bash
gcc -o student_system.exe main.c stu_data.c student_crud.c student_search.c user_manage.c main_menu.c student_io.c core_handlers.c statistical_analysis.c io_utils.c validation.c string_utils.c file_utils.c math_utils.c system_utils.c globals.c gcc -o student_system.exe main.c student_crud.c student_search.c student_sort.c user_manage.c main_menu.c student_io.c core_handlers.c statistical_analysis.c io_utils.c validation.c string_utils.c file_utils.c math_utils.c system_utils.c globals.c
``` ```
3. **使用Makefile编译(v3.0.0优化版)** 3. **使用Makefile编译(v3.0.0优化版)**
```bash ```bash
make make
``` ```
> **注意**: v3.0.0版本在v2.2直接编译模式基础上,进一步优化了类型管理和依赖关系,编译更加高效。 > **注意**: v3.0.0版本在v2.2直接编译模式基础上,进一步优化了类型管理和依赖关系,编译更加高效。
4. **运行程序** 4. **运行程序**
```bash ```bash
./student_system.exe # Windows ./student_system.exe # Windows
./student_system # Linux/macOS ./student_system # Linux/macOS
``` ```
## 📖 使用说明 ## 📖 使用说明
### 登录系统 ### 登录系统
系统提供两个默认用户: 系统提供两个默认用户:
- **管理员**:用户名 `admin`,密码 `123456`(拥有所有权限) - **管理员**:用户名 `admin`,密码 `123456`(拥有所有权限)
- **教师**:用户名 `teacher`,密码 `password`(基本权限) - **教师**:用户名 `teacher`,密码 `password`(基本权限)
### 主要功能 ### 主要功能
#### 1. 基本功能管理 #### 1. 基本功能管理
- **添加学生**:录入学生基本信息和课程成绩 - **添加学生**:录入学生基本信息和课程成绩
- **删除学生**:根据学号删除学生记录 - **删除学生**:根据学号删除学生记录
- **修改学生**:更新学生信息和成绩 - **修改学生**:更新学生信息和成绩
- **查询学生**:按学号或姓名查找学生 - **查询学生**:按学号或姓名查找学生
- **显示所有学生**:列出所有学生信息 - **显示所有学生**:列出所有学生信息
- **排序功能**:按学号、姓名、总分、平均分排序 - **排序功能**:按学号、姓名、总分、平均分排序
#### 2. 统计分析功能 #### 2. 统计分析功能
- **课程分析**:各科目成绩统计 - **课程分析**:各科目成绩统计
- **成绩分布**:分数段分布统计 - **成绩分布**:分数段分布统计
- **成绩区间**:优秀、良好、及格、不及格统计 - **成绩区间**:优秀、良好、及格、不及格统计
- **综合分析**:整体成绩概况 - **综合分析**:整体成绩概况
#### 3. 管理功能(仅管理员) #### 3. 管理功能(仅管理员)
- **用户管理**:添加、删除用户 - **用户管理**:添加、删除用户
- **密码修改**:修改用户密码 - **密码修改**:修改用户密码
- **权限控制**:管理用户权限级别 - **权限控制**:管理用户权限级别
## 📊 数据格式 ## 📊 数据格式
### CSV文件结构 ### CSV文件结构
学生数据以CSV格式存储在 `data/students.csv` 学生数据以CSV格式存储在 `data/students.csv`
```csv ```csv
学号,姓名,年龄,性别,课程数量,课程1,成绩1,课程2,成绩2,...,总分,平均分 学号,姓名,年龄,性别,课程数量,课程1,成绩1,课程2,成绩2,...,总分,平均分
2021001,张三,20,M,3,数学,85.50,英语,92.00,物理,78.50,258.00,86.00 2021001,张三,20,M,3,数学,85.50,英语,92.00,物理,78.50,258.00,86.00
``` ```
### 用户数据 ### 用户数据
用户信息存储在 `data/users.txt` 用户信息存储在 `data/users.txt`
``` ```
用户名:密码:权限级别 用户名:密码:权限级别
admin:123456:1 admin:123456:1
teacher:password:0 teacher:password:0
``` ```
详细格式说明请参考:[CSV格式文档](../CSV_FORMAT.md) 详细格式说明请参考:[CSV格式文档](../CSV_FORMAT.md)
## 📁 项目结构 ## 📁 项目结构
``` ```
Stu_scores_system/ (v3.0.0 统一类型管理结构) Stu_scores_system/ (v3.0.0 统一类型管理结构)
├── 📁 data/ # 数据文件目录 ├── 📁 .idea/ # IntelliJ IDEA配置目录
│ ├── students.csv # 学生数据(CSV格式) ├── 📁 .vscode/ # VS Code配置目录
│ └── users.txt # 用户数据 ├── 📁 data/ # 数据文件目录
├── 📁 backup/ # 备份目录 │ ├── students.csv # 学生数据(CSV格式)
├── 📁 MD/ # 文档目录 │ └── users.txt # 用户数据
│ ├── README.md # 项目说明 ├── 📁 backup/ # 备份目录
│ └── CSV_FORMAT.md # CSV格式说明 ├── 📁 build/ # 编译输出目录
├── 📁 TXT/ # 文本文档目录 ├── 📁 MD/ # 文档目录
│ ├── 系统说明文档.txt # 系统详细说明 │ ├── README.md # 项目说明
│ └── 代码统计报告.txt # 代码统计分析 │ └── CSV_FORMAT.md # CSV格式说明
├── 📄 main.c # 主程序入口 ├── 📁 TXT/ # 文本文档目录
├── 📄 types.h # 统一数据类型定义(v3.0.0新增) │ ├── 系统说明文档.txt # 系统详细说明
├── 📄 config.h # 系统配置 │ ├── 代码统计报告.txt # 代码统计分析
├── 📄 globals.c/h # 全局变量 │ └── 要求.txt # 需求文档
├── 📄 stu_data.c/h # 学生数据管理 ├── 📄 main.c # 主程序入口
├── 📄 student_crud.c/h # 学生CRUD操作 ├── 📄 types.h # 统一数据类型定义(v3.0.0新增)
├── 📄 student_search.c/h # 学生搜索功能 ├── 📄 config.h # 系统配置
├── 📄 student_io.c/h # 学生IO操作 ├── 📄 globals.c/h # 全局变量管理
├── 📄 statistical_analysis.c/h # 统计分析 ├── 📄 student_crud.c/h # 学生CRUD操作
├── 📄 user_manage.c/h # 用户管理 ├── 📄 student_search.c/h # 学生搜索功能
├── 📄 main_menu.c/h # 菜单系统 ├── 📄 student_sort.c/h # 学生排序功能
├── 📄 core_handlers.c/h # 核心处理器 ├── 📄 student_io.c/h # 学生IO操作
├── 📄 io_utils.c/h # IO工具库 ├── 📄 statistical_analysis.c/h # 统计分析功能
├── 📄 validation.c/h # 验证工具库 ├── 📄 user_manage.c/h # 用户管理
├── 📄 string_utils.c/h # 字符串工具库 ├── 📄 main_menu.c/h # 菜单系统
├── 📄 file_utils.c/h # 文件工具库 ├── 📄 core_handlers.c/h # 核心处理器
├── 📄 math_utils.c/h # 数学工具库 ├── 📄 io_utils.c/h # IO工具库
├── 📄 system_utils.c/h # 系统工具库 ├── 📄 validation.c/h # 数据验证工具库
├── 📄 Makefile # 编译配置(v2.2优化版) ├── 📄 string_utils.c/h # 字符串工具库
── 📄 要求.txt # 需求文档 ── 📄 file_utils.c/h # 文件操作工具库
``` ├── 📄 math_utils.c/h # 数学计算工具库
├── 📄 system_utils.c/h # 系统工具库
## 🛠️ 开发指南 ├── 📄 Makefile # 编译配置(v3.0.0优化版)
└── 📄 student_system.exe # 编译生成的可执行文件
### 代码规范 ```
- 使用C99标准
- 函数命名采用驼峰命名法 ## 🛠️ 开发指南
- 变量命名使用有意义的英文单词
- 每个函数都有详细的注释说明 ### 代码规范
- 模块化设计,职责分离 - 使用C99标准
- 函数命名采用驼峰命名法
### 添加新功能 - 变量命名使用有意义的英文单词
1. 在相应的模块文件中添加函数实现 - 每个函数都有详细的注释说明
2. 在对应的头文件中添加函数声明 - 模块化设计,职责分离
3. 在菜单系统中添加选项
4. 更新配置文件(如需要) ### 添加新功能
5. 编写测试用例 1. 在相应的模块文件中添加函数实现
2. 在对应的头文件中添加函数声明
### 数据结构 3. 在菜单系统中添加选项
```c 4. 更新配置文件(如需要)
typedef struct { 5. 编写测试用例
char studentID[MAX_ID_LENGTH]; // 学号
char name[MAX_NAME_LENGTH]; // 姓名 ### 核心数据结构
int age; // 年龄
char gender; // 性别 #### 学生信息结构体
char courses[MAX_COURSES][MAX_COURSE_NAME_LENGTH]; // 课程 ```c
float scores[MAX_COURSES]; // 成绩 typedef struct {
int courseCount; // 课程数量 char studentID[MAX_ID_LENGTH]; // 学号
float totalScore; // 总分 char name[MAX_NAME_LENGTH]; // 姓名
float averageScore; // 平均分 int age; // 年龄
} Student; char gender; // 性别 ('M'/'F')
``` char courses[MAX_COURSES][MAX_COURSE_NAME_LENGTH]; // 课程名称
float scores[MAX_COURSES]; // 各科成绩
## 🔧 配置说明 int courseCount; // 课程数量
float totalScore; // 总分
### 系统参数(config.h float averageScore; // 平均分
```c } Student;
#define MAX_STUDENTS 1000 // 最大学生数量 ```
#define MAX_COURSES 10 // 每个学生最多课程数
#define MAX_USERS 50 // 最大用户数量 #### 用户信息结构体
#define MAX_LOGIN_ATTEMPTS 3 // 最大登录尝试次数 ```c
``` typedef struct {
char username[MAX_USERNAME_LENGTH]; // 用户名
### 文件路径 char password[MAX_PASSWORD_LENGTH]; // 密码
```c bool isAdmin; // 是否为管理员
#define STUDENTS_FILE "data/students.csv" // 学生数据文件 } User;
#define USERS_FILE "data/users.txt" // 用户数据文件 ```
#define BACKUP_DIR "backup/" // 备份目录
``` #### 统计分析结构体
```c
## 🚨 注意事项 // 课程统计信息
typedef struct {
1. **数据安全**:定期备份数据文件 int studentCount; // 学生人数
2. **权限管理**:谨慎分配管理员权限 float maxScore; // 最高分
3. **输入验证**:系统会自动验证输入数据的合法性 float minScore; // 最低分
4. **文件编码**:CSV文件使用UTF-8编码,支持中文 float totalScore; // 总分
5. **并发访问**:当前版本不支持多用户同时操作 float averageScore; // 平均分
float passRate; // 及格率
## 🐛 常见问题 } CourseStats;
### Q: 编译时出现错误怎么办? // 分数分布统计
A: 确保所有源文件都在同一目录下,并检查GCC版本是否支持C99标准。 typedef struct {
int excellent; // 优秀(90-100分)
### Q: 数据文件损坏怎么办? int good; // 良好(80-89分)
A: 可以从backup目录恢复备份文件,或者手动编辑CSV文件修复数据。 int medium; // 中等(70-79分)
int pass; // 及格(60-69分)
### Q: 忘记管理员密码怎么办? int fail; // 不及格(0-59分)
A: 可以直接编辑 `data/users.txt` 文件重置密码。 } ScoreDistribution;
### Q: 如何导入现有的学生数据? // 总体统计信息
A: 按照CSV格式要求编辑 `data/students.csv` 文件,程序会自动读取。 typedef struct {
int totalStudents; // 学生总数
## 🤝 贡献指南 int maleCount; // 男生人数
int femaleCount; // 女生人数
欢迎提交Issue和Pull Request float averageAge; // 平均年龄
float highestAverage; // 最高平均分
1. Fork本项目 float lowestAverage; // 最低平均分
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) float overallAverageScore; // 总体平均分
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) float standardDeviation; // 标准差
4. 推送到分支 (`git push origin feature/AmazingFeature`) int totalCourses; // 课程总数
5. 开启Pull Request float averageCoursesPerStudent; // 人均课程数
} OverallStats;
## 📄 许可证 ```
本项目采用MIT许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🔧 配置说明
## 👥 作者 ### 系统参数(config.h
```c
- **开发者** - 学生成绩管理系统 #define MAX_STUDENTS 1000 // 最大学生数量
- **联系方式** - [3364451258@qq.com] #define MAX_COURSES 10 // 每个学生最多课程数
#define MAX_USERS 50 // 最大用户数量
## 🙏 致谢 #define MAX_LOGIN_ATTEMPTS 3 // 最大登录尝试次数
```
感谢所有为这个项目做出贡献的开发者!
### 文件路径
--- ```c
#define STUDENTS_FILE "data/students.csv" // 学生数据文件
**版本**: v3.0.0 #define USERS_FILE "data/users.txt" // 用户数据文件
**最后更新**: 2025年 #define BACKUP_DIR "backup/" // 备份目录
**状态**: 稳定版本 ```
## 🆕 v3.0.0 更新内容 ## 🚨 注意事项
### 🏗️ 统一类型管理系统 1. **数据安全**:定期备份数据文件
- **types.h创建**:集中管理所有数据结构定义,包括Student、User、CourseStats、ScoreDistribution、StudentRank、OverallStats、StatisticsCache 2. **权限管理**:谨慎分配管理员权限
- **重复定义消除**:移除config.h、globals.h、statistical_analysis.h中的重复结构体定义 3. **输入验证**:系统会自动验证输入数据的合法性
- **依赖关系优化**:简化头文件包含关系,避免循环依赖问题 4. **文件编码**:CSV文件使用UTF-8编码,支持中文
5. **并发访问**:当前版本不支持多用户同时操作
### 🔧 全局变量优化
- **排序参数全局化**:将currentSortCriteria和currentSortOrder移至全局作用域 ## 🐛 常见问题
- **统计缓存全局化**:将statsCache移至全局管理,提升性能和数据一致性
- **架构一致性**:统一全局变量管理策略,提高代码可维护性 ### Q: 编译时出现错误怎么办?
A: 确保所有源文件都在同一目录下,并检查GCC版本是否支持C99标准。
### ⚡ 编译和维护性提升
- **编译效率优化**:减少头文件依赖,加快编译速度 ### Q: 数据文件损坏怎么办?
- **代码一致性**:统一的数据类型管理,降低维护成本 A: 可以从backup目录恢复备份文件,或者手动编辑CSV文件修复数据。
- **扩展性增强**:为后续功能扩展奠定坚实的架构基础
### Q: 忘记管理员密码怎么办?
## 🆕 v2.2.0 更新内容 A: 可以直接编辑 `data/users.txt` 文件重置密码。
### 🔧 模块化重构 ### Q: 如何导入现有的学生数据?
- **auxiliary.c完全拆分**:原有的辅助功能模块已完全模块化,拆分为6个专门的工具库 A: 按照CSV格式要求编辑 `data/students.csv` 文件,程序会自动读取。
- **新增工具库模块**
- `io_utils`: 输入输出工具函数 ## 🤝 贡献指南
- `validation`: 数据验证工具函数
- `string_utils`: 字符串处理工具函数 欢迎提交Issue和Pull Request
- `file_utils`: 文件操作工具函数
- `math_utils`: 数学计算工具函数 1. Fork本项目
- `system_utils`: 系统相关工具函数 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
- **功能模块细分** 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
- `student_crud`: 学生增删改操作 4. 推送到分支 (`git push origin feature/AmazingFeature`)
- `student_search`: 学生查询功能 5. 开启Pull Request
- `student_io`: 学生数据输入输出
## 📄 许可证
### ⚡ 编译优化
- **Makefile优化**:采用直接编译模式,不再生成中间.o文件 本项目采用MIT许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
- **编译效率提升**:简化编译流程,减少文件管理复杂度
- **更清洁的构建**:避免.o文件堆积,保持项目目录整洁 ## 👥 作者
### 📈 代码质量提升 - **开发者** - 学生成绩管理系统
- **模块职责更清晰**:每个模块功能单一,便于维护 - **联系方式** - [3364451258@qq.com]
- **代码复用性增强**:工具库函数可在多个模块间共享
- **依赖关系优化**:减少模块间的耦合度 ## 🙏 致谢
感谢所有为这个项目做出贡献的开发者!
---
**版本**: v3.0.0
**最后更新**: 2025年
**状态**: 稳定版本
## 🆕 v3.0.0 更新内容
### 🏗️ 统一类型管理系统
- **types.h创建**:集中管理所有数据结构定义,包括Student、User、CourseStats、ScoreDistribution、StudentRank、OverallStats、StatisticsCache
- **重复定义消除**:移除config.h、globals.h、statistical_analysis.h中的重复结构体定义
- **依赖关系优化**:简化头文件包含关系,避免循环依赖问题
### 🔧 全局变量优化
- **排序参数全局化**:将currentSortCriteria和currentSortOrder移至全局作用域
- **统计缓存全局化**:将statsCache移至全局管理,提升性能和数据一致性
- **架构一致性**:统一全局变量管理策略,提高代码可维护性
### ⚡ 编译和维护性提升
- **编译效率优化**:减少头文件依赖,加快编译速度
- **代码一致性**:统一的数据类型管理,降低维护成本
- **扩展性增强**:为后续功能扩展奠定坚实的架构基础
## 🆕 v2.2.0 更新内容
### 🔧 模块化重构
- **auxiliary.c完全拆分**:原有的辅助功能模块已完全模块化,拆分为6个专门的工具库
- **新增工具库模块**
- `io_utils`: 输入输出工具函数
- `validation`: 数据验证工具函数
- `string_utils`: 字符串处理工具函数
- `file_utils`: 文件操作工具函数
- `math_utils`: 数学计算工具函数
- `system_utils`: 系统相关工具函数
- **功能模块细分**
- `student_crud`: 学生增删改操作
- `student_search`: 学生查询功能
- `student_io`: 学生数据输入输出
### ⚡ 编译优化
- **Makefile优化**:采用直接编译模式,不再生成中间.o文件
- **编译效率提升**:简化编译流程,减少文件管理复杂度
- **更清洁的构建**:避免.o文件堆积,保持项目目录整洁
### 📈 代码质量提升
- **模块职责更清晰**:每个模块功能单一,便于维护
- **代码复用性增强**:工具库函数可在多个模块间共享
- **依赖关系优化**:减少模块间的耦合度