C语言程序设计通讯录

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <conio.h>

    struct person

         {

              char name[15];

              char sex[2];

           int nianling;

           long int youbian;

              char addr[50];

              char celephone[22];

              char homephone[22];

          char company[20];

              char email[40];

              long int QQ;

        }per[500];

   int num=0;//*外部变量num为文件中的纪录数*//

   FILE *fp;

   void mainmenu();//*主菜单*//

   void newrecord();//新添纪录*//

   void xiugaimenu();//*修改菜单*//

   void xiugaibyname();//*按姓名修改*//

   void xiugaibycelephone();//*按手机号码修改*//

   void xiugaixiangmu(int a);//*修改项目*//

   void searchmenu();//*查询菜单*//

   void searchbyname();//*按姓名查询*//

   void searchbycelephone();//*按手机号码查询*//

   void searchbyhomephone();//*按家庭电话号码查询*//

   void searchbyqq();//*按QQ查询*//

   void deletemenu();//*删除菜单*//

   void deleteall();//*删除所有信 息*//

   void deleteone();//*删除单个*//

   void showall();//*输 出 全 部 信 息*//

   void readfromfile();//*读取文件*//

   void writetofile();//*写入文件*// /

   void deletebycelephone();  //*按手机号码删除*//

   void deletebyname();//*按姓名删除*/

   void listbycelephone();//*按手机号码排序*//

   void listbyname();//*按姓名排序*//

   void listmenu();//*排序菜单*//

  

 

 

void main()//*主函数*//

{

       system("cls");

       readfromfile();

       while (1)

       {

              mainmenu();

       }

} //*主函数结束*//

 

 

 

 

 

void mainmenu()//*主菜单函数*//

{

       int a;

       system("cls");

       system("color 2a");

       printf("\n\t  您 好! 欢 迎 使 用 通 讯 录!\n");

       printf("             1: 添 加 个 人 信 息\n");

       printf("             2: 查 询 个 人 信 息\n");

       printf("             3: 删 除 个 人 信 息\n");

       printf("             4: 修 改 个 人 信 息\n");

       printf("             5: 信 息 排 序\n");

       printf("             6: 输 出 全 部 信 息\n");

       printf("             7: 写 入 文 件\n");

       printf("             8: 读 取 文 件\n");

       printf("             9: 删除所有\n");

       printf("             0: 退 出  \n");

       printf("          请输入您的数字选择:    ");

       loop1: scanf("%d",&a);

       switch (a)

       {

 

              case 1:newrecord();break;

              case 2:searchmenu();break;

              case 3:deletemenu();break;

              case 4:xiugaimenu();break;

              case 5:listmenu();break;

              case 6:showall();break;

              case 7:writetofile();break;

              case 8:readfromfile();break;

              case 9:deleteall();break;

              case 0:exit(0);

              default:printf("对不起!您的输入有误!请重新输入:   ");goto loop1;

       }

}

 

 

void newrecord()//*添加纪录*//

{

     int a;

     system("cls");

     system("color 2a");

loop:         printf("\n\n\n\n\t\t  请输入您要添加的联系人的信息: \n");

       printf("\n请输入姓名:\n");

name: scanf("%s",&per[num].name);

         if(strlen(per[num].name)>15)

          {

                printf("对不起!您的输入有误!请重新输入");

                goto name;

          }

      printf("\n请输入性别:\n");

sex:  scanf("%s",&per[num].sex);

         if(strlen(per[num].sex)==0)

         {

            printf("对不起!您的输入有误!请重新输入");

            goto sex;

         }

         printf("\n请输入年龄:");

nianling:        scanf("%d",&per[num].nianling);

      if(per[num].nianling<10||per[num].nianling>110)

       {

         printf("对不起!您的输入有误!请重新输入");

         goto  nianling;

       }

      printf("\n请输入邮编\n");

youbian:    scanf("%d",&per[num].youbian);

      if(per[num].youbian<10000||per[num].youbian>999999)

         {

             printf("对不起!您的输入有误!请重新输入");

                goto  youbian;

         }

         printf("\n请输入地址\n");

addr:       scanf("%s",&per[num].addr);

         if(strlen(per[num].addr)>50||strlen(per[num].addr)<4)

         {

                printf("对不起!您的输入有误!请重新输入\n");

                goto addr;

         }

         printf("\n请输入手机号码:\n");

celephone:   scanf("%s",&per[num].celephone);

         if(strlen(per[num].celephone)!=11)

         {

                printf("对不起!您的输入有误!请重新输入\n");

                goto celephone;

         }   

         printf("\n请输入家庭电话号码:\n");

homephone:   scanf("%s",&per[num].homephone);

         if(strlen(per[num].homephone)!=11)

            {

                  printf("对不起!您的输入有误!请重新输入\n");

                  goto homephone;

            }

         printf("\n请输入公司名称:");

company:    scanf("%s",&per[num].company);

       if(strlen(per[num].company)>20||strlen(per[num].company)<10)

         {

                printf("对不起!您的输入有误!请重新输入");

                goto company;

         }

         printf("\n输入电子邮箱:");

email:      scanf("%s",&per[num].email);

       if(strlen(per[num].email)>30||strlen(per[num].email)<4)

         {

                printf("对不起!您的输入有误!请重新输入");

                goto email;

         }

       printf("\n输入QQ号码:");

QQ: scanf("%ld",&per[num].QQ);

       if(per[num].QQ>1600000000||per[num].QQ<10000000)

         {

                printf("对不起!您的输入有误!请重新输入");

                goto QQ;

         }

       num++;

       printf("\n是否继续添加?\n");

       printf("\n请按1和2(1代表继续;2代表不继续)\n");

    printf("请输入您的选择  ");

    scanf("%d",&a);

    if(a==1)

    {

         goto loop;

    }

    else

    {

          return;

    }

}

 

 

 

 

void searchmenu()//*查询菜单*//

{

       int a;

       system("cls");

       system("color 2a");

       printf("\n\t\t  欢   迎   使    用    查    询    菜   单");

       printf("\n\t\t           1-按手机号码查询");

       printf("\n\t\t           2-按姓名查询");

       printf("\n\t\t           3-按家庭电话号码查询");

       printf("\n\t\t           4-按QQ查询");

    printf("\n\t\t           5-返回主菜单");

       printf("\n\t\t");

    printf("请输入您的选择  ");

       scanf("%d",&a);

       switch (a)

       { 

              case 1:searchbycelephone();break;

              case 2:searchbyname();break;

              case 3:searchbyhomephone();break;

              case 4:searchbyqq();break;  

              case 5:mainmenu();break;

       }

}

 

 

