weixin_46087794 2020-03-09 22:51 采纳率: 0%
浏览 128

通讯录管理系统谁帮忙看一下哪里出错了

#include
#include
#include
struct peo //定义链表
{
char name[100];
char danwei[100];
char num[15];
char email[30];
int qq;
char add[100];
struct peo *next;
};
int main()
{
int cz;//定义操作
struct peo *head,*q;
struct peo *tianjia(struct peo *head,struct peo *q);
struct peo *change(struct peo *head);
struct peo *shanchu(struct peo *head);
void chazhao(struct peo *head);
void xianshi(struct peo *head);

head=(struct peo*)malloc(sizeof(struct peo));//内存分配
head->next=NULL;
printf("\t\t\t----------个人通讯录管理系统-----------\t\t\t\n\n");
printf("\t\t\t------------1、添加通讯录----------\t\t\t\n");
printf("\t\t\t------------2、修改通讯录----------\t\t\t\n");
printf("\t\t\t------------3、删除通讯录----------\t\t\t\n");
printf("\t\t\t------------4、查找通讯录----------\t\t\t\n");
printf("\t\t\t------------5、显示通讯录----------\t\t\t\n");
printf("\t\t\t------------6、结束程序------------\t\t\t\n\n\n");
FILE *fp;
if((fp=fopen("通讯录.txt","w+"))==NULL)
{printf("不能打开通讯录.txt文件!\n");
exit(0);
}

start:fread(head,sizeof(struct peo),1,fp);
printf("请输入您想进行的操作(输入1-6):");
scanf("%d",&cz);
switch(cz)
{
case 1:

        q=(struct peo*)malloc(sizeof(struct peo));
        printf("输入姓名:");scanf("%s",q->name);
        printf("\n输入单位:");scanf("%s",q->danwei);
        printf("\n输入电话:");scanf("%s",q->num);
        printf("\n输入电子邮箱:");scanf("%s",q->email);
        printf("\n输入qq:");scanf("%d",&(q->qq));
        printf("\n输入家庭地址:");scanf("%s",q->add);
        tianjia(head,q);
break;
case 2:change(head);
break;
case 3:shanchu(head);
break;
case 4:chazhao(head);
break;
case 5:
    fread(head,sizeof(struct peo),1,fp);
    xianshi(head);
break;
case 6:
    {struct peo *p=head->next;
p->next=NULL;
while(p)
{
    fprintf(fp,"%s",p->name);
    fprintf(fp,"%s",p->danwei);
    fprintf(fp,"%s",p->num);
    fprintf(fp,"%s",p->email);
    fprintf(fp,"%d",&(p->qq));
    fprintf(fp,"%s",p->add);
    p=p->next;
}
printf("\n");
fprintf(fp,"\n");
fclose(fp);
exit(0);}
default:printf("对不起,您输入的操作有误!请重新输入!");

}
goto start;

return 0;

}

struct peo *tianjia(struct peo *head,struct peo *q)//添加操作函数
{
struct peo *p;
for(p=head;p->next!=NULL;p=p->next);

p->next=q;
q->next=NULL;
return head;//返回头文件

}
struct peo *change(struct peo *head)//修改操作函数
{

char a[100];int b;
struct peo *p;
if(head->next==NULL)
printf("\t\t\t通讯录为空!!\t\t\t");
else {
printf("输入要修改人员的姓名:");
scanf("%s",a[100]);
for(p=head->next;p=!NULL;p=p->next);
{
printf("\t输入想要修改的选项:\n");
printf("\t1、修改姓名:\n");
printf("\t2、修改单位:\n");
printf("\t3、修改电话:\n");
printf("\t4、修改电子邮箱:\n");
printf("\t5、修改QQ号:\n");
printf("\t6、修改家庭地址:\n");
printf("请输入想修改选项(1-6):");
scanf("%d",b);
switch(b)
{
case 1:
printf("\t输入修改后的姓名:");
scanf("%s",p->name);
break;
case 2:
printf("\t输入修改后的单位:");
scanf("%s",p->name);
break;
case 3:
printf("\t输入修改后的电话:");
scanf("%s",p->num);
break;
case 4:
printf("\t输入修改后的电子邮箱:");
scanf("%s",p->email);
break;
case 5:
printf("\t输入修改后的QQ号:");
scanf("%d",&(p->qq));
break;
case 6:
printf("\t输入修改后的家庭住址:");
scanf("%s",p->add);
break;
default:
printf("\t您输入的操作有误!");
}

    }
}
        return head;

}

struct peo *shanchu(struct peo *head)
{
struct peo *p,*q;
char a[100];
if(head->next==NULL)
printf("/t/t/t通讯录为空!\t\t\t");
else
{
printf("\t输入想删除人员姓名:");
scanf("%s",a);
p=head;q=p->next;
while(q->name!=a&&q->next!=NULL)
{ p=p->next;
q=p->next; }
if(q->name==a)
{
p->next=q->next;
free(q);
printf("\t\t\t删除成功!\t\t\t");
}
else
printf("\t\t\t没有找到符合要求的人员!!");
}

return head;

}

