为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

通讯录(C语言版)(请下载观看,无乱码)

2017-12-04 9页 doc 26KB 12阅读

用户头像

is_321635

暂无简介

举报
通讯录(C语言版)(请下载观看,无乱码)通讯录(C语言版)(请下载观看,无乱码) #include #include #include #include typedef struct personnode { char name[8]; char tel[16]; char add[30]; }personnode; FILE *fp; //定义文件型指针变量 /*以下创建通讯录,若通讯录不存在,刚提示创建,若存在则不创建*/ void creat(){ personnode *person; person=(personnode *)ma...
通讯录(C语言版)(请下载观看,无乱码)
通讯录(C语言版)(请下载观看,无乱码) #include #include #include #include typedef struct personnode { char name[8]; char tel[16]; char add[30]; }personnode; FILE *fp; //定义文件型指针变量 /*以下创建通讯录,若通讯录不存在,刚提示创建,若存在则不创建*/ void creat(){ personnode *person; person=(personnode *)malloc(sizeof(personnode)); if((fp=fopen("通讯录.dat","r"))==NULL){ //r 只读(打开) printf("通讯录不存在!\n"); fp=fopen("通讯录.dat","w"); //w 只写(建立) fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","地址"); printf("\n建立通讯录成功!\n"); } else printf("通讯录已存在,不用建立!\n"); fclose(fp); } //creat() void output(){ personnode *person; person=(personnode *)malloc(sizeof(personnode)); if((fp=fopen("通讯录.dat","r"))==NULL){ printf("\n不能打开通讯录!\n"); exit(0); } printf("\n**************************************\n"); printf("%24s\n","通讯录"); while(!feof(fp)){ //如果没到文件末尾,则不停循环输出 fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add); printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add); } fclose(fp); printf("\n**************************************\n"); } //output() /*以下为添加模块*/ void append(){ personnode *person; person=(personnode *)malloc(sizeof(personnode)); if((fp=fopen("通讯录.dat","a"))==NULL){ //a 追加 printf("\n不能打开通讯录!\n"); exit(0); } printf("\n请输入添加的姓名、电话号码及地址\n"); scanf("%s%s%s",person->name,person->tel,person->add); fprintf(fp,"%-10s%-20s%-50s\n",person->name,person->tel,person->add); fclose(fp); printf("\n添加成功!\n"); } //append() /*以下为查找模块*/ void search(){ int k=0,h; char namekey[8],telkey[16]; personnode *person; person=(personnode *)malloc(sizeof(personnode)); printf("\n*********************************\n"); printf("* \t1 -- 按号码查找 \t*\n"); printf("* \t2 -- 按姓名查找 \t*\n"); printf("*********************************\n"); printf("\n请选择操作 (1 ~ 2) :"); scanf("%d",&h); fp=fopen("通讯录.dat","r"); if(h==1){ printf("\n请输入你查找的号码!\n"); scanf("%s",telkey); while(!feof(fp)){ fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add); if(!strcmp(telkey,person->tel)){ printf("\n\n已查到,记录为:\n"); printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add); k=1; } //if } } else if(h==2){ printf("\n请输入要查找的姓名:"); scanf("%s",namekey); while(!feof(fp)){ fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add); if(!strcmp(namekey,person->name)){ printf("\n\n已查到,记录为:\n"); printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add); k=1; } //if } //while*/ if(!k)printf("对不起,没有此人记录!\n"); fclose(fp); } } //search() /*以下为修改模块*/ void modify(){ int k=0; long offset; char namekey[8]; personnode *person; person=(personnode *)malloc(sizeof(personnode)); printf("\n请输入要修改的姓名:"); scanf("%s",namekey); if((fp=fopen("通讯录.dat","r+"))==NULL){ // r+ 读写 printf("\n不能打开通讯录!\n"); exit(0); } while(!feof(fp)){ offset=ftell(fp); fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add); if(!strcmp(namekey,person->name)){ k=1;break; } } if(k){ printf("\n已查到,记录为:\n"); printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add); printf("\n请输入新姓名、电话号码及地址\n"); scanf("%s%s%s",person->name,person->tel,person->add); fseek(fp,offset,SEEK_SET); //从该条记录的开始点进行写操作 fprintf(fp,"%-10s%-20s%-50s\n",person->name,person->tel,person->add); printf("\n修改成功!\n"); } else printf("\n对不起,没有此人记录!\n"); fclose(fp); } /*以下为删除模块*/ void delrecord(){ int k=0;int sum=1; char m; long offset1; char namekey[8]; personnode *person; person=(personnode *)malloc(sizeof(personnode)); printf("\n请输入要删除的姓名:"); scanf("%s",namekey); if((fp=fopen("通讯录.dat","r+"))==NULL){ printf("\n不能打开通讯录!\n"); exit(0); } while(!feof(fp)){ offset1=ftell(fp); //文件位置指针当前值 fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add); sum+=1; if(!strcmp(namekey,person->name)){ k=1;break; } } //while() if(k){ printf("\n已查到,记录为:\n"); printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add); printf("\n确定要删除吗? (Y/N) "); scanf("%s",&m); if(m=='y'||m=='Y'){ rewind(fp); fseek(fp,sum*80L,1); fprintf(fp,"%-10s%-20s%-50s\n","","",""); printf("\n删除成功!\n"); } //if } else printf("\n对不起,没有此人记录!\n"); fclose(fp); } //delcord() void main(){ int m,flag=1; system("color 2f"); //调用颜色命令,包含在stdlib.h头文件中 printf("\n\n******************************************************************** ***********\n\n"); printf("\t\t???????????????????????\n"); printf("\t\t? ?__? Random 编写 ? ?\n"); printf("\t\t? 欢迎使用Random的通讯录 ?\n"); printf("\t\t? QQ:747187822 ?\n"); printf("\t\t???????????????????????\n"); printf("\t\t? 1 -- 添加 ? 2 -- 查找 ?\n"); printf("\t\t? ? ?\n"); printf("\t\t? 3 -- 修改 ? 4 -- 删除 ?\n"); printf("\t\t? ? ?\n"); printf("\t\t? 5 -- 打印 ? 0 -- 退出 ?\n"); printf("\t\t???????????????????????\n"); printf("\n********************************************************************** *********\n\n"); creat(); while(flag){ //用死循环实现 printf("\n请选择操作 (0 ~ 5) :"); scanf("%d",&m); switch(m){ case 1: append();break; case 2: search();break; case 3: modify();break; case 4: delrecord();break; case 5: output();break; case 0: printf("\n\n==========>感谢使用Random的通讯录!<==========\n"); exit(0); } //switch() } //while() } /*本程序编写By:Random*/
/
本文档为【通讯录(C语言版)(请下载观看,无乱码)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索