#include"stdio.h"
 #include"string.h"
 #include"stdlib.h"
 FILE *fp;
 #define M 100
 typedef struct Record
     {
     ];
     ];
     ],city[],work[],other[];
      }R;
 void cmd_1();
 void cmd_write(R info[],int n)    //重新写入函数
 {
     fclose(fp);
     if((fp=fopen("address.txl","wb"))==NULL)
     {
         printf("CANNOT OPEN FILE\n");
         exit();
     }
     fwrite(info,sizeof(R),n,fp);
     fclose(fp);
 }

 void for_1(int n,char ch)    //界面元素循环输出函数
 {
     int i;
     ;i<=n;i++)
         printf("%c",ch);
 }

 void cmd_4()    //建立通讯录文件
 {

     if((fp=fopen("address.txl","wb"))==NULL)
     {
         printf("CANNOT OPEN FILE\n");
         exit();
     }
     fclose(fp);
     printf("\n\n文件建立成功,请使用 3:新建联系人 功能\n");
 }
 int cmd_2_turn_x(R info[],int n)    //cmd_2_turn 附属函数:record结构体组 输出
 {
     int i;
     printf("\n\n我 的 通 讯 录\n");
     for_1(,'*');
     putchar('\n');
     ;i<n;i++)
         printf(,info[i].name,info[i].age,info[i].number,info[i].city,info[i].work,info[i].other);
     printf("\n\n显示结束,请选择序号:");

     int a;
     scanf("%d",&a);
     return a;
 }

 void cmd_2_turn(R info[],int n)    //cmd_2附属函数 按循序修改
 {

     )
     {
         int ask=cmd_2_turn_x(info,n);
         )
         {
             printf("对不起,序号范围超出\n");
             return;
         }
         getchar();
         fflush(stdin);
         printf("输入姓名:");
         gets(info[ask-].name);
         printf("\n输入年龄:");
         gets(info[ask-].age);
         printf("\n输入号码:");
         gets(info[ask-].number);
         printf("\n城市:");
         gets(info[ask-].city);
         printf("\n输入工作单位:");
         gets(info[ask-].work);
         printf("\n输入备注:");
         gets(info[ask-].other);
         printf("是否保存修改(y/n):");
         char a=getchar();
         if(a=='y')
         {
             cmd_write(info,n);
             printf("\n保存成功!\n");
             return;
         }
         else
         {
             for_1(,'*');
             printf("\n1:返回到上级\n2:继续修改\n");
             printf("\n请输入指令:");
             int ask_1;
             scanf("%d",&ask_1);
             )    return;
             else continue;
         }

     }

 }
 void cmd_2_name(R info[],int n)    //cmd_2附属函数 按名字修改
 {
     )
     {
         printf("\n\n请输入待查找的姓名:");
         ];
         getchar();
         gets(ask_name);
         int i;
         ;i<n;i++)
             )    break;
         if(i>=n)    {printf("\n查无此人\n");    return;}
         else
         {
             printf("\n查找成功,请修改\n");
             fflush(stdin);
             printf("输入姓名:");
             gets(info[i].name);
             printf("\n输入年龄:");
             gets(info[i].age);
             printf("\n输入号码:");
             gets(info[i].number);
             printf("\n城市:");
             gets(info[i].city);
             printf("\n输入工作单位:");
             gets(info[i].work);
             printf("\n输入备注:");
             gets(info[i].other);
             printf("是否保存修改(y/n):");
             char a=getchar();
             if(a=='y')
             {
                 cmd_write(info,n);
                 printf("\n修改成功!\n");
                 printf("\n是否继续修改(y/n):");
                 getchar();
                 char b=getchar();
                 if(b=='y')    continue;
                 if(b=='n')    return;
             }
             else
             {
                 for_1(,'*');
                 printf("\n1:返回到上级\n2:继续修改\n");
                 printf("\n请输入指令:");
                 int ask_1;
                 scanf("%d",&ask_1);
                 )    return;
                 else continue;
             }
         }
     }
 }
 void cmd_1_1(R info[],int n);
 void cmd_2()    //修改联系人
 {
     if((fp=fopen("address.txl","rb"))==NULL)
     {
         printf("CANNOT OPEN FILE\n");
         exit();
     }
     R temp,info[M];
     ;
     ,fp)==)
              info[i++]=temp;
      )
      {

          printf("\n修 改 联 系 人\n");
          for_1(,'*');
         printf("\n1:浏览通讯录");
         printf("\n2:按序号修改\n3:按姓名修改\n4:退出\n");
         printf("\n请输入指令:");
         int ask;
          scanf("%d",&ask);
         )    cmd_1_1(info,i);
         )    cmd_2_turn(info,i);
         )    cmd_2_name(info,i);
         else    return;
      }
 }
 void cmd_3()    //新建联系人函数
 {
     R record;
     char a;
     FILE *fp;
     if((fp=fopen("address.txl","ab"))==NULL)
     {
         printf("CANNOT OPEN FILE ");
         exit();
     }

     printf("\n\n");
     )    //新建联系人界面
     {
         getchar();
         fflush(stdin);
         printf("输入姓名:");
         gets(record.name);
         printf("\n输入年龄:");
         gets(record.age);
         printf("\n输入号码:");
         gets(record.number);
         printf("\n城市:");
         gets(record.city);
         printf("\n输入工作单位:");
         gets(record.work);
         printf("\n输入备注:");
         gets(record.other);
         printf("是否保存(y/n):");
         a=getchar();
         if(a=='y')
         {
             fwrite(&record,,fp);
             printf("\n····\n");
             printf("保存成功\n");
         }
         getchar();
         printf("是否继续建立联系人(y/n):");
         a=getchar();
         if(a=='n')    break;
         printf("\n");
     }
     fclose(fp);
     return;
 }
 void cmd_1_1(R info[],int n)    //cmd_1附属函数:record结构体组 输出
 {
     int i;
     printf("\n\n我 的 通 讯 录\n");
     for_1(,'*');
     putchar('\n');
     ;i<n;i++)
         printf(,info[i].name,info[i].age,info[i].number,info[i].city,info[i].work,info[i].other);
     printf("\n\n显示结束,按任意键键返回上级目录:");
     getchar();
     char a=getchar();
     if(a!=NULL)    return;
 }

 void sort_name(R info[],int n)    //cmd_1附属函数姓名排序
 {
     int i,j;
     R temp,info_t[M];
     ;i<n;i++)
         info_t[i]=info[i];
     ;i<n;i++)
         ;j<n-i;j++)
             ].name)>)
             {
                 temp=info_t[j];
                 info_t[j]=info_t[j+];
                 info_t[j+]=temp;
             }
     cmd_1_1(info_t,n);
     return;
 }
 void sort_city(R info[],int n)    //城市排序函数
 {
     int i,j;
     R temp,info_t[M];
     ;i<n;i++)
         info_t[i]=info[i];
     ;i<n;i++)
         ;j<n-i;j++)
             ].city)>)
             {
                 temp=info_t[j];
                 info_t[j]=info_t[j+];
                 info_t[j+]=temp;
             }
     cmd_1_1(info_t,n);
     return;
 }
 void cmd_1_2(R info[],int n)    //显示联系人函数附属函数 转移函数
 {
     int ask;
     int i;
     R info_t[M];
     ;i<n;i++)
         info_t[i]=info[i];
     )
     {

         printf("\n\n排 序 显 示\n");
         for_1(,'*');
         printf("\n1:按姓名排序\n");
         for_1(,'*');
         printf("\n2:按城市输出\n");
         for_1(,'*');
         printf("\n3:返回上一层\n");
         for_1(,'*');
         printf("\n请输入指令:");
         scanf("%d",&ask);
         )    break;
         )    sort_name(info,n);
         )    sort_city(info,n);
         else    {printf("指令错误,重新输入");    continue;}
     }
 }

 void cmd_1()    //显示联系人函数
 {
      if((fp=fopen("address.txl","rb"))==NULL)
      {
         printf("CANNOT OPEN FILE");
         exit();
      }
      R temp,info[M];
      ,cmd_x;
      ,fp)==)
          info[i++]=temp;

      )    //通讯录显示菜单界面
      {
         printf("\n显 示 联 系 人(共有 %d 条记录)\n",i);
         for_1(,'*');
         printf("\n1:按自然顺序输出\n");
         for_1(,'*');
         printf("\n2:按排序顺序显示\n");
         for_1(,'*');
         printf("\n3:退出显示程序\n");
         for_1(,'*');
         printf("\n请输入指令:");
         scanf("%d",&cmd_x);
         )    {fclose(fp);    return;}
         )    cmd_1_1(info,i);
         )    cmd_1_2(info,i);
         else {printf("指令错误,请重新输入!\n");    continue;}
      }
      fclose(fp);
 }
 void cmd_5_del(R info[],int n,int turn)    //删除联系人函数附属函数 删除函数
 {
     int i;
     )    return;
     ;i<n-;i++)
         info[i]=info[i+];
 }
 void cmd_5_turn(R info[],int n)    //删除联系人函数附属函数 序号删除函数
 {
     int i;
     printf("\n\n我 的 通 讯 录\n");
     for_1(,'*');
     putchar('\n');
     ;i<n;i++)
         printf(,info[i].name,info[i].age,info[i].number,info[i].city,info[i].work,info[i].other);
     printf("\n\n\n请输入序号:");
     int turn;
     scanf("%d",&turn);
     )
     {
         printf("\n对不起,超出已存范围\n");
         return;
     }
     printf(].name,info[turn-].age,info[turn-].number,info[turn-].city,info[turn-].work,info[turn-].other);
     getchar();
     printf("确定删除?(y/n)");
     char ask=getchar();
     if(ask=='y')
     {
         cmd_5_del(info,n,turn);
         cmd_write(info,n-);
         printf("\n删除成功!\n");
     }
     return;
 }
 void cmd_5_name(R info[],int n)    //删除联系人函数附属函数 姓名删除
 {
     printf("\n请输入名字:");
     ];
     getchar();
     gets(name);
     int i;
     ;i<n;i++)
         )    break;
     if(i>=n)
     {
         printf("\n查无此人\n");
         return;
     }
     else
     {
         printf(,info[i].name,info[i].age,info[i].number,info[i].city,info[i].work,info[i].other);
         //getchar();
         printf("确定删除?(y/n)");
         char ask=getchar();
         if(ask=='y')
         {
             cmd_5_del(info,n,i+);
             cmd_write(info,n-);
             printf("\n删除成功!\n");
         }
         return;
     }
 }
 void cmd_5()    //删除联系人函数
 {
     if((fp=fopen("address.txl","rb"))==NULL)
     {
         printf("CANNOT OPEN FILE");
         exit();
     }
     R temp,info[M];
     ;
     ,fp)==)
          info[i++]=temp;
     )
     {
         int ask;
         printf("\n删 除 联 系 人\n");
         for_1(,'*');
         printf("\n1:序号删除 2:姓名删除  3:退出");
         printf("\n\n请输入指令:");
         scanf("%d",&ask);
         )    cmd_5_turn(info,i);
         )    cmd_5_name(info,i);
         else return;
     }
 }

 void cmd_6_city(R info[],int n)    //查询联系人函数附属函数 城市查询函数
 {
     ];
     int i,j;
     printf("\n按 城 市 查 询 联 系 人\n");
     for_1(,'*');
     printf("\n请输入城市:");
     getchar();
     gets(city);
     j=;
     ;i<n;i++)
         )
             printf("%-5d%-10s%-4s%-15s%-10s%-4s    %-s\n",j++,info[i].name,info[i].age,info[i].number,info[i].city,info[i].work,info[i].other);
     printf();
     char a=getchar();
     if(a!=NULL)    return;
 }
 void cmd_6_name(R info[],int n)        //查询联系人函数附属函数 姓名查询函数
 {
     ];
     int i,j;
     printf("\n按 城 市 查 询 联 系 人 \n");
     for_1(,'*');
     printf("\n请输入名字:");
     getchar();
     gets(name);
     j=;
     ;i<n;i++)
         )
             printf("%-5d%-10s%-4s%-15s%-10s%-4s    %-s\n",j++,info[i].name,info[i].age,info[i].number,info[i].city,info[i].work,info[i].other);
     printf();
     char a=getchar();
     if(a!=NULL)    return;
 }

 void cmd_6()    //查询联系人函数
 {
     if((fp=fopen("address.txl","rb"))==NULL)
     {
         printf("CANNOT OPEN FILE");
         exit();
     }

     R temp,info[M];
      ;
      ,fp)==)
          info[i++]=temp;

     int ask;
     )
     {
         for_1(,'*');
         printf("\n查 询 联 系 人\n");
         for_1(,'*');
         printf("\n查询方式:1:姓名   2:城市   3:退出\n\n请输入指令:");
         scanf("%d",&ask);
         )    cmd_6_name(info,i);
         )    cmd_6_city(info,i);
         else return;
     }
     fclose(fp);
 }
 void cmd_7()
 {
     ];
     if((fp=fopen("help.txt","r"))==NULL)
     {
         printf("CANNOT OPEN FILE\n");
         exit();
     }
     ,fp))
         printf("%s",str);
     system("mspaint a.jpg");
     printf("\n\n");
     return;
 }

 void face_1()    //外界面函数
 {
     printf("\n\n\n");
     for_1(,' ');
     printf("通讯录管理程序\n");
     for_1(,'*');
     putchar('\n');
     for_1(,' ');
     printf("1:显示联系人\n");
     for_1(,' ');
     printf("2:修改联系人\n");
     for_1(,' ');
     printf("3:新建联系人\n");
     for_1(,' ');
     printf("4:新建联系文件\n");
     for_1(,' ');
     printf("5:删除联系人\n");
     for_1(,' ');
     printf("6:查询联系人\n");
     for_1(,' ');
     printf("7:帮助\n");
     for_1(,' ');
     printf("8:退出通讯录\n");
     for_1(,'*');
     putchar('\n');
     for_1(,' ');
     printf("请输入指令:");
 }
 int main(void)
 {
     int cmd;
     )
     {
         face_1();        //外界面函数
         scanf("%d",&cmd);
         putchar('\n');

         switch(cmd)
         {
             :    cmd_1();break;
             :    cmd_2();break;
             :    cmd_3();break;
             :    cmd_4();break;
             :    cmd_5();break;
             :    cmd_6();break;
             : cmd_7();break;
             : ;
             default:
             {
                 printf("指令错误,无法识别\n\n");
                 continue;
             }
         }
     }
     ;
 }

