结构体实现通讯录
我们通常使用的手机通讯录,可以实现增加,删除,查找,修改联系人信息这几个重要的版块,当然我们手机里存储的列表也是按照首字母的顺序排列的,非常的实用,那么我们今天来用C语言简单了实现一下通讯录。
增加联系人
void AddContact(pContact pc)
{
assert(pc);
if (pc->sz == DATA_MAX)
{
printf("通讯录已满,插入失败\n");
return;
}
printf("请输入姓名:\n");
scanf("%s", pc->data[pc->sz].name);
printf("请输入年龄:\n");
scanf("%d", &pc->data[pc->sz].age);
printf("请输入性别:\n");
scanf("%s", pc->data[pc->sz].sex);
printf("请输入电话:\n");
scanf("%s", pc->data[pc->sz].tel);
printf("请输入地址:\n");
scanf("%s", pc->data[pc->sz].add);
pc->sz++;
printf("添加成功\n");
}
删除联系人
static int Find(pContact pc,char name[])
{
int i = 0;
assert(pc);
for (i = 0; i < pc->sz; i++)
{
if (strcmp(name, pc->data[i].name) == 0)
{
return i;
}
}
return -1;
}
void DelContact(pContact pc)
{
char name[NAME_MAX] = { 0 };
int j = 0;
int pos = 0;
assert(pc);
if (pc->sz == 0)
{
printf("通讯录为空,无法删除\n");
return;
}
printf("请输入要删除的人的姓名:\n");
scanf("%s", name);
pos=Find(pc, name);
if (pos == -1)
return;
for (j = pos; j < pc->sz - 1; j++)
{
pc->data[j] = pc->data[j + 1];
}
pc->sz--;
printf("删除成功\n");
}
查找联系人
void SearchContact(pContact pc)
{
char name[NAME_MAX] = { 0 };
int pos = 0;
assert(pc);
if (pc->sz == 0)
{
printf("通讯录为空,无法查找\n");
return;
}
printf("请输入要查找的人的姓名:\n");
scanf("%s", name);
//查找位置
pos = Find(pc, name);
if (pos == -1)
{
printf("要查找的人不存在\n");
return;
}
else
{
printf("%10s\t%4s\t%5s\t%12s\t%20s\n", "name", "age", "sex", "tel", "add");
printf("