主要知识,结构体、枚举、指针、递归、冒泡排序等。
文章目录
一、前言
本文将会使用c语言实现同通讯录,通讯录可储存联系人的姓名、电话、性别、年龄、住址,包括联系人的增减、查找(包括同名)、排序、联系人信息修改及联系人信息显示。
二、通讯录的实现
1.菜单
通过菜单由用户选择要操作的功能:
void menu()
{
printf("*****************************************\n");
printf("******* 1.add 2.del *********\n");
printf("******* 3.modify 4.search *********\n");
printf("******* 5.sort 6.print *********\n");
printf("******* 0.exit *********\n");
printf("*****************************************\n");
}
2.结构体创建
typedef struct PeoInof
{
char name[name_max];
int age;
char gender[gender_max];
char tele[tele_max];
char addr[addr_max];
}PeoInof;
typedef struct Contect
{
PeoInof dete[dete_max];
int sz;
int num[dete_max];
int sz1;
}Contect;
3.初始化通讯录
void InitContects(Contect* pc)
{
pc->sz = 0;
memset(pc->dete,0,sizeof(pc->dete));
}
4.查找函数
字符串比较函数依次查找,记录符合要求元素在数组中下标位置,再次将函数此时i带入此函数,继续递归查找,直至找完所有联系人。
static int FindName(int num, Contect* pc, char namecmp[])
{
int i = 0;
for (i = num; i < pc->sz; i++)
{
if (strcmp(namecmp, pc->dete[i].name) == 0)
{
pc->num[pc->sz1] = i;
pc->sz1++;
return FindName(i + 1, pc, namecmp);
}
}
if (pc->sz1 != 0)
return 1;
else
return -1;
}
5.增加联系人
若通讯录已满显示“通讯录已存满!”,否则用户依次填入联系人信息,将信息存入同通讯录中 ,显示添加成功。
void AddContect(Contect* pc)
{
if (pc->sz == dete_max)
{
printf("通讯录已存满!");
return;
}
printf("请输入名字:\n");
scanf("%s", pc->dete[pc->sz