这个代码很幼稚,但这是我第一次的尝试,我只是想分享我的点滴

DOS通讯录的更多相关文章

  1. Android中使用ExpandableListView实现微信通讯录界面(完善仿微信APP)

    之前的博文<Android中使用ExpandableListView实现好友分组>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的仿微信 ...

  2. 如何使用dos命令打开当前用户、当前日期、当前时间以及当前用户加当前时间?

    1.dos命令安装mysqld --stall.启动net start mysql.进入MySQL数据库mysql -uroot -p后,输入select user();当前用户 select cur ...

  3. 如何使用dos命令查看MySQL当前使用的数据库?

    1.dos命令安装mysqld --stall.启动net start mysql.进入MySQL数据库mysql -uroot -p后,输入select database(); 如图:

  4. 怎样在Dos里切换盘符

    一:在Dos里切换盘符 a:在电脑左下角右击显示图片;(我用的是win10系统,其他系统类似) b:点击运行,输入cmd; c:点击确定: d:输入盘符:(如f:) 或F: 只写字母,不写分号是不行的 ...

  5. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  6. Java在DOS命令下的运行及其API文档制作过程

    该文档主要描述java程序在DOS命令下的运行,以及一些常用的命令 常用DOS命令: d: 回车 盘符切换 dir(directory):列出当前目录下的文件以及文件夹 md (make direct ...

  7. android 通讯录实现

    最近项目需要,于是自己实现了一个带导航栏的通讯录,上代码! 一.数据准备 (1)bean: public class Friend { private String remark; private S ...

  8. IOS学习之-私人通讯录

    通过一段时间IOS的学习完成了一个简单的应用,"私人通讯录". 运行效果如下图: 1.登录页 2.通讯录列表 3.添加 4.编辑 5.删除 6.注销 总视图结构如下图: 总结本程序 ...

  9. C#开发微信门户及应用(18)-微信企业号的通讯录管理开发之成员管理

    在上篇随笔<C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理>介绍了通讯录的部门的相关操作管理,通讯录管理包括部门管理.成员管理.标签管理三个部分,本篇主要介绍成员的管 ...

随机推荐

  1. 【SAP业务模式】之ICS(一):业务详述

    PS:本专题系列讲述如何在SAP系统中实现ICS的业务模式,本系列博文系原创,如要转载引用,请保持原文一致并注明出处! SAP系统自身功能非常强大,支持多种业务模式,通过前台后台的配置就可以实现多种效 ...

  2. http://www.blogjava.net/xylz/archive/2013/08/05/402405.html

    http://www.blogjava.net/xylz/archive/2013/08/05/402405.html

  3. java.util.logging.Logger 使用详解

    概述: 第1部分 创建Logger对象 第2部分 日志级别 第3部分 Handler 第4部分 Formatter 第5部分 自定义 第6部分 Logger的层次关系 参考 第1部分 创建Logger ...

  4. tensorflow 学习1 环境搭建

    1. 下载Anaconda(首选官网,但很慢) Anaconda2-4.0.0-Linux-x86_64.sh Anaconda 安装包还可以到 https://mirrors.tuna.tsingh ...

  5. gulp学习笔记2

    gulp系列学习笔记: 1.gulp学习笔记1 2.gulp学习笔记2 3.gulp学习笔记3 4.gulp学习笔记4 1. 压缩 CSS 压缩 css 代码可降低 css 文件大小,提高页面打开速度 ...

  6. java final .static修饰符

    static静态修饰符(使用static修饰符修饰的成员变量.常量.和成员方法成为静态变量.常量和方法,他们统称为静态成员,归整个类所有,不依赖于类的特定实例,被类的所有实例共享,只要这个类被加载,J ...

  7. M1: 创建UWP空项目

    本小节介绍如何在Visual Studio中创建一个UWP项目,Visual Studio中提供了快速创建各种项目的类型模板.在Visual Studio 2015中,同样提供了UWP项目模板. 学完 ...

  8. C++ Primer : 第九章 : vector变长、string的其他操作以及容器适配器

    vector变长机制.string的其他构造方法,添加.替换和搜索操作,string比较和数值转换,最后是容器适配器. vector对象是如何增长的 vector和string类型提供了一些成员函数, ...

  9. linux网络不同的解决办法

    贯标防火墙,iptables 注释掉/etc/hosts的localhost的ipv6地址映射

  10. 自己实现字符串操作函数strlen(),strcat(),strcpy(),strcmp()

    1.strlen()函数是求解字符串的有效长度的 1)非递归实现 size_t my_strlen(const char *str) { assert(str != NULL);  //断言,保证指针 ...