|
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct person)
//定义person机构体
struct person
{
char name[10];
char homephone[20];
char mobilephone[20];
char email[20];
struct person *next ;
};
struct person *head;
//增加联系人函数
struct person * add(struct person *p1);
//删除联系人函数
struct person * del(struct person *p1);
//修改联系人函数
struct person * update(struct person *p1);
//查找联系人 函数
struct person * find (struct person *p1);
//打印所有联系人信息函数
struct person * printall(struct person *p1);
main()
{
int order;
printf(" ---------------通讯录管理系统---------------------\n");
printf(" | 1 增加联系人 |\n");
printf(" | 2 删除联系人 |\n");
printf(" | 3 修改联系人 |\n");
printf(" | 4 查找联系人 |\n");
printf(" | 5 打印所有联系人 |\n");
printf(" | 6 退出 |\n");
printf(" ---------------通讯录管理系统---------------------\n");
printf("\n");
while(1)
{
printf("请输入你需要进入的功能:");
scanf("%d",&order);
while(order<1 || order >6)
{
printf("请输入您要进入功能的正确编号:");
scanf("%d",&order);
}
switch(order)
{
case 1 :head=add(head); break;
case 2 :head=del(head); break;
case 3 :head=update(head); break;
case 4 :head=find(head); break;
case 5 :head=printall(head); break;
case 6 :exit(0);
}
}
system("pause");
return 0;
}
//增加联系人函数
struct person * add(struct person *p1)
{
struct person *temp,*temp2;
char ch='y';
while (ch=='y')
{
temp=(struct person *)malloc(LEN);
printf("请 输 入 姓 名:");
scanf("%s",temp->name);
printf("请输入固定电话:");
scanf("%s",temp->homephone);
printf("请输入移动电话:");
scanf("%s",temp->mobilephone);
printf("请输入邮箱地址:");
scanf("%s",temp->email);
temp2=temp;
temp->next=p1;
printf("联系人添加成功,是否还要继续添加?是or否:");
getchar();
ch=getchar();
printf("\n");
}
return temp2;
}
//删除联系人函数
struct person * del(struct person *p1)
{
struct person *temp_1,*temp_2;
char del_name[20],ch='y';
temp_1=p1;
if (p1==NULL)
{
printf("通讯录为空!");
goto end;
}
while (ch=='y')
{
printf("请输入所要删除记录的名字:");
scanf("%s",del_name);
while ( strcmp(p1->name,del_name)!=0&&p1->next!=NULL)
{
temp_2=p1;
p1=p1->next;
}
if(strcmp(p1->name,del_name)==0)
{
if(temp_1==p1)
{
temp_1=p1->next;
}
else
{
temp_2->next=p1->next;
}
printf("删除%s记录成功",del_name);
}
else
{
printf("没有找到%s 记录",del_name);
}
printf("是否还要继续删除?是(y) or 否(n):\n");
getchar();
ch=getchar();
}
end:printf("谢谢删除功能\n");
return temp_1;
}
//修改联系人函数
struct person * update(struct person *p1)
{
struct person *temp;
temp=p1;
char update_name[20],flag,ch;
ch='y';
if (p1==NULL)
{
printf("通讯录为空!");
goto end;
}
while(ch=='y')
{
printf("请输入需要修改联系人的名字:");
scanf("%s",update_name);
while(p1!=NULL)
{
if(strcmp(p1->name,update_name)==0)
{
printf("你所要修改人的信息.\n名字: %s,固定电话:%s,移动电话:%s,email:%s\n",p1->name,p1->homephone,p1->mobilephone,p1->email);
printf("请输入修改后的名字:");
scanf("%s",p1->name);
printf("请输入修改后的固定电话:");
scanf("%s",p1->homephone);
printf("请输入修改后的移动电话:");
scanf("%s",p1->mobilephone);
printf("请输入修改后的email:");
scanf("%s",p1->email);
printf("修改成功!\n");
flag='u';
}
p1=p1->next;
}
if(flag!='u')
{
printf("没有找到您要修改人的记录\n");
}
printf("是否还要继续修改?是(y) or 否(n):\n");
getchar();
ch=getchar();
}
end:printf("谢谢您使用修改功能\n");
return temp;
}
//查找联系人 函数
struct person * find (struct person *p1)
{
struct person *temp_1;
char find_name[20],flag,ch='y';
temp_1=p1;
if (p1==NULL)
{
printf("通讯录为空!");
goto end;
}
while (ch=='y')
{
flag=NULL;
p1=temp_1;
printf("请输入所要查找记录的名字:");
scanf("%s",find_name);
while(p1!=NULL)
{
if(strcmp(p1->name,find_name)==0)
{
printf("所要查找%s的信息固定电话:%s,移动电话:%s,email为:%s\n",p1->name,p1->homephone,p1->mobilephone,p1->email);
flag='f';
}
p1=p1->next;
}
if(flag!='f')
{
printf("没有找到相关记录\n");
}
printf("是否还要继续查找?是(y) or 否(n):\n");
getchar();
ch=getchar();
}
end:printf("谢谢使用查找功能\n");
return temp_1;
}
//打印所有联系人信息函数
struct person * printall(struct person *p1)
{
struct person *temp;
temp=p1;
if(p1==NULL)
{
printf("通讯录为空!");
goto end;
}
while(p1!=NULL)
{
printf("名字:%s,信息固定电话:%s,移动电话:%s,email为:%s\n",p1->name,p1->homephone,p1->mobilephone,p1->email);
p1=p1->next;
}
end:printf("谢谢使用打印功能!\n");
return temp;
} |
|