Create README.md
This commit is contained in:
@@ -0,0 +1,253 @@
|
|||||||
|
# 学生成绩管理系统
|
||||||
|
|
||||||
|
一个功能完整的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. **克隆项目**
|
||||||
|
```bash
|
||||||
|
git clone <repository-url>
|
||||||
|
cd Stu_scores_system
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **使用GCC编译**
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **使用Makefile编译**
|
||||||
|
```bash
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
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/
|
||||||
|
├── 📁 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. 编写测试用例
|
||||||
|
|
||||||
|
### 数据结构
|
||||||
|
```c
|
||||||
|
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)
|
||||||
|
```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) 文件了解详情。
|
||||||
|
|
||||||
|
## 👥 作者
|
||||||
|
|
||||||
|
- **开发者** - 学生成绩管理系统
|
||||||
|
- **联系方式** - [your-email@example.com]
|
||||||
|
|
||||||
|
## 🙏 致谢
|
||||||
|
|
||||||
|
感谢所有为这个项目做出贡献的开发者!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**版本**: v1.0.0
|
||||||
|
**最后更新**: 2024年
|
||||||
|
**状态**: 稳定版本
|
||||||
Reference in New Issue
Block a user