#include<stdio.h>

#include<string.h>

struct friends_list{

char name[10];

int age;

char telephone[13];

};

int Count=0;

void new_friend(struct friends_list friends[]);

void search_friend(struct friends_list friends[],char*name);

void Modify_friend(struct friends_list friends[],char*name);

void Delete_friend(struct friends_list friends[],char*name,int n);

int main(void)

{

int choice,n;

char name[10];

struct friends_list friends[50];

do{

printf("手机通讯录功能选项: 1:新建 2:查询 3:修改 4:删除 0:退出\n");

printf("请选择功能:");

scanf("%d",&choice);

switch(choice){

case 1:

new_friend(friends);

break;

case 2:

printf("请输入要查找的联系人姓名:");

scanf("%s",name);

search_friend(friends,name);

break;

case 3:

printf("请输入您要修改的联系人的姓名:");

  scanf("%s",name);

printf("\n");

Modify_friend(friends,name);

break;

case 4:

printf("1:单个删除 2:全部删除\n\n");

printf("请选择您需要的操作:\n");

scanf("%d",&n);

if(n==1){

printf("输入名字\n");

scanf("%s",name);

  Delete_friend(friends,name,n);

break;

}

if(n==2){

Delete_friend(friends,name,n);

break;

}

case 0: break;

}

}while(choice!=0);

printf("谢谢使用通讯录功能!\n");

return 0;

}

void new_friend(struct friends_list friends[ ])

{

struct friends_list f;

if(Count==50){

printf("通讯录已满!\n");

return;

}

printf("请输入新的联系人的姓名:");

scanf("%s",f.name);

printf("请输入新联系人的年龄:");

scanf("%d",&f.age);

printf("请输入新联系人的联系电话:");

scanf("%s",f.telephone);

friends[Count] = f;

Count++;

}

/*查询联系人*/

void search_friend(struct friends_list friends[],char*name)

{

int i,flag=0;

if(Count==0){

printf("通讯录是空的!\n");

return;

}

for(i=0;i<Count;i++)

if(strcmp(name,friends[i].name)==0){

printf("姓名:%s\t",friends[i].name);

printf("年龄:%d\t",friends[i].age);

printf("电话:%s\n",friends[i].telephone);

flag++;

}

if(flag==0)

  printf("无此联系人!\n");

}

/*修改联系人*/

void Modify_friend(struct friends_list friends[],char*name)

{

int k,y=0;

int t,j=1,g=0;

struct friends_list x;

if(Count==0){

printf("通讯录是空的!\n");

return;

}

/*首先,判断要修改的联系人中有没有相同的名字*/

for(k=0;k<Count;k++){

if(strcmp(name,friends[k].name)==0)

  y++;

}

/*如果,y等于1,说明只有一个需要修改的联系人*/

if(y==1){  

for(k=0;k<Count;k++){

if(strcmp(name,friends[k].name)==0){

printf("请重新输入姓名\n");

scanf("%s",x.name);

printf("请重新输入年龄\n");

scanf("%d",&x.age);

printf("请重新输入电话号码\n");

scanf("%s",x.telephone);

friends[k]=x;

}

}

}

/*如果,y大于1,说明你选择修改的人中,有多个相同名字的联系人*/

if(y>1){

/*用序号来显示所有需要修改的联系人*/

printf("此通讯录有%d个名字相同的联系人.\n",y);

for(k=0;k<Count;k++){

if(strcmp(name,friends[k].name)==0){

printf("%d:姓名:%-10s",j,friends[k].name);

printf("年龄:%-5d",friends[k].age);

printf("电话:%13s\n",friends[k].telephone);

j++;

}

}

/*选择需要修改的联系人的序号*/

printf("请选择所要修改的联系人序号:\n");

scanf("%d",&t);

for(k=0;k<Count;k++){

if(strcmp(name,friends[k].name)==0){

g++;

if(g==t){/*如果g等于t,说明在序号中找到了需要修改的人*/

printf("请重新输入姓名\n");

scanf("%s",x.name);

printf("请重新输入年龄\n");

scanf("%d",&x.age);

printf("请重新输入电话号码\n");

scanf("%s",x.telephone);

friends[k]=x;

}

}

}

}

if(y==0)

printf("无此联系人\n");

}

void Delete_friend(struct friends_list friends[],char*name,int n)

{

int l,h=0,y=0,i,k;

int j=1;

int a[50],t,g=0;

if(Count==0){

printf("通讯录是空的!\n");

return;

}

/*如果,n等于1,说明用户选择单个删除*/

if(n==1){

/*首先,判断在修改的人当中有没有相同名字的*/

for(i=0;i<Count;i++){

if(strcmp(name,friends[i].name)==0)

y++;

}

/*如果,y等于1,说明你需要修改的人当中只有一个*/

if(y==1){

for(l=0;l<Count;l++){

if(strcmp(name,friends[l].name)==0){

do{

friends[l]=friends[l+1];

l++;

}while(l<Count);

h++;

Count--;

printf("删除成功!\n");

}

}

}

/*如果,y>1 说明你要修改的人当中有多个相同的名字*/

if(y>1){

/*用序号来显示所有需要修改的联系人*/

printf("%d个相同的联系人:\n",y);

for(l=0;l<Count;l++){

if(strcmp(name,friends[l].name)==0){

a[l]=l;

printf("%d:姓名:%-10s",j,friends[l].name);

printf("年龄:%-5d",friends[l].age);

printf("电话:%13s\n",friends[l].telephone);

j++;

h++;

}

}

/*选择需要修改的联系人序号*/

printf("请选择所要删除的联系人序号:\n");

scanf("%d",&t);

for(k=0;k<Count;k++)

if(strcmp(name,friends[k].name)==0){

g++;

if(g==t){/*如果 g等于选择的序号t,就开始删除*/

do{

friends[k]=friends[k+1];

k++;

}while(k<Count);}

if(g==t)

{

printf("删除成功!\n");

Count--;

}

}

}

if(h==0)

printf("没有此联系人\n");

}

/*如果n等于2,说明用户选择了全部删除*/

if(n==2){

Count=0;/*Count0,也就是清空所有联系人*/

printf("已全部删除!\n");

}

}