👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
系列文章目录
一、设计要求
代码功能描述
本代码实现了一个简单的人员信息管理系统,能够通过控制台进行人员信息的添加、删除、查询、统计及保存和读取操作。具体功能如下:
-
人员信息结构体定义
- 定义了一个
Person
结构体,包含身份证号 (id
)、姓名 (name
)、年龄 (age
) 和出生日期 (birthdate
) 四个字段。
- 定义了一个
-
全局变量
Person people[100]
:用于存储最多100人的信息。int count
:当前存储的人员数量。
-
功能实现
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈
-
添加人员信息
void addPerson()
- 提示用户输入人员信息(身份证号、姓名、年龄和出生日期),并将信息存储在全局数组
people
中。
- 提示用户输入人员信息(身份证号、姓名、年龄和出生日期),并将信息存储在全局数组
-
删除人员信息
void deletePerson()
- 提示用户输入要删除的身份证号,查找并删除匹配的人员信息,并将数组中的后续元素前移。
-
按年龄查询人员信息
void queryByAge()
- 提示用户输入要查询的年龄,遍历数组并输出匹配年龄的人员信息。
-
按出生日期查询人员信息
void queryByBirthdate()
- 提示用户输入要查询的出生日期,遍历数组并输出匹配出生日期的人员信息。
-
统计某年龄段的人数
void countByAgeRange()
- 提示用户输入年龄段的最小值和最大值,统计并输出在该年龄段内的人员数量。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈
-
保存人员信息到文件
void saveToFile()
- 将当前存储的所有人员信息保存到文件
people.txt
中。
- 将当前存储的所有人员信息保存到文件
-
从文件读取人员信息
void loadFromFile()
- 从文件
people.txt
中读取人员信息,并将其存储在全局数组people
中。
- 从文件
-
显示菜单
void showMenu()
- 显示操作菜单,用户可以选择不同的功能。
- 主函数
int main()
- 程序启动时从文件中读取数据。
- 无限循环显示菜单并提示用户选择功能,根据用户的选择调用相应的函数。
- 在退出程序前将当前数据保存到文件中。
根据用户的选择,程序将执行相应的功能,如添加人员信息、删除人员信息、查询人员信息、统计某年龄段人数、保存数据到文件和从文件读取数据等操作。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈
二、设计思路
代码块功能描述
1. 包含标准库头文件
#include <stdio.h> // 包含标准输入输出库
#include <stdlib.h> // 包含标准库函数
#include <string.h> // 包含字符串处理函数
- 包含标准库头文件,提供输入输出、内存管理和字符串处理等基本功能。
2. 定义结构体和全局变量
typedef struct {
char id[20]; // 身份证号
char name[30]; // 姓名
int age; // 年龄
char birthdate[15]; // 出生日期
} Person;
Person people[100]; // 最多存储100人的信息
int count = 0; // 当前人员数量
- 定义
Person
结构体,包含身份证号、姓名、年龄和出生日期。 - 定义全局数组
people
存储最多100人的信息,定义count
记录当前人员数量。
3. 添加人员信息
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈
void addPerson() {
if (count < 100) {
// 此处略去 至少10行代码........
}
}
- 检查是否可以添加新人员。
- 提示用户输入新人员的信息并存储到全局数组
people
中。 - 更新人员数量
count
。
4. 删除人员信息
void deletePerson() {
char id[20];
printf("请输入要删除的身份证号: ");
scanf("%s", id);
// 此处略去 至少10行代码........
printf("未找到该身份证号的人员。\n");
}
- 提示用户输入要删除的身份证号。
- 查找匹配的人员信息并删除,将后续元素前移。
- 更新人员数量
count
。
5. 按年龄查询人员信息
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈
void queryByAge() {
int age;
printf("请输入要查询的年龄: ");
scanf("%d", &age);
// 此处略去 至少10行代码........
}
- 提示用户输入要查询的年龄。
- 遍历数组查找匹配年龄的人员并输出其信息。
6. 按出生日期查询人员信息
void queryByBirthdate() {
char birthdate[15];
printf("请输入要查询的出生日期 (YYYY-MM-DD): ");
scanf("%s", birthdate);
for (int i = 0; i < count; i++) {
if (strcmp(people[i].birthdate, birthdate) == 0) {
printf("身份证号: %s, 姓名: %s, 年龄: %d, 出生日期: %s\n",
people[i].id, people[i].name, people[i].age, people[i].birthdate);
}
}
}
- 提示用户输入要查询的出生日期。
- 遍历数组查找匹配出生日期的人员并输出其信息。
7. 统计某年龄段的人数
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈
void countByAgeRange() {
int minAge, maxAge, total = 0;
printf("请输入年龄段 (最小年龄 最大年龄): ");
// 此处略去 至少10行代码........
}
printf("年龄段 %d 到 %d 共有 %d 人。\n", minAge, maxAge, total);
}
- 提示用户输入年龄段。
- 遍历数组统计在年龄段内的人员数量并输出结果。
8. 保存人员信息到文件
void saveToFile() {
FILE *file = fopen("people.txt", "w");
if (file == NULL) {
printf("文件打开失败。\n");
return;
}
// 此处略去 至少10行代码........
printf("人员信息已保存到文件。\n");
}
- 打开文件
people.txt
以写入模式。 - 将人员信息逐行写入文件。
- 关闭文件并提示信息已保存。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈
9. 从文件读取人员信息
void loadFromFile() {
FILE *file = fopen("people.txt", "r");
if (file == NULL) {
// 此处略去 至少10行代码........
fclose(file);
printf("人员信息已从文件读取。\n");
}
- 打开文件
people.txt
以读取模式。 - 从文件中逐行读取人员信息并存储到全局数组
people
中。 - 更新人员数量
count
。 - 关闭文件并提示信息已读取。
10. 显示菜单
void showMenu() {
printf("请选择功能:\n");
// 此处略去 至少10行代码........
}
- 显示菜单,列出各个功能选项供用户选择。
11. 主函数
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈
int main() {
int choice;
loadFromFile(); // 程序启动时从文件读取数据
while (1) {
showMenu(); // 显示菜单
printf("请输入选择: ");
scanf("%d", &choice); // 读取用户输入的选择
switch (choice) {
// 此处略去 至少20行代码........
default:
printf("无效的选择,请重新输入。\n"); // 提示无效选择
}
}
return 0; // 返回0表示程序正常结束
}
- 程序启动时调用
loadFromFile
从文件读取数据。 - 无限循环显示菜单并提示用户输入选择,根据选择调用相应功能函数。
- 退出前调用
saveToFile
将数据保存到文件。
本程序通过定义 Person
结构体和相应的功能函数,实现了人员信息的添加、删除、查询、统计、保存和读取功能,并通过菜单引导用户进行操作。
三、可视化分析
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