当前位置: 首页 > news >正文

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

请添加图片描述


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


系列文章目录


目录

  • 系列文章目录
  • 一、设计要求
      • 代码功能描述
  • 二、设计思路
      • 代码块功能描述
        • 1. 包含标准库头文件
        • 2. 定义结构体和全局变量
        • 3. 添加人员信息
        • 4. 删除人员信息
        • 5. 按年龄查询人员信息
        • 6. 按出生日期查询人员信息
        • 7. 统计某年龄段的人数
        • 8. 保存人员信息到文件
        • 9. 从文件读取人员信息
        • 10. 显示菜单
        • 11. 主函数
  • 三、可视化分析


一、设计要求

代码功能描述

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

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


三、可视化分析

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • mybatis日志记录方案
  • 解决vue多层弹框时存在遮挡问题
  • 新质生产力赛道核心解读,机械制造何以“向智向新”
  • 深入理解Spring Cloud中的服务注册
  • Docker Desktop如何换镜像源?
  • jdevelope安装
  • MinIO:开源对象存储解决方案的领先者
  • FlyDeliver践行社会责任,推动绿色物流发展
  • vue前端面试
  • 数据建设实践之大数据平台(四)
  • 搜索引擎算法工程师,在query理解方面,都有哪些方面的工作
  • 水库大坝安全监测险情应对措施
  • vscode使用ssh连接远程服务器
  • 【Java数据结构】初识线性表之一:顺序表
  • 基于springboot+mybatis学生管理系统
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【React系列】如何构建React应用程序
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Android开源项目规范总结
  • magento 货币换算
  • MobX
  • V4L2视频输入框架概述
  • vue:响应原理
  • vue脚手架vue-cli
  • vue自定义指令实现v-tap插件
  • Webpack 4x 之路 ( 四 )
  • 包装类对象
  • 笨办法学C 练习34:动态数组
  • 初识 beanstalkd
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 开源SQL-on-Hadoop系统一览
  • 收藏好这篇,别再只说“数据劫持”了
  • 新版博客前端前瞻
  • 由插件封装引出的一丢丢思考
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ionic入门之数据绑定显示-1
  • "无招胜有招"nbsp;史上最全的互…
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • $.ajax中的eval及dataType
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (12)Linux 常见的三种进程状态
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (PADS学习)第二章:原理图绘制 第一部分
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (九)信息融合方式简介
  • (数据结构)顺序表的定义
  • (正则)提取页面里的img标签
  • (转) RFS+AutoItLibrary测试web对话框
  • ***详解账号泄露:全球约1亿用户已泄露
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .equals()到底是什么意思?