各位帮帮忙,我实在想不出错哪了!
#include <stdio.h>#include <stdlib.h>
#include < malloc.h>
#include <string.h>
#define maxlen 20
typedef struct lnode
{ /*通讯录结构中结点的定义*/
char name[20];
char e_addr[20];
char tel_no[15];
char QQ_no[10];
char arch;
struct lnode *next;
}listnode,*linklist;
linklist head=NULL,r=NULL; /*定义头指针和尾指针*/
listnode *s,*p0,*ptest; /*定义节点指针*/
char name1[maxlen]; //定义结构体中间变量
///*
void test()
{
ptest=head;
while(ptest!=NULL)
{
printf("\n");
printf("\t%s\n",ptest->name);
printf("\t%s\n",ptest->tel_no);
printf("\t%s\n",ptest->QQ_no);
ptest=ptest->next;
}
}
//*/
void creat()
{
s=(linklist)malloc(sizeof(listnode));
}
void Find()
{
printf("\n\n\t请输入姓名:");
scanf("%s",&name1);
p0=head;
while(strcmp(name1,p0->name)!=0&&p0!=NULL)
p0=p0->next;
if(p0==NULL)
printf("要查找的联系人不存在!");
else
{
printf("\t姓名:%s\n",p0->name);
printf("\t电子邮件:%s\n",p0->e_addr);
printf("\t电话号码:%s\n",p0->tel_no);
printf("\tQQ号码:%s\n",p0->QQ_no);
printf("\t类别:%c\n",p0->arch);
printf("\n\n\n");
}
}
void Delete() /*定义一个删除的函数*/
{
printf("\n\n\t请输入要删除用户的姓名:");
scanf("%s",name1);
p0=head;
if(p0->next!=NULL)
{
if(strcmp(p0->name,name1)==0)
{
ptest=p0;
p0=p0->next;
free(ptest);
}
else
p0=p0->next;
}
else
printf("找不到该联系人!");
}
void Input() /*向通讯录中输入一个人的信息*/
{
s=(linklist)malloc(sizeof(listnode));
printf("\n\n\t请输入该用户的信息:\n");
printf("\t姓名:");
scanf("%s",s->name);
printf("\t电话号码:");
scanf("%s",s->tel_no);
printf("\tE-mail:");
scanf("%s",s->e_addr);
printf("\tQQ号码:");
scanf("%s",s->QQ_no);
getchar();
printf("\t组别(A朋友 B同事 C同学 D家人):");
scanf("%c",&s->arch);
test();
if(head==NULL){printf("\n\n"); head=s;r=head;head->next=NULL;}
else
{
p0=head;
while(p0!=NULL&&strcmp(s->name,p0->name)!=0&&strcmp(s->tel_no,p0->tel_no)!=0)
p0=p0->next;
if(p0!=NULL)
{
printf("\t您添加的用户已存在!");
free(s);
}
else
{
r->next=s;
r=s;r->next=NULL;
}
}
//test();
}
void Alter() /*改变一个人的信息*/
{
printf("\n\n\t请输入姓名:");
scanf("%s",name1);
p0=head;
while(strcmp(name1,p0->name)!=0&&p0!=NULL)
{
p0=p0->next;
}
if(p0==NULL)
printf("找不到该联系人!");
else
{
printf("要修改的联系人的姓名:");
scanf("%s",&name1);
strcpy(p0->name,name1);
printf("要修改的联系人的电子邮件:");
scanf("%s",&name1);
strcpy(p0->e_addr,name1);
printf("要修改的联系人的电话号码:");
scanf("%s",&name1);
strcpy(p0->tel_no,name1);
printf("要修改的联系人的QQ号码:");
scanf("%s",&name1);
strcpy(p0->QQ_no,name1);
/* printf("要修改的联系人的类别:");
scanf("%s",&name1);
strcpy(p0->arch,name1);*/
}
}
void main()
{
char ch;
do
{
printf("\n\n\n\n\t欢迎使用您的通讯录!");/*显示提示的信息*/
printf("\n\n\t\t请选择操作:");
printf("\n\t\t1.查找通讯录");
printf("\n\t\t2.删除通讯录");
printf("\n\t\t3.添加通讯录");
printf("\n\t\t4.编辑通讯录");
printf("\n\t\t5.退出");
printf("\n\n\n");
printf("\t请选择:");
scanf("%c",&ch);
void creat();
switch(ch)
{
case '1': Find(); /*用单条件多选择语句实现调用与循环*/
break;
case '2': Delete();
break;
case '3': Input();
break;
case '4': Alter();
break;
case '5': exit(0);
break;
default:
printf("\n\t————————————————\n");
printf("\n\t 请输入1-5的数字!!! \n");
printf("\n\t————————————————\n");
break;
}
getchar();
}while(1);
}