#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
typedef struct PhoneNumber{
char tel[12];
char name[11];
char sex[4];
}PN;
typedef struct T{
PN num;
struct T* next;
}Pointer;
Pointer* add(Pointer* c);
int dele(Pointer* c);
int alter(Pointer* c);
int show(Pointer* c);
void print(Pointer* p);
void meau();
Pointer* Init(Pointer* p);
void menu()
{
printf("******1:添加通讯录好友******\n");
printf("******2:删除通讯录好友******\n");
printf("******3:修改通讯录好友信息******\n");
printf("******4:显示通讯录好友******\n");
printf("******5:退出******\n");
}
Pointer* Init(Pointer* p)
{
p=(Pointer*)malloc(sizeof(Pointer));
p->next=NULL;
return p;
}
Pointer* add(Pointer* c)
{
int ch;
int i;
Pointer* s;
Pointer* q;
if(c==NULL)
{
c=(Pointer*)malloc(sizeof(Pointer));
c->next =NULL;
}
q=c;
printf("输入1添加,0退出:");
scanf("%d",&ch);
getchar();
while(ch==1)
{
s=(Pointer*)malloc(sizeof(Pointer));
printf("请输入您要添加的好友的电话\n");
scanf("%s",s->num.tel);
printf("%s",s->num.tel);
printf("请输入您要添加的好友的姓名\n");
scanf("%s",s->num.name);
printf("%s",s->num.name);
printf("请输入您要添加的好友的性别\n");
scanf("%s",s->num.sex);
printf("%s",s->num.sex);
printf("添加成功\n");
s->next=q->next ;
q->next =s;
printf("1继续添加,0退出\n");
scanf("%d",&ch);
fflush(stdin);
system("cls");
}
return c;
}
int alter(Pointer* c)
{
int ch;//接收用户的选项
char n[11];//接收用户输入的姓名
Pointer *s;
s=c->next;
//Pointer *q=c;
if(s==NULL)
printf("通讯录为空\n");
printf("请输入您要修改的好友的姓名:");
scanf("%s",n);
while(s !=NULL)
{
if(strcmp(s->num.name,n)==0)
{
printf("请输入您要修改的选项:0表示电话,1表示姓名,2表示性别:");
scanf("%d",&ch);
switch(ch)
{
case 0:
printf("请输入新电话:");
scanf("%s",s->num.tel);
break;
case 1:
printf("请输入新姓名:");
scanf("%s",s->num.name);
break;
case 2:
printf("请输入新性别:");
scanf("%s",s->num.sex);
break;
default:
break;
}
break;
}
else
s=s->next;
}
if(s==NULL)
printf("无此联系人");
system("cls");
return 0;
}
int dele(Pointer* c)
{
Pointer* pre;
Pointer* q;
char n[11];//接受删除的姓名
q=c->next ;
pre=c;
if(q==NULL)
{
printf("通讯录查无此人");
}
printf("请输入您要删除的好友的姓名:");
scanf("%s",n);
//q=q->next;
while(q )
{
if(!(strcmp(q->num.name,n)))
{
pre->next=q->next;
free(q);
printf("删除成功!");
break;
}
else
{
pre=q;
q=q->next ;
}
}
system("cls");
return 0;
}
void print(Pointer* p)
{
int c;
printf("请输入您想进行的操作:");
scanf("%d",&c);
switch(c)
{
case 1:add(p);break;
case 2:dele(p);break;
case 3:alter(p);break;
case 4:show(p);break;
case 5:exit(0);
default:break;
}
}
int show(Pointer* c)
{
Pointer* s;
int i;
s=c->next;
if(s==NULL)
{
printf("您还没有通讯录好友!");
}
while(s!=NULL)
{
printf("%s\t",s->num.name);
printf("%s\t",s->num.sex);
printf("%s\n",s->num.tel);
s=s->next;
}
return 0;
}
int main()
{
int ch;
Pointer p;
Pointer* q=Init(&p);
printf("输入0:退出通讯录界面,输入1:继续\n");
while((ch=getchar()))
{
menu();
print(q);
printf("输入0:退出通讯录界面,输入1:继续\n");
printf("\n");
}
system("pause");
return 0;
}