1-27工作日志

 

今日工作结果

问题及改善方法

明日计划

1-27

今日完成了要求题目所有功能,然后在菜单和使用体验方面完成写优化。

void xianshi(peo *head)
{
 void mune(peo * head);
 peo *p,*q;
 int flag=1;
 int n=0,m=0;
 int i,k=0;
 if(head!=NULL)
 {


  for(p=head->next;p!=NULL;p=p->next)//统计数据个数
   k++;
  


  p=head->next;
  printf("姓名----------电话----------组群\n");
  for(;p!=NULL;)
  {
   while(n<10&&p!=NULL)
   {
   
    n++;
    printf("%-14s",p->name);   
    printf("%-14s",p->tel);   
    printf("%-14s",p->qunzu);  
    printf("\n");
    q=p;
    p=p->next;
    
   }

     printf("\n【主菜单】-0,【下一页】-1,【上一页】-2\n");
     fflush(stdin);
     scanf("%d",&flag);
      if(flag==0)
      {
       system("cls");
       mune(head);
      }
     
      if(flag==1)
      {
       n=n%10;
       if(m==(k/10))//若本页已是最后一页,则提示,并再次输出
       { system("cls");
        printf("已是最后一页\n");
        printf("姓名----------电话----------组群\n");
        p=q;
       }
       else
       {
        m++;
        system("cls");
        printf("姓名----------电话----------组群\n");
        n=n%10;
       }
      
      }
      if(flag==2)
      {
       
       p=head->next;
       n=n%10;
       if(m==0)//若本页已是第一页,则提示,并再次输出
       { system("cls");
        printf("已是第一页\n");
        printf("姓名----------电话----------组群\n");
       }
       else
       {
        m--;
        system("cls");
         printf("姓名----------电话----------组群\n");
        for(i=0;i<(m-1)*10;i++)//移动指针
         p=p->next; 
       }
      }
       
      
   
  
  }
 }
 else
   printf("通讯录为空\n");


    printf("\n任意键进入主菜单\n");
  fflush(stdin);
  scanf("%d",&flag);
  
      system("cls");
}

问题:在完成每页显示10个,然后有上一页下一页选项的时候,循环无法正常退出

改善方法:

最开始 while(n<10)
   {
   
    n++;
    printf("%-14s",p->name);   
    printf("%-14s",p->tel);   
    printf("%-14s",p->qunzu);  
    printf("\n");
    q=p;
    p=p->next;
    
   }



每次结束时,都因为最后一个指针已被赋空而死循环。

后改为while(n<10&&p!=NULL)


小小的一句话却花了好几个小时来找。。







今天体验程序,发现显示完通讯录进入主菜单,衔接不好。明天优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值