DOS通讯录
#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通讯录的更多相关文章
- Android中使用ExpandableListView实现微信通讯录界面(完善仿微信APP)
之前的博文<Android中使用ExpandableListView实现好友分组>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的仿微信 ...
- 如何使用dos命令打开当前用户、当前日期、当前时间以及当前用户加当前时间?
1.dos命令安装mysqld --stall.启动net start mysql.进入MySQL数据库mysql -uroot -p后,输入select user();当前用户 select cur ...
- 如何使用dos命令查看MySQL当前使用的数据库?
1.dos命令安装mysqld --stall.启动net start mysql.进入MySQL数据库mysql -uroot -p后,输入select database(); 如图:
- 怎样在Dos里切换盘符
一:在Dos里切换盘符 a:在电脑左下角右击显示图片;(我用的是win10系统,其他系统类似) b:点击运行,输入cmd; c:点击确定: d:输入盘符:(如f:) 或F: 只写字母,不写分号是不行的 ...
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总
--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...
- Java在DOS命令下的运行及其API文档制作过程
该文档主要描述java程序在DOS命令下的运行,以及一些常用的命令 常用DOS命令: d: 回车 盘符切换 dir(directory):列出当前目录下的文件以及文件夹 md (make direct ...
- android 通讯录实现
最近项目需要,于是自己实现了一个带导航栏的通讯录,上代码! 一.数据准备 (1)bean: public class Friend { private String remark; private S ...
- IOS学习之-私人通讯录
通过一段时间IOS的学习完成了一个简单的应用,"私人通讯录". 运行效果如下图: 1.登录页 2.通讯录列表 3.添加 4.编辑 5.删除 6.注销 总视图结构如下图: 总结本程序 ...
- C#开发微信门户及应用(18)-微信企业号的通讯录管理开发之成员管理
在上篇随笔<C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理>介绍了通讯录的部门的相关操作管理,通讯录管理包括部门管理.成员管理.标签管理三个部分,本篇主要介绍成员的管 ...
随机推荐
- SICP 1.1-1.5
1.1 a = b = nil 1.2 (/ (+ (- (- (+ (/ ))))) (* (- ) (- )) 1.3 a = b = nil 1.4... 1.5 (define (p) (p) ...
- VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录
VMware10中的CentOS6.5命令行安装VMwaretools工具启用windows与虚拟机中Linux系统的共享目录 一.描述 系统描述:win7旗舰版64位系统+VMware Workst ...
- Flash与IE奇怪的关键字冲突
我有一个小小的swf文件,用来播放声音,加入到HTML后,在Firefox/chrome下播放正常,唯独IE8提示 消息: 对象不支持此属性或方法 行: 48 字符: 3 代码: 0 URI: ... ...
- flex经验记录(转载)
最近一直忙于项目,很好抽出时间学习,刚忙里偷闲浏览博客看到一位博友总结的一些flex的经验,感觉不错就转载过来,一来扩散一下,二来保存下来,以后忘记的时候可以回来学习下. 原博文地址:http://b ...
- 【测试】在hr用户下自行创建T1和T2表写一条SQL语句,(NL连接)
SQL> select t1.* from t1,t2 where t1.object_id=t2.object_id; rows selected. Execution Plan ------ ...
- 多线程查询FTP Server上的文件
情形是这样的,最近做一个自动化的项目,当batch跑成功了,FTP Server上会有特定的生成文件.但是不确定是什么时候会有,大概是batch跑完了5分钟之内吧,所以在脚本里设置检查点的时候,需要每 ...
- Android入门之GridView(表格控件)
GridView是一个表格控件,可以在每个单元格中显示自定义的View或者字符串.在这里我们要实现一个图标下方有文字的效果. 1.首先我们应自定义布局文件image_text.xml.代码如下: &l ...
- asp.net中导出Execl的方法
一.asp.net中导出Execl的方法: 在 asp.net中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址 输出在浏览器上:一种是将文件直接将文件输出流写给 ...
- sphinx 超好资料
http://www.ttlsa.com/?s=sphinx
- javascript之delete操作符
理解delete 理论 代码段的类型 执行上下文 活动对象 / 变量对象 属性的特性 内置属性与 DontDelete 未声明的赋值 Firebug的困惑 在eval中删除变量 浏览器兼容性 Geck ...