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

进阶C语言-通讯录的实现

在这里插入图片描述

通讯录

  • 🎈1.设计要求
  • 🎈2.程序实现
    • 🔭2.1打印菜单及初始化通讯录
    • 🔭2.2显示所有联系人
    • 🔭2.3查找指定的联系人
    • 🔭2.4删除指定的联系人
    • 🔭2.5查找指定的联系人
    • 🔭2.6修改指定联系人
    • 🔭2.7按照年龄排序(以此为例)
  • 🎈3.全部源码以及实现

🎈1.设计要求

🌞通过前面关于结构体及相关自定义类型的学习,我们就可以写上一个通讯录这样的程序,该程序有如下要求

  1. 可以保存100个人的信息。
  2. 增加人的信息。
  3. 删除指定联系人的信息。
  4. 查找指定联系人的信息。
  5. 修改指定联系人的信息。
  6. 排序通讯录的信息。
  7. 显示所有联系人的信息。

🎈人的信息:

  • 姓名
  • 年龄
  • 性别
  • 电话
  • 地址

✅为了使咱们的程序更加的清晰易懂,我们可以将该工程分为三个文件:

  • test.c-测试代码
  • contact.h-声明
  • contact.c-实现

🎈2.程序实现

🔭2.1打印菜单及初始化通讯录

contact.h

#pragma once
//类型的声明
#include <stdio.h>
#include <assert.h>
#include <string.h>
#define Max 100
#define NAME_MAX 10
typedef struct PepInfo
{char name[NAME_MAX];int age;char sex[5];char tele[12];char addr[20];
}PInfo;typedef struct Contact
{PInfo data[Max];int sz;//用于记录当前通讯录中存放了多少个人的信息
}Contact;//初始化通讯录
void InitContact(Contact* c);

contact.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
void InitContact(Contact *c)
{assert(c);c->sz = 0;memset(c->data, 0, sizeof(c->data));
}

test.c

//文件用于测试通讯录的基本功能。
#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"//自己定义的头文件用""
void menu()
{printf("***********************************\n");printf("********1.增加联系人***************\n");printf("                                   \n");printf("********2.删除指定联系人的信息*****\n");printf("                                   \n");printf("********3.查找指定联系人的信息*****\n");printf("                                   \n");printf("********4.修改指定联系人的信息*****\n");printf("                                   \n");printf("********5.排序通讯录的信息*********\n");printf("                                   \n");printf("********6.显示所有联系人的信息*****\n");printf("                                   \n");printf("********0.退出程序*****************\n");printf("***********************************\n");
}
enum Option
{EXIT,ADD,DEL,SEARCH,MODIFY,SHOW,SORT
};
int main()
{int input = 0;Contact con;//初始化函数InitContact(&con);do{menu();printf("请输入你的选择:>");scanf("%d", &input);switch (input){case ADD:break;case DEL:break;case SEARCH:break;case MODIFY:break;case SHOW:break;case SORT:break;case EXIT:printf("退出通讯录\n");break;default:break;}} while (input);return 0;
}

🔭2.2显示所有联系人

contact.h

//显示所有联系人
void ShowContact(const Contact* c);

contact.c

void ShowContact(const Contact* c)
{assert(c);if (c->sz == 0){printf("通讯录为空,无需打印!\n");}int i = 0;printf("%-20s%-5s%-5s%-12s%-30s\n", "姓名", "年龄", "性别", "电话", "地址");for (int i = 0; i < c->sz; i++){printf("%-20s%-5s%-5s%-12s%-30s\n",c->data[i].name, c->data[i].age, c
http://www.lryc.cn/news/295026.html

相关文章:

  • STM32单片机的基本原理与应用(七)
  • LLM应用开发与落地:使用gradio十分钟搭建聊天UI
  • 智慧城市:打造低碳未来,引领城市数字化转型新篇章
  • ChatGPT之制作短视频
  • k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(二)
  • 智能优化算法 | Matlab实现合作优化算法(CSA)(内含完整源码)
  • mysql如何备份某些库的某些表
  • C++类和对象入门(三)
  • 【0255】揭晓pg内核中MyBackendId的分配机制(后端进程Id,BackendId)(一)
  • Python爬虫requests库详解
  • 【漏洞复现】EPON上行A8-C政企网关信息泄露漏洞
  • 发送get请求并且发送请求头(header),java实现
  • 介绍docker
  • Web课程学习笔记--CSS盒模型
  • 中学一级教师是什么职称等级
  • 2024年2月CCF-全国精英算法大赛题目
  • arm 汇编积累
  • SpringBoot整理-安全(Spring Security)
  • 【技能树学习】Git入门——练习题解析
  • Springboot+vue的企业财务管理系统(有报告)。Javaee项目,springboot vue前后端分离项目
  • 手撕spring bean的加载过程
  • Linux系统中安装JDK
  • Stable Diffusion 模型下载:国风3 GuoFeng3
  • VUE项目导出excel
  • Springboot 整合 Elasticsearch(二):使用HTTP请求来操作ES
  • npm 淘宝镜像到期
  • 计算机网络——新型网络架构:SDN/NFV
  • 【精选】java继承进阶,子类继承父类(内存图、内存分析工具)
  • Google Play上架:因行为透明度被拒审或下架的政策自查(基于区块链的内容)
  • 备战蓝桥杯---搜索(剪枝)