#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. android NDk环境编译总结

    首先,这篇文章的撰写是基于很多前人的优秀的帖子,感谢他们的分享让我能够学习这么多的知识.谢谢 Android NDK开发环境的搭建 前言: Android 上,应用程序的开发,大部分基于 Java 语 ...

  2. Android开发-API指南-Bound 类型的服务

    Bound Services 英文原文:http://developer.android.com/guide/components/bound-services.html 采集(更新)日期:2014- ...

  3. java.lang.Exception: Socket bind failed: [730013] An attempt was made to acc

    在CMD命令行中启动运行startup.bat,启运程序总是闪退,查看日志发现如下错误: 26-Jan-2016 18:12:34.463 SEVERE [main] org.apache.coyot ...

  4. jetty简介

    Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开发人员可以将 ...

  5. oracle表中某个字段含有字符回车、空格的手动修改方式

    select t.*, t.rowid from TB_SD_STANDARD_CHOOSE_ADVISE t where t.id =323900000 update TB_SD_STANDARD_ ...

  6. Windows phone 8 学习笔记(1) 触控输入(转)

    Windows phone 8 的应用 与一般的Pc应用在输入方式上最大的不同就是:Windows phone 8主要依靠触控操作.因此在输入方式上引入一套全新的触控操作方式,我们需要重新定义相关的事 ...

  7. Sublime 3114 + 转换GBK方法

    下载地址: http://files.cnblogs.com/files/wuyifu/Sublime_Text_Build_3114_x64_Setup.zip -– BEGIN LICENSE - ...

  8. OpenLDAP 安装及配置 笔记

    首先下载 OpenLdap(Ldap服务器) 和 LdapAdmin(客户端) 两个软件 OpenLDAPforWindows_2.4.39.part1.rar OpenLDAPforWindows_ ...

  9. easyui+ashx 动态初始化datagrid(动态列头)

    效果图: 1:简单初始化 JSON格式数据如下(后台自己构建,后台代码略): {"total":6,"columns":[{"field": ...

  10. linux常见驱动修改

    =============================== 说明 ===============================本文以A5为例,举8种我们公司常用接口的极度精简的驱动程序,只宜参考 ...