#include"stdio.h"
#include"string.h"
#include"stdlib.h"
FILE *fp;
#define M 100
typedef struct Record
{
char name[];
char age[];
char number[],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;
for(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');
for(i=;i<n;i++)
printf("%-5d%-10s%-4s%-15s%-10s%-4s %-s\n",i+,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附属函数 按循序修改
{ while()
{
int ask=cmd_2_turn_x(info,n);
if(ask>n||ask<=)
{
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);
if(ask==) return;
else continue;
} } }
void cmd_2_name(R info[],int n) //cmd_2附属函数 按名字修改
{
while()
{
printf("\n\n请输入待查找的姓名:");
char ask_name[];
getchar();
gets(ask_name);
int i;
for(i=;i<n;i++)
if(strcmp(info[i].name ,ask_name)==) 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);
if(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];
int i=;
while(fread(&temp,sizeof(R),,fp)==)
info[i++]=temp;
while()
{ printf("\n修 改 联 系 人\n");
for_1(,'*');
printf("\n1:浏览通讯录");
printf("\n2:按序号修改\n3:按姓名修改\n4:退出\n");
printf("\n请输入指令:");
int ask;
scanf("%d",&ask);
if(ask==) cmd_1_1(info,i);
else if(ask==) cmd_2_turn(info,i);
else if(ask==) 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");
while() //新建联系人界面
{
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,sizeof(R),,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');
for(i=;i<n;i++)
printf("%-5d%-10s%-4s%-15s%-10s%-4s %-s\n",i+,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];
for(i=;i<n;i++)
info_t[i]=info[i];
for(i=;i<n;i++)
for(j=;j<n-i;j++)
if(strcmp(info_t[j].name,info_t[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];
for(i=;i<n;i++)
info_t[i]=info[i];
for(i=;i<n;i++)
for(j=;j<n-i;j++)
if(strcmp(info_t[j].city,info_t[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];
for(i=;i<n;i++)
info_t[i]=info[i];
while()
{ 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);
if(ask==) break;
else if(ask==) sort_name(info,n);
else if(ask==) 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];
int i=,cmd_x;
while(fread(&temp,sizeof(R),,fp)==)
info[i++]=temp; while() //通讯录显示菜单界面
{
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);
if(cmd_x==) {fclose(fp); return;}
else if(cmd_x==) cmd_1_1(info,i);
else if(cmd_x==) cmd_1_2(info,i);
else {printf("指令错误,请重新输入!\n"); continue;}
}
fclose(fp);
}
void cmd_5_del(R info[],int n,int turn) //删除联系人函数附属函数 删除函数
{
int i;
if(turn==n-) return;
for(i=turn-;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');
for(i=;i<n;i++)
printf("%-5d%-10s%-4s%-15s%-10s%-4s %-s\n",i+,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);
if(turn>n||turn<=)
{
printf("\n对不起,超出已存范围\n");
return;
}
printf("\n\n%-5d%-10s%-4s%-15s%-10s%-4s %-s\n\n",turn,info[turn-].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请输入名字:");
char name[];
getchar();
gets(name);
int i;
for(i=;i<n;i++)
if(strcmp(info[i].name,name)==) break;
if(i>=n)
{
printf("\n查无此人\n");
return;
}
else
{
printf("\n\n%-5d%-10s%-4s%-15s%-10s%-4s %-s\n\n",i+,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];
int i=;
while(fread(&temp,sizeof(R),,fp)==)
info[i++]=temp;
while()
{
int ask;
printf("\n删 除 联 系 人\n");
for_1(,'*');
printf("\n1:序号删除 2:姓名删除 3:退出");
printf("\n\n请输入指令:");
scanf("%d",&ask);
if(ask==) cmd_5_turn(info,i);
else if(ask==) cmd_5_name(info,i);
else return;
}
} void cmd_6_city(R info[],int n) //查询联系人函数附属函数 城市查询函数
{
char city[];
int i,j;
printf("\n按 城 市 查 询 联 系 人\n");
for_1(,'*');
printf("\n请输入城市:");
getchar();
gets(city);
j=;
for(i=;i<n;i++)
if(strcmp(city,info[i].city)==)
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("\n共查询到 %d 条记录\n按任意键返回",j-);
char a=getchar();
if(a!=NULL) return;
}
void cmd_6_name(R info[],int n) //查询联系人函数附属函数 姓名查询函数
{
char name[];
int i,j;
printf("\n按 城 市 查 询 联 系 人 \n");
for_1(,'*');
printf("\n请输入名字:");
getchar();
gets(name);
j=;
for(i=;i<n;i++)
if(strcmp(name,info[i].name)==)
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("\n共查询到 %d 条记录\n按任意键返回",j-);
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];
int i=;
while(fread(&temp,sizeof(R),,fp)==)
info[i++]=temp; int ask;
while()
{
for_1(,'*');
printf("\n查 询 联 系 人\n");
for_1(,'*');
printf("\n查询方式:1:姓名 2:城市 3:退出\n\n请输入指令:");
scanf("%d",&ask);
if(ask==) cmd_6_name(info,i);
else if(ask==) cmd_6_city(info,i);
else return;
}
fclose(fp);
}
void cmd_7()
{
char str[];
if((fp=fopen("help.txt","r"))==NULL)
{
printf("CANNOT OPEN FILE\n");
exit();
}
while(fgets(str,,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;
while()
{
face_1(); //外界面函数
scanf("%d",&cmd);
putchar('\n'); switch(cmd)
{
case : cmd_1();break;
case : cmd_2();break;
case : cmd_3();break;
case : cmd_4();break;
case : cmd_5();break;
case : cmd_6();break;
case : cmd_7();break;
case : return ;
default:
{
printf("指令错误,无法识别\n\n");
continue;
}
}
}
return ;
}

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

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. python-appium手机自动化测试(仅需安装包)前期准备(pydev-eclipse编辑器)

    1.jdk安装与环境变量配置教程http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html 我本机安装的是1.6.043 2.sdk下 ...

  2. The str method

    __str__ is a special method name, like __init__, that is supposed to return a string representation ...

  3. 全局变量&局部变量

    一.局部变量: 定义在函数内部的变量以及函数的形参成为局部变量 作用于:从定义那一行开始知道与其所在的代码块结束 生命周期:从程序运行到定义那一行开始分配存储空间到程序离开该变量所在的作用域 特点: ...

  4. 采用FLAG_ACTIVITY_CLEAR_TOP退出 多activity 或 整个程序

    问题: 多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序. 网上资料:{ finish()和system(0)都只能退出单个activity. ...

  5. 再看.net本质

    1.[资源的地址-通用资源标识符] 我们在地址栏中输入的内容称为通用资源标识符(Universal Resource Identifier,URI),它有很多种形式,在Web中我们通常使用称为统一资源 ...

  6. Linux下的”锁“事儿

    原由 之所以写这篇文章当然还是在面试中涉及了对本文标题的相关问题-互斥锁和自旋锁的区别.听到这个问题的时候,我是比较忐忑的.互斥锁我还能简单说一些,但是对于自旋锁的了解几乎为零.为此,将总结Linux ...

  7. sorcketlog

    正在运行的API有bug,不能var_dump进行调试,因为会影响client的调用. 将日志写到文件,查看也不方便,特别是带调用栈或大数据结构的文件日志,查看日志十分困难. 这时候用SocketLo ...

  8. C++ builder 操作Excel方法(据网上资料整理)

    c++ builder 操作Excel方法,下面是从网上找到的一些不错的方法,学习一下: 用OLE操作Excel(目前最全的资料)(04.2.19更新) 本文档部分资料来自互联网,大部分是ccrun( ...

  9. C++ Builder技巧集锦

    /* 调用DOS程序时不显示窗口 使 用 ShellExecute调 用 DOS程 序 时 可 以 不 显 示 窗 口 , 如 :*/ ShellExecute(, "open", ...

  10. iOS 8.3 JB ready

    Hi, I've been waiting for a very very long time..Now iOS 8.3 is ready. http://www.taig.com/ You guys ...