通讯录的实现(静态版本)--C语言

这篇博客介绍了如何创建一个简单的通讯录程序,包括初始化通讯录、增加联系人、显示所有联系人、查找和删除联系人、修改联系人信息、清空通讯录以及按姓名或年龄排序等功能。通过C语言实现,使用结构体存储联系人信息,并提供了详细的代码实现和注释。
摘要由CSDN通过智能技术生成

目录

前言

程序设计

1. 创建通讯录

2. 初始化通讯录

3. 实现通讯录内的功能

        1. 增加联系人

        2. 显示所有联系人

        3. 查找联系人

        4. 删除指定联系人

        5. 修改联系人的信息

        6. 清空通讯录

        7. 排序所有联系人

源代码


前言

        制作一个通讯录需要包涵以下内容:

  1. 增加联系人
  2. 删除指定联系人
  3. 查找联系人
  4. 修改联系人的信息
  5. 显示所有联系人
  6. 清空通讯录
  7. 排序所有联系人(姓名/年龄等)

        完成代码最主要的就是需要先构思代码内需要包涵的功能,并一步一步的实现它,那么接下来就带大家一起完成这个简易的通讯录吧!

程序设计

1. 创建通讯录

        首先,创建通讯录之前我们需要创建一个结构体来表示一个人的信息,例如一个人的信息可以包括姓名、性别、年龄、电话和地址等。

struct PeoInfo
{
	char name[MAX_NAME];
	char sex[MAX_SEX];
	int age;
	char tele[MAX_TELE];
	char addr[MAX_ADDR];
};

        在这里我们使用了#define定义符号以便在后期可以方便更改内容的大小。

#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TELE 12
#define MAX_ADDR 30

        接下来就是创建通讯录。

        通讯录里面需要包涵n个人的信息,那么我可以创建一个结构体PeoInfo的数组来存放这些信息。那么我们要怎么知道里面有多少个数组呢?我们可以再创建一个变量来表示通讯录里面信息的数量。(很重要!!!)

struct Contact
{
	struct PeoInfo data[MAX];
	int sz;
	//通过sz来将信息存放到data数组里面
};
#define MAX 1000

2. 初始化通讯录

        创建完通讯录之后,我们需要对通信录内的信息进行初始化。

//初始化通讯录
void InitContact(struct Contact* pc)
{
	assert(pc);
	pc->sz = 0;
	memset(pc->data, 0, 100 * sizeof(struct PeoInfo));
}

        这一部分较为简单,主要是利用memset函数data里面的信息都初始化成0。

至于详细的内容,大家可以在链接里面了解: https://cplusplus.com/reference/cstring/memset/?kw=memsety

要注意,使用memset函数需要引用头文件#include<string.h>

3. 实现通讯录内的功能

        1. 增加联系人

        首先,我们需要思考两种情况:一种是通讯录满了、一种是通讯录还没满。

通讯录满了就无法再添加联系人了,因此无法再进行增加的操作。

//增加一个人的信息
void AddContact(struct Contact* pc)
{
	assert(pc);
	if (MAX == pc->sz)
	{
		printf("通讯录已满,无法添加信息\n");
		return;
	}

	printf("请输入姓名:");
	scanf("%s", pc->data[pc->sz].name);
	printf("请输入性别:");
	scanf("%s", pc->data[pc->sz].sex);
	printf("请输入年龄:");
	scanf("%d", &pc->data[pc->sz].age);//数组名为首元素地址,因此非数组需要加上‘&‘符号
	printf("请输入电话:");
	scanf("%s", pc->data[pc->sz].tele);
	printf("请输入地址:");
	scanf("%s", pc->data[pc->sz].addr);

	pc->sz++;
	printf("成功添加联系人\n");
}

        我们对pc指针指向的data数组内下标为pc指针指向的sz数量所对应的元素进行操作。

因为一开始data数组0个信息,因此可以在data数组下标为0的元素进行操作,在操作完之后对sz进行加一的操作,令之后的增加操作也可以如此进行。

当某一次增加操作将sz加到MAX的值时无法再对通讯录进行增加的操作。

  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值