void searchbycelephone()//*按手机号码查询*//

{

       int mark=0;

       int i,j;

       int a=0;

       char celephone[11];

       printf("\n               按手机号码查找                \n");

       printf("\n请输入手机号码:\n");

       scanf("%s",celephone);

       for(i=0;i<num;i++)

       {

              if (strcmp(per[i].celephone,celephone)==0)

              {

                     printf("\n                 以下是您查找的联系人的信息        ");

                     printf("\n________________________________");

                     printf("\n名字: %s",per[i].name);

                     printf("\n性别: %s",per[i].sex);

                     printf("\n年龄: %d",per[i].nianling);

                     printf("\n邮编 : %ld",per[i].youbian);

                     printf("\n地址: %s",per[i].addr);

                     printf("\n手机号码: %s",per[i].celephone);

                     printf("\n家庭电话号码:%s",per[i].homephone);

                     printf("\n公司名称:%s",per[i].company);

                     printf("\n电子邮件:%s",per[i].email);

                     printf("\nQQ号码:%ld",per[i].QQ);

                     printf("\n________________________________");

                  printf("\n请按任意数字键返回主菜单");

                  mark++;

                  scanf("%d",&j);

                  return;

              }

       }

       if (mark==0)

       {

              printf("\n对不起!没有该联系人的信息!");

              printf("\n请按任意数字键返回主菜单");

              scanf("%d",&j);

              return;

       }

}

 

 

 

void searchbyname()//*按姓名查询*//

{

       int mark=0;

       int i,j,findmark=0;

       int a=0;

       char name[15];

       printf("\n                  按姓名查找                  ");

       printf("\n请输入姓名:");

       scanf("%s",name);

       for(i=a;i<num;i++)

       {

              if (strcmp(per[i].name,name)==0)

              {

            findmark++;

                     printf("\n\t\t               以下是您查找的联系人的信息            ");

                     printf("\n\t\t________________________________");

                     printf("\n\t\t名字: %s",per[i].name);

                     printf("\n\t\t性别: %s",per[i].sex);

                     printf("\n\t\t年龄: %d",per[i].nianling);

                     printf("\n\t\t邮编 : %ld",per[i].youbian);

                     printf("\n\t\t地址: %s",per[i].addr);

                     printf("\n\t\t手机号码: %s",per[i].celephone);

                     printf("\n\t\t家庭电话号码:%s",per[i].homephone);

                     printf("\n\t\t公司名称:%s",per[i].company);

                     printf("\n\t\t电子邮件:%s",per[i].email);

                     printf("\n\t\tQQ号码:%ld",per[i].QQ);

                     printf("\n\t\t________________________________");

                     if ((i+1)<num)

                     {

                            printf("\n是否继续查找相同名字的联系人的信息?(1代表继续;2代表不继续)");

                            scanf("%d",&j);

                            if (j==1)

                            {

                                   a=i;

                    mark++;

                                   continue;

                            }

                            else

                                   break;

                     }

                     else

                     {

                 printf("\n请按任意数字键返回主菜单");

                       scanf("%d",&j);

                       return;

                     }

              }

       }

       if(mark!=0)

       {

              printf("\n对不起! 没有相同名字的该联系人的信息!!");

              printf("\n请按任意数字键返回主菜单");

              scanf("%d",&j);

              return;

       }

       else if(findmark==0)

       {

              printf("\n对不起!没有该联系人的信息!");

              printf("\n请按任意数字键返回主菜单");

              scanf("%d",&j);

              return; 

       }

}

 

 

 

void searchbyhomephone()//*按家庭电话号码查询*//

{

       int mark=0;

       int i,j;

       int a=0;

       char homephone[11];

       printf("\n\t\t                   按家庭电话号码查找                     ");

       printf("\n请输入家庭电话号码:");

       scanf("%s",homephone);

       for(i=0;i<num;i++)

       {

              if (strcmp(per[i].homephone,homephone)==0)

              {

                     printf("\n\t\t                以下是您要查找的联系人的信息          ");

                     printf("\n\t\t________________________________");

                     printf("\n\t\t名字: %s",per[i].name);

                     printf("\n\t\t性别: %s",per[i].sex);

                     printf("\n\t\t年龄: %d",per[i].nianling);

                     printf("\n\t\t邮编 : %ld",per[i].youbian);

                     printf("\n\t\t地址: %s",per[i].addr);

                     printf("\n\t\t手机号码: %s",per[i].celephone);

                     printf("\n\t\t家庭电话号码:%s",per[i].homephone);

                     printf("\n\t\t公司名称:%s",per[i].company);

                     printf("\n\t\t电子邮件:%s",per[i].email);

                     printf("\n\t\tQQ号码:%ld",per[i].QQ);

                     printf("\n\t\t________________________________");

            printf("\n\t\t请按任意数字键返回主菜单");

                     mark++;

                  scanf("%d",&j);

                  return;

              }

       }

       if (mark==0)

       {

              printf("\n\t\t对不起!没有该联系人的信息!");

              printf("\n\t\t请按任意数字键返回主菜单");

              scanf("%d",&j);

              return; 

       }

}

 

 

 

void searchbyqq()//*按QQ查询*//

{

       int mark=0;

       int i,j;

       long int QQ;

       printf("\n\t\t                     按QQ号码查找                      \n");

       printf("\n请输入QQ号码:");

       scanf("%ld",&QQ);

       for(i=0;i<num;i++)

       {

              if(per[i].QQ==QQ)

              {

                     printf("\n\t\t                 以下是您查找的联系人的信息           ");

                     printf("\n\t\t________________________________");

                     printf("\n\t\t名字: %s",per[i].name);

                     printf("\n\t\t性别: %s",per[i].sex);

                     printf("\n\t\t年龄: %d",per[i].nianling);

                     printf("\n\t\t邮编 : %ld",per[i].youbian);

                     printf("\n\t\t地址: %s",per[i].addr);

                     printf("\n\t\t手机号码: %s",per[i].celephone);

                     printf("\n\t\t家庭电话号码:%s",per[i].homephone);

                     printf("\n\t\t公司名称:%s",per[i].company);

                     printf("\n\t\t电子邮件:%s",per[i].email);

                     printf("\n\t\tQQ号码:%ld",per[i].QQ);

                     printf("\n\t\t________________________________");

                  printf("\n\t\t请按任意数字键返回主菜单");

                  mark++;

                  scanf("%d",&j);

                  return;

              }

       }

       if (mark==0)

       {

              printf("\n\t\t对不起!没有该联系人的信息!");

              printf("\n\t\t请按任意数字键返回主菜单");

              scanf("%d",&j);

              return;

       }

}

 

 

 

 

