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