From 757e3493d4b0686fa53f2ffa822461e6c7aeb519 Mon Sep 17 00:00:00 2001 From: LHY20 <3364451258@qq.com> Date: Fri, 18 Jul 2025 23:11:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96main=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E5=A3=B0=E6=98=8E=EF=BC=8C=E7=A7=BB=E9=99=A4=E6=9C=AA=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=9A=84=E5=91=BD=E4=BB=A4=E8=A1=8C=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 2 +- MD/README.md | 374 ------------------------------------------ main.c | 2 +- student_system.exe | Bin 109678 -> 109678 bytes 4 files changed, 2 insertions(+), 376 deletions(-) delete mode 100644 MD/README.md diff --git a/.vscode/settings.json b/.vscode/settings.json index d79ed9d..b5adf02 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,7 +4,7 @@ "C_Cpp_Runner.debuggerPath": "gdb", "C_Cpp_Runner.cStandard": "c11", "C_Cpp_Runner.cppStandard": "c++17", - "C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat", + "C_Cpp_Runner.msvcBatchPath": "", "C_Cpp_Runner.useMsvc": false, "C_Cpp_Runner.warnings": [ "-Wall", diff --git a/MD/README.md b/MD/README.md deleted file mode 100644 index e5e99b9..0000000 --- a/MD/README.md +++ /dev/null @@ -1,374 +0,0 @@ -# 学生成绩管理系统 - -一个功能完整的C语言学生成绩管理系统,支持学生信息管理、成绩统计分析、用户权限控制等功能。采用高度模块化设计,代码结构清晰,易于维护和扩展。 - -## 📋 目录 - -- [功能特性](#功能特性) -- [系统架构](#系统架构) -- [安装与编译](#安装与编译) -- [使用说明](#使用说明) -- [数据格式](#数据格式) -- [项目结构](#项目结构) -- [开发指南](#开发指南) -- [贡献指南](#贡献指南) - -## ✨ 功能特性 - -### 🎯 核心功能 -- **学生信息管理**:添加、删除、修改、查询学生信息 -- **成绩管理**:支持多门课程成绩录入和管理 -- **数据持久化**:CSV格式存储,便于查看和编辑 -- **统计分析**:课程分析、成绩分布、排名统计等 -- **用户管理**:多用户登录、权限控制 - -### 🔧 技术特性 -- **统一类型管理**:v3.0.0版本创建types.h统一管理所有数据结构 -- **全局变量优化**:排序参数和统计缓存移至全局作用域,提升性能 -- **高度模块化**:v2.2版本完成深度模块化重构,功能模块职责清晰 -- **工具库分离**:独立的IO、验证、字符串、文件、数学、系统工具模块 -- **输入验证**:完善的数据校验机制 -- **错误处理**:友好的错误提示和异常处理 -- **彩色输出**:美观的控制台界面 -- **编译优化**:支持直接编译,无需生成中间.o文件 -- **跨平台**:支持Windows、Linux、macOS - -## 🏗️ 系统架构 - -``` -学生成绩管理系统 (v3.0.0 统一类型管理架构) -├── 用户界面层 (UI Layer) -│ ├── 主菜单 (main_menu.c) -│ └── 学生IO操作 (student_io.c) -├── 业务逻辑层 (Business Layer) -│ ├── 核心处理器 (core_handlers.c) -│ ├── 学生数据管理 (stu_data.c) -│ ├── 学生CRUD操作 (student_crud.c) -│ ├── 学生搜索 (student_search.c) -│ ├── 统计分析 (statistical_analysis.c) -│ └── 用户管理 (user_manage.c) -├── 工具库层 (Utility Layer) -│ ├── IO工具 (io_utils.c) -│ ├── 验证工具 (validation.c) -│ ├── 字符串工具 (string_utils.c) -│ ├── 文件工具 (file_utils.c) -│ ├── 数学工具 (math_utils.c) -│ └── 系统工具 (system_utils.c) -├── 数据访问层 (Data Layer) -│ ├── CSV文件操作 -│ └── 数据验证 -└── 配置层 (Config Layer) - ├── 统一类型定义 (types.h) - v3.0.0新增 - ├── 系统配置 (config.h) - └── 全局变量 (globals.c/h) -``` - -## 🚀 安装与编译 - -### 环境要求 -- GCC编译器 4.8+ -- C99标准支持 -- 操作系统:Windows/Linux/macOS - -### 编译步骤 - -1. **克隆项目** -```bash -git clone -cd Stu_scores_system -``` - -2. **使用GCC编译** -```bash -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优化版)** -```bash -make -``` - -> **注意**: v3.0.0版本在v2.2直接编译模式基础上,进一步优化了类型管理和依赖关系,编译更加高效。 - -4. **运行程序** -```bash -./student_system.exe # Windows -./student_system # Linux/macOS -``` - -## 📖 使用说明 - -### 登录系统 -系统提供两个默认用户: -- **管理员**:用户名 `admin`,密码 `123456`(拥有所有权限) -- **教师**:用户名 `teacher`,密码 `password`(基本权限) - -### 主要功能 - -#### 1. 基本功能管理 -- **添加学生**:录入学生基本信息和课程成绩 -- **删除学生**:根据学号删除学生记录 -- **修改学生**:更新学生信息和成绩 -- **查询学生**:按学号或姓名查找学生 -- **显示所有学生**:列出所有学生信息 -- **排序功能**:按学号、姓名、总分、平均分排序 - -#### 2. 统计分析功能 -- **课程分析**:各科目成绩统计 -- **成绩分布**:分数段分布统计 -- **成绩区间**:优秀、良好、及格、不及格统计 -- **综合分析**:整体成绩概况 - -#### 3. 管理功能(仅管理员) -- **用户管理**:添加、删除用户 -- **密码修改**:修改用户密码 -- **权限控制**:管理用户权限级别 - -## 📊 数据格式 - -### CSV文件结构 -学生数据以CSV格式存储在 `data/students.csv`: - -```csv -学号,姓名,年龄,性别,课程数量,课程1,成绩1,课程2,成绩2,...,总分,平均分 -2021001,张三,20,M,3,数学,85.50,英语,92.00,物理,78.50,258.00,86.00 -``` - -### 用户数据 -用户信息存储在 `data/users.txt`: -``` -用户名:密码:权限级别 -admin:123456:1 -teacher:password:0 -``` - -详细格式说明请参考:[CSV格式文档](../CSV_FORMAT.md) - -## 📁 项目结构 - -``` -Stu_scores_system/ (v3.0.0 统一类型管理结构) -├── 📁 .idea/ # IntelliJ IDEA配置目录 -├── 📁 .vscode/ # VS Code配置目录 -├── 📁 data/ # 数据文件目录 -│ ├── students.csv # 学生数据(CSV格式) -│ └── users.txt # 用户数据 -├── 📁 backup/ # 备份目录 -├── 📁 build/ # 编译输出目录 -├── 📁 MD/ # 文档目录 -│ ├── README.md # 项目说明 -│ └── CSV_FORMAT.md # CSV格式说明 -├── 📁 TXT/ # 文本文档目录 -│ ├── 系统说明文档.txt # 系统详细说明 -│ ├── 代码统计报告.txt # 代码统计分析 -│ └── 要求.txt # 需求文档 -├── 📄 main.c # 主程序入口 -├── 📄 types.h # 统一数据类型定义(v3.0.0新增) -├── 📄 config.h # 系统配置 -├── 📄 globals.c/h # 全局变量管理 -├── 📄 student_crud.c/h # 学生CRUD操作 -├── 📄 student_search.c/h # 学生搜索功能 -├── 📄 student_sort.c/h # 学生排序功能 -├── 📄 student_io.c/h # 学生IO操作 -├── 📄 statistical_analysis.c/h # 统计分析功能 -├── 📄 user_manage.c/h # 用户管理 -├── 📄 main_menu.c/h # 菜单系统 -├── 📄 core_handlers.c/h # 核心处理器 -├── 📄 io_utils.c/h # IO工具库 -├── 📄 validation.c/h # 数据验证工具库 -├── 📄 string_utils.c/h # 字符串工具库 -├── 📄 file_utils.c/h # 文件操作工具库 -├── 📄 math_utils.c/h # 数学计算工具库 -├── 📄 system_utils.c/h # 系统工具库 -├── 📄 Makefile # 编译配置(v3.0.0优化版) -└── 📄 student_system.exe # 编译生成的可执行文件 -``` - -## 🛠️ 开发指南 - -### 代码规范 -- 使用C99标准 -- 函数命名采用驼峰命名法 -- 变量命名使用有意义的英文单词 -- 每个函数都有详细的注释说明 -- 模块化设计,职责分离 - -### 添加新功能 -1. 在相应的模块文件中添加函数实现 -2. 在对应的头文件中添加函数声明 -3. 在菜单系统中添加选项 -4. 更新配置文件(如需要) -5. 编写测试用例 - -### 核心数据结构 - -#### 学生信息结构体 -```c -typedef struct { - char studentID[MAX_ID_LENGTH]; // 学号 - char name[MAX_NAME_LENGTH]; // 姓名 - int age; // 年龄 - char gender; // 性别 ('M'/'F') - char courses[MAX_COURSES][MAX_COURSE_NAME_LENGTH]; // 课程名称 - float scores[MAX_COURSES]; // 各科成绩 - int courseCount; // 课程数量 - float totalScore; // 总分 - float averageScore; // 平均分 -} Student; -``` - -#### 用户信息结构体 -```c -typedef struct { - char username[MAX_USERNAME_LENGTH]; // 用户名 - char password[MAX_PASSWORD_LENGTH]; // 密码 - bool isAdmin; // 是否为管理员 -} User; -``` - -#### 统计分析结构体 -```c -// 课程统计信息 -typedef struct { - int studentCount; // 学生人数 - float maxScore; // 最高分 - float minScore; // 最低分 - float totalScore; // 总分 - float averageScore; // 平均分 - float passRate; // 及格率 -} CourseStats; - -// 分数分布统计 -typedef struct { - int excellent; // 优秀(90-100分) - int good; // 良好(80-89分) - int medium; // 中等(70-79分) - int pass; // 及格(60-69分) - int fail; // 不及格(0-59分) -} ScoreDistribution; - -// 总体统计信息 -typedef struct { - int totalStudents; // 学生总数 - int maleCount; // 男生人数 - int femaleCount; // 女生人数 - float averageAge; // 平均年龄 - float highestAverage; // 最高平均分 - float lowestAverage; // 最低平均分 - float overallAverageScore; // 总体平均分 - float standardDeviation; // 标准差 - int totalCourses; // 课程总数 - float averageCoursesPerStudent; // 人均课程数 -} OverallStats; -``` - -## 🔧 配置说明 - -### 系统参数(config.h) -```c -#define MAX_STUDENTS 1000 // 最大学生数量 -#define MAX_COURSES 10 // 每个学生最多课程数 -#define MAX_USERS 50 // 最大用户数量 -#define MAX_LOGIN_ATTEMPTS 3 // 最大登录尝试次数 -``` - -### 文件路径 -```c -#define STUDENTS_FILE "data/students.csv" // 学生数据文件 -#define USERS_FILE "data/users.txt" // 用户数据文件 -#define BACKUP_DIR "backup/" // 备份目录 -``` - -## 🚨 注意事项 - -1. **数据安全**:定期备份数据文件 -2. **权限管理**:谨慎分配管理员权限 -3. **输入验证**:系统会自动验证输入数据的合法性 -4. **文件编码**:CSV文件使用UTF-8编码,支持中文 -5. **并发访问**:当前版本不支持多用户同时操作 - -## 🐛 常见问题 - -### Q: 编译时出现错误怎么办? -A: 确保所有源文件都在同一目录下,并检查GCC版本是否支持C99标准。 - -### Q: 数据文件损坏怎么办? -A: 可以从backup目录恢复备份文件,或者手动编辑CSV文件修复数据。 - -### Q: 忘记管理员密码怎么办? -A: 可以直接编辑 `data/users.txt` 文件重置密码。 - -### Q: 如何导入现有的学生数据? -A: 按照CSV格式要求编辑 `data/students.csv` 文件,程序会自动读取。 - -## 🤝 贡献指南 - -欢迎提交Issue和Pull Request! - -1. Fork本项目 -2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) -3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) -4. 推送到分支 (`git push origin feature/AmazingFeature`) -5. 开启Pull Request - -## 📄 许可证 - -本项目采用MIT许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 - -## 👥 作者 - -- **开发者** - 学生成绩管理系统 -- **联系方式** - [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文件堆积,保持项目目录整洁 - -### 📈 代码质量提升 -- **模块职责更清晰**:每个模块功能单一,便于维护 -- **代码复用性增强**:工具库函数可在多个模块间共享 -- **依赖关系优化**:减少模块间的耦合度 \ No newline at end of file diff --git a/main.c b/main.c index 9f2ff0f..72ddf63 100644 --- a/main.c +++ b/main.c @@ -37,7 +37,7 @@ #include "core_handlers.h" #include "student_io.h" -int main(int argc __attribute__((unused)), char *argv[] __attribute__((unused))) +int main() { // 设置控制台编码为UTF-8 #ifdef _WIN32 diff --git a/student_system.exe b/student_system.exe index 0e5fc6ad706cebd2d8437a2c1800dd2d28cb7fd5..97593c1b5a468b0822ee0ff8359a8d27e9ba1be9 100644 GIT binary patch delta 633 zcmaENgYDf7wh0}~!O2w+UxYJte)0A*fO1N9wu{R33V@Nx-A{cMOq_n`)z0CHa> z0bS5~pdMVEqncwS&}jvp$~(^C0_+E};19BA~_$sK(U4K!Z7froWB> zDxCvYssU7!09CUPq~^aB(AZROu&uFBi66iy0;)@ca*Zp23SWx?MQWiU93Y)*e*XVI yp}F=41Ai+E(7!J#-GN>MyTAE}!Q_kLVw<;%tenEQcyr>)Y+uIa&1b(Y+zJ4Af+>ao delta 638 zcmX|;KS/{=d=y;wy^(<-zbila~jmm=E9A@o9tltKfg{y~CJXkCsVF7bx*)N80j zY8MCFLLIbI2@SD0oazBq(?-}iZb@1HOAaz~A zXAA4;SU`XJ^JF}1*s(jB{pvoOh!bfaRdpF3+hMbFM0?d1lCxmMX zXUb9``2bkO^06@IJdYo*_6LaA-%HM+o=COJ<$SN3AS}N3rd2G%=SG3}$}AL?1a}m1 z;iT$!;otBZm1QFbDSLwrtU~ey29#tyafNwl_52G_C`Z_>3t|CctrI~JLDVk5@D&El zK0wV7syKN3EylDiIIoSF5mzx&Zon9XAt&__w9a>6m&Xy;BafxfC%_^=frQpx;t~-p zJ_77WkK4k&DUHZ~o1g;Z00_JN5aF2D_qVtf%)Vsqe#+k)HsTGu<+^x+D-o>-Pg*_Q zY9H9i%zxNf2RI|aDKRV{E}4M!^Nn=?p4ZZ|DLl yWnNYkL2m!&JY%Ms6tZsNUZy|8Y2N;3acJ@|yW5-FP