void deletemenu()//*删除菜单*//

    int i,j;

    system("cls");

       system("color 3b");  

       if(num==0)

       {

              printf("\n\t\t对不起!文件中无任何纪录!");

              printf("\n\t\t请先添加个人信息!");

              printf("\n\t\t请按任意数字键返回主菜单");

              scanf("%d",&j);

              return;

       }

       else

       {

          printf("\n\t\t                   删 除 菜 单                   ");

       printf("\n\t\t                   1-删除单个                    ");    

          printf("\n\t\t                  2-返回主菜单                   ");

          printf("\n\t\t                                                 ");

          printf("\n\t\t请输入您的数字选择:    ");

          loop4: scanf("%d",&i);

          switch (i)

          {

              case 1:deleteone();break;

              case 2:mainmenu();break;

              default:printf("对不起!您的输入有误!请重新输入:   ");goto loop4;

          }

       }

}

 

 

 

void deleteone()//*删除单个*//

{

       int i;

       printf("\n\t\t1-按手机号码删除 2-按姓名删除");

       printf("\n\t\t请输入您的选择:");

       loop5:scanf("%d",&i);;

       switch (i)

       {

       case 1:deletebycelephone();break;

       case 2:deletebyname();break;

    default:printf("对不起!您的输入有误!请重新输入:   ");goto loop5;

       }

}

 

 

void deletebyname()//姓名删除*//

{

       int a=0;

       int findmark=0;

       int i,j,k;

       int deletemark=0;

       char name[15];

       printf("\n\t\t请输入您要删除的联系人的姓名:");

       scanf("%s",name);

       for (i=a;i<num;i++)

       {

              if (strcmp(per[i].name,name)==0)

              {

                     printf("\n\t\t以下是您要删除的联系人的纪录:");

                     findmark++;

                     printf("\n\t\t________________________________");

                     printf("\n\t\t名字: %s",per[i].name);

                     printf("\n\t\t性别: %s",per[i].sex);

                     printf("\n\t\t年龄: %d",per[i].nianling);

                     printf("\n\t\t邮编 : %ld",per[i].youbian);

                     printf("\n\t\t地址: %s",per[i].addr);

                     printf("\n\t\t手机号码: %s",per[i].celephone);

                     printf("\n\t\t家庭电话号码:%s",per[i].homephone);

                     printf("\n\t\t公司名称:%s",per[i].company);

                     printf("\n\t\t电子邮件:%s",per[i].email);

                     printf("\n\t\tQQ号码:%ld",per[i].QQ);

                     printf("\n\t\t________________________________");

                     printf("\n\t\t是否删除?(1代表删除;2代表不删除)\n");

                     printf("\n\t\t请输入您的数字选择:    ");

                     scanf("%d",&k);

                     if(k==1)

                     {

                            for (j=i;j<num-1;j++) //*纪录移动,从per数组中删除之*//

                            per[j]=per[j+1];

                            num--;

                            deletemark++;

                            printf("\n\t\t删除成功");

                            if((i+1)<num)

                            {

                                   printf("\n\t\t是否继续删除相同姓名的联系人的信息?(1代表删除;2代表不删除)");

                             printf("\n\t\t请输入您的数字选择:    ");

                             scanf("%d",&k);

                             if(k=1)

                                   {

                                          a=i;

                                          findmark++;

                                          continue;

                                   }

                            }

                            printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)");

                printf("\n\t\t请输入您的数字选择:    ");

                scanf("%d",&k);

                if(k==1)

                               deleteone();

                            else

                            break;

                     }

              }    

              else

              continue;

       }

       if((deletemark==0)&&(findmark==0))

       {

              printf("\n\t\t对不起!没有该联系人的纪录!");

              printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)");

              printf("          请输入您的数字选择:    ");

              scanf("%d",&k);

              if(k==1) 

                deleteone();

 

       }

       else if(findmark!=0)

       {

              printf("\n\t\t对不起!没有重名信息!");

              printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)");

              printf("          请输入您的数字选择:    ");

              scanf("%d",&k);

           if(k==1)

                 deleteone();

       }

}

 

 

void deletebycelephone()//*按手机号码删除*//

{

       int i,j,h,m;

       int deletemark=0;

       char celephone[11];

       printf("\n\t\t请输入要删除的联系人的手机号码:");

       scanf("%s",celephone);

       for(i=0;i<num;i++)

       {

              if(strcmp(per[i].celephone,celephone)==0)

              {

                  deletemark++;

                     printf("\n\t\t以下是您要删除的联系人的纪录:");

                     printf("\n\t\t________________________________");             

                     printf("\n\t\t名字: %s",per[i].name);

                     printf("\n\t\t性别: %s",per[i].sex);

                     printf("\n\t\t年龄: %d",per[i].nianling);

                     printf("\n\t\t邮编 : %ld",per[i].youbian);

                     printf("\n\t\t地址: %s",per[i].addr);

                     printf("\n\t\t手机号码: %s",per[i].celephone);

                     printf("\n\t\t家庭电话号码:%s",per[i].homephone);

                     printf("\n\t\t公司名称:%s",per[i].company);

                     printf("\n\t\t电子邮件:%s",per[i].email);

                     printf("\n\t\tQQ号码:%ld",per[i].QQ);

                     printf("\n\t\t________________________________");

                     printf("\n\t\t是否删除?(1代表删除;2代表不删除)\n");

                     printf("          请输入您的数字选择:    ");

                     scanf("%d",&h);

               if(h==1)

                     {

                            for (j=i;j<num-1;j++) /*纪录移动,从per数组中删除之*/

                            per[j]=per[j+1];

                            num--; 

                            printf("\n\t\t删除成功");

                            printf("\n是否继续删除?(1代表继续;2代表不继续)\n");

                            printf("          请输入您的数字选择:    ");

                            scanf("%d",&h);

                   if(h==1) 

                                 deletebycelephone();

                     }

              }

       }

       if(deletemark==0)

       {

              printf("\n\t\t对不起!没有该联系人的纪录!");

              printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)\n");

              printf("          请输入您的数字选择:    ");

              scanf("%d",&m);

           if(m==1) 

                 deletebycelephone();

       }

}

 

 

 

