1. #include"stdio.h"
  2. #include"string.h"
  3. #include"stdlib.h"
  4. FILE *fp;
  5. #define M 100
  6. typedef struct Record
  7. {
  8. char name[];
  9. char age[];
  10. char number[],city[],work[],other[];
  11. }R;
  12. void cmd_1();
  13. void cmd_write(R info[],int n) //重新写入函数
  14. {
  15. fclose(fp);
  16. if((fp=fopen("address.txl","wb"))==NULL)
  17. {
  18. printf("CANNOT OPEN FILE\n");
  19. exit();
  20. }
  21. fwrite(info,sizeof(R),n,fp);
  22. fclose(fp);
  23. }
  24.  
  25. void for_1(int n,char ch) //界面元素循环输出函数
  26. {
  27. int i;
  28. for(i=;i<=n;i++)
  29. printf("%c",ch);
  30. }
  31.  
  32. void cmd_4() //建立通讯录文件
  33. {
  34.  
  35. if((fp=fopen("address.txl","wb"))==NULL)
  36. {
  37. printf("CANNOT OPEN FILE\n");
  38. exit();
  39. }
  40. fclose(fp);
  41. printf("\n\n文件建立成功,请使用 3:新建联系人 功能\n");
  42. }
  43. int cmd_2_turn_x(R info[],int n) //cmd_2_turn 附属函数:record结构体组 输出
  44. {
  45. int i;
  46. printf("\n\n我 的 通 讯 录\n");
  47. for_1(,'*');
  48. putchar('\n');
  49. for(i=;i<n;i++)
  50. 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);
  51. printf("\n\n显示结束,请选择序号:");
  52.  
  53. int a;
  54. scanf("%d",&a);
  55. return a;
  56. }
  57.  
  58. void cmd_2_turn(R info[],int n) //cmd_2附属函数 按循序修改
  59. {
  60.  
  61. while()
  62. {
  63. int ask=cmd_2_turn_x(info,n);
  64. if(ask>n||ask<=)
  65. {
  66. printf("对不起,序号范围超出\n");
  67. return;
  68. }
  69. getchar();
  70. fflush(stdin);
  71. printf("输入姓名:");
  72. gets(info[ask-].name);
  73. printf("\n输入年龄:");
  74. gets(info[ask-].age);
  75. printf("\n输入号码:");
  76. gets(info[ask-].number);
  77. printf("\n城市:");
  78. gets(info[ask-].city);
  79. printf("\n输入工作单位:");
  80. gets(info[ask-].work);
  81. printf("\n输入备注:");
  82. gets(info[ask-].other);
  83. printf("是否保存修改(y/n):");
  84. char a=getchar();
  85. if(a=='y')
  86. {
  87. cmd_write(info,n);
  88. printf("\n保存成功!\n");
  89. return;
  90. }
  91. else
  92. {
  93. for_1(,'*');
  94. printf("\n1:返回到上级\n2:继续修改\n");
  95. printf("\n请输入指令:");
  96. int ask_1;
  97. scanf("%d",&ask_1);
  98. if(ask==) return;
  99. else continue;
  100. }
  101.  
  102. }
  103.  
  104. }
  105. void cmd_2_name(R info[],int n) //cmd_2附属函数 按名字修改
  106. {
  107. while()
  108. {
  109. printf("\n\n请输入待查找的姓名:");
  110. char ask_name[];
  111. getchar();
  112. gets(ask_name);
  113. int i;
  114. for(i=;i<n;i++)
  115. if(strcmp(info[i].name ,ask_name)==) break;
  116. if(i>=n) {printf("\n查无此人\n"); return;}
  117. else
  118. {
  119. printf("\n查找成功,请修改\n");
  120. fflush(stdin);
  121. printf("输入姓名:");
  122. gets(info[i].name);
  123. printf("\n输入年龄:");
  124. gets(info[i].age);
  125. printf("\n输入号码:");
  126. gets(info[i].number);
  127. printf("\n城市:");
  128. gets(info[i].city);
  129. printf("\n输入工作单位:");
  130. gets(info[i].work);
  131. printf("\n输入备注:");
  132. gets(info[i].other);
  133. printf("是否保存修改(y/n):");
  134. char a=getchar();
  135. if(a=='y')
  136. {
  137. cmd_write(info,n);
  138. printf("\n修改成功!\n");
  139. printf("\n是否继续修改(y/n):");
  140. getchar();
  141. char b=getchar();
  142. if(b=='y') continue;
  143. if(b=='n') return;
  144. }
  145. else
  146. {
  147. for_1(,'*');
  148. printf("\n1:返回到上级\n2:继续修改\n");
  149. printf("\n请输入指令:");
  150. int ask_1;
  151. scanf("%d",&ask_1);
  152. if(ask_1==) return;
  153. else continue;
  154. }
  155. }
  156. }
  157. }
  158. void cmd_1_1(R info[],int n);
  159. void cmd_2() //修改联系人
  160. {
  161. if((fp=fopen("address.txl","rb"))==NULL)
  162. {
  163. printf("CANNOT OPEN FILE\n");
  164. exit();
  165. }
  166. R temp,info[M];
  167. int i=;
  168. while(fread(&temp,sizeof(R),,fp)==)
  169. info[i++]=temp;
  170. while()
  171. {
  172.  
  173. printf("\n修 改 联 系 人\n");
  174. for_1(,'*');
  175. printf("\n1:浏览通讯录");
  176. printf("\n2:按序号修改\n3:按姓名修改\n4:退出\n");
  177. printf("\n请输入指令:");
  178. int ask;
  179. scanf("%d",&ask);
  180. if(ask==) cmd_1_1(info,i);
  181. else if(ask==) cmd_2_turn(info,i);
  182. else if(ask==) cmd_2_name(info,i);
  183. else return;
  184. }
  185. }
  186. void cmd_3() //新建联系人函数
  187. {
  188. R record;
  189. char a;
  190. FILE *fp;
  191. if((fp=fopen("address.txl","ab"))==NULL)
  192. {
  193. printf("CANNOT OPEN FILE ");
  194. exit();
  195. }
  196.  
  197. printf("\n\n");
  198. while() //新建联系人界面
  199. {
  200. getchar();
  201. fflush(stdin);
  202. printf("输入姓名:");
  203. gets(record.name);
  204. printf("\n输入年龄:");
  205. gets(record.age);
  206. printf("\n输入号码:");
  207. gets(record.number);
  208. printf("\n城市:");
  209. gets(record.city);
  210. printf("\n输入工作单位:");
  211. gets(record.work);
  212. printf("\n输入备注:");
  213. gets(record.other);
  214. printf("是否保存(y/n):");
  215. a=getchar();
  216. if(a=='y')
  217. {
  218. fwrite(&record,sizeof(R),,fp);
  219. printf("\n····\n");
  220. printf("保存成功\n");
  221. }
  222. getchar();
  223. printf("是否继续建立联系人(y/n):");
  224. a=getchar();
  225. if(a=='n') break;
  226. printf("\n");
  227. }
  228. fclose(fp);
  229. return;
  230. }
  231. void cmd_1_1(R info[],int n) //cmd_1附属函数:record结构体组 输出
  232. {
  233. int i;
  234. printf("\n\n我 的 通 讯 录\n");
  235. for_1(,'*');
  236. putchar('\n');
  237. for(i=;i<n;i++)
  238. 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);
  239. printf("\n\n显示结束,按任意键键返回上级目录:");
  240. getchar();
  241. char a=getchar();
  242. if(a!=NULL) return;
  243. }
  244.  
  245. void sort_name(R info[],int n) //cmd_1附属函数姓名排序
  246. {
  247. int i,j;
  248. R temp,info_t[M];
  249. for(i=;i<n;i++)
  250. info_t[i]=info[i];
  251. for(i=;i<n;i++)
  252. for(j=;j<n-i;j++)
  253. if(strcmp(info_t[j].name,info_t[j+].name)>)
  254. {
  255. temp=info_t[j];
  256. info_t[j]=info_t[j+];
  257. info_t[j+]=temp;
  258. }
  259. cmd_1_1(info_t,n);
  260. return;
  261. }
  262. void sort_city(R info[],int n) //城市排序函数
  263. {
  264. int i,j;
  265. R temp,info_t[M];
  266. for(i=;i<n;i++)
  267. info_t[i]=info[i];
  268. for(i=;i<n;i++)
  269. for(j=;j<n-i;j++)
  270. if(strcmp(info_t[j].city,info_t[j+].city)>)
  271. {
  272. temp=info_t[j];
  273. info_t[j]=info_t[j+];
  274. info_t[j+]=temp;
  275. }
  276. cmd_1_1(info_t,n);
  277. return;
  278. }
  279. void cmd_1_2(R info[],int n) //显示联系人函数附属函数 转移函数
  280. {
  281. int ask;
  282. int i;
  283. R info_t[M];
  284. for(i=;i<n;i++)
  285. info_t[i]=info[i];
  286. while()
  287. {
  288.  
  289. printf("\n\n排 序 显 示\n");
  290. for_1(,'*');
  291. printf("\n1:按姓名排序\n");
  292. for_1(,'*');
  293. printf("\n2:按城市输出\n");
  294. for_1(,'*');
  295. printf("\n3:返回上一层\n");
  296. for_1(,'*');
  297. printf("\n请输入指令:");
  298. scanf("%d",&ask);
  299. if(ask==) break;
  300. else if(ask==) sort_name(info,n);
  301. else if(ask==) sort_city(info,n);
  302. else {printf("指令错误,重新输入"); continue;}
  303. }
  304. }
  305.  
  306. void cmd_1() //显示联系人函数
  307. {
  308. if((fp=fopen("address.txl","rb"))==NULL)
  309. {
  310. printf("CANNOT OPEN FILE");
  311. exit();
  312. }
  313. R temp,info[M];
  314. int i=,cmd_x;
  315. while(fread(&temp,sizeof(R),,fp)==)
  316. info[i++]=temp;
  317.  
  318. while() //通讯录显示菜单界面
  319. {
  320. printf("\n显 示 联 系 人(共有 %d 条记录)\n",i);
  321. for_1(,'*');
  322. printf("\n1:按自然顺序输出\n");
  323. for_1(,'*');
  324. printf("\n2:按排序顺序显示\n");
  325. for_1(,'*');
  326. printf("\n3:退出显示程序\n");
  327. for_1(,'*');
  328. printf("\n请输入指令:");
  329. scanf("%d",&cmd_x);
  330. if(cmd_x==) {fclose(fp); return;}
  331. else if(cmd_x==) cmd_1_1(info,i);
  332. else if(cmd_x==) cmd_1_2(info,i);
  333. else {printf("指令错误,请重新输入!\n"); continue;}
  334. }
  335. fclose(fp);
  336. }
  337. void cmd_5_del(R info[],int n,int turn) //删除联系人函数附属函数 删除函数
  338. {
  339. int i;
  340. if(turn==n-) return;
  341. for(i=turn-;i<n-;i++)
  342. info[i]=info[i+];
  343. }
  344. void cmd_5_turn(R info[],int n) //删除联系人函数附属函数 序号删除函数
  345. {
  346. int i;
  347. printf("\n\n我 的 通 讯 录\n");
  348. for_1(,'*');
  349. putchar('\n');
  350. for(i=;i<n;i++)
  351. 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);
  352. printf("\n\n\n请输入序号:");
  353. int turn;
  354. scanf("%d",&turn);
  355. if(turn>n||turn<=)
  356. {
  357. printf("\n对不起,超出已存范围\n");
  358. return;
  359. }
  360. 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);
  361. getchar();
  362. printf("确定删除?(y/n)");
  363. char ask=getchar();
  364. if(ask=='y')
  365. {
  366. cmd_5_del(info,n,turn);
  367. cmd_write(info,n-);
  368. printf("\n删除成功!\n");
  369. }
  370. return;
  371. }
  372. void cmd_5_name(R info[],int n) //删除联系人函数附属函数 姓名删除
  373. {
  374. printf("\n请输入名字:");
  375. char name[];
  376. getchar();
  377. gets(name);
  378. int i;
  379. for(i=;i<n;i++)
  380. if(strcmp(info[i].name,name)==) break;
  381. if(i>=n)
  382. {
  383. printf("\n查无此人\n");
  384. return;
  385. }
  386. else
  387. {
  388. 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);
  389. //getchar();
  390. printf("确定删除?(y/n)");
  391. char ask=getchar();
  392. if(ask=='y')
  393. {
  394. cmd_5_del(info,n,i+);
  395. cmd_write(info,n-);
  396. printf("\n删除成功!\n");
  397. }
  398. return;
  399. }
  400. }
  401. void cmd_5() //删除联系人函数
  402. {
  403. if((fp=fopen("address.txl","rb"))==NULL)
  404. {
  405. printf("CANNOT OPEN FILE");
  406. exit();
  407. }
  408. R temp,info[M];
  409. int i=;
  410. while(fread(&temp,sizeof(R),,fp)==)
  411. info[i++]=temp;
  412. while()
  413. {
  414. int ask;
  415. printf("\n删 除 联 系 人\n");
  416. for_1(,'*');
  417. printf("\n1:序号删除 2:姓名删除 3:退出");
  418. printf("\n\n请输入指令:");
  419. scanf("%d",&ask);
  420. if(ask==) cmd_5_turn(info,i);
  421. else if(ask==) cmd_5_name(info,i);
  422. else return;
  423. }
  424. }
  425.  
  426. void cmd_6_city(R info[],int n) //查询联系人函数附属函数 城市查询函数
  427. {
  428. char city[];
  429. int i,j;
  430. printf("\n按 城 市 查 询 联 系 人\n");
  431. for_1(,'*');
  432. printf("\n请输入城市:");
  433. getchar();
  434. gets(city);
  435. j=;
  436. for(i=;i<n;i++)
  437. if(strcmp(city,info[i].city)==)
  438. 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);
  439. printf("\n共查询到 %d 条记录\n按任意键返回",j-);
  440. char a=getchar();
  441. if(a!=NULL) return;
  442. }
  443. void cmd_6_name(R info[],int n) //查询联系人函数附属函数 姓名查询函数
  444. {
  445. char name[];
  446. int i,j;
  447. printf("\n按 城 市 查 询 联 系 人 \n");
  448. for_1(,'*');
  449. printf("\n请输入名字:");
  450. getchar();
  451. gets(name);
  452. j=;
  453. for(i=;i<n;i++)
  454. if(strcmp(name,info[i].name)==)
  455. 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);
  456. printf("\n共查询到 %d 条记录\n按任意键返回",j-);
  457. char a=getchar();
  458. if(a!=NULL) return;
  459. }
  460.  
  461. void cmd_6() //查询联系人函数
  462. {
  463. if((fp=fopen("address.txl","rb"))==NULL)
  464. {
  465. printf("CANNOT OPEN FILE");
  466. exit();
  467. }
  468.  
  469. R temp,info[M];
  470. int i=;
  471. while(fread(&temp,sizeof(R),,fp)==)
  472. info[i++]=temp;
  473.  
  474. int ask;
  475. while()
  476. {
  477. for_1(,'*');
  478. printf("\n查 询 联 系 人\n");
  479. for_1(,'*');
  480. printf("\n查询方式:1:姓名 2:城市 3:退出\n\n请输入指令:");
  481. scanf("%d",&ask);
  482. if(ask==) cmd_6_name(info,i);
  483. else if(ask==) cmd_6_city(info,i);
  484. else return;
  485. }
  486. fclose(fp);
  487. }
  488. void cmd_7()
  489. {
  490. char str[];
  491. if((fp=fopen("help.txt","r"))==NULL)
  492. {
  493. printf("CANNOT OPEN FILE\n");
  494. exit();
  495. }
  496. while(fgets(str,,fp))
  497. printf("%s",str);
  498. system("mspaint a.jpg");
  499. printf("\n\n");
  500. return;
  501. }
  502.  
  503. void face_1() //外界面函数
  504. {
  505. printf("\n\n\n");
  506. for_1(,' ');
  507. printf("通讯录管理程序\n");
  508. for_1(,'*');
  509. putchar('\n');
  510. for_1(,' ');
  511. printf("1:显示联系人\n");
  512. for_1(,' ');
  513. printf("2:修改联系人\n");
  514. for_1(,' ');
  515. printf("3:新建联系人\n");
  516. for_1(,' ');
  517. printf("4:新建联系文件\n");
  518. for_1(,' ');
  519. printf("5:删除联系人\n");
  520. for_1(,' ');
  521. printf("6:查询联系人\n");
  522. for_1(,' ');
  523. printf("7:帮助\n");
  524. for_1(,' ');
  525. printf("8:退出通讯录\n");
  526. for_1(,'*');
  527. putchar('\n');
  528. for_1(,' ');
  529. printf("请输入指令:");
  530. }
  531. int main(void)
  532. {
  533. int cmd;
  534. while()
  535. {
  536. face_1(); //外界面函数
  537. scanf("%d",&cmd);
  538. putchar('\n');
  539.  
  540. switch(cmd)
  541. {
  542. case : cmd_1();break;
  543. case : cmd_2();break;
  544. case : cmd_3();break;
  545. case : cmd_4();break;
  546. case : cmd_5();break;
  547. case : cmd_6();break;
  548. case : cmd_7();break;
  549. case : return ;
  550. default:
  551. {
  552. printf("指令错误,无法识别\n\n");
  553. continue;
  554. }
  555. }
  556. }
  557. return ;
  558. }

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

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. CODESOFT中线条形状该如何绘制

    CODESOFT条码设计软件提供了一系列工具,可帮助您设计完美的标签.在CODESOFT进行标签设计时,经常会需要创建除条码,文本对象除外的一些对象,那就是形状对象.如线条.圆形.矩形等.通过下面的示 ...

  2. 消费者端的Spring JMS 连接ActiveMQ接收生产者Oozie Server发送的Oozie作业执行结果

    一,介绍 Oozie是一个Hadoop工作流服务器,接收Client提交的作业(MapReduce作业)请求,并把该作业提交给MapReduce执行.同时,Oozie还可以实现消息通知功能,只要配置好 ...

  3. FFTW库在VS 2010中的使用方法

    一.FFTW库简介(from百度百科)       FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其 ...

  4. #define的一些

    // 生成一个字符串 #define NSString(...) [NSString stringWithFormat:__VA_ARGS__]

  5. JavaScript创建表格的两种方式

    方式一: var data = [ { id: 1, name: "first", age: 12 }, { id: 2, name: "second", ag ...

  6. js DOM的几个常用方法

    <div id="div1">这是个测试</div> <p </p> <p </p> //js DOM的几个常用方法 / ...

  7. js动态生成JSON树

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. CSS3 圆形时钟式网页进度条

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. jQuery插件之Cookie

    一.jQuery.Cookie.js插件是一个轻量级的Cookie管理插件. 特别提醒,今日发现一个特别的错误,google浏览器提示:has no method $.cookie.火狐浏览器提示:$ ...

  10. 使用Git上传本地项目代码到github

    前提:(1)ssh密钥(让本地与git链接) &  (2)装好gitbash 1.git中创建好库 2.文件夹中输入:git init (出现隐藏的.git文件) 3.git remote a ...