#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define size 1000
void creat();
void show();
void menu();
void change();
int person=0;
struct book
{
char name[10];
int tel;
char sex[10];
int age;
};
void creat(struct book *p[])
{
int i=1,j;
printf("\n\n\n\n\n请输入你想创建的联系人信息\n");
printf("姓名--电话--性别--年龄\n");
while(i!=2)
{
p[person]=(struct book *)malloc(sizeof(struct book));
scanf("%s%d %s%d", p[person]->name, &p[person]->tel, p[person]->sex, &p[person]->age);
person++;
printf("*****************************************\n");
printf(" 是否继续输入?请选择:1是 2否\n");
printf("请输入:");
scanf("%d",&i);
if(i==2)
{
break;
}
}
// show(p);
printf(" 输入任意数结束\n");
scanf("%d",&j);
// sleep(5);
// main();
}
void show(struct book *p[])
{
int i=1,j,x,y;
struct book *q[2];
// q[0]=(struct book *q)malloc(sizeof(struct book));
if(person>1)
{
for(x=0;x<person;x++)
{
for(y=0;y<person;x++)
{
if(strcmp(p[y-1]->name,p[y]->name)<0)
{
q[0]=p[y-1];
p[y-1]=p[y];
p[y]=q[0];
}
}
}
}
printf("\n\n\n已有内容如下:\n\n");
for(i=0;i<person;i++)
{
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
printf("输入任意键结束\n");
scanf("%d",&j);
}
void find(struct book *p[])
{
int x,t;
int i,count=0;
char str[10];
printf("\n\n\n请选择你要查询的项目: 1、姓名 2、电话 3、年龄\n");
printf("请输入");
scanf("%d",&x);
printf("**************************************************\n\n\n\n");
if(x==1)
{
printf("输入姓名:");
scanf("%s",str);
for(i=0;i<person;i++)
{
if( strcmp( p[i]->name, str)==0 )
{
printf("已找到该目标\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
count++;
}
if(count==0)
{
printf("\n\n\n没有找到结果\n\n\n");
}
}
}
if(x==2)
{
printf("输入电话:");
scanf("%d",&t);
for(i=0;i<person;i++)
{
if( p[i]->tel==t )
{
printf("已找到该目标\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
count++;
}
if(count==0)
{
printf("\n\n\n没有找到结果\n\n\n");
}
}
}
if(x==3)
{
printf("输入年龄:");
scanf("%d",&t);
for(i=0;i<person;i++)
{
if( p[i]->age==t )
{
printf("已找到该目标\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
count++;
}
if(count==0)
{
printf("\n\n\n没有找到结果\n\n\n");
}
}
}
}
void change(struct book *p[])
{
int x,k,count=0,t;
int i,j;
char str[10],ptr[10];
printf("\n\n\n请选择你要查询的项目: 1、姓名 2、电话 3、年龄\n");
printf("请输入");
scanf("%d",&x);
printf("**************************************************\n\n\n\n");
if(x==1)
{
printf("输入姓名:");
scanf("%s",str);
for(i=0;i<person;i++)
{
if( strcmp( p[i]->name, str)==0 )
{
printf("已找到该目标\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
printf("请输入你想修改的项: 1 姓名 2 电话 3 性别 4 年龄\n");
printf("请输入:");
scanf("%d",&k);
if(k==1)
{
printf("修改为: ");
scanf("%s",p[i]->name);
printf("\n\n现在的内容为:\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
if(k==2)
{
printf("修改为:");
scanf("%d",&p[i]->tel);
printf("\n\n现在的内容为:\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
if(k==3)
{
printf("修改为:");
scanf("%s",p[i]->sex);
printf("\n\n现在的内容为:\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
if(k==4)
{
printf("修改为:");
scanf("%d",&p[i]->age);
printf("\n\n现在的内容为:\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
count++;
break;
}
}
if(count==0)
{
printf("\n\n\n没有找到结果\n\n\n");
}
}
if(x==2)
{
printf("输入电话:");
scanf("%d",&t);
for(i=0;i<person;i++)
{
if( p[i]->tel==t )
{
printf("已找到该目标\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
printf("请输入你想修改的项: 1 姓名 2 电话 3 性别 4 年龄\n");
printf("请输入:");
scanf("%d",&k);
if(k==1)
{
printf("修改为: ");
scanf("%s",p[i]->name);
printf("\n\n现在的内容为:\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
if(k==2)
{
printf("修改为:");
scanf("%d",&p[i]->tel);
printf("\n\n现在的内容为:\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
if(k==3)
{
printf("修改为:");
scanf("%s",p[i]->sex);
printf("\n\n现在的内容为:\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
if(k==4)
{
printf("修改为:");
scanf("%d",&p[i]->age);
printf("\n\n现在的内容为:\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
count++;
break;
}
}
if(count==0)
{
printf("\n\n\n没有找到结果\n\n\n");
}
}
if(x==3)
{
printf("输入年龄:");
scanf("%d",&t);
for(i=0;i<person;i++)
{
if( p[i]->age==t )
{
printf("已找到该目标\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
printf("请输入你想修改的项: 1 姓名 2 电话 3 性别 4 年龄\n");
printf("请输入:");
scanf("%d",&k);
if(k==1)
{
printf("修改为: ");
scanf("%s",p[i]->name);
printf("\n\n现在的内容为:\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
if(k==2)
{
printf("修改为:");
scanf("%d",&p[i]->tel);
printf("\n\n现在的内容为:\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
if(k==3)
{
printf("修改为:");
scanf("%s",p[i]->sex);
printf("\n\n现在的内容为:\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
if(k==4)
{
printf("修改为:");
scanf("%d",&p[i]->age);
printf("\n\n现在的内容为:\n");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
}
count++;
break;
}
}
if(count==0)
{
printf("\n\n\n没有找到结果\n\n\n");
}
}
}
void del(struct book *p[])
{
int i,j,flag=0,k;
char mz[10];
printf("\n\n\n已有联系人如下:\n\n");
for(i=0;i<person;i++)
{
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
printf("*********************************************\n");
}
printf("请输入你想删除的联系人\n\n");
printf("请输入:");
scanf("%s", mz);
for(i=0;i<person;i++)
{
if(strcmp(p[i]->name , mz)==0)
{
printf("\n\n\n所得结果:");
printf("姓名:%s 电话:%d 性别:%s 年龄:%d\n\n\n",p[i]->name, p[i]->tel, p[i]->sex, p[i]->age);
flag=i+1;
}
}
if(flag==0)
{
printf("未找到结果\n");
}
else
{
printf("是否确认删除?1:是,2:否\n");
printf("请输入:");
scanf("%d",&j);
printf("\n");
if(j==1)
{
free(p[i]);
for(i=flag-1;i<person-1;i++)
{
p[i]=p[i+1];
}
person--;
printf("完成\n");
}
else
{
printf("已取消\n");
}
}
}
void menu()
{
// system("cls");
printf("\n\n\n\n******************************************\n");
printf("\n*******************通讯录*****************\n");
printf("\n 按1*************显示录\n");
printf("\n 按2***************新建\n");
printf("\n 按3***************删除\n");
printf("\n 按4***************查找\n");
printf("\n 按5***************修改\n");
printf("\n 按6***************排序\n");
printf("\n 按7***************结束\n");
printf("\n********************************************\n");
printf("\n********************************************\n");
}
int main()
{
int choice;
struct book *frien[size]={0};
while(1)
{
menu();
printf("请输入命令:");
scanf("%d",&choice);
switch(choice)
{
case 1:
show(frien);
break;
case 2:
creat(frien);
break;
case 3:
del(frien);
break;
case 4:
find(frien);
break;
case 5:
change(frien);
break;
// case 6:
// break;
case 7:
exit(0);
break;
}
}
}