void xiugaimenu()//*修改菜单*//

{

       int i,j;

    system("cls");

       system("color 3f");

       if(num==0)

       {

              printf("\n\t\t对不起!文件中无任何纪录!");

              printf("\n\t\t请按任意数字键返回主菜单");

              scanf("%d",&j);

              return; 

       }

       else

       {

           printf("\n\t\t 1-按姓名修改   2-按手机号码修改\n");

           printf("          请输入您的数字选择:    ");

       loop6:scanf("%d",&i);

           switch (i)

           {

             case 1:xiugaibyname();break;

             case 2:xiugaibycelephone();break;

             default:printf("对不起!您的输入有误!请重新输入:   ");goto loop6;

           }

       }

}

 

 

 

void xiugaibyname()//*按姓名修改*//

{

       int a=0;

       int findmark=0;

       int xiugaimark=0;

       int i,j;

       char name[15];

       printf("\n\t\t请输入要修改联系人的姓名:");

       scanf("%s",name);

       for (i=a;i<num;i++)

       {

              if (strcmp(per[i].name,name)==0)

              {

                     printf("\n\t\t以下是您要修改的联系人的纪录:");

                     findmark++;

                     printf("\n\t\t________________________________");

                     printf("\n\t\t名字: %s",per[i].name);

                     printf("\n\t\t性别: %s",per[i].sex);

                     printf("\n\t\t年龄: %d",per[i].nianling);

                     printf("\n\t\t邮编 : %ld",per[i].youbian);

                     printf("\n\t\t地址: %s",per[i].addr);

                     printf("\n\t\t手机号码: %s",per[i].celephone);

                     printf("\n\t\t家庭电话号码:%s",per[i].homephone);

                     printf("\n\t\t公司名称:%s",per[i].company);

                     printf("\n\t\t电子邮件:%s",per[i].email);

                     printf("\n\t\tQQ号码:%ld",per[i].QQ);

                     printf("\n\t\t________________________________");

                     printf("\n\t\t是否修改?(1代表修改;2代表不修改)");

                     printf("          请输入您的数字选择:    ");

                     scanf("%d",&j);

                     if (j==1)

                     {

                            xiugaixiangmu(i);

                            xiugaimark++;

                            printf("\n\t\t修改成功");

                            if((i+1)<num)

                            {

                                   printf("\n\t\t是否继续修改相同姓名的联系人的信息?(1代表继续;2代表不继续)");

                                   printf("          请输入您的数字选择:    ");

                                   scanf("%d",&j);

                                   if (j==1)

                                   {

                                          a=i;

                                          findmark++;

                                          continue;

                                   }

                            }

                            printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");

                            printf("          请输入您的数字选择:    ");

                            scanf("%d",&j);

                            if (j==1)

                            xiugaibyname();

                            return;

                     }

              }

       }

       if ((xiugaimark==0)&&(findmark==0))

       {

              printf("\n\t\t没有该联系人的纪录");

              printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");

              printf("          请输入您的数字选择:    ");

              scanf("%d",&j);

              if (j==1)

                  xiugaibyname();

              return;

       }

       else if (findmark!=0)

       {

              printf("\n\t\t没有重名信息");

              printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");

              printf("          请输入您的数字选择:    ");

              scanf("%d",&j);

              if (j==1)

              xiugaibyname();

              return;

       }

}

 

 

 

void xiugaibycelephone()//*按手机号码修改*//

{

       int findmark=0;

       int i,j;

       char celephone[11];

       printf("\n\t\t请输入要修改联系人的手机号码:");

       scanf("%s",celephone);

       for (i=0;i<num;i++)

       {

              if (strcmp(per[i].celephone,celephone)==0)

              {

                     printf("\n\t\t以下是您要修改的联系人的纪录:");

                     findmark++;

                     printf("\n\t\t________________________________");

                     printf("\n\t\t名字: %s",per[i].name);

                     printf("\n\t\t性别: %s",per[i].sex);

                     printf("\n\t\t年龄: %d",per[i].nianling);

                     printf("\n\t\t邮编 : %ld",per[i].youbian);

                     printf("\n\t\t地址: %s",per[i].addr);

                     printf("\n\t\t手机号码: %s",per[i].celephone);

                     printf("\n\t\t家庭电话号码:%s",per[i].homephone);

                     printf("\n\t\t公司名称:%s",per[i].company);

                     printf("\n\t\t电子邮件:%s",per[i].email);

                     printf("\n\t\tQQ号码:%ld",per[i].QQ);

                     printf("\n\t\t________________________________");

                     printf("\n\t\t是否修改?(1代表修改;2代表不修改)");

                     printf("          请输入您的数字选择:    ");

                     scanf("%d",&j);

                  if (j==1)

                      {

                            xiugaixiangmu(i);

                            printf("\n\t\t修改成功");

                            printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");

                            printf("          请输入您的数字选择:    ");

                            scanf("%d",&j);

                      printf("          请输入您的数字选择:    ");

                            if (j==1) 

                              xiugaixiangmu(i);

                            break;

                      }

              } 

       }

       if (findmark==0)

       {

              printf("\n\t\t对不起!没有该联系人的纪录!");

              printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");

              printf("          请输入您的数字选择:    ");

              scanf("%d",&j);

              if (j==1) 

                 xiugaibycelephone();

              return;

       }

}

 

 

 

void xiugaixiangmu(int a)//*修改项目*//

