typedef struct LINKMAN//建立结构体
{
char name[20];
char sex[10];
int age;
char Email[30];
int tel[12];
char addr[50];
}LINKMAN;
typedef struct statis //把通讯录和人员统计放在结构体内
{
LINKMAN num[1000];
int count;
}statis;
void inint_linkman(statis p);//初始化数组
void Add_linkman(statis p);//添加联系人信息
void Dele_linkman(statis p);//删除联系人信息
void Find_linkman(statis p);//查找联系人信息
void Revise_linkman(statis p);//修改联系人信息
void Display_linkman(statis p);//现实所有联系人信息
void sort_linkman(statis *p);//以名字排序所有联系人
statis sta;
void menu()//菜单
{
printf("************************************\n");
printf("*****1.添加联系人信息***************\n");
printf("*****2.删除指定联系人信息***********\n");
printf("*****3.查找指定联系人信息***********\n");
printf("*****4.修改指定联系人信息***********\n");
printf("*****5.显示所有联系人信息***********\n");
printf("*****6.以名字及排序所有联系人信息\n");
printf("7.按0退出所有程序************\n");
printf("************************************\n");
}
void test()
{
int i=0;
do
{
menu();
printf("请输入你要进行的选项前的数字\n");
scanf("%d",&i);
switch(i)
{
case 1;
Add_linkman(&sta);
break;
case 2;
Dele_linkman(&sta);
break;
case 3;
Find_linkman(&sta);
break;
case 4;
Revise_linkman(&sta);
break;
case 5;
Display_linkman(&sta);
break;
case 6;
sort_linkman(&sta);
break;
case 0;
exit(1)
linkman(&sta);
break;
default;
printf("输入错误!");
break;
}
}while(i);
}
int main()
{
inint_linkman(&sta);
test();
system("pause");
return 0;
}
void inint_linkman(statis *p)
{
int count=sizeof(p->num);
p_>count=0;
memset(p->num, 0,count);
}
int find(statis p, char pname)
{
int i=0;
for(i=0;i< (p->count);i++)
{
if(strcmp(p->num[i].name,pname)==0)
return i;
}
return -1;
}
void menu1()//修改联系人时用到的菜单
{
printf("**********************\n");
printf("****1.姓名2.性别\n");
printf("3.年龄4.电话*****\n");
printf("****5.地址6电子邮件****\n");
printf("****7.返回****************\n");
}
void Add_linkman(statis *p);//添加联系人
{
printf("请输入你要添加的联系人的姓名\n");
scanf("%s",p->num[p->count].name);
printf("请输入你要添加联的系人的性别\n");
scanf("%s",p->num[p->count].sex);
printf("请输入你要添加联的系人的年龄\n");
scanf("%d",p->num[p->count].age);
printf("请输入你要添加的联系人的电子邮件\n");
scanf("%s",p->num[p->count].Email);
printf("请输入你要添加联的系人的电话\n");
scanf("%s",p->num[p->count].tel);
printf("请输入你要添加联的系人的地址\n");
scanf("%s",p->num[p->count].addr);
if((P->count)>1000)
{
printf("联系人上限!\n");
}
else
{
printf("添加成功!\n");
p->count++;
}
}
void Dele_linkman(statis *p)//删除联系人
{
char name[20]={0};
int result=0;
int n=0;
int i=0;
printf("请输入要删除人的姓名:\n");
scanf("%s",name);
result=Find(p,name);
if(result != -1)
{
printf("你是否要删除该联系人?\n");
printf("删除请安1,不删除请安0\n");
scanf("%d",&n);
if(n==1)
{
for(i=0;i<(p->count-1);i++);
{
p->num[i]=p->num[i+1];
}
p->count--;
printf("删除成功!\n");
}
else
{
printf("删除失败!\n");
}
}
else
{
printf("联系人不存在\n");
}
}
void Find_linkman(statis *p);//查找联系人
{
char name[20]={0};
int result=0;
printf("请输入要查找的联系人的姓名\n");
scanf("%s",name);
result=Find(p,name);
if(result !=-1)
{
printf("姓名: %s\n",p->num[result].name);
printf("性别: %s\n",p->num[result].sex);
printf("年龄: %d\n",p->num[result].age);
printf("电子邮件: %s\n",p->num[result].Email);
printf("电话: %s\n",p->num[result].tel);
printf("地址: %s\n",p->num[result].addr);
}
else
{
printf("您查找的联系人不存在\n");
}
}
void Revise_linkman(statis *p);//修改联系人
{
char name[20]={0};
int result=0;
printf("请输入要修改的联系人的姓名\n");
scanf("%s",name);
result=Find(p,name);
if(result !=-1)
{
printf("姓名: %s\n",p->num[result].name);
printf("性别: %s\n",p->num[result].sex);
printf("年龄: %d\n",p->num[result].age);
printf("电子邮件: %s\n",p->num[result].Email);
printf("电话: %s\n",p->num[result].tel);
printf("地址: %s\n",p->num[result].addr);
int i=0;
do
{
menu1();
printf("输入您要修改的选项\n");
scanf("%d",&i);
switch(i)
{
case 1:
printf("请把姓名改成:");
scanf("%s"p->num[result].name);
break;
case 2:
printf("请把性别改成:");
scanf("%s"p->num[result].sex);
break;
case 3:
printf("请把年龄改成:");
scanf("%s"p->num[result].age);
break;
case 4:
printf("请把电子邮件改成:");
scanf("%s"p->num[result].Email);
break;
case 5:
printf("请把电话改成:");
scanf("%s"p->num[result].tel);
break;
case 6:
printf("请把地址改成:");
scanf("%s"p->num[result].addr);
break;
case 7:
break;
default:
printf("输入错误!");
break;
}
}while(i)
}
else
{
printf("您要修改的联系人不存在\n");
}
}
void sort_linkman(statis *p)//以名字排序所有联系人
{
int i=0;
int j=0;
for(i=0;i<p->count-1;i++)
for(j=0;j<p->count-1-i;j++)
{
if(strcmp(p->num[j].name,p->num[j+1].name)>0)
{
LINKMAN tmp;
tmp=p->num[j];
p->num[j]=p->num[j+1];
p->num[j+1]=tmp;
}
}
}