更新项目文档和配置文件 - 详细化config.h注释,更新README.md项目结构和数据结构说明
This commit is contained in:
Vendored
+2
-2
@@ -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
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user