{

       int i;

       system("cls");

       system("color c0");

       printf("\n\t\t             请输入您要修改的项目               ");

       printf("\n\t\t\n");

       printf("\n\t\t1-手机号码\n");

       printf("\n\t\t2-姓名\n");

       printf("\n\t\t3-家庭电话号码\n");

       printf("\n\t\t4-QQ号码\n");

       printf("\n\t\t5-地址\n");

       printf("\n\t\t6-邮编\n");

       printf("\n\t\t7-电子邮件\n");

       printf("\n\t\t8-回主菜单\n");

       printf("\n\t\t\n");

       printf("          请输入您的数字选择:    ");

       scanf("%d",&i);

loop9:     switch (i)

       {

 

              case 1:printf("请输入手机号码:");

                     scanf("%s",&per[a].celephone);break;

              case 2:printf("请输入姓名:");

                     scanf("%s",&per[a].name);break;

              case 3:printf("请输入家庭电话号码:");

                     scanf("%s",&per[a].homephone);break;

              case 4:printf("请输入QQ号码:");

                     scanf("%s",&per[a].QQ);break;

              case 5:printf("请输入地址:");

                     scanf("%s",&per[a].addr);break;

              case 6:printf("请输入邮编:");

                     scanf("%s",&per[a].youbian);break;

              case 7:printf("请输入email:");

                     scanf("%s",&per[a].email);break;

              case 8:mainmenu();break;

              default: printf("对不起!您的输入有误!请重新输入:   ");goto loop9;

       }

}

 

 

void listmenu()//*排序菜单*//

{

    int i,j;

    system("cls");

       system("color b0");

       if(num==0)

       {

              printf("\n\t\t对不起,文件中无任何纪录");

              printf("\n\t\t请按任意数字键返回主菜单");

              scanf("%d",&j);

              return; 

       }

       else

       {

          system("cls");

          system("color 12");

          printf("\n\t\t              排   序   菜   单                 ");

          printf("\n\t\t                 1-按姓名排序                   ");

          printf("\n\t\t                 2-按手机号码排序                   ");

          printf("\n\t\t                 3-返回主菜单                   ");

       printf("                 请输入您的数字选择:    ");

loop10:          scanf("%d",&i);

          switch(i)

          {

               case 1:listbyname();break;

               case 2:listbycelephone();break;

               case 3:mainmenu();break;

               default:printf("对不起!您的输入有误!请重新输入:   ");goto loop10;

          }

       }

}

 

 

void listbyname()//*按姓名排序*//

{

       int i,j,k;

       struct person tmp;

       for (i=1;i<num;i++)

       {

              if(strcmp(per[i].name,per[i-1].name)<0)

              {

                     tmp=per[i];

                     j=i-1;

                     do

                     {

                            per[j+1]=per[j];

                            j--;

                     }

                     while ((strcmp(tmp.name,per[j].name)<0&&j>=0));

                     per[j+1]=tmp;

              }

       }

           printf("\n\t\t排序成功,是否显示?(1代表继续;2代表不继续)");

              printf("          请输入您的数字选择:    ");

              scanf("%d",&k);

              if (k==1)  

                 showall();

           return;

}

 

 

void listbycelephone()//*按手机号码排序*//

{

       int i,j,k;

       struct person tmp;

       for (i=1;i<num;i++)

       {

              if(strcmp(per[i].celephone,per[i-1].celephone)<0)

              {

                     tmp=per[i];

                     j=i-1;

                     do

                     {

                            per[j+1]=per[j];

                            j--;

                     }while ((strcmp(tmp.celephone,per[j].celephone)<0)&&j>=0);

                     per[j+1]=tmp;

              }

       }

       printf("\n\t\t排序成功,是否显示?(1代表继续;2代表不继续)");

       printf("          请输入您的数字选择:    ");

       scanf("%d",&k);

       if (k==1)

          showall();

       return;

}

 

 

 

 

 

 

 

 

void showall()//*输 出 全 部 信 息*//

{

       int i,j;

       system("cls");

       system("color 3b");

       if(num!=0)

       {

              printf("\n\t\t*************** 以下为通讯录所有信息************");

              for (i=0;i<num;i++)

              {

                     printf("\n\t\t________________________________");

                     printf("\n\t\t名字: %s",per[i].name);

                     printf("\n\t\t性别: %s",per[i].sex);

                     printf("\n\t\t年龄: %d",per[i].nianling);

                     printf("\n\t\t邮编 : %ld",per[i].youbian);

                     printf("\n\t\t地址: %s",per[i].addr);

                     printf("\n\t\t手机号码: %s",per[i].celephone);

                     printf("\n\t\t家庭电话号码:%s",per[i].homephone);

                     printf("\n\t\t公司名称:%s",per[i].company);

                     printf("\n\t\t电子邮件:%s",per[i].email);

                     printf("\n\t\tQQ号码:%ld",per[i].QQ);

                     printf("\n\t\t________________________________");

                     printf("\t\t");

                     if (i+1<num)

                     {

                            printf("\n\t\t__________________________");

                            system("pause");

                     }

              }    

              printf("\n\t\t************************************************");

       }

       else

          printf("\n\t\t对不起!通讯录中无任何纪录!");

       printf("\n\t\t请按任意数字键返回主菜单");

       scanf("%d",&j);

       return; 

}

 

 

 

 

void writetofile()//*写入文件*//

{

       int i,k;

       system("cls");

       system("color 84");

       if ((fp=fopen("per.bin","wb"))==NULL)

       {

              printf("\n\t\t文件打开失败");

       }

       for (i=0;i<num;i++)

       {

              if (fwrite(&per[i],sizeof(struct person),1,fp)!=1)

              {

                     printf("\n\t\t写入文件错误!\n");

              }

       }

       fclose(fp);

       printf("\n\t\t通讯录文件已保存");

       printf("\n\t\t请按任意数字键返回主菜单");

       scanf("%d",&k);

       return;

}

 

 

 

 

 

 

 

void readfromfile()//*读取文件*//

