Bootstrap

【C语言】C语言-身份证管理系统(源码+注释)【独一无二】

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


系列文章目录



一、设计要求

代码功能描述

本代码实现了一个简单的人员信息管理系统,能够通过控制台进行人员信息的添加、删除、查询、统计及保存和读取操作。具体功能如下:

  1. 人员信息结构体定义

    • 定义了一个 Person 结构体,包含身份证号 (id)、姓名 (name)、年龄 (age) 和出生日期 (birthdate) 四个字段。
  2. 全局变量

    • Person people[100]:用于存储最多100人的信息。
    • int count:当前存储的人员数量。
  3. 功能实现

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈

  • 添加人员信息

    • void addPerson()
      • 提示用户输入人员信息(身份证号、姓名、年龄和出生日期),并将信息存储在全局数组 people 中。
  • 删除人员信息

    • void deletePerson()
      • 提示用户输入要删除的身份证号,查找并删除匹配的人员信息,并将数组中的后续元素前移。
  • 按年龄查询人员信息

    • void queryByAge()
      • 提示用户输入要查询的年龄,遍历数组并输出匹配年龄的人员信息。
  • 按出生日期查询人员信息

    • void queryByBirthdate()
      • 提示用户输入要查询的出生日期,遍历数组并输出匹配出生日期的人员信息。
  • 统计某年龄段的人数

    • void countByAgeRange()
      • 提示用户输入年龄段的最小值和最大值,统计并输出在该年龄段内的人员数量。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈

  • 保存人员信息到文件

    • void saveToFile()
      • 将当前存储的所有人员信息保存到文件 people.txt 中。
  • 从文件读取人员信息

    • void loadFromFile()
      • 从文件 people.txt 中读取人员信息,并将其存储在全局数组 people 中。
  • 显示菜单

    • void showMenu()
      • 显示操作菜单,用户可以选择不同的功能。
  1. 主函数
    • 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 结构体和相应的功能函数,实现了人员信息的添加、删除、查询、统计、保存和读取功能,并通过菜单引导用户进行操作。


三、可视化分析

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈

在这里插入图片描述

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈

在这里插入图片描述

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 身份证 ” 获取。👈👈👈


;