- //
 
 - //  main.c
 
 - //  文件的通讯录
 
 - /*
 
 -  通讯录文件创建成功!
 
 -  数据初始化成功!...
 
 -  **************************************
 
 -  ********欢迎使用通讯录************
 
 -  *********1、添加联系人************
 
 -  *********2、删除联系人************
 
 -  *********3、修改联系人************
 
 -  *********4、查看所有联系人*******
 
 -  *********5、搜索联系人************
 
 -  *********6、退出系统***************
 
 -  **************************************
 
 -  请选择1-6之间的操作
 
 -  */
 
  
 
- #include <stdio.h>
 
 - #include <stdlib.h>
 
 - #include <string.h>
 
 - //*********宏定义**********
 
 - #define N 100    //可存入联系人的个数
 
 - #define NAMELEN 21   //名字字符串数组的长度
 
 - #define NUM 13//电话字符串数组长度
 
  
 
- //联系人结构体
 
 - struct tongXunLu{
 
 -     char name[NAMELEN];
 
 -     char num[NUM];
 
 - };
 
 - char *file = "TXL.data";
 
 - struct tongXunLu per[N];  //用来储存联系人的数组
 
 - int total = 0;  //统计联系人个数
 
  
- //*****************函数的声明************************
 
 - void set();//初始化~~
 
 - void JM();  //显示主界面~~
 
 - int judgment(int a, int min, int max); //判断输入是否合法~~
 
 - void writeFile(); //将数据写入文件~~
 
 - void add1();  //添加联系人~~
 
 - void del2(); //删除联系人~~
 
 - void change3(); //修改联系人~~
 
 - void showAll4();//查看所有联系人~~~~
 
 - void find5();//查找指定联系人~~~
 
  
 
- int main(int argc, const char * argv[])
 
 - {
 
 -     system("clear");  //清理屏幕
 
 -     //初始化系统
 
 -     set( );
 
 -     int en = 10;
 
 -     while(en != -1)
 
 -     {
 
 -         do
 
 -         {
 
 -             JM();
 
 -             rewind(stdin);
 
 -             scanf("%d",&en);
 
 -         }while(judgment(en,1,6));
 
 -         switch(en)
 
 -         {
 
 -             case 1:
 
 -                 add1();
 
 -                 break;
 
 -             case 2:
 
 -                 del2();
 
 -                 break;
 
 -             case 3:
 
 -                 change3();
 
 -                 break;
 
 -             case 4:
 
 -                 showAll4();
 
 -                 break;
 
 -             case 5:
 
 -                 find5();
 
 -                 break;
 
 -             case 6:
 
 -                 printf("系统正在退出...\n");
 
 -                 printf("系统已经退出!\n");
 
 -                 return 0;
 
 -                 break;
 
 -         }
 
 -     }
 
 -     
 
 -     
 
 -     
 
 -     
 
 -     return 0;
 
 - }
 
  
 
- void set()
 
 - {
 
 -     printf("文件正在初始化...\n");
 
 -     FILE *p = fopen(file,"r");
 
 -     if(p != NULL)
 
 -     {
 
 -         fread(&total,sizeof(total),1,p);
 
 -         for(int i = 0; i < total; i++)
 
 -         {
 
 -             fread(&per[i],sizeof(struct tongXunLu),1,p);
 
 -         }
 
 -     }
 
 -     else
 
 -     {
 
 -         p = fopen(file,"wb");
 
 -         fwrite(&total,sizeof(total),1,p);
 
 -     }
 
 -     printf("文件初始化成功~~~\n");
 
 -     fclose(p);
 
 - }
 
  
- int judgment(int a, int min, int max)
 
 - {
 
 -     if(a < min || a> max)
 
 -     {
 
 -         printf("非法输入!请重新输入:\n");
 
 -         return 1;
 
 -     }
 
 -     else
 
 -     {
 
 -         return 0;
 
 -     }
 
 - }
 
  
 
- void JM()
 
 - {
 
 -     printf("**************************************\n");
 
 -     printf("********欢迎使用通讯录************\n");
 
 -     printf("*********1、添加联系人************\n");
 
 -     printf("*********2、删除联系人************\n");
 
 -     printf("*********3、修改联系人************\n");
 
 -     printf("*********4、查看所有联系人*******\n");
 
 -     printf("*********5、收索联系人************\n");
 
 -     printf("*********6、退出系统***************\n");
 
 -     printf("**************************************\n");
 
 -     printf("请选择1-6之间的操作:");
 
 - }
 
  