void chazhao(struct peo *head)
{
struct peo *p;
char a[100];
if(head->next==NULL)
printf("\t\t\t该通讯录不存在!!!!\t\t\t");
else{
printf("请输入要查找的人员的姓名或者电话:");
scanf("%s",a);
for(p=head->next;p->next!=NULL;p=p->next)
{ if(p->name==a||p->num==a)
{
printf("\t\t查找人员的姓名为:%s",p->name);
printf("\t\t\t\t单位为:%s",p->danwei);
printf("\t\t\t\t电话为:%s",p->num);
printf("\t\t\t\t电子邮箱为:%s",p->email);
printf("\t\t\t\tQQ为:%d",&(p->qq));
printf("\t\t\t\t家庭地址为:%s",p->add);
break;
}
}
if(p->name==a||p->num==a)
{
printf("\t\t查找人员的姓名为:%s",p->name);
printf("\t\t\t\t单位为:%s",p->danwei);
printf("\t\t\t\t电话为:%s",p->num);
printf("\t\t\t\t电子邮箱为:%s",p->email);
printf("\t\t\t\tQQ为:%d",&(p->qq));
printf("\t\t\t\t家庭地址为:%s",p->add);
}
else
printf("\t\t\t查找的人员不存在!!\n");

}

}
void xianshi(struct peo *head)
{
struct peo *p;
p=head->next;
if(p==NULL)
printf("\t\t\t\t该通讯录不存在!!!\n");
else
for(p=head->next;p!=NULL;p=p->next)
{printf("人员姓名:");puts(p->name);
printf("人员单位:");puts(p->danwei);
printf("人员电话:");puts(p->num);
printf("人员电子邮件:");puts(p->email);
printf("人员QQ:");printf("%d",p->qq);printf("\n");
printf("人员家庭住址:");puts(p->add);
printf("\n\n");

    }

}

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2024-07-25 18:38
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    br> if(head->next==NULL)
    printf("\t\t\t通讯录为空!!\t\t\t");
    else {
    printf("输入要删除人员的姓名:");
    scanf("%s",a[100]);
    for(p=head,q=head->next;q!=NULL;q=q->next,p=p->next)
    {
    if(strcmp(q->name,a)==0)
    {
    p->next=q->next;
    free(q);
    printf("删除成功!");
    return head;
    }

    }
    printf("通讯录中没有找到该人员!");
    }
    return head;
    } } void chazhao(struct peo *head)
    {
    struct peo *p;
    char a[100];
    printf("请输入要查找的人员姓名:");
    scanf("%s",a);
    for(p=head->next;p!=NULL;p=p->next)
    {
    if(strcmp(p->name,a)==0)
    {
    printf("姓名:%s\n单位:%s\n电话:%s\n邮箱:%s\nQQ号:%d\n家庭地址:%s\n",p->name,p->danwei,p->num,p->email,p->qq,p->add);
    return;
    }
    }
    printf("通讯录中没有找到该人员!");
    } } void xianshi(struct peo *head)
    {
    struct peo *p;
    for(p=head->next;p!=NULL;p=p->next)
    {
    printf("姓名:%s\n单位:%s\n电话:%s\n邮箱:%s\nQQ号:%d\n家庭地址:%s\n",p->name,p->danwei,p->num,p->email,p->qq,p->add);
    }
    } } 这段代码是一个简单的个人通讯录管理系统,可以进行添加、修改、删除、查找和显示通讯录的操作。以下是问题的解答: 问题:请说明该程序的主要功能和结构,并给出一个完整的应用案例。 解答: 该程序实现了一个简单的个人通讯录管理系统,用户可以通过命令行选择对通讯录进行添加、修改、删除、查找和显示操作。程序使用链表来存储通讯录信息,每个节点包含姓名、单位、电话、邮箱、QQ号和家庭地址等信息。 主要功能:
    1. 添加通讯录:用户可以输入新的通讯录信息,并将其添加到链表中。
    2. 修改通讯录:用户可以选择要修改的通讯录条目,并修改其中的信息。
    3. 删除通讯录:用户可以输入要删除的通讯录条目的姓名,程序会在链表中查找并删除该条目。
    4. 查找通讯录:用户可以输入要查找的通讯录条目的姓名,程序会显示该条目的详细信息。
    5. 显示通讯录:将当前所有通讯录条目的信息逐条显示在屏幕上。 应用案例: 假设用户想要添加一个新的通讯录条目,如下所示:
    请输入您想进行的操作(输入1-6):1
    输入姓名:Alice
    输入单位:Company A
    输入电话:1234567890
    输入电子邮箱:alice@example.com
    输入qq:123456789
    输入家庭地址:123 Street, City
    

    然后用户选择查看通讯录:

    请输入您想进行的操作(输入1-6):5
    姓名:Alice
    单位:Company A
    电话:1234567890
    邮箱:alice@example.com
    QQ号:123456789
    家庭地址:123 Street, City
    

    以上是一个简单的应用案例,展示了如何使用该程序管理个人通讯录信息。

    评论

报告相同问题?