黑马程序员-通讯录
2015-06-30 22:02
627 查看
------- android培训、java培训、期待与您交流!
----------
这是黑马视频的一个小程序,关于c语言的,简单,但是很强大,可以看看,很棒,很适合初学者。简单,完整,使用的代码,不好找哇
------- android培训、java培训、期待与您交流!
----------
----------
这是黑马视频的一个小程序,关于c语言的,简单,但是很强大,可以看看,很棒,很适合初学者。简单,完整,使用的代码,不好找哇
// // main.c // con2 // // Created by cqycomputer on 15/7/8. // Copyright (c) 2015年 cqycomputer. All rights reserved. // #include <stdio.h> #include <stdio.h> #include <string.h> #define LEN 100 #define NAMELEN 22 #define TELLEN 12 /** *打印功能的函数 */ void interface(){ printf("**************************\n"); printf("****** 欢迎使用通讯录 ******\n"); printf("****** 1、添加联系人 ******\n"); printf("****** 2、删除联系人 ******\n"); printf("****** 3、修改联系人 ******\n"); printf("****** 4、查看所有联系人 ****\n"); printf("****** 5、搜索联系人 ******\n"); printf("****** 6、退出系统 ******\n"); printf("**************************\n\n"); } //定义结构体说明联系人信息 typedef struct{ char name[NAMELEN]; char tel[TELLEN]; }Person; Person per[LEN]; //文件指针哦 FILE * fp=NULL; int totel,num; //遍历结构体数组哈 void con(){ for(int i=0;i<totel;i++) printf("%d\t%s\t\t%s\t\n",i+1,per[i].name,per[i].tel); } void doAdd(){ char a[NAMELEN],b[TELLEN]; int x; printf("请输入联系人姓名..\n"); getchar(); fgets(a,NAMELEN,stdin); if(a[strlen(a)-1]=='\n') a[strlen(a)-1]='\0'; printf("请输入联系人电话号..\n"); fgets(b,TELLEN,stdin); if(b[strlen(b)-1]=='\n') b[strlen(b)-1]='\0'; printf("1.确认 2.取消\n"); scanf("%d",&x); if(x==1){ strcpy(per[totel].name,a); strcpy(per[totel].tel,b); fp=fopen("contact.date","wb+"); totel++; fwrite(&totel,4,1,fp); fwrite(per,sizeof(Person)*totel,1,fp); fclose(fp); printf("添加成功!\n"); } } void doDelete(){ con(); printf("选择要删除的联系人编号..\n"); int x,y; scanf("%d",&x); if(x>0&&x<=totel){ printf("要删除 %s 吗?1.确定 2.取消\n",per[x-1].name); scanf("%d",&y); if(y==1){ for(int i=x;i<totel;i++) per[i-1]=per[i]; totel--; fp=fopen("contact.date","wb+"); fwrite(per,sizeof(Person)*totel,1,fp); fwrite(&totel,4,1,fp); fclose(fp); } }else{ printf("已取消删除!\n"); } } void doRevise(){ con(); int x,y; char a[NAMELEN],b[TELLEN]; printf("请选择要修改的联系人编号..\n"); scanf("%d",&x); if(x>0&&x<=totel){ printf("请输入新的姓名..\n"); scanf("%s",a); printf("请输入新的电话号..\n"); scanf("%s",b); printf("要修改联系人%s吗? 1.确定 2.取消\n",per[x-1].name); scanf("%d",&y); if(y==1){ strcpy(per[x-1].name,a); strcpy(per[x-1].tel,b); fp=fopen("contact.date","wb+"); fwrite(per,sizeof(Person)*totel,1,fp); fwrite(&totel,4,1,fp); fclose(fp); printf("修改成功!\n"); } }else{ printf("已取消修改!\n"); } } void doSearch(){ printf("请输入要查找的联系人姓名..\n"); char a[NAMELEN]; scanf("%s",a); int i=0; for(;i<totel;i++){ if(strcpy(per[i].name,a)==0){ printf("查找信息如下..\n"); printf("%d\t%s\t\t%s\t\n",i+1,per[i].name,per[i].tel); break; } } if(i==totel) printf("查无此人!\n"); } int main(int argc, const char * argv[]) { //定义变量,结构体,文件指针 interface(); //将文件写入结构体 fp=fopen("contact.date","r"); if(fp!=NULL){ fread(&totel,4,1,fp); fread(per,sizeof(Person)*totel,1,fp); rewind(fp); fclose(fp); } printf("请输入操作!\n"); //用循环来执行用户操作 while(1){ //接受用户操作,并判断是否合法 scanf("%d",&num); if(num<1||num>6){ printf("操作错误!\n"); continue; } switch(num){ case 1: doAdd(); break; case 2: doDelete(); break; case 3: doRevise(); break; case 4: con(); break; case 5: doSearch(); break; case 6: printf("系统已退出!\n"); return 0; } interface(); } return 0; }
------- android培训、java培训、期待与您交流!
----------
相关文章推荐
- 面试题15:链表中倒数第k个结点
- 2015面试记三
- 黑马程序员——Java基础--常见对象总结(二)
- 黑马程序员——单例设计模式
- 菜鸟好文推荐(八)——为什么我不想成为Web前端程序员
- 黑马程序员——equals和==的区别
- 剑指offer面试题8——旋转数组的最小数字
- 黑马程序员——java的IO之流操作的基本规律,Properties类,打印流,序列流
- 黑马程序员——java的IO之字符流,字节流,转换流
- 面试题3---二维数组中查找
- 面试题8:旋转数组的最小数字
- 面试题7:用两个栈实现队列
- 程序员必须要会算法吗? 获奖名单公布
- 诸葛分享:怎么面试架构师
- java 面试
- 黑马程序员---异常总结
- 编程范式,程序员的编程世界观
- 阿里巴巴离职DBA 35岁总结的职业生涯
- 面试题6:重建二叉树
- sql的简单的面试题