2025-07-12 23:34:22 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:25:20 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:34:22 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00
2025-07-12 23:33:14 +08:00

学生成绩管理系统

一个功能完整的C语言学生成绩管理系统,支持学生信息管理、成绩统计分析、用户权限控制等功能。

📋 目录

功能特性

🎯 核心功能

  • 学生信息管理:添加、删除、修改、查询学生信息
  • 成绩管理:支持多门课程成绩录入和管理
  • 数据持久化CSV格式存储,便于查看和编辑
  • 统计分析:课程分析、成绩分布、排名统计等
  • 用户管理:多用户登录、权限控制

🔧 技术特性

  • 模块化设计:清晰的代码结构,易于维护
  • 输入验证:完善的数据校验机制
  • 错误处理:友好的错误提示和异常处理
  • 彩色输出:美观的控制台界面
  • 跨平台:支持Windows、Linux、macOS

🏗️ 系统架构

学生成绩管理系统
├── 用户界面层 (UI Layer)
│   ├── 主菜单 (main_menu.c)
│   └── 辅助功能 (auxiliary.c)
├── 业务逻辑层 (Business Layer)
│   ├── 核心处理器 (core_handlers.c)
│   ├── 学生数据管理 (stu_data.c)
│   ├── 统计分析 (statistical_analysis.c)
│   └── 用户管理 (user_manage.c)
├── 数据访问层 (Data Layer)
│   ├── CSV文件操作
│   └── 数据验证
└── 配置层 (Config Layer)
    ├── 系统配置 (config.h)
    └── 全局变量 (globals.c/h)

🚀 安装与编译

环境要求

  • GCC编译器 4.8+
  • C99标准支持
  • 操作系统:Windows/Linux/macOS

编译步骤

  1. 克隆项目
git clone <repository-url>
cd Stu_scores_system
  1. 使用GCC编译
gcc -o student_system.exe main.c stu_data.c auxiliary.c statistical_analysis.c main_menu.c globals.c user_manage.c core_handlers.c
  1. 使用Makefile编译
make
  1. 运行程序
./student_system.exe    # Windows
./student_system        # Linux/macOS

📖 使用说明

登录系统

系统提供两个默认用户:

  • 管理员:用户名 admin,密码 123456(拥有所有权限)
  • 教师:用户名 teacher,密码 password(基本权限)

主要功能

1. 基本功能管理

  • 添加学生:录入学生基本信息和课程成绩
  • 删除学生:根据学号删除学生记录
  • 修改学生:更新学生信息和成绩
  • 查询学生:按学号或姓名查找学生
  • 显示所有学生:列出所有学生信息
  • 排序功能:按学号、姓名、总分、平均分排序

2. 统计分析功能

  • 课程分析:各科目成绩统计
  • 成绩分布:分数段分布统计
  • 成绩区间:优秀、良好、及格、不及格统计
  • 综合分析:整体成绩概况

3. 管理功能(仅管理员)

  • 用户管理:添加、删除用户
  • 密码修改:修改用户密码
  • 权限控制:管理用户权限级别

📊 数据格式

CSV文件结构

学生数据以CSV格式存储在 data/students.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格式文档

📁 项目结构

Stu_scores_system/
├── 📁 data/                    # 数据文件目录
│   ├── students.csv           # 学生数据(CSV格式)
│   └── users.txt             # 用户数据
├── 📁 backup/                 # 备份目录
├── 📁 MD/                     # 文档目录
│   ├── README.md             # 项目说明
│   └── CSV_FORMAT.md         # CSV格式说明
├── 📁 core/                   # 核心模块(已整合)
├── 📄 main.c                  # 主程序入口
├── 📄 config.h                # 系统配置
├── 📄 globals.c/h             # 全局变量
├── 📄 stu_data.c/h            # 学生数据管理
├── 📄 statistical_analysis.c/h # 统计分析
├── 📄 user_manage.c/h         # 用户管理
├── 📄 main_menu.c/h           # 菜单系统
├── 📄 auxiliary.c/h           # 辅助功能
├── 📄 core_handlers.c/h       # 核心处理器
├── 📄 Makefile                # 编译配置
└── 📄 要求.txt                # 需求文档

🛠️ 开发指南

代码规范

  • 使用C99标准
  • 函数命名采用驼峰命名法
  • 变量命名使用有意义的英文单词
  • 每个函数都有详细的注释说明
  • 模块化设计,职责分离

添加新功能

  1. 在相应的模块文件中添加函数实现
  2. 在对应的头文件中添加函数声明
  3. 在菜单系统中添加选项
  4. 更新配置文件(如需要)
  5. 编写测试用例

数据结构

typedef struct {
    char studentID[MAX_ID_LENGTH];          // 学号
    char name[MAX_NAME_LENGTH];             // 姓名
    int age;                                // 年龄
    char gender;                            // 性别
    char courses[MAX_COURSES][MAX_COURSE_NAME_LENGTH]; // 课程
    float scores[MAX_COURSES];              // 成绩
    int courseCount;                        // 课程数量
    float totalScore;                       // 总分
    float averageScore;                     // 平均分
} Student;

🔧 配置说明

系统参数(config.h

#define MAX_STUDENTS 1000           // 最大学生数量
#define MAX_COURSES 10              // 每个学生最多课程数
#define MAX_USERS 50                // 最大用户数量
#define MAX_LOGIN_ATTEMPTS 3        // 最大登录尝试次数

文件路径

#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 文件了解详情。

👥 作者

🙏 致谢

感谢所有为这个项目做出贡献的开发者!


版本: v1.0.0
最后更新: 2024年
状态: 稳定版本

S
Description
No description provided
Readme 274 KiB
Languages
C 94.5%
NSIS 3.2%
Makefile 1.2%
Inno Setup 1.1%