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)-微信企业号的通讯录管理开发之部门管理>介绍了通讯录的部门的相关操作管理,通讯录管理包括部门管理.成员管理.标签管理三个部分,本篇主要介绍成员的管 ...
随机推荐
- CODESOFT中线条形状该如何绘制
CODESOFT条码设计软件提供了一系列工具,可帮助您设计完美的标签.在CODESOFT进行标签设计时,经常会需要创建除条码,文本对象除外的一些对象,那就是形状对象.如线条.圆形.矩形等.通过下面的示 ...
- 消费者端的Spring JMS 连接ActiveMQ接收生产者Oozie Server发送的Oozie作业执行结果
一,介绍 Oozie是一个Hadoop工作流服务器,接收Client提交的作业(MapReduce作业)请求,并把该作业提交给MapReduce执行.同时,Oozie还可以实现消息通知功能,只要配置好 ...
- FFTW库在VS 2010中的使用方法
一.FFTW库简介(from百度百科) FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其 ...
- #define的一些
// 生成一个字符串 #define NSString(...) [NSString stringWithFormat:__VA_ARGS__]
- JavaScript创建表格的两种方式
方式一: var data = [ { id: 1, name: "first", age: 12 }, { id: 2, name: "second", ag ...
- js DOM的几个常用方法
<div id="div1">这是个测试</div> <p </p> <p </p> //js DOM的几个常用方法 / ...
- js动态生成JSON树
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- CSS3 圆形时钟式网页进度条
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jQuery插件之Cookie
一.jQuery.Cookie.js插件是一个轻量级的Cookie管理插件. 特别提醒,今日发现一个特别的错误,google浏览器提示:has no method $.cookie.火狐浏览器提示:$ ...
- 使用Git上传本地项目代码到github
前提:(1)ssh密钥(让本地与git链接) & (2)装好gitbash 1.git中创建好库 2.文件夹中输入:git init (出现隐藏的.git文件) 3.git remote a ...