设计一个通讯录管理程序,并对它进行增加、查询、修改、删除、显示记录等操作。
功能描述如下:
(1)main()的功能:根据选单的选项调用各函数,并完成相应的功能。
(2)创建功能:应用结构体数组创建新的通讯录,包括姓名、住址、电话、分类(包括家人类、朋友类和黑名单)等信息。
(3)追加功能:在通讯录的末尾追加新的信息,并返回选单。
(4)查询功能:查询某人的信息。如果找到了则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
(5)修改功能:修改某人信息。如果未找到要修改的人,则提示没有此人信息并返回选单。
(6)删除功能:删除某人的信息。如果未找到要删除的人,则提示没有此人的信息,并返回选单。
(7)列表功能:显示通讯录中的所有记录。
(1)定义结构体数据类型用于保存个人记录;
(2)通过结构体数组保存所有通信录信息。
(3)对结构体数组中的数据实现添加、删除、修改和查询等操作。
#include
#include
void add();
void show();
void del();
void chaxun();
void xiugai();
void paixu();
struct Lianxiren
{
char name[20];
int sex;
char tel[20];
int group;//1-家人 2-朋友 3-同学 4-黑名单
}ren[50];
int current=0;
void main()
{
int a;
while(1)
{ puts("-------welcome-------");
puts("\t1:添加");
puts("\t2:修改");
puts("\t3:显示");
puts("\t4:查询");
puts("\t5:删除");
puts("\t6:排序");
puts("\t0:退出");
puts("输入数字,选择操作:");
char x;
scanf("%c",&x);
switch(x)
{
case '1':add();
break;
case '2':xiugai();
break;
case '3':show();
break;
case '4':chaxun();
break;
case '5':del();
break;
case '6':paixu();
break;
case '0':scanf("%c",&x);
return;
}
scanf("%c",&x);
}
}
void add()
{
while(1)
{
fflush(stdin);
//char c;
//scanf("%c",&c);
printf("\nname:");
gets(ren[current].name);
printf("tel:");
gets(ren[current].tel);
printf("sex(0-男,1-女):");
scanf("%d",&ren[current].sex);
printf("group(1-家人 2-朋友 3-同学 4-黑名单):");
scanf("%d",&ren[current].group);
current++;
printf("continue input?(Y/N)");
char result;
result=getchar();
result=getchar();
if(result!='Y')
{result=getchar();break;
}
}
}
void show()
{
printf("\t%-5s%-15s%-15s%-20s%-8s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
for(int i=0;i<current;i++)
{
printf("\t%-5d%-15s%-15s%-20d%-8d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
}
}
void del()
{
show ();
puts("input num:");
int k;
scanf("%d",&k);
for(int i=k-1;i<current;i++)
{
ren[i]=ren[i+1];
}
current--;
}
void chaxun()
{
int c;
printf("输入查询类别:1-名字查询,2-列表查询,3-返回");
scanf("%d",&c);
switch(c)
{
case 1:
printf("输入查询人名字:");
char a[20];
scanf("%s",&a);
for(int i=0;i<=current;i++)
{
if(strcmp(a,ren[i].name)==0)
{
printf("\t%-5s%-15s%-15s%-20s%-5s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
printf("\t%-5d%-15s%-15s%-20d%-5d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
break;
}
if(i==current)
printf("查无此人\n");
} break;
case 2:printf("输入查询列表:1-家人,2-朋友,3-同学,4-黑名单,5-返回");
int d;
scanf("%d",&d);
switch(d){
case 1:for(int i=0;i<current;i++)
{
if(1==ren[i].group)
{
printf("\t%-5s%-15s%-15s%-20s%-5s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
printf("\t%-5d%-15s%-15s%-20d%-5d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
}
}break;
case 2:for(int i=0;i<current;i++)
{
if(2==ren[i].group)
{
printf("\t%-5s%-15s%-15s%-20s%-5s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
printf("\t%-5d%-15s%-15s%-20d%-5d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
}
}break;
case 3:for(int i=0;i<current;i++)
{
if(3==ren[i].group)
{
printf("\t%-5s%-15s%-15s%-20s%-5s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
printf("\t%-5d%-15s%-15s%-20d%-5d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
}
}break;
case 4:for(int i=0;i<current;i++)
{
if(4==ren[i].group)
{
printf("\t%-5s%-15s%-15s%-20s%-5s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
printf("\t%-5d%-15s%-15s%-20d%-5d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
}
}break;
case 5:break;}
case 3:break;
}
}
void xiugai()
{
char s[20];
int i;
printf("输入修改人的姓名:");
scanf("%s",&s);
for(i=0;i<=current;i++)
{
if(strcmp(s,ren[i].name)==0)
{
printf("\t%-5s%-15s%-15s%-20s%-5s\n","num","name","tel","sex(0-男,1-女)","group(1-家人,2-朋友,3-同学,4-黑名单)");
printf("\t%-5d%-15s%-15s%-20d%-5d\n",i+1,ren[i].name,ren[i].tel,ren[i].sex,ren[i].group);
printf("输要修改的位置:1-name,2-tel,3-sex,4-group");
int m;
scanf("%d",&m);
switch(m)
{
case 1:printf("输入修改后的姓名:");scanf("%s",ren[i].name);break;
case 2:printf("输入修改后的电话:");scanf("%s",ren[i].tel);break;
case 3:printf("输入修改后的性别(0-男,1-女):");scanf("%d",ren[i].sex);break;
case 4:printf("输入修改后的分组(1-家人,2-朋友,3-同学,4-黑名单 )");scanf("%d",ren[i].group);break;
}
}
if(i==current)
printf("查无此人\n");
}
}
void paixu()
{
printf("请输入序号:1-升序,2-降序");
int b;
scanf("%d",&b);
switch(b){
case 1:
for(int i=0;i<current-1;i++)
{for(int j=0;j<current-1-i;j++)
if(strcmp(ren[j].name,ren[j+1].name)<0)
{
char b[100];
Lianxiren t=ren[j];
ren[j]=ren[j+1];
ren[j+1]=t;
}}
show();
break;
case 2:
int k,l;
for(int k=0;k<current-1;k++)
{for(int l=0;l<current-1-k;l++)
if(strcmp(ren[l].name,ren[l+1].name)>0)
{
char c[100];
Lianxiren u=ren[l];
ren[l]=ren[l+1];
ren[l+1]=u;
}}show();break;
}}