应用结构体实现通讯录

应用实现一个通讯录:

通讯录可以用来存储100个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址

通讯录实现的功能包括:

  1. 添加联系人信息
  2. 删除指定联系人信息
  3. 查找指定联系人信息
  4. 修改指定联系人信息
  5. 显示所有联系人信息
  6. 清空所有联系人
  7. 以名字排序所有联系人
void menu()
{
	printf("*******************************\n");
	printf("***** 1.Add     2.Del      ****\n");
	printf("***** 3.Search  4.Modify   ****\n");
	printf("***** 5.Show    6.Sort     ****\n");
	printf("***** 0.exit               ****\n");
	printf("*******************************\n");
	printf("*******************************\n");

}
int main()
{
	
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			break;
		case 5:
			break;
		case 6:
			break;
		case 0:
			break;
		default:
			break;
		}
	} while (input);
	return 0;
}

1.根据通讯录实现的功能首先写一个菜单和循环的框架,以便设计实现各种功能的函数。

2.通讯录需要里个人的信息要包含姓名、性别、年龄、电话、住址等,需要声明一个结构体类型用来存放个人信息;同时通讯录里需要显示共有多少人,以便于方便对联系人进行增删查改;所以一个通讯录至少需要包含一个存放个人信息的结构体类型数组和通讯录联系人数:

#define MAX_NAME 20
#define MAX_SEX 6
#define MAX_TELE 12
#define MAX_ADDR 30 //定义宏更能灵活改动各种数据大小
#define MAX 100
//通讯录
struct Stu
{
	char name[MAX_NAME];
	char sex[MAX_SEX];
	int age;
	char tele[MAX_TELE];
	char addr[MAX_ADDR];
};
struct Contact
{
	struct Stu Data[MAX];
	int sz;
};

3.此时就需要在主函数里创建通讯录并将其初始化

//创建通讯录
struct Contact con;

//初始化通讯录
InitContct(&con);

这里初始化通讯录需要自定义一个函数,将通讯录变量的地址作为参数可以对通讯录中的内容进行修改,初始化方式如下:

void InitContct(struct Contact* pc)
{
	assert(pc);
	memset(pc->Data, 0, MAX * sizeof(struct Stu));
	pc->sz = 0;
}

避免传递空指针,这里可以用assert断言一下;内存设置函数memset将结构体成员中的Data变量的所有字节都初始化为了0;此时通讯录中无联系人,结构体成员中的联系人人数也被初始化为0;

4.通讯录与界面框架实现好了,就可以自定义函数一一实现通讯录中增删查改等各种功能,首先我们来实现添加联系人的功能:

void AddContact(struct Contact* pc)
{
    //添加联系人
	assert(pc);
	if (pc->sz > MAX)
	{
		printf("通讯录成员已满,添加失败\n");
		return;
	}
	printf("请输入名字:>");
	scanf("%s", pc->Data[pc->sz].name);
	printf("请输入性别:>");
	scanf("%s", pc->Data[pc->sz].sex);
	printf(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值