1) 通讯录的基本信息:姓名、年龄和联系电话;
2) 具有新建、删除和查询功能等。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct friends_list{
char name[50];
char age[10];
char phone[50];
};
struct friends_list friends[50];
typedef struct{
struct friends_list friends[50];
int length;
}SqList;
SqList L;
int create(SqList *L)
{
(*L).length=0;
printf("创建成功!\n\n");
return 1;
}
int add(SqList *L)
{
int i=1,a;
while(i>0&&i<=50)
{
printf("姓名:");
scanf("%s",(*L).friends[i-1].name);
printf("\n年龄:");
scanf("%s",(*L).friends[i-1].age);
printf("\n电话:");
scanf("%s",(*L).friends[i-1].phone);
(*L).length++;
printf("\n输入1继续添加\n输入其他退出\n");
scanf("%d",&a);
switch(a)
{
case 1:
break;
default:
return 0;
}
i++;
}
}
int insert(SqList *L)
{
int i,j;
printf("请输入要插入的位置:");
scanf("%d",&i);
if((i<1)||(i>(*L).length))
return 0;
for(j=(*L).length-1;j>=i-1;j--)
{
strcpy((*L).friends[j+1].name,(*L).friends[j].name);
strcpy((*L).friends[j+1].age,(*L).friends[j].age);
strcpy((*L).friends[j+1].phone,(*L).friends[j].phone);
}
printf("\n姓名:");
scanf("%s",(*L).friends[i-1].name);
printf("\n年龄:");
scanf("%s",(*L).friends[i-1].age);
printf("\n电话:");
scanf("%s",(*L).friends[i-1].phone);
++(*L).length;
return 1;
}
void search(SqList L)
{
int i,flag=0;
char a[50];
printf("请输入要查找的联系人:");
scanf("%s",a);
for(i=0;i<=L.length-1;i++)
if(strcmp(L.friends[i].name,a)==0)
{
flag=1;
printf("\n姓名\t年龄\t电话\n");
printf("%s\t%s\t%s\n\n",L.friends[i].name,L.friends[i].age,L.friends[i].phone);
}
if(flag==0)
printf("没有找到该书!\n\n");
}
int Delete(SqList *L)
{
int i,j;
printf("请输入要删除的位置:");
scanf("%d",&i);
if((i<1)||(i>(*L).length))
return 0;
for(j=i;j<=(*L).length-1;j++)
(*L).friends[j-1]=(*L).friends[j];
--(*L).length;
return 1;
}
void printf(SqList L)
{
int i;
printf("姓名\t年龄\t电话\n");
for(i=0;i<=L.length-1;i++)
printf("%s\t%s\t%s\n",L.friends[i].name,L.friends[i].age,L.friends[i].phone);
}
int main()
{
int i;
while(1)
{
printf("通讯录功能选项\n1.初始化\n2.添加联系人\n3.插入联系人\n4.查找联系人\n5.删除联系人\n6.输出联系人\n其他退出\n");
scanf("%d",&i);
switch(i)
{
case 1:
create(&L);
break;
case 2:
add(&L);
break;
case 3:
insert(&L);
break;
case 4:
search(L);
break;
case 5:
Delete(&L);
break;
case 6:
printf(L);
break;
default:
exit(0);
}
}
return 0;
}