如何用C语言中的数组编写一个通讯录

2021-02-28 科技 77阅读
写了一个 ,行就支持一下 啊,呵呵呵
#include
#include
struct pep_list{ /*定义一个通讯录结构*/
char name[10];
int age;
char telephone[13];
};
int count=0; /*定义整个人数的全局变量计数*/
int count1=0; /*定义朋友人数的全局变量计数*/
int count2=0; /*定义家人人数的全局变量计数*/
int count3=0; /*定义陌生人数的全局变量计数*/
int c,b,a; /*为46 47 48行的赋值做准备*/
struct pep_list peps[50]; /*定义储存所有人的数组*/
struct pep_list friends[50]; /*定义储存朋友的数组*/
struct pep_list families[50]; /*定义储存家人的数组*/
struct pep_list unknows[50]; /*定义储存陌生人的数组*/
struct pep_list pp[50];
struct pep_list p[50];
void new_pep(struct pep_list peps[]); /*自定义函数*//*总的人数*/
void search_pep(struct pep_list peps[]); /*自定义函数*//*查询*/
void delete_pep(struct pep_list peps[]); /*删除*/
/*显示*/
void xianshi_pep(struct pep_list peps[],struct pep_list friends[],struct pep_list families[],struct pep_list unknows[]);
void xgxx_pep(struct pep_list peps[]);/*重新命名*/
int main(void)
{
int choice,choice1,choice2,choice3,choice4;
printf("\t \t********NOKIA 专用通讯录*********\n");
printf("\n\n");
do
{
printf("\n功能表:\n[1]:新建\n[2]:查询\n[3]:删除\n[4]:显示组员\n[5]:修改信息\n[0]:退出\n");
printf("\n选择你要的功能:\n");
scanf("%d",&choice);
switch(choice)
{ /*新建项*/
case 1:new_pep(peps);
printf("是否需要分组?\n"); /*分组提示*/
printf("\n[1]:是[2]:否");
scanf("%d",&choice3);
switch(choice3)
{
case 1:printf("[1]:朋友[2]:家人[3]:陌生人");
scanf("%d",&choice4);
switch(choice4)
{
case 1:friends[count1]=pp[1];count1++;break; /*将第一个子函数中的信息值赋值给朋友*/
case 2:families[count2]=pp[1];count2++;break; /*将第一个子函数中的信息值赋值给家人*/
case 3:unknows[count3]=pp[1];count3++;break; /*将第一个子函数中的信息值赋值给陌生人*/
}
break; /*注意此处的break一定不能少*/
case 2:break;
}
break; /*注意此处的break一定不能少*/
/*查询项*/
case 2:
search_pep(peps);
printf("还要使用该功能吗?");
printf("\n[1]:继续[2]:退出");
scanf("%d",&choice1);
switch(choice1)
{
case 1:continue;
case 2:goto next;
}
case 3:delete_pep(peps);break;
case 4:xianshi_pep(peps,friends,families,unknows);break;
case 5:xgxx_pep(peps);break;
case 0:break;
}
printf("还要使用该功能吗?");
printf("\n[1]:继续[2]:退出");
scanf("%d",&choice1);
switch(choice1)
{
case 1:continue; /*返回到do句中*/
case 2:goto next;
}
next: /*标签*/
printf("确定退出吗?");
printf("\n[1]:确定[2]继续");
scanf("%d",&choice2);
if(choice2==1)
break;
if(choice2==2)
continue; /*返回到do句中*/
}while(choice!=0);
printf("谢谢使用#NOKIA\n");
getch();
}
/*新建*/
void new_pep(struct pep_list peps[])
{
struct pep_list f;
/*定义一个结构型变量储存输入的名片*/
if(count==50)
{
printf("满员!\n");
return;
}
printf("联系人姓名:");
scanf("%s",f.name);
printf("\n年龄:");
scanf("%d",&f.age);
printf("\n号码:");
scanf("%s",f.telephone);
peps[count]=pp[1]=f; /*将输入的名片赋值给住函数中定义的整体数组*/
/*将输入的名片赋值给住函数中定义的辅助数组,是为59 60 61行做准备*/
count=count+1;
return;
}
/*查找组员*/
void search_pep(struct pep_list peps[])
{ char name[10];
int flag=0,i;
printf("输入姓名:");
scanf("%s",name);
if(count==0)
{
printf("通讯录为空!");
return;
}
for(i=0;i {
if(strcmp(name,peps[i].name)==0) /*比较*/
flag=1;
break;
}
if(flag)
{
printf("\n姓名:%s",peps[i].name);
printf("\n年龄:%d",peps[i].age);
printf("\n号码:%s",peps[i].telephone);
}
else
printf("无此人!");
return;
}
/*删除组员*/
void delete_pep(struct pep_list peps[])
{
char name[10];
int i,j,choice;
printf("输入你要删除的名片的姓名:");
scanf("%s",name);
if(count==0)
printf("无人!");
else
{
for(i=0;i {
if(strcmp(name,peps[i].name)==0) /*在名片里找名字*/
{
if(i==count-1) /*当删除最后一项时只需减少位数 不需在从后向前赋值*/
{
count=count-1;
printf("删除成功");
return;
}
for(j=i;j {
strcpy(peps[j].name,peps[j+1].name); /*后一项的名字附到前一项*/
strcpy(peps[j].telephone,peps[j+1].telephone); /*后一项的号码附到前一项*/
peps[j].age=peps[j+1].age; /*后一项的年龄附到前一项*/
}
printf("\n删除成功");
count=count-1;
printf("\n是否显示所有组员?");
printf("[1]:是[2]:否");
scanf("%d",&choice);
switch(choice)
{
case 1:if(count==0)
printf("\n无人");
for(i=0;i printf("\n姓名:%s 年龄:%d 号码:%s",peps[i].name,peps[i].age,peps[i].telephone);
break;
case 2:break;
}
break;
}
return;
}
}
if(i==count-1)
{
printf("查无此人");
return;
}
}
/*显示组员*/
void xianshi_pep(struct pep_list peps[],struct pep_list friends[],struct pep_list families[],struct pep_list unknows[])
{
int i,choice;
printf("\n[1]:显示全体组员 [2]:显示分组队员"); /*提示是否显示组员*/
scanf("%d",&choice);
switch(choice)
{
case 1:if(count==0)
printf("无人");
for(i=0;i {
printf("姓名:%s 年龄:%d 号码:%s\n",peps[i].name,peps[i].age,peps[i].telephone);
}
return;
case 2:
printf("[1]:显示朋友[2]:家人[3]:陌生人");
scanf("%d",&choice);
switch(choice)
{
case 1:if(count1==0)
printf("无人");
for(i=0;i /*输出组员*/
printf("姓名:%s 年龄:%d 号码:%s \n",friends[i].name,friends[i].age,friends[i].telephone);break;
case 2:if(count2==0)
printf("无人");
for(i=0;i printf("姓名:%s 年龄:%d 号码:%s \n",families[i].name,families[i].age,families[i].telephone);break;
case 3:if(count3==0)
printf("无人");
for(i=0;i printf("姓名:%s 年龄:%d 号码:%s \n",unknows[i].name,unknows[i].age,unknows[i].telephone);break;
}
return;
}
}
/*修改信息*/
void xgxx_pep(struct pep_list peps[])
{
char name[10],name2[10],telephone[10];
int i,choice;
if(count==0)
{
printf("无人\n");
return;
}
printf("输入你想改信息人的名字:");
scanf("%s",name);
for(i=0;i if(strcmp(peps[i].name,name)==0)
{
printf("[1]:修改姓名 [2]:修改号码\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("输入新的名字\n");
scanf("%s",name2);
strcpy(peps[i].name,name2);
break;
case 2:
printf("输入新的号码");
scanf("%s",telephone);
strcpy(peps[i].telephone,telephone);
break;
}
printf("是否显示改过的组员?");
printf("\n[1]:是[2]:否");
scanf("%d",&choice);
switch(choice)
{
case 1:
for(i=0;i printf("姓名:%s 年龄:%d 号码:%s\n",peps[i].name,peps[i].age,peps[i].telephone);
case 2:break;
}
return;
}
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com