- void writeFile()
 
 - {
 
 -     FILE *p = fopen(file,"wb+");
 
 -     if( p != NULL)
 
 -     {
 
 -         fwrite(&total,sizeof(total),1,p);
 
 -         for(int i = 0; i < total;i++)
 
 -         {
 
 -             fwrite(&per[i],sizeof(struct tongXunLu),1,p);
 
 -         }
 
 -         fclose(p);
 
 -     }
 
 - }
 
  
 
 
- void add1()
 
 - {
 
 -     printf("你选择的是添加联系人功能,请按提示操作:\n");
 
 -     printf("请输入联系人姓名:\n");
 
 -     scanf("%s",per[total].name);
 
 -     printf("请输入联系人电话:\n");
 
 -     scanf("%s",per[total].num);
 
 -     printf("您是否确认添加联系人 0:取消   1:确认\n");
 
 -     int flag = -1;
 
 -     scanf("%d",&flag);
 
 -     if(flag == 1)
 
 -     {
 
 -         total++;
 
 -         writeFile();
 
 -         printf("添加联系人成功\n");
 
 -     }
 
 -     else
 
 -     {
 
 -         printf("取消添加联系人\n");
 
 -     }
 
 -     
 
 - }
 
  
- void del2()
 
 - {
 
 -     printf("你选择的是删除联系人功能,请按提示操作:\n");
 
 -     showAll4();
 
 -     printf("请输入您要删除的联系人的编号:\n");
 
 -     int bianHao = 0;
 
 -     scanf("%d",&bianHao);
 
 -     while(judgment(bianHao,1,total));
 
 -     printf("您是否确认删除联系人 0:取消   1:确认\n");
 
 -     int flag = -1;
 
 -     scanf("%d",&flag);
 
 -     if(flag == 1)
 
 -     {
 
 -         for(int i = bianHao;i <total;i++)
 
 -         {
 
 -             per[i-1]= per[i];
 
 -         }
 
 -         total--;
 
 -         writeFile();
 
 -         printf("删除联系人成功\n");
 
 -     }
 
 -     else
 
 -     {
 
 -         printf("取消删除联系人\n");
 
 -     }
 
 - }
 
  
- void change3()
 
 - {
 
 -     printf("你选择的是修改联系人功能,请按提示操作:\n");
 
 -     showAll4();
 
 -     printf("请输入您要修改的联系人的编号:\n");
 
 -     int bianHao = 0;
 
 -     scanf("%d",&bianHao);
 
 -     while(judgment(bianHao,1,total));
 
 -     printf("您是否确认修改联系人 0:取消   1:确认\n");
 
 -     int flag = -1;
 
 -     scanf("%d",&flag);
 
 -     if(flag == 1)
 
 -     {
 
 -         printf("请重新输入联系人姓名:");
 
 -         scanf("%s",per[bianHao-1].name);
 
 -         printf("请重新输入联系人电话:");
 
 -         scanf("%s",per[bianHao-1].num);
 
 -         writeFile();
 
 -         printf("修改联系人成功\n");
 
 -     }
 
 -     else
 
 -     {
 
 -         printf("取消修改联系人\n");
 
 -     }
 
 - }
 
  
 
 
- void showAll4()
 
 - {
 
 -     printf("联系人列表如下:\n");
 
 -     for(int i = 0; i < total; i++)
 
 -     {
 
 -         printf("%d、姓名:%s  电话:%s\n",i+1,per[i].name,per[i].num);
 
 -     }
 
 - }
 
  
- void find5()
 
 - {
 
 -     struct tongXunLu temp;
 
 -     printf("你选择的是修改联系人功能,请按提示操作:\n");
 
 -     showAll4();
 
 -     printf("请输入您要查找的联系人的姓名:\n");
 
 -     scanf("%s",temp.name);
 
 -     printf("搜索中...\n");
 
 -     int flag = 1;
 
 -     for(int i = 0; i < total;i++)
 
 -     {
 
 -         if((strcmp(temp.name,per[i].name))==0)
 
 -         {
 
 -             printf("通讯录中%s的电话为%s\n",per[i].name,per[i].num);
 
 -             flag = 0;
 
 -             break;
 
 -         }
 
 -     }
 
 -     if(flag)
 
 -     {
 
 -         printf("并没有=。=\n");
 
 -     }
 
 - }
 
  复制代码 
 
 |   
        
 
    
    
    
     
 
 |