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 js调用html页面需要隐藏某个按钮
    • ¥15 ads仿真结果在圆图上是怎么读数的
    • ¥20 Cotex M3的调试和程序执行方式是什么样的?
    • ¥15 一道python难题3
    • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
    • ¥15 牛顿斯科特系数表表示
    • ¥15 arduino 步进电机
    • ¥20 程序进入HardFault_Handler
    • ¥15 oracle集群安装出bug
    • ¥15 关于#python#的问题:自动化测试