{

    int i,j,k;

    system("cls");

       system("color 2b");

       if((fp=fopen("per.bin","rb"))==NULL)

       {

              printf("\n\t\t****************************");

              printf("\n\t\t*                          *");

              printf("\n\t\t*                          *");

              printf("\n\t\t*    通讯录文件不存在!     *");

              if ((fp=fopen("per.bin","wb"))==NULL)

              {

                     printf("\n*        建立失败!         *");

                     printf("\n*                          *");

                     printf("\n*                          *");

                     printf("\n****************************");

                     exit(0);

              }

              else

              {

                     printf("\n\t\t*    通讯录文件已建立!     *");

                     printf("\n\t\t*                          *");

                     printf("\n\t\t*                          *");

                     printf("\n\t\t****************************");

                     printf("\n\t\t      按任意键进入主菜单    ");

                     printf("\n\t\t          请输入您的数字选择:    ");

                  scanf("%d",&k);

                     return;          

              }

              exit(0);

       }

       fseek(fp,0,2); //*文件位置指针移动到文件末尾*//

       if (ftell(fp)>0) //*文件不为空*//

       {

              rewind(fp); //*文件位置指针移动到文件开始位置*//

              for (num=0;!feof(fp) && fread(&per[num],sizeof(struct person),1,fp);num++);

              printf("\n\t\t****************************");

              printf("\n\t\t*                          *");

              printf("\n\t\t*                          *");

              printf("\n\t\t*     文件导入成功!        *"); 

              printf("\n\t\t*                          *");

              printf("\n\t\t*                          *");

              printf("\n\t\t****************************");

              printf("\n\t\t     按1显示所有信息,按2回主菜单!     ");

              printf("\t\t          请输入您的数字选择:    ");

              scanf("%d",&j);

              if(j==1)

                showall();

       }

else

 {

       printf("\n\t\t****************************");

       printf("\n\t\t*                          *");

       printf("\n\t\t*                          *");

       printf("\n\t\t*     文件导入成功!        *");

       printf("\n\t\t*  通讯录文件中无任何纪录! *");

       printf("\n\t\t*                          *");

       printf("\n\t\t*                          *");

       printf("\n\t\t****************************");

       printf("\n\t\t请按任意数字键返回主菜单");

       scanf("%d",&i);

       return;

}

}

 

 

 

void deleteall()//*删除所有信息*//

{

    int i,j;

       system("cls");

       system("color 50");

       printf("\n\t\t确认删除?\n");

       printf("请按1和2(1代表确认;2代表不删除)\n ");

       scanf("%d",&i);

       if (i==1)

       {

              fclose(fp);

              if ((fp=fopen("per.bin","wb"))==NULL)

            {

                  printf("\n\t\t不能打开文件,删除失败");

                  readfromfile();

            }

           num=0;

           printf("\n\t\t纪录已删除!");

           printf("\n\t\t请按任意数字键返回主菜单");

           scanf("%d",&j);

           return;

       }

 

}

 

