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

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

一、设计要求

代码功能描述

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


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 结构体和相应的功能函数,实现了人员信息的添加、删除、查询、统计、保存和读取功能,并通过菜单引导用户进行操作。


三、可视化分析

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



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



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





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

相关文章
|
19天前
|
存储 C语言
【C语言篇】深入理解指针3(附转移表源码)
【C语言篇】深入理解指针3(附转移表源码)
30 1
|
19天前
|
存储 编译器 C语言
【C语言】学生管理系统:完整模拟与实现(一)
【C语言】学生管理系统:完整模拟与实现
|
18天前
|
存储 C语言
手把手教你用C语言实现通讯录管理系统
手把手教你用C语言实现通讯录管理系统
|
19天前
|
测试技术 C语言
【C语言】学生管理系统:完整模拟与实现(三)
【C语言】学生管理系统:完整模拟与实现
|
19天前
|
C语言
【C语言】学生管理系统:完整模拟与实现(二)
【C语言】学生管理系统:完整模拟与实现
|
19天前
|
存储 编译器 C语言
【C语言篇】数组和函数的实践:扫雷游戏(附源码)
【C语言篇】数组和函数的实践:扫雷游戏(附源码)
31 0
|
1月前
|
存储 算法 C语言
数据结构基础详解(C语言):单链表_定义_初始化_插入_删除_查找_建立操作_纯c语言代码注释讲解
本文详细介绍了单链表的理论知识,涵盖单链表的定义、优点与缺点,并通过示例代码讲解了单链表的初始化、插入、删除、查找等核心操作。文中还具体分析了按位序插入、指定节点前后插入、按位序删除及按值查找等算法实现,并提供了尾插法和头插法建立单链表的方法,帮助读者深入理解单链表的基本原理与应用技巧。
308 6
|
2月前
|
算法 编译器 C语言
【C语言篇】猜数字游戏(赋源码)
rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的⼤⼩是依赖编译器上实现的,但是⼤部分编译器上是32767。
91 1
|
2月前
|
存储 C语言
学生管理系统(C语言简单实现)
这篇文章是关于使用C语言实现一个简单的学生管理系统,包括文件的基本应用、数据结构设计、函数实现以及用户界面交互。
学生管理系统(C语言简单实现)
|
2月前
|
存储 数据可视化 数据安全/隐私保护
【C语言】C语言-成绩管理系统(管理员+教师+学生 源码)【独一无二】
【C语言】C语言-成绩管理系统(管理员+教师+学生 源码)【独一无二】