有人帮我看看这个代码怎么修改吗?谢谢。
#include
#include
#include
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;
}
修改如下,供参考:
#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;
while (p->next)
{
if (strcmp(nam, p->next->data.name) == 0)
//if (strcmp(nam, p->data.name) == 0) 修改
{
printf("该联系人已经存在,不需要再次添加\n");
break;
}
p = p->next;
}
if (p->next == NULL)
{
Linklist s = (Linklist)malloc(sizeof(Lnode)); //修改
s->next = NULL;
strcpy(s->data.name, nam);
printf("请输入该联系人的年龄->");
scanf("%d", &s->data.age);
printf("请输入该联系人的电话号码->");
scanf("%s", s->data.tele); //scanf("%s", &s->data.tele);
printf("请输入该联系人的地址->");
scanf("%s", s->data.addr); //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->next->data.name) == 0) //修改
//if (strcmp(ame, p->data.name) == 0)
{
q = p->next;
p->next = p->next->next;
free(q);
printf("删除成功\n");
break; //修改
}
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->next->data.name) == 0) //修改
//if (strcmp(nme, p->data.name) == 0)
{
printf("找到该联系人,其具体信息如下\n");
printf("%20s%4s%20s%30s\n", "姓名", "年龄", "电话号码", "家庭住址");
printf("%20s%4d%20s%30s\n",
p->next->data.name, //修改
p->next->data.age, //修改
p->next->data.tele, //修改
p->next->data.addr); //修改
break; //修改
}
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->next->data.name) == 0) //修改
//if (strcmp(mne, p->data.name) == 0)
{
printf("找到该联系人,其具体信息如下\n");
printf("%20s%4s%20s%30s\n", "姓名", "年龄", "电话号码", "家庭住址");
printf("%20s%4d%20s%30s\n",
p->next->data.name, //修改
p->next->data.age, //修改
p->next->data.tele, //修改
p->next->data.addr); //修改
do
{
MENU();
printf("请选择->\n");
scanf("%d", &num);
switch (num)
{
case NAME:
printf("请输入修改后的内容\n");
scanf("%s", p->next->data.name); //scanf("%s", &p->data.name);
break;
case AGE:
printf("请输入修改后的内容\n");
scanf("%d", &p->next->data.age);
break;
case TELE:
printf("请输入修改后的内容\n");
scanf("%s", p->next->data.tele); //scanf("%s", &p->data.tele);
break;
case ADDR:
printf("请输入修改后的内容\n");
scanf("%s", p->next->data.addr); //scanf("%s", &p->data.addr);
break;
case EXIT:
printf("修改完毕\n");
break;
default:
printf("选择错误\n");
break;
}
} while (num);
break; //修改
}
p = p->next;
}
if (p->next == NULL)
{
printf("无该联系人\n");
}
}
void showcontact(Linklist L)
{
Linklist p;
p = L;
if (p == NULL || p->next == NULL) //修改
{
printf("通讯录为空\n");
}
else { //修改
printf("%20s%4s%20s%30s\n", "姓名", "年龄", "电话号码", "家庭住址"); //修改
while (p->next)
{
printf("%20s%4d%20s%30s\n",
p->next->data.name, //修改
p->next->data.age, //修改
p->next->data.tele, //修改
p->next->data.addr); //修改
p = p->next;
}
}
}
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;
}