有人帮我看看这个代码怎么修改吗?谢谢。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
enum option{
exit,
add,
dele,
search,
mod,
show
};
enum text{
EXIT,
NAME,
AGE,
TELE,
ADDR
};
struct people{
char name[20];
int age;
char tele[20];
char addr[30];
};
typedef struct Lnode{
struct people data;
struct Lnode *next;
}Lnode, *Linklist;
void menu()
{
printf("**********************************通 讯 录 管 理 系 统**********************************\n");
printf("**********************************1.添加 2.删除**********************************\n");
printf("**********************************3.查找 4.修改**********************************\n");
printf("**********************************5.浏览 0.退出**********************************\n");
}
void MENU()
{
printf("**********************************请选择需要修改的内容**********************************\n");
printf("********************************** 1. 姓名 **********************************\n");
printf("********************************** 2. 年龄 **********************************\n");
printf("********************************** 3. 电话号码 **********************************\n");
printf("********************************** 4. 家庭住址 **********************************\n");
printf("********************************** 0. 退出程序 **********************************\n");
}
void addcontact(Linklist L)
{
char nam[20];
printf("请输入要添加的联系人姓名-> ");
scanf("%s",nam);
Linklist p;
p=L;
Linklist s=(Linklist)malloc(sizeof(Lnode));
s->next=NULL;
while(p->next)
{
if(strcmp(nam,p->data.name)==0)
{
printf("该联系人已经存在,不需要再次添加\n");
break;
}
p=p->next;
}
if(p->next==NULL)
{
strcpy(s->data.name,nam);
printf("请输入该联系人的年龄->");
scanf("%d",&s->data.age);
printf("请输入该联系人的电话号码->");
scanf("%s",&s->data.tele);
printf("请输入该联系人的地址->");
scanf("%s",&s->data.addr);
p->next=s;
p=s;
printf("添加成功\n");
}
}
void delecontact(Linklist L)
{
char ame[20];
Linklist p,q;
p=L;
Linklist q=(Linklist)malloc(sizeof(Lnode));
printf("请输入要删除的联系人的姓名->");
scanf("%s",ame);
while(p->next)
{
if(strcmp(ame,p->data.name)==0)
{
q=p->next;
p->next=p->next->next;
free(q);
printf("删除成功\n");
}
p=p->next;
}
if(p->next==NULL)
{
printf("暂时无数据,请添加数据后再使用\n");
}
}
void searchcontact(Linklist L)
{
char nme[20];
Linklist p;
printf("请输入需要查找的联系人->\n");
scanf("%s",nme);
p=L;
while(p->next)
{
if(strcmp(nme,p->data.name)==0)
{
printf("找到该联系人,其具体信息如下\n");
printf("%20s%4s%20s%30s\n","姓名","年龄","电话号码","家庭住址");
printf("%20s%4d%20s%30s\n",
p->data.name,
p->data.age,
p->data.tele,
p->data.addr);
}
p=p->next;
}
if(p->next==NULL)
{
printf("无该联系人\n");
}
}
void modcontact(Linklist L)
{
char mne[20];
int num=0;
Linklist p;
p=L;
printf("请输入要修改的联系人姓名\n");
scanf("%s",mne);
while(p->next)
{
if(strcmp(mne,p->data.name)==0)
{
printf("找到该联系人,其具体信息如下\n");
printf("%20s%4s%20s%30s\n","姓名","年龄","电话号码","家庭住址");
printf("%20s%4d%20s%30s\n",
p->data.name,
p->data.age,
p->data.tele,
p->data.addr);
do
{
MENU();
printf("请选择->\n");
scanf("%d",&num);
switch(num)
{
case NAME:
printf("请输入修改后的内容\n");
scanf("%s",&p->data.name);
break;
case AGE:
printf("请输入修改后的内容\n");
scanf("%d",&p->data.age);
break;
case TELE:
printf("请输入修改后的内容\n");
scanf("%s",&p->data.tele);
break;
case ADDR:
printf("请输入修改后的内容\n");
scanf("%s",&p->data.addr);
break;
case EXIT:
printf("修改完毕\n");
break;
default:
printf("选择错误\n");
break;
}
}while(num);
}
p=p->next;
}
if(p->next==NULL)
{
printf("无该联系人\n");
}
}
void showcontact(Linklist L)
{
Linklist p;
p=L;
while(p->next)
{
printf("%20s%4s%20s%30s\n","姓名","年龄","电话号码","家庭住址");
printf("%20s%4d%20s%30s\n",
p->data.name,
p->data.age,
p->data.tele,
p->data.addr);
p=p->next;
}
if(p->next==NULL)
{
printf("通讯录为空\n");
}
}
int main()
{
Linklist L=(Linklist)malloc(sizeof(Lnode));
L->next=NULL;
int input=0;
do
{
menu();
printf("请选择您所需要进行的操作->> ");
scanf("%d",&input);
switch(input)
{
case add:
addcontact(L);
break;
case dele:
delecontact(L);
break;
case search:
searchcontact(L);
break;
case mod:
modcontact(L);
break;
case show:
showcontact(L);
break;
case exit:
printf("退出程序\n");
break;
default:
printf("选择错误\n");
break;
}
}while(input);
return 0;
}