weixin_46087794 2020-03-09 22:51
浏览 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");

    }

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作