266 lines
14 KiB
Plaintext
266 lines
14 KiB
Plaintext
/**
|
||
* @file 学生成绩管理系统
|
||
* @brief C语言学生成绩管理系统
|
||
* @details 支持学生信息管理、成绩统计分析、用户权限控制的完整教务管理系统
|
||
* @author 刘航宇
|
||
* @date 2025-10-7
|
||
* @version 4.2.0
|
||
* @note
|
||
* 1. v4.2.0新增功能(最新版本):
|
||
* - 📦 安装包管理功能,支持Inno Setup和NSIS双重安装方案
|
||
* - 🎯 安装包自动化生成,一键创建Windows安装程序
|
||
* - 📁 安装包输出管理,统一输出到installer/dist目录
|
||
* - 🔧 安装脚本优化,支持自定义安装路径和组件选择
|
||
* 2. v4.1.0功能特性:
|
||
* - 🏗️ 目录结构标准化,创建include/和src/目录分离头文件和源文件
|
||
* - ⚙️ 编译系统优化,更新Makefile支持新目录结构
|
||
* - 📝 文档同步更新,反映新的项目组织方式
|
||
* - 🎯 项目标准化提升,遵循业界标准的C项目目录布局
|
||
* 3. v4.0.0功能特性:
|
||
* - 🔒 密码安全增强,实现SHA-256哈希算法替代明文存储
|
||
* - 🛡️ 缓冲区保护,修复所有溢出风险,替换不安全函数
|
||
* - ✅ 输入验证强化,加强所有用户输入的验证和边界检查
|
||
* - 🧹 内存安全管理,添加安全内存清除功能防止数据残留
|
||
* - 🔐 新增安全模块security_utils.c/h,提供完整安全工具库
|
||
* - 🎯 增强验证函数,支持课程名称、用户名、密码强度检查
|
||
* - 🏗️ 统一类型管理系统,创建types.h集中管理所有数据结构
|
||
* - 🔧 全局变量优化,将排序参数和统计缓存移至全局作用域
|
||
* - 📦 结构体定义重构,消除重复定义,提升代码一致性
|
||
* 4. v2.2功能(前版本):
|
||
* - 🧩 auxiliary.c完全模块化拆分,提升代码可维护性
|
||
* - ⚡ Makefile优化,支持直接编译模式,无需生成.o文件
|
||
* - 🔧 六大工具模块:io_utils、validation、string_utils、file_utils、math_utils、system_utils
|
||
* - 📦 模块化头文件管理,精确依赖控制
|
||
* - 🚀 编译效率优化,简化构建流程
|
||
* - 🏗️ 代码架构进一步优化,模块职责更加清晰
|
||
* 5. v2.0-v2.1功能:
|
||
* - 📊 CSV格式数据存储,支持Excel直接编辑和查看
|
||
* - 🔗 模块化架构重构,核心功能独立封装
|
||
* - 🛡️ 完善的输入验证和数据校验机制
|
||
* - 📡 跨平台支持(Windows/Linux/macOS)
|
||
* - 🔧 全局变量统一管理,优化代码结构
|
||
* - 📋 宏定义统一管理,消除重复定义
|
||
* 6. 核心管理功能:
|
||
* - 增加了对学生信息的完整CRUD操作支持
|
||
* - 新增了多维度成绩统计分析功能
|
||
* - 添加了用户权限管理,支持管理员和普通用户
|
||
* - 实现了数据持久化,支持CSV格式导入导出
|
||
* - 支持多门课程成绩管理和自动计算总分平均分
|
||
* 3. 性能优化:
|
||
* - 🚀 优化了数据查询算法,提高大数据量处理效率
|
||
* - 🎨 改进了界面渲染,增加彩色输出和美观显示
|
||
* - 💾 增加了内存管理优化,避免内存泄漏问题
|
||
* - ⚡ 文件I/O优化,支持大容量数据快速读写
|
||
* - 🔍 智能搜索算法,支持模糊查询和多条件筛选
|
||
* 4. 用户界面改进:
|
||
* - 🎮 美化了管理界面,增加了更多的视觉效果
|
||
* - ⌨️ 改进了用户交互体验,增加了输入提示和验证
|
||
* - 🔊 添加了操作反馈,提升用户操作体验
|
||
* - 💬 友好的错误提示和帮助信息
|
||
* - 📊 清晰的数据展示和统计图表
|
||
* 5. 代码结构优化(v2.2重大更新):
|
||
* - 🏗️ 重构了代码架构,采用分层设计模式
|
||
* - 📝 增加了详细的注释和文档,便于理解和修改
|
||
* - 🧩 采用了完全模块化设计,各功能模块完全独立
|
||
* - 🌍 新增核心处理器模块,统一业务逻辑管理
|
||
* - 🔧 全局状态统一管理,消除代码重复
|
||
* - 📋 配置文件标准化,支持灵活配置
|
||
* - ⚡ auxiliary.c拆分为6个专业模块,职责单一
|
||
* - 🎯 精确依赖管理,每个文件只包含必需的头文件
|
||
* - 🚀 编译系统优化,支持直接编译和增量编译两种模式
|
||
* 6. 数据管理功能:
|
||
* - 📁 CSV格式数据存储,便于数据交换和备份
|
||
* - 🔍 支持按学号、姓名、成绩等多维度查询
|
||
* - 📊 丰富的统计分析功能,包括课程分析、成绩分布等
|
||
* - 🔄 数据排序功能,支持多种排序方式
|
||
* - 💾 自动数据备份和恢复机制
|
||
* 7. 安全性增强:
|
||
* - 🛡️ 用户登录验证,支持多用户权限管理
|
||
* - 🔐 密码安全存储,防止明文泄露
|
||
* - 🚫 输入数据验证,防止非法数据录入
|
||
* - 🔒 文件访问权限控制,保护数据安全
|
||
* - 📋 操作日志记录,追踪用户行为
|
||
* 8. 统计分析功能:
|
||
* - 📈 课程成绩统计,包括最高分、最低分、平均分
|
||
* - 📊 成绩分布分析,按分数段统计学生人数
|
||
* - 🏆 学生排名功能,支持总分和单科排名
|
||
* - 📉 成绩趋势分析,跟踪学生成绩变化
|
||
* - 🎯 综合评价体系,多维度评估学生表现
|
||
* 9. 异常处理:
|
||
* - 🛡️ 增加了输入错误的异常处理机制,确保系统稳定性
|
||
* - 💡 优化了错误提示信息,帮助用户快速定位问题
|
||
* - 🔄 增加了程序崩溃恢复功能,提高系统可靠性
|
||
* - 📁 文件操作异常处理,防止数据丢失
|
||
* - 🔧 内存分配异常处理,确保程序稳定运行
|
||
* 10. 文档更新:
|
||
* - 📚 更新了README文件,提供详细的安装和使用说明
|
||
* - 💬 增加了代码注释,提高代码的可读性
|
||
* - 👨💻 添加了开发者文档,便于后续的功能扩展
|
||
* - 📋 新增CSV格式使用指南和配置说明
|
||
* - 🔧 API文档完善,支持二次开发
|
||
* 11. 版本控制:
|
||
* - 📦 使用Git进行版本控制,便于代码管理和协作开发
|
||
* - 🚀 建立了清晰的版本发布流程,确保代码质量
|
||
* - 🏷️ v2.0重大版本更新,CSV存储和模块化里程碑
|
||
* - 📋 完整的变更日志,追踪功能演进
|
||
* 12. 测试:
|
||
* - ✅ 进行了全面的功能测试,确保各项功能正常运行
|
||
* - 🧪 增加了单元测试,提高代码的可靠性
|
||
* - ⚡ 进行了性能测试,优化了程序的运行效率
|
||
* - 📊 数据处理压力测试,确保大数据量处理稳定性
|
||
* - 🔒 安全性测试,验证用户权限和数据保护
|
||
* 13. 跨平台支持:
|
||
* - 🖥️ Windows平台完全支持,包括PowerShell和CMD
|
||
* - 🐧 Linux平台兼容,支持各主流发行版
|
||
* - 🍎 macOS平台支持,确保跨平台一致性
|
||
* - 🔧 编译器兼容性,支持GCC、Clang等主流编译器
|
||
* - 📁 文件系统兼容,自动适配不同平台路径格式
|
||
* 14. 数据格式支持:
|
||
* - 📊 CSV格式主存储,便于Excel等工具编辑
|
||
* - 📄 TXT格式用户数据,简单高效
|
||
* - 💾 二进制格式备份,确保数据完整性
|
||
* - 🔄 格式转换工具,支持多种数据格式互转
|
||
* - 📋 数据导入导出功能,便于数据迁移
|
||
* 15. 开源协议:
|
||
* - 📄 选择了MIT开源协议,允许用户自由使用、修改和分发代码
|
||
* - 🤝 欢迎社区贡献,共同完善项目
|
||
* - 🌟 开源社区友好,支持二次开发和定制
|
||
* 16. 系统架构:
|
||
* - 🏗️ 分层架构设计:UI层、业务逻辑层、数据访问层、安装包管理层、配置层
|
||
* - 🧩 模块化组件:学生管理、统计分析、用户管理、文件操作
|
||
* - 🔧 核心处理器:统一的业务逻辑处理中心
|
||
* - 📋 配置管理:集中的参数配置和宏定义管理
|
||
* - 🌍 全局状态:统一的全局变量和状态管理
|
||
* - 📦 安装包管理:Inno Setup和NSIS双重安装方案
|
||
* - 🏗️ 安装包管理层详解(v4.1.0新增):
|
||
* • 安装脚本管理:统一的安装包生成脚本
|
||
* • Inno Setup方案:功能全面的现代化安装包
|
||
* • NSIS方案:轻量级高压缩率安装包
|
||
* • 路径管理:相对路径设计,支持目录重组
|
||
* • 输出管理:统一的安装包输出目录
|
||
* • 版本控制:安装包版本信息管理
|
||
* • 多语言支持:简体中文安装界面
|
||
* • 组件选择:可选择性安装不同组件
|
||
* - 🔧 配置层详解:
|
||
* • 头文件管理:统一的头文件目录结构
|
||
* • 类型定义:集中的数据类型定义 (types.h)
|
||
* • 系统配置:全局配置参数管理 (config.h)
|
||
* • 全局变量:统一的全局状态管理 (globals.h)
|
||
* • 宏定义:系统级宏定义和常量
|
||
* 17. 功能模块详解(v2.2模块化架构):
|
||
* - 👥 学生管理模块:增删改查、信息验证、数据校验
|
||
* - 📊 统计分析模块:多维度统计、图表展示、趋势分析
|
||
* - 🔐 用户管理模块:登录验证、权限控制、密码管理
|
||
* - 📁 文件操作模块:CSV读写、数据备份、格式转换
|
||
* - 🎨 界面显示模块:彩色输出、表格显示、交互优化
|
||
* - 🔧 工具模块详解:
|
||
* • io_utils: 输入输出、界面显示、用户交互
|
||
* • validation: 数据验证、输入校验、安全检查
|
||
* • string_utils: 字符串处理、文本操作、格式化
|
||
* • file_utils: 文件操作、目录管理、存在性检查
|
||
* • math_utils: 数学计算、统计函数、数值处理
|
||
* • system_utils: 系统初始化、资源管理、清理操作
|
||
* 18. 贡献者:
|
||
* - 👨💻 感谢所有为项目做出贡献的开发者和用户
|
||
* - 🌟 特别感谢CSV格式开发和模块化重构的贡献者
|
||
* - 🧪 感谢测试团队的全面测试和反馈
|
||
* - 📝 感谢文档编写和维护的贡献者
|
||
* 19. 技术栈:
|
||
* - 💻 编程语言:C语言(C11标准)
|
||
* - 🔧 编译器:GCC 4.8+、Clang、MSVC
|
||
* - 📁 数据存储:CSV文件、TXT文件
|
||
* - 🎨 界面技术:控制台彩色输出、ANSI转义序列
|
||
* - 🔧 构建工具:Makefile、GCC直接编译
|
||
* 20. 未来规划:
|
||
* - 🌐 Web界面支持,提供浏览器访问方式
|
||
* - 📱 移动端适配,支持手机和平板设备
|
||
* - 🗄️ 数据库支持,集成MySQL、SQLite等数据库
|
||
* - 📊 高级统计功能,增加更多数据分析工具
|
||
* - 🔗 API接口开发,支持第三方系统集成
|
||
* 21. 联系信息:
|
||
* - 📧 如有问题或建议,请联系开发团队
|
||
* - 🐛 Bug报告和功能建议欢迎通过GitHub Issues反馈
|
||
* - 💡 功能改进建议请详细描述使用场景和需求
|
||
* - 🤝 欢迎加入开发团队,共同完善项目
|
||
* - 📚 技术交流和学习资源分享
|
||
*
|
||
* 22. 贡献者:
|
||
* - 👨💻 感谢所有为项目做出贡献的开发者和用户
|
||
* - 🌟 特别感谢测试的贡献者
|
||
* 23. 联系信息:
|
||
* - 📧 如有问题或建议,请联系开发者:
|
||
* - 3364451258@qq.com
|
||
* - 15236416560@163.com
|
||
* - lhy3364451258@outlook.com
|
||
* - 🐛 Bug报告和功能建议欢迎通过邮件反馈
|
||
* - 💡 网络对战相关问题请详细描述网络环境
|
||
*
|
||
* @copyright Copyright (c) 2025 学生成绩管理系统开发团队
|
||
* @license MIT License
|
||
*
|
||
* 编译命令(v4.2.0目录结构标准化版本):
|
||
* 方式1(推荐):使用Makefile
|
||
* make clean && make
|
||
*
|
||
* 方式2:直接编译
|
||
* gcc -Wall -Wextra -std=c17 -g -Iinclude src/main.c src/globals.c src/main_menu.c src/user_manage.c src/core_handlers.c src/statistical_analysis.c src/student_io.c src/student_crud.c src/student_search.c src/student_sort.c src/io_utils.c src/validation.c src/string_utils.c src/file_utils.c src/math_utils.c src/system_utils.c src/security_utils.c -o student_system
|
||
*
|
||
* 方式3:分步编译(如需要)
|
||
* gcc -Wall -Wextra -std=c17 -g -c -Iinclude src/*.c
|
||
* gcc *.o -o student_system
|
||
*
|
||
* 安装包管理(v4.2.0新增):
|
||
* 方式1:Inno Setup安装包(推荐用于正式发布)
|
||
* - 文件名:StudentGradeSystem_Inno_Setup.exe
|
||
* - 特点:功能全面,现代化界面,支持组件选择
|
||
* - 大小:约1.8MB
|
||
* - 优势:安装体验好,支持多语言,卸载彻底
|
||
* - 适用场景:正式软件发布,企业内部部署
|
||
* - 生成命令:& "D:\Program Files (x86)\Inno Setup 6\ISCC.exe" installer\installer.iss
|
||
*
|
||
* 方式2:NSIS安装包(推荐用于快速分发)
|
||
* - 文件名:StudentGradeSystem_NSIS_Setup.exe
|
||
* - 特点:体积小巧,启动快速,压缩率高达39%
|
||
* - 大小:约177KB
|
||
* - 优势:下载快,占用空间小,适合网络分发
|
||
* - 适用场景:在线下载,移动设备,网络受限环境
|
||
* - 生成命令:& "D:\Program Files (x86)\NSIS\makensis.exe" installer\installer.nsi
|
||
*
|
||
* 安装包特性:
|
||
* - 许可证展示:安装过程显示MIT许可证
|
||
* - 组件选择:可选择安装主程序、示例数据、帮助文档
|
||
* - 快捷方式:自动创建桌面和开始菜单快捷方式
|
||
* - 卸载程序:完整的卸载功能,清理注册表项
|
||
* - 路径检测:自动检测和创建必要的目录结构
|
||
* - 文件关联:可选择关联.csv文件类型(Inno Setup版本)
|
||
* - 多语言支持:简体中文界面
|
||
* - 数字签名:支持代码签名验证(Inno Setup版本)
|
||
* - 极致压缩:39%的高压缩率(NSIS版本)
|
||
* - 兼容性测试:支持Windows 7+所有版本
|
||
* - 输出目录:installer/dist/
|
||
* - 安装包测试:建议在发布前进行安装、功能、卸载、兼容性、权限测试
|
||
*
|
||
* 运行命令:
|
||
* ./student_system.exe (Windows)
|
||
* ./student_system (Linux/macOS)
|
||
*
|
||
* 默认登录信息:
|
||
* 管理员 - 用户名:admin,密码:123456
|
||
* 教师 - 用户名:teacher,密码:password
|
||
*
|
||
* 项目目录结构(v4.2.0标准化):
|
||
* - 源文件:src/目录(所有.c文件)
|
||
* - 头文件:include/目录(所有.h文件)
|
||
* - 学生数据:data/students.csv
|
||
* - 用户数据:data/users.txt
|
||
* - 备份目录:backup/
|
||
* - 文档目录:TXT/、MD/
|
||
*
|
||
* 系统要求:
|
||
* - 操作系统:Windows 7+、Linux、macOS
|
||
* - 编译器:GCC 7.0+、Clang 5.0+、MSVC 2017+(支持C17标准)
|
||
* - 内存:最少64MB可用内存
|
||
* - 存储:最少10MB可用磁盘空间
|
||
* - 终端:支持ANSI颜色代码的终端(推荐)
|
||
* - 支持-Iinclude编译选项
|
||
*/ |