A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. //
  2. //  main.c
  3. //  文件的通讯录
  4. /*
  5. 通讯录文件创建成功!
  6. 数据初始化成功!...
  7. **************************************
  8. ********欢迎使用通讯录************
  9. *********1、添加联系人************
  10. *********2、删除联系人************
  11. *********3、修改联系人************
  12. *********4、查看所有联系人*******
  13. *********5、搜索联系人************
  14. *********6、退出系统***************
  15. **************************************
  16. 请选择1-6之间的操作
  17. */


  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #include <string.h>
  21. //*********宏定义**********
  22. #define N 100    //可存入联系人的个数
  23. #define NAMELEN 21   //名字字符串数组的长度
  24. #define NUM 13//电话字符串数组长度


  25. //联系人结构体
  26. struct tongXunLu{
  27.     char name[NAMELEN];
  28.     char num[NUM];
  29. };
  30. char *file = "TXL.data";
  31. struct tongXunLu per[N];  //用来储存联系人的数组
  32. int total = 0;  //统计联系人个数

  33. //*****************函数的声明************************
  34. void set();//初始化~~
  35. void JM();  //显示主界面~~
  36. int judgment(int a, int min, int max); //判断输入是否合法~~
  37. void writeFile(); //将数据写入文件~~
  38. void add1();  //添加联系人~~
  39. void del2(); //删除联系人~~
  40. void change3(); //修改联系人~~
  41. void showAll4();//查看所有联系人~~~~
  42. void find5();//查找指定联系人~~~


  43. int main(int argc, const char * argv[])
  44. {
  45.     system("clear");  //清理屏幕
  46.     //初始化系统
  47.     set( );
  48.     int en = 10;
  49.     while(en != -1)
  50.     {
  51.         do
  52.         {
  53.             JM();
  54.             rewind(stdin);
  55.             scanf("%d",&en);
  56.         }while(judgment(en,1,6));
  57.         switch(en)
  58.         {
  59.             case 1:
  60.                 add1();
  61.                 break;
  62.             case 2:
  63.                 del2();
  64.                 break;
  65.             case 3:
  66.                 change3();
  67.                 break;
  68.             case 4:
  69.                 showAll4();
  70.                 break;
  71.             case 5:
  72.                 find5();
  73.                 break;
  74.             case 6:
  75.                 printf("系统正在退出...\n");
  76.                 printf("系统已经退出!\n");
  77.                 return 0;
  78.                 break;
  79.         }
  80.     }
  81.    
  82.    
  83.    
  84.    
  85.     return 0;
  86. }


  87. void set()
  88. {
  89.     printf("文件正在初始化...\n");
  90.     FILE *p = fopen(file,"r");
  91.     if(p != NULL)
  92.     {
  93.         fread(&total,sizeof(total),1,p);
  94.         for(int i = 0; i < total; i++)
  95.         {
  96.             fread(&per[i],sizeof(struct tongXunLu),1,p);
  97.         }
  98.     }
  99.     else
  100.     {
  101.         p = fopen(file,"wb");
  102.         fwrite(&total,sizeof(total),1,p);
  103.     }
  104.     printf("文件初始化成功~~~\n");
  105.     fclose(p);
  106. }

  107. int judgment(int a, int min, int max)
  108. {
  109.     if(a < min || a> max)
  110.     {
  111.         printf("非法输入!请重新输入:\n");
  112.         return 1;
  113.     }
  114.     else
  115.     {
  116.         return 0;
  117.     }
  118. }


  119. void JM()
  120. {
  121.     printf("**************************************\n");
  122.     printf("********欢迎使用通讯录************\n");
  123.     printf("*********1、添加联系人************\n");
  124.     printf("*********2、删除联系人************\n");
  125.     printf("*********3、修改联系人************\n");
  126.     printf("*********4、查看所有联系人*******\n");
  127.     printf("*********5、收索联系人************\n");
  128.     printf("*********6、退出系统***************\n");
  129.     printf("**************************************\n");
  130.     printf("请选择1-6之间的操作:");
  131. }

  132. void writeFile()
  133. {
  134.     FILE *p = fopen(file,"wb+");
  135.     if( p != NULL)
  136.     {
  137.         fwrite(&total,sizeof(total),1,p);
  138.         for(int i = 0; i < total;i++)
  139.         {
  140.             fwrite(&per[i],sizeof(struct tongXunLu),1,p);
  141.         }
  142.         fclose(p);
  143.     }
  144. }



  145. void add1()
  146. {
  147.     printf("你选择的是添加联系人功能,请按提示操作:\n");
  148.     printf("请输入联系人姓名:\n");
  149.     scanf("%s",per[total].name);
  150.     printf("请输入联系人电话:\n");
  151.     scanf("%s",per[total].num);
  152.     printf("您是否确认添加联系人 0:取消   1:确认\n");
  153.     int flag = -1;
  154.     scanf("%d",&flag);
  155.     if(flag == 1)
  156.     {
  157.         total++;
  158.         writeFile();
  159.         printf("添加联系人成功\n");
  160.     }
  161.     else
  162.     {
  163.         printf("取消添加联系人\n");
  164.     }
  165.    
  166. }

  167. void del2()
  168. {
  169.     printf("你选择的是删除联系人功能,请按提示操作:\n");
  170.     showAll4();
  171.     printf("请输入您要删除的联系人的编号:\n");
  172.     int bianHao = 0;
  173.     scanf("%d",&bianHao);
  174.     while(judgment(bianHao,1,total));
  175.     printf("您是否确认删除联系人 0:取消   1:确认\n");
  176.     int flag = -1;
  177.     scanf("%d",&flag);
  178.     if(flag == 1)
  179.     {
  180.         for(int i = bianHao;i <total;i++)
  181.         {
  182.             per[i-1]= per[i];
  183.         }
  184.         total--;
  185.         writeFile();
  186.         printf("删除联系人成功\n");
  187.     }
  188.     else
  189.     {
  190.         printf("取消删除联系人\n");
  191.     }
  192. }

  193. void change3()
  194. {
  195.     printf("你选择的是修改联系人功能,请按提示操作:\n");
  196.     showAll4();
  197.     printf("请输入您要修改的联系人的编号:\n");
  198.     int bianHao = 0;
  199.     scanf("%d",&bianHao);
  200.     while(judgment(bianHao,1,total));
  201.     printf("您是否确认修改联系人 0:取消   1:确认\n");
  202.     int flag = -1;
  203.     scanf("%d",&flag);
  204.     if(flag == 1)
  205.     {
  206.         printf("请重新输入联系人姓名:");
  207.         scanf("%s",per[bianHao-1].name);
  208.         printf("请重新输入联系人电话:");
  209.         scanf("%s",per[bianHao-1].num);
  210.         writeFile();
  211.         printf("修改联系人成功\n");
  212.     }
  213.     else
  214.     {
  215.         printf("取消修改联系人\n");
  216.     }
  217. }



  218. void showAll4()
  219. {
  220.     printf("联系人列表如下:\n");
  221.     for(int i = 0; i < total; i++)
  222.     {
  223.         printf("%d、姓名:%s  电话:%s\n",i+1,per[i].name,per[i].num);
  224.     }
  225. }

  226. void find5()
  227. {
  228.     struct tongXunLu temp;
  229.     printf("你选择的是修改联系人功能,请按提示操作:\n");
  230.     showAll4();
  231.     printf("请输入您要查找的联系人的姓名:\n");
  232.     scanf("%s",temp.name);
  233.     printf("搜索中...\n");
  234.     int flag = 1;
  235.     for(int i = 0; i < total;i++)
  236.     {
  237.         if((strcmp(temp.name,per[i].name))==0)
  238.         {
  239.             printf("通讯录中%s的电话为%s\n",per[i].name,per[i].num);
  240.             flag = 0;
  241.             break;
  242.         }
  243.     }
  244.     if(flag)
  245.     {
  246.         printf("并没有=。=\n");
  247.     }
  248. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马