更新项目文档和配置文件 - 详细化config.h注释,更新README.md项目结构和数据结构说明

This commit is contained in:
2025-07-18 22:43:40 +08:00
parent da0754fbe7
commit f6dcf5c67f
3 changed files with 163 additions and 98 deletions
+2 -2
View File
@@ -8,8 +8,8 @@
"args": [],
"stopAtEntry": false,
"externalConsole": true,
"cwd": "d:/Code/Stu_scores_system",
"program": "d:/Code/Stu_scores_system/build/Debug/outDebug",
"cwd": "d:/Code/doing_exercises/Stu_scores_system",
"program": "d:/Code/doing_exercises/Stu_scores_system/build/Debug/outDebug",
"MIMode": "gdb",
"miDebuggerPath": "gdb",
"setupCommands": [
+65 -14
View File
@@ -80,7 +80,7 @@ cd Stu_scores_system
2. **使用GCC编译**
```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优化版)**
@@ -148,36 +148,40 @@ teacher:password:0
```
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 # 代码统计分析
│ └── 要求.txt # 需求文档
├── 📄 main.c # 主程序入口
├── 📄 types.h # 统一数据类型定义(v3.0.0新增)
├── 📄 config.h # 系统配置
├── 📄 globals.c/h # 全局变量
├── 📄 stu_data.c/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 # 统计分析
├── 📄 statistical_analysis.c/h # 统计分析功能
├── 📄 user_manage.c/h # 用户管理
├── 📄 main_menu.c/h # 菜单系统
├── 📄 core_handlers.c/h # 核心处理器
├── 📄 io_utils.c/h # IO工具库
├── 📄 validation.c/h # 验证工具库
├── 📄 validation.c/h # 数据验证工具库
├── 📄 string_utils.c/h # 字符串工具库
├── 📄 file_utils.c/h # 文件工具库
├── 📄 math_utils.c/h # 数学工具库
├── 📄 file_utils.c/h # 文件操作工具库
├── 📄 math_utils.c/h # 数学计算工具库
├── 📄 system_utils.c/h # 系统工具库
├── 📄 Makefile # 编译配置(v2.2优化版)
└── 📄 要求.txt # 需求文档
├── 📄 Makefile # 编译配置(v3.0.0优化版)
└── 📄 student_system.exe # 编译生成的可执行文件
```
## 🛠️ 开发指南
@@ -196,21 +200,68 @@ Stu_scores_system/ (v3.0.0 统一类型管理结构)
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]; // 成绩
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
+75 -61
View File
@@ -8,92 +8,106 @@
#define CONFIG_H
// 系统配置参数
#define MAX_STUDENTS 1000 // 最大学生数量
#define MAX_COURSES 10 // 每个学生最多课程数
#define MAX_USERS 50 // 最大用户数量
#define MAX_LOGIN_ATTEMPTS 3 // 最大登录尝试次数
// 定义系统中各种实体的数量限制,确保内存使用可控
#define MAX_STUDENTS 1000 // 最大学生数量 - 系统可以存储的学生记录上限
#define MAX_COURSES 10 // 每个学生最多课程数 - 限制单个学生可选修的课程数量
#define MAX_USERS 50 // 最大用户数量 - 系统支持的用户账户上限
#define MAX_LOGIN_ATTEMPTS 3 // 最大登录尝试次数 - 防止暴力破解,超过次数将锁定账户
// 字符串长度限制
#define MAX_ID_LENGTH 20 // 学号最大长度
#define MAX_NAME_LENGTH 50 // 姓名最大长度
#define MAX_COURSE_NAME_LENGTH 50 // 课程名称最大长度
#define MAX_USERNAME_LENGTH 30 // 用户名最大长度
#define MAX_PASSWORD_LENGTH 30 // 密码最大长度
// 定义各种字符串字段的最大长度,防止缓冲区溢出并优化内存分配
#define MAX_ID_LENGTH 20 // 学号最大长度 - 包含终止符,实际可用19个字符
#define MAX_NAME_LENGTH 50 // 姓名最大长度 - 支持中文姓名,包含终止符
#define MAX_COURSE_NAME_LENGTH 50 // 课程名称最大长度 - 支持完整的课程名称描述
#define MAX_USERNAME_LENGTH 30 // 用户名最大长度 - 登录系统使用的用户名
#define MAX_PASSWORD_LENGTH 30 // 密码最大长度 - 用户密码的字符数限制
// 分数相关配置
#define MIN_SCORE 0.0 // 最低分数
#define MAX_SCORE 100.0 // 最分数
#define PASS_SCORE 60.0 // 及格分数
#define EXCELLENT_SCORE 90.0 // 优秀分数
// 定义成绩评价体系的分数范围和等级标准
#define MIN_SCORE 0.0 // 最分数 - 成绩的下限值
#define MAX_SCORE 100.0 // 最高分数 - 成绩的上限值,采用百分制
#define PASS_SCORE 60.0 // 及格分数 - 判断学生是否通过课程的分数线
#define EXCELLENT_SCORE 90.0 // 优秀分数 - 判断学生成绩是否优秀的分数线
// 年龄相关配置
#define MIN_AGE 10 // 最小年龄
#define MAX_AGE 100 // 最年龄
// 定义学生年龄的合理范围,用于数据验证
#define MIN_AGE 10 // 最小年龄 - 考虑到最年轻的学生可能年龄
#define MAX_AGE 100 // 最大年龄 - 考虑到继续教育等特殊情况的年龄上限
// 文件路径配置
#define STUDENTS_FILE "data/students.csv" // 学生数据文件
#define USERS_FILE "data/users.txt" // 用户数据文件
#define BACKUP_DIR "backup/" // 备份目录
// 定义系统使用的数据文件和目录路径
#define STUDENTS_FILE "data/students.csv" // 学生数据文件 - 存储所有学生信息的CSV格式文件
#define USERS_FILE "data/users.txt" // 用户数据文件 - 存储系统用户账户信息
#define BACKUP_DIR "backup/" // 备份目录 - 数据备份文件的存储位置
// 菜单选项定义
#define MENU_EXIT 0
#define MENU_BASIC_FUNCTIONS 1
#define MENU_STATISTICS 2
#define MENU_ADMIN 3
// 主菜单的选项编号,用于用户界面导航
#define MENU_EXIT 0 // 退出系统
#define MENU_BASIC_FUNCTIONS 1 // 基本功能菜单 - 学生信息的增删改查
#define MENU_STATISTICS 2 // 统计分析菜单 - 成绩统计和数据分析
#define MENU_ADMIN 3 // 管理功能菜单 - 用户管理和系统设置
// 基本功能菜单选项
#define BASIC_BACK 0
#define BASIC_ADD_STUDENT 1
#define BASIC_DELETE_STUDENT 2
#define BASIC_MODIFY_STUDENT 3
#define BASIC_SEARCH_BY_ID 4
#define BASIC_SEARCH_BY_NAME 5
#define BASIC_DISPLAY_ALL 6
#define BASIC_SORT_STUDENTS 7
// 学生信息管理的具体操作选项
#define BASIC_BACK 0 // 返回主菜单
#define BASIC_ADD_STUDENT 1 // 添加学生信息
#define BASIC_DELETE_STUDENT 2 // 删除学生记录
#define BASIC_MODIFY_STUDENT 3 // 修改学生信息
#define BASIC_SEARCH_BY_ID 4 // 按学号查找学生
#define BASIC_SEARCH_BY_NAME 5 // 按姓名查找学生
#define BASIC_DISPLAY_ALL 6 // 显示所有学生信息
#define BASIC_SORT_STUDENTS 7 // 学生信息排序功能
// 统计功能菜单选项
#define STATS_BACK 0
#define STATS_COURSE_ANALYSIS 1
#define STATS_SCORE_DISTRIBUTION 2
#define STATS_SCORE_RANGES 3
#define STATS_OVERALL_ANALYSIS 4
// 成绩统计和数据分析的功能选项
#define STATS_BACK 0 // 返回主菜单
#define STATS_COURSE_ANALYSIS 1 // 课程成绩分析 - 分析各门课程的成绩情况
#define STATS_SCORE_DISTRIBUTION 2 // 成绩分布统计 - 显示成绩的分布情况
#define STATS_SCORE_RANGES 3 // 成绩区间统计 - 按分数段统计学生人数
#define STATS_OVERALL_ANALYSIS 4 // 综合分析 - 整体成绩趋势和统计信息
// 管理功能菜单选项
#define ADMIN_BACK 0
#define ADMIN_ADD_USER 1
#define ADMIN_DELETE_USER 2
#define ADMIN_MODIFY_PASSWORD 3
#define ADMIN_VIEW_USERS 4
// 系统管理员专用的用户管理功能
#define ADMIN_BACK 0 // 返回主菜单
#define ADMIN_ADD_USER 1 // 添加新用户账户
#define ADMIN_DELETE_USER 2 // 删除用户账户
#define ADMIN_MODIFY_PASSWORD 3 // 修改用户密码
#define ADMIN_VIEW_USERS 4 // 查看所有用户信息
// 排序选项
#define SORT_BY_ID 1
#define SORT_BY_NAME 2
#define SORT_BY_TOTAL_SCORE 3
#define SORT_BY_AVERAGE_SCORE 4
// 定义学生信息的排序依据
#define SORT_BY_ID 1 // 按学号排序
#define SORT_BY_NAME 2 // 按姓名排序
#define SORT_BY_TOTAL_SCORE 3 // 按总分排序
#define SORT_BY_AVERAGE_SCORE 4 // 按平均分排序
// 排序顺序
#define SORT_ASCENDING 1
#define SORT_DESCENDING 2
// 定义排序的方向
#define SORT_ASCENDING 1 // 升序排列 - 从小到大
#define SORT_DESCENDING 2 // 降序排列 - 从大到小
// 性别定义
#define GENDER_MALE 'M'
#define GENDER_FEMALE 'F'
// 使用字符常量表示学生性别,便于数据存储和处理
#define GENDER_MALE 'M' // 男性标识
#define GENDER_FEMALE 'F' // 女性标识
// 颜色代码(用于美化输出)
#define COLOR_RESET "\033[0m"
#define COLOR_RED "\033[31m"
#define COLOR_GREEN "\033[32m"
#define COLOR_YELLOW "\033[33m"
#define COLOR_BLUE "\033[34m"
#define COLOR_MAGENTA "\033[35m"
#define COLOR_CYAN "\033[36m"
#define COLOR_WHITE "\033[37m"
// ANSI转义序列,用于在终端中显示彩色文本,提升用户体验
#define COLOR_RESET "\033[0m" // 重置颜色 - 恢复默认颜色
#define COLOR_RED "\033[31m" // 红色 - 通常用于错误信息
#define COLOR_GREEN "\033[32m" // 绿色 - 通常用于成功信息
#define COLOR_YELLOW "\033[33m" // 黄色 - 通常用于警告信息
#define COLOR_BLUE "\033[34m" // 蓝色 - 通常用于信息提示
#define COLOR_MAGENTA "\033[35m" // 洋红色 - 用于特殊标记
#define COLOR_CYAN "\033[36m" // 青色 - 用于标题或重要信息
#define COLOR_WHITE "\033[37m" // 白色 - 用于普通文本
// 系统消息
#define MSG_SUCCESS "操作成功!"
#define MSG_FAILURE "操作失败!"
#define MSG_NOT_FOUND "未找到相关记录!"
#define MSG_INVALID_INPUT "输入无效,请重新输入!"
#define MSG_FILE_ERROR "文件操作错误!"
// 预定义的系统提示信息,保证消息的一致性和易于维护
#define MSG_SUCCESS "操作成功!" // 操作成功时的提示信息
#define MSG_FAILURE "操作失败!" // 操作失败时的通用错误信息
#define MSG_NOT_FOUND "未找到相关记录!" // 查询无结果时的提示信息
#define MSG_INVALID_INPUT "输入无效,请重新输入!" // 用户输入格式错误时的提示
#define MSG_FILE_ERROR "文件操作错误!" // 文件读写操作失败时的错误信息
#endif // CONFIG_H