C语言编写的通讯录管理程序设计 #include"stdio.h" #include"stdlib.h" #include"string.h" #include"conio.h" #define HEADER1"------------------------------------------MESSAGE MENU--------------------------------------------------------------\n" #define HEADER2" | num | name | phonenumber | address |\n" #define HEADER3" |-------------------------------------------------------------------|\n" #define FORMAT " | %-10s %-10s %-15s %-20s |\n" #define DATA p->num,p->name,p->phonenum,p->address #define END " ------------------------------------------------------------------------------------------------------------------\n" #define N 100 int saveflag=0; /*是否需要存盘的标志变量*/ typedef struct record /*标记为record*/ { char num[4]; /*编号*/ char name[10]; /*姓名*/ char phonenum[15]; /*电话*/ char address[20]; /*地址*/ } RECORD; RECORD tele[N]; void menu(); void Disp(); void Qur(); void Modify(); void SelectSort(); void Wrong(); void Save(); void main() { RECORD tele[N]; /*定义RECOED结构体*/ FILE *fp; /*文件指针*/ int select; /*保持内选择结果变量*/ char ch; /*保存y,Y,n,N*/ int count=0; /*保存文件中的记录条数(或元素个数)*/ fp=fopen("C:\\record.txt","a+"); /*以追加方式打开文本文件c;\record,可读可写,若此文件不存在,会创建此文件*/ if(fp==NULL) { printf("\n=>Can not open file!\n"); exit(0); } while(!feof(fp)) { if(fread(&tele[count],sizeof(RECORD),1,fp)==1) /*一次从文件中读取一条通讯记录*/ count++; } fclose(fp); /*关闭文件*/ printf("\n=>Open file success,the total records number is:%d.\n",count); getchar(); menu(); while(1) { system("cls"); menu(); cprintf("\n Please input your choice(0-8):"); /*显示提示信息*/ ch=getch(); if(ch=='0') { if(saveflag==1) /*若对数组的数据有修且未进行存盘操作,则此标志为1*/ { getchar(); printf("\n==>Whether save the modified record to file?(y/n):"); scanf("%c",&ch); if(ch=='y'||ch=='Y') Save(tele,count); } printf("\n=>Thank you for useness!"); getchar(); break ; } switch(ch) { case'0':break; case'1':count=Add(tele,count);break; /*增加通讯记录*/ case'2':system("cls");Disp(tele,count);break; /*显示通讯记录*/ case'3':count=Del(tele,count) ;break; /*删除通讯记录*/ case'4':Qur(tele,count);break; /*查询通讯记录*/ case'5':Modify(tele,count);break; /*修改通讯记录*/ case'6':count=Insert(tele,count);break; /*插入通讯记录*/ case'7':SelectSort(tele,count);break;/*排序通讯记录*/ case'8':Save(tele,count);break; /*保存通讯记录*/ default: Wrong();getchar();break; /*按键有误,必需为0~8*/ } } } void menu() { system("cls"); /*调用DOS命令清屏,与clrscr()功能相同*/ textcolor(63); /*在文本模式中选择新的字符颜色*/ gotoxy(10,5); /*在文本窗口中设置光标*/ printf(" The communication management system\n"); gotoxy(10,8); printf(" ****Menu**** \n"); gotoxy(10,9); printf("\n"); gotoxy(10,10); printf("\* 1. Add record\n"); /*增加*/ gotoxy(10,11); printf("\* 2. Display record\n"); /*展览*/ gotoxy(10,12); printf("\* 3. Delete record\n"); /*删除*/ gotoxy(10,13); printf("\* 4. Search record\n"); /*查找*/ gotoxy(10,14); printf("\* 5. Modify record\n"); /*更改*/ gotoxy(10,15); printf("\* 6. Insert record\n"); /*插入*/ gotoxy(10,16); printf("\* 7. Sort record\n"); /*整理*/ gotoxy(10,17); printf("\* 8. Save record\n"); /*保存*/ gotoxy(10,18); printf("\* 0 Quit system\n"); /*退出*/ gotoxy(10,19); printf(" ************ \n"); /*cprintf()送格式话输出至文本窗口屏幕中*/ } /*格式化输出表头*/ void printheader() { printf(HEADER1); printf(HEADER2); printf(HEADER3); } /*格式化输出表中数据*/ void printdata(RECORD q) { RECORD *p; p=&q; printf(FORMAT,DATA); } void Disp( RECORD temp[],int n) /*显示数组temp[]中存储的通讯记录,内容为record结构中定义的内容*/ { int i; if(n==0) /*表示没有通讯记录*/ { printf("\n=>No menu record!\n"); getchar(); return ; } printf("\n\n"); printheader(); /*输出表格头部*/ i=0; while(i<n) /*逐条输出数组中存储的通讯记录*/ { printdata(temp[i]); i++; printf(HEADER3); } getchar(); } void Wrong() /*输出按键错误信息*/ { printf("\n\n\n\n\n**********Error:input has wrong! press any key to continue***********\n"); getchar(); } void Nofind() /*输出未查找到此记录的信息*/ { printf("\n=>Not find this menu record!\n"); } int Locate(RECORD temp[],int n,char findmess[],char nameorphonenum[]) { int i=0; if(strcmp(nameorphonenum,"phonenum")==0) /*按电话号码查询*/ { while(i<n) { if(strcmp(temp[i].phonenum,findmess)==0) /*若找到findmess值的电话号码*/ return i; i++; } } else if(strcmp(nameorphonenum,"name")==0) /*按姓名查询*/ { while(i<n) { if(strcmp(temp[i].name,findmess)==0) /*若找到findmess值的姓名*/ return i; i++; } } return -1; /*若未找到,返回一个整数-1*/ } void stringinput(char *t,int lens,char *notice) { char n[255]; do { printf(notice); /*显示提示信息*/ scanf("%s",n); /*输入字符串*/ if(strlen(n)>lens) printf("\n Exceed the required length! \n"); /*进行长度检测,超过lens值重新输入*/ } while(strlen(n)>lens); strcpy(t,n); /*将输入发字符串拷贝到字符串t中*/ } int Add(RECORD temp[],int n) /*增加通讯记录*/ { char ch,num[10]; int i,flag=0; system("cls"); Disp(temp,n); /*先打印出已有的通讯录信息*/ while(1) /*一次可输入多条记录,直至输入编号为0的记录才结束添加操作*/ { while(1) /*输入记录编号,保证该编号没有被使用,若输入编号为0,则退出添加记录操作*/ { stringinput(num,10,"Input number(press '0' return menu):"); /*格式化输入编号并检验*/ flag=0; if(strcmp(num,"0")==0) /*输入为0,则退出添加操作,返回主界面*/ { return n; } i=0; while(i<n) /*产寻该编号是否已经存在,若存在则要求重新输入一个未被占用的编号*/ { if(strcmp(temp[i].num,num)==0) { flag=1; break; } i++; } if(flag==1) /*提示拥护是否重新输入*/ { getchar(); printf("==>The number %s is existing,try again?(y/n):",num); scanf("%c",&ch); if(ch=='y'||ch=='Y') continue; else return n; } else {break;} } strcpy(temp[n].num,num); /*将字符串num拷贝到temp[n].num中*/ stringinput(temp[n].name,15,"Name:\n"); stringinput(temp[n].phonenum,15,"Telephone:\n"); stringinput(temp[n].address,15,"Address:\n"); saveflag=1; n++; } return n; } void Qur(RECORD temp[],int n) /*按编号或姓名查询通讯记录*/ { int select; /*按1:按姓名查,2:按电话号码查,其他:返回住界面(菜单)*/ char searchinput[20]; /*包寻用户输入的查询内容*/ int p=0; if(n<=0) /*若数组为空*/ { system("cls"); printf("\n=>No menu record!\n"); getchar(); return ; } system("cls"); printf("\n =>1 Search by name =>2 Search by telephonenumber\n"); printf(" Please choice[1,2]:"); scanf("%d",&select); if(select==1) /*按姓名查询*/ { stringinput(searchinput,10,"Input the existing name:"); p=Locate(temp,n,searchinput,"name"); /*在数组temp中查找编号为searchinput值的元素,并返回该数组元素的下标值*/ if(p!=-1) /*若找到该记录*/ { printheader(); printdata(temp[p]); printf(END); printf("Press any key to return"); getchar(); } else Nofind(); getchar(); } else if(select==2) /*按电话号码查询*/ { stringinput(searchinput,15,"Input the existing telephone number:"); p=Locate(temp,n,searchinput,"phonenum"); if(p!=-1) { printheader(); printdata(temp[p]); printf(END); printf("Press any key to return"); getchar(); } else Nofind(); getchar(); } else Wrong(); getchar(); } int Del(RECORD temp[],int n) { int sel; char findmess[20]; int p=0,i=0; if(n<=0) { system("cls"); printf("\n=>No menu record!\n"); getchar(); return n; } system("cls"); Disp(temp,n); printf("\n =>1 Delete by name =>2 Delete by telephonenumber\n"); printf(" Please choice[1,2]:"); scanf("%d",&sel); if(sel==1) { stringinput(findmess,10,"Input the existing name:"); p=Locate(temp,n,findmess,"name"); getchar(); if(p!=-1) { for(i=p+1;i<n;i++) /*删除此记录,后面记录向前移*/ { strcpy(temp[i-1].num,temp[i].num); strcpy(temp[i-1].name,temp[i].name); strcpy(temp[i-1].phonenum,temp[i].phonenum); strcpy(temp[i-1].address,temp[i].address); } printf("\n=>Delete success!\n"); n--; getchar(); saveflag=1; } else Nofind(); getchar(); } else if(sel==2) /*先按电话号码查询到该记录所在的数组元素的下标值*/ { stringinput(findmess,15,"Input the existing telephone number:"); p=Locate(temp,n,findmess,"phonenum"); getchar(); if(p!=-1) { for(i=p+1;i<n;i++) /*删除此记录,后面的记录向前移*/ { strcpy(temp[i-1].num,temp[i].num); strcpy(temp[i-1].name,temp[i].name); strcpy(temp[i-1].phonenum,temp[i].phonenum); strcpy(temp[i-1].address,temp[i].address); } printf("\n=>Delete success!\n"); n--; getchar(); saveflag=1; } else Nofind(); getchar(); } return n; } void Modify(RECORD temp[],int n) { char findmess[20]; int p=0; if(n<=0) { system("cls"); printf("\n=>No menu record!\n"); getchar(); return ; } system("cls"); printf("modify menu book recorder"); Disp(temp,n); stringinput(findmess,10,"Input the existing name:"); /*输入并检验该姓名*/ p=Locate(temp,n,findmess,"name"); /*查询到该数组元素,并返回下标值*/ if(p!=-1) /*若p!=-1,表明已经找到该数组元素*/ { printf("Number:%s,\n",temp[p].num); printf("Name:%s,",temp[p].name); stringinput(temp[p].name,15,"Input new name:"); printf("Name:%s,",temp[p].phonenum); stringinput(temp[p].name,15,"Input new telephone:"); printf("Name:%s,",temp[p].address); stringinput(temp[p].address,30,"Input new address:"); printf("\n=>modify success!\n");getchar(); Disp(temp,n); getchar();saveflag=1; } else { Nofind(); getchar(); } return ; } int Insert(RECORD temp[],int n) { char ch,num[10],s[10]; /*s[]保存插入点位置之前的记录编号,num[]保存输入的新记录的编号*/ RECORD newinfo; int flag=0,i=0,m=0; system("cls"); Disp(temp,n); while(1) { stringinput(s,10,"Please input insert location after the Number:"); flag=0;i=0; while(i<n) /*查询该编号是否存在,flag=1表示该编号存在*/ { if(strcmp(temp[i].num,s)==0) { m=i; flag=1; break; } i++; } if(flag==1) break; /*若编号存在,则进行插之前的新记录输入操作*/ else { getchar(); printf("\n=>The number is not existing,try again?(y\n):",s); scanf("%c",&ch); if(ch=='y'||ch=='Y') { continue; } else { return n; } } } /*以下新记录的输入操作与Add()相同*/ while(1) { stringinput(num,10,"Input new Number:"); flag=0;i=0; while(i<n) /*查询该编号是否存在,flag=1表示该编号存在*/ { if(strcmp(temp[i].num,num)==0) { flag=1; break; } i++; } if(flag==1) { getchar(); printf("\n=>Sorry,The number %s is existing,try again?(y\n):",num); scanf("%c",&ch); if(ch=='y'||ch=='Y') { continue; } else { return n; } } else break; } strcpy(newinfo.num,num); /*将字符串num拷贝到newinfo.num中*/ stringinput(newinfo.name,15,"Name:"); stringinput(newinfo.phonenum,15,"Telephone:"); stringinput(newinfo.address,15,"Address:"); saveflag=1; /*在main()中有对该全局变量的判断,若为1,则进行存盘操作*/ for(i=n-1;i>m;i--) /*从最后一个组织元素开始往前移一个元素位置*/ { strcpy(temp[i+1].num,temp[i].num); strcpy(temp[i+1].name,temp[i].name); strcpy(temp[i+1].phonenum,temp[i].phonenum); strcpy(temp[i+1].address,temp[i].address); } strcpy(temp[m+1].num,newinfo.num); strcpy(temp[m+1].name,newinfo.name); strcpy(temp[m+1].phonenum,newinfo.phonenum); strcpy(temp[m+1].address,newinfo.address); n++; Disp(temp,n); printf("\n\n");getchar(); return n; } void SelectSort(RECORD temp[],int n) { int i=0,j=0,flag=0,indexmin,select; char charflag[10]; RECORD newinfo; if(n<=0) { system("cls"); printf("\n=>Not record!\n"); getchar(); return ; } system("cls"); Disp(temp,n); /*显示排序前的所有记录*/ printf("\n =>1 SORT by num =>2 SORT by another way \n"); printf(" Please choice[1,2]:"); scanf("%d",&select); if(select==1) /*按记录编号排序*/ { for(i=0;i<n-1;i++) { flag=32767; indexmin=0; for(j=i;j<n;j++) { if(atoi(temp[j].num)<flag) { flag=atoi(temp[j].num); indexmin=j; } } strcpy(newinfo.num,temp[i].num); /*利用结构变量nesinfo实现数组元素的交换*/ strcpy(newinfo.name,temp[i].name); strcpy(newinfo.phonenum,temp[i].phonenum); strcpy(newinfo.address,temp[i].address); strcpy(temp[i].num,temp[indexmin].num); strcpy(temp[i].name,temp[indexmin].name); strcpy(temp[i].phonenum,temp[indexmin].phonenum); strcpy(temp[i].address,temp[indexmin].address); strcpy(temp[indexmin].num,newinfo.num); strcpy(temp[indexmin].name,newinfo.name); strcpy(temp[indexmin].phonenum,newinfo.phonenum); strcpy(temp[indexmin].address,newinfo.address); } Disp(temp,n); /*显示排序后的所有记录*/ saveflag=1; printf("\n=>Sort complete!\n");getchar(); return; } else if(select==2) { for(i=0;i<n-1;i++) { charflag[0]=255; indexmin=0; strcpy(newinfo.num,temp[i].num); /*利用结构变量nesinfo实现数组元素的交换*/ strcpy(newinfo.name,temp[i].name); strcpy(newinfo.phonenum,temp[i].phonenum); strcpy(newinfo.address,temp[i].address); strcpy(temp[i].num,temp[indexmin].num); strcpy(temp[i].name,temp[indexmin].name); strcpy(temp[i].phonenum,temp[indexmin].phonenum); strcpy(temp[i].address,temp[indexmin].address); strcpy(temp[indexmin].num,newinfo.num); strcpy(temp[indexmin].name,newinfo.name); strcpy(temp[indexmin].phonenum,newinfo.phonenum); strcpy(temp[indexmin].address,newinfo.address); } Disp(temp,n); /*显示排序后的所有记录*/ saveflag=1; printf("\n=>Sort complete!\n");getchar(); return; } else { Wrong(); getchar(); getchar(); return; } } void Save(RECORD temp[],int n) { int i=0; FILE *fp; fp=fopen("c:\\record.txt","w"); /*以只写方式打开文本文件*/ if(fp==NULL) /*打开文件失败*/ { printf("\n=>Open file error!\n"); getchar(); return; } for(i=0;i<n;i++) { if(fwrite(&temp[i],sizeof(RECORD),1,fp)==1) /*每次写一条记录或一个结构数组元素至文件*/ { continue; } else { break; } } if(i>0) { getchar(); printf("\n\n=>Save file complete,total saved's record number is:%d\n",i); getchar(); saveflag=0; } else { system("cls"); printf("The current link is empty,no menu record is saved!\n"); getchar(); } fclose(fp); /*关闭此文件*/ }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值