c语言实现一个通讯录

本文介绍了如何利用C语言实现一个简单的通讯录系统。通过定义结构体存储个人姓名和电话,然后创建通讯录结构体来管理多个联系人。实现包括增、删、改、查在内的功能,使用函数指针数组来简化代码结构。通讯录初始化时,有效联系人为0,所有信息为空。在添加联系人时,更新size变量。显示通讯录、更新联系人信息以及删除联系人等功能都有详细的操作说明。

小周末学习了结构体,今天打算自己做一个通讯录,这个通讯录保存若干个用户信息,每个用户信息中包含姓名,电话。
我们想要这个通讯录可以实现增删改查的功能。

首先,首先我们要创建一个结构体,这个结构体保存了每个人的信息(姓名及电话)

typedef struct PersonInfo{
	char name[NAME_MAX_SIZE];
	char phone[PHONE_MAX_SIZE];
}PersonInfo;

紧接着,我们又创建一个通讯录结构体,这个结构体,包含了所有人的信息

typedef struct AddrBook{
	PersonInfo persons[PERSONS_MAX_SIZE];
	int size;//当前数组中有效元素的个数
}AddrBook;

我们需要与用户完成一个输入的交换过程,我们这里创建一个菜单函数

int Menu(){
	printf("==================\n");
	printf("欢迎使用通讯录程序\n");
	printf("1.显示所有联系人信息\n");
	printf("2.新增联系人信息\n");
	printf("3.修改联系人信息\n");
	printf("4.删除联系人信息\n");
	printf("0.退出通讯录\n");
	printf("==================\n");
	printf("请输入您的选择:\n");
	int choice = 0;
	scanf("%d", &choice);
	return choice;
}

其中,1,2,3,4增删改查四个功能,都是结构体传指针传参,对象都是addr_book,我们这里可以用转移表,创建一个函数指针数组来实现四个功能

typedef void(*Func)(AddrBook*)
int main(){
//主函数代码框架
	Init(&addr_book);
	Func func_table[] = {
	    //利用转移表实现四个功能
		PrintAll,
		Add,
		Update
		Remove
	};
	while (1){
	    //与用户进行交换
		int choice = Menu();
		if (choice < 0 || choice > 4){
			printf("输入有误,请重新输入\n");
			continue;
		}
		if (choice == 0){
			printf("good bye\n");
			break;
		}
		func_table[choice - 1](&addr_book);
	}
	system("pause");
	return 0;
}

我们主函数中的每一个功能函数进行分析
我们需要将通讯录初始化
一开始通讯录的有效联系人是0,并且联系人的结构体中电话及姓名都是空字符串

void Init(AddrBook* addr_book){
	assert(addr_book != NULL);
	addr_book->size = 0;
	for (int i = 0; i < PERSONS_MAX_SIZE; ++i){
		memset(addr_book->persons[i].name, 0, NAME_MAX_SIZE);
		memset(addr_book->persons[i].phone, 0, PHONE_MA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值