C语言通讯录管理系统源代码.docx

上传人:牧羊曲112 文档编号:3155347 上传时间:2023-03-11 格式:DOCX 页数:46 大小:42.14KB
返回 下载 相关 举报
C语言通讯录管理系统源代码.docx_第1页
第1页 / 共46页
C语言通讯录管理系统源代码.docx_第2页
第2页 / 共46页
C语言通讯录管理系统源代码.docx_第3页
第3页 / 共46页
C语言通讯录管理系统源代码.docx_第4页
第4页 / 共46页
C语言通讯录管理系统源代码.docx_第5页
第5页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言通讯录管理系统源代码.docx》由会员分享,可在线阅读,更多相关《C语言通讯录管理系统源代码.docx(46页珍藏版)》请在三一办公上搜索。

1、C语言通讯录管理系统源代码/*通讯录管理系统源代码*/#include<stdio.h>#include<stdlib.h>#include<string.h>struct tongxunlu /*结构定义*/char name10;char address30;char birthday10;char phonenumber15;char mail20;char relation8;void add(struct tongxunlu recode); /*函数声明*/void demand(struct tongxunlu recode);void show(stru

2、ct tongxunlu recode);void revamp(struct tongxunlu recode);void omit(struct tongxunlu recode); void shanjia(struct tongxunlu recode);/*mian函数,进行主界面设计,调用各函数*/int main(void)int choice,i;struct tongxunlu recode200;FILE *fp;printf( *通讯录管理系统* n);printf(*: 如果您是第一次使用此系统,请按0让系统在F盘为您建立一个保存联系人的新TXT文件! n);print

3、f(*: 如果不是第一次使用此系统,请按1开始使用系统,按0会清除您以前保存的所有联系人!n);printf( 请输入您的选择:);scanf(%d,&i);if(i=0)if(fp=fopen(f:project.txt,w+)=NULL)printf(File open error!);exit(0);if(fclose(fp)printf(can not cloce the file!);exit(0);else if(i=1);system(pause);system(cls);doprintf( 通讯录管理系统 n);printf( |-|n);printf( | 选择1:添加通讯记

4、录 |n);printf( | 选择2:修改通讯记录 |n);printf( | 选择3:删除通讯记录 |n);printf( | 选择4:查询通讯记录 |n);printf( | 选择5:显示通讯记录 |n);printf( | 选择0:退出 |n);printf( |-|n);printf(n);printf( 请输入您的选择: ); scanf(%d,&choice);switch(choice) case 1:add(recode);break;case 2:revamp(recode);break;case 3:omit(recode);break;case 4:demand(rec

5、ode);break;case 5:show(recode);break;case 0:break;default:printf(n);printf( 您的选择有误!n);printf(n);break;while(choice!=0&choice<6);printf(n);printf( 谢谢使用!n);printf(n);return 0;/*添加通讯录函数*/void add(struct tongxunlu recode) int n,count=0,t,i,m; /*变量n作为是否保存判断,t判断是否继续添加,i循环判断,m记还可添加数目*/FILE *fp;struct ton

6、gxunlu s,p; /*定义新结构s保存新输入信息,新结构p保存原来已经保存在文件的信息*/if(fp=fopen(f:project.txt,a+)=NULL)printf(File open error!);exit(0);while(!feof(fp) /*计算文件中已有记录数count*/fscanf(fp,%s%s%s%s%s%sn,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation);/*将数据保存在新结构变量中*/count+;printf( |*开始添加*|n);printf( |*注意:地址不

7、要超过十个字*| n);for(i=0;i<200;i+)printf( 姓名:);scanf(%s,&s.name);printf( 电话号码:);scanf(%s,&s.phonenumber);printf( 住址:);scanf(%s,&s.address);printf( 生日:);scanf(%s,&s.birthday);printf( 邮箱:);scanf(%s,&s.mail);printf( 关系:);scanf(%s,&s.relation); printf( 保存记录请按1,否则按其他数字!n);printf( 输入您的选择:);scanf(%d,&n);if(n=

8、1)fprintf(fp,%-7s%-12s%-22s%-10s%-20s%-3sn,s.name,s.phonenumber,s.address,s.birthday,s.mail,s.relation);printf( 保存成功!n);count+;system(pause);system(cls);else if(n!=1)system(cls);break;if(count<=200)system(cls); /*一次记录保存后清屏*/m=200-count;printf( 您已经输入了%d个记录,还可以输入%d个!n,count,m);elseprintf( 您的通讯录已满!n)

9、;system(cls);printf( 按0退出添加,按其他数字继续添加!n);scanf(%d,&t);if(t=0)system(cls);break;if(fclose(fp)printf(can not cloce the file!);exit(0);/*查询通讯录函数*/void demand(struct tongxunlu recode)struct tongxunlu s,p; /*定义两个新结构变量,s用来保存要查询的某个项目,p用来保存查询到需输出结构各项目*/int flag,a,l; /*flag作为判断查询开始,a为判断查询方式,l为判断是否退出查询*/FILE

10、*fp;if(fp=fopen(f:project.txt,r+)=NULL)printf(File open error!);exit(0);printf( 按0选择姓名查询,按1选择号码查询!n);printf( 输入您的选择:);scanf(%d,&a);if(a=0) /*用姓名查询*/printf( 输入要查询的姓名:);scanf(%s,&s.name);while(!feof(fp)fscanf(fp,%s%s%s%s%s%s,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation);/*将数据保存在新结

11、构变量中*/if(strcmp(s.name,p.name)=0)flag=1;break;if(flag=1)printf(|-|n);printf(| 姓名 号码 地址 生日 邮箱 关系 |n);printf(|-|n);printf(| %-7s%-12s%-22s%-10s%-20s%-3s |n,p.name,p.phonenumber,p.address,p.birthday,p.mail,p.relation);/*输出新结构中项目*/printf(|-|n);printf( 按0退出查询!n);scanf(%d,&l);if(l=0)system(cls);elseprintf

12、( 您的通讯录中没有此记录!n);printf( 按0退出查询!n);scanf(%d,&l);if(l=0)system(cls);else if(a=1) /*用号码查询*/printf( 输入要查询的号码:);scanf(%s,&s.phonenumber);while(!feof(fp)fscanf(fp,%s%s%s%s%s%s,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation);/*将数据保存在新结构变量中*/if(strcmp(s.phonenumber,p.phonenumber)=0)flag=

13、1;break;if(flag=1)printf(|-|n);printf(| 姓名 号码 地址 生日 邮箱 关系 |n);printf(|-|n);printf(| %-7s%-12s%-22s%-10s%-20s%-3s |n,p.name,p.phonenumber,p.address,p.birthday,p.mail,p.relation);/*输出新结构中项目*/printf(|-|n);printf( 按0退出查询!n);scanf(%d,&l);if(l=0)system(cls);elseprintf( 您的通讯录中没有此记录!n);printf( 按0退出查询!n);sca

14、nf(%d,&l);if(l=0)system(cls);if(fclose(fp)printf(can not cloce the file!);exit(0);/*显示通讯录函数*/void show(struct tongxunlu recode)struct tongxunlu p; /*定义新结构变量保存要显示的信息*/int l,i,j,n=0,m;FILE *fp;if(fp=fopen(f:project.txt,r+)=NULL)printf(File open error!);exit(0);for(j=0;j<200;j+)if(feof(fp)break;fscan

15、f(fp,%s%s%s%s%s%s,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation); /*将数据保存在新结构变量中*/n+;if(n=1)printf( #n);printf( # 您还没有添加任何联系人! #n);printf( #n);elsem=ftell(fp); /*用while)直接循环会是最后一条信息显示两次,此处解决此问题*/fseek(fp,-m,1); /*将文件指针移向开头*/printf( #n);printf( # 您总共有以下%d个联系人! #n,n-1);printf( #n);

16、printf(|-|n);printf(| *通讯录* |n);printf(|-|n);printf(| 姓名 号码 地址 生日 邮箱 关系 |n);printf(|-|n);for(j=0;j<n-1;j+)fscanf(fp,%s%s%s%s%s%s,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation);printf(| %-7s%-12s%-22s%-10s%-20s%-3s |n,p.name,p.phonenumber,p.address,p.birthday,p.mail,p.relation);

17、/*输出新结构中项目*/printf(|-|n);printf( 按0退出查看!n);scanf(%d,&l);if(l=0)system(cls);if(fclose(fp)printf(can not cloce the file!);exit(0);/*修改通讯录函数*/void revamp(struct tongxunlu recode)FILE *fp,*fpz;struct tongxunlu s,p,m,z; /*定义两个新结构变量,s用来保存要查询的某个项目,p用来保存查询到需输出结构各项目*/int flag,a,l,choice,n,d=0,i,x=0; /*flag作为

18、判断查询开始,a为判断查询方式,l为判断是否退出查询,choice作为判断删除项目,d记录原有文件数,i循环判断*/ if(fp=fopen(f:project.txt,a+)=NULL)printf(File open error!);exit(0);if(fpz=fopen(f:recode.txt,w+)=NULL)printf(File open error!);exit(0);printf( 按0选择姓名查询修改,按1选择号码查询修改!n);printf( 输入您的选择:);scanf(%d,&a);if(a=0) /*用姓名查询修改*/printf( 输入要修改记录的姓名:);sc

19、anf(%s,&s.name);while(!feof(fp)fscanf(fp,%s%s%s%s%s%s,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation);/*将数据保存在新结构变量中*/x+;fseek(fp,0L,0); /*将文件指针定向开头*/for(i=0;i<x-1;i+)fscanf(fp,%s%s%s%s%s%s,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation);/*将数据保存在新结构变量中*/n=ftel

20、l(fp);if(strcmp(s.name,p.name)!=0)fprintf(fpz,%-7s%-12s%-22s%-10s%-20s%-3sn,p.name,p.phonenumber,p.address,p.birthday,p.mail,p.relation);if(strcmp(s.name,p.name)=0)flag=1;break;if(flag=1)printf(|-|n);printf(| %-7s%-12s%-22s%-10s%-20s%-3s |n,p.name,p.phonenumber,p.address,p.birthday,p.mail,p.relation

21、);/*输出新结构中项目*/printf(|-|n);m=p;fseek(fp,n,0);while(!feof(fp)fscanf(fp,%s%s%s%s%s%s,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation);d+; fseek(fp,n,0); /*用while)直接循环会是最后一条信息保存两次,此处解决此问题*/for(i=0;i<d-1;i+)fscanf(fp,%s%s%s%s%s%s,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,

22、&p.relation);fprintf(fpz,%-7s%-12s%-22s%-10s%-20s%-3sn,p.name,p.phonenumber,p.address,p.birthday,p.mail,p.relation);printf( 是否要修改这条记录?n);printf( 确认请按1,退出请按0!n);printf( 输入您的选择:);scanf(%d,&l);system(cls);if(l=1)printf(|-|n);printf(| 修改项目 |n);printf(|-|n);printf(| choice1:修改姓名 |n);printf(| choice2:修改号码

23、 |n);printf(| choice3:修改地址 |n);printf(| choice4:修改生日 |n);printf(| choice5:修改邮箱 |n);printf(| choice6:修改关系 |n);printf(|-|n);printf(输入您的选择:);scanf(%d,&choice);switch(choice)case 1:printf(%s ,m.name);printf(改成:);scanf(%s,&m.name);printf(|-|n);printf(| %-7s%-12s%-22s%-10s%-20s%-3s |n,m.name,m.phonenumber

24、,m.address,m.birthday,m.mail,m.relation);printf(|-|n);fprintf(fpz,%-7s%-12s%-22s%-10s%-20s%-3sn,m.name,m.phonenumber,m.address,m.birthday,m.mail,m.relation);printf( 修改成功!n);system(pause);system(cls);break;case 2:printf(%s ,m.phonenumber);printf(改成:);scanf(%s,&m.phonenumber);printf(|-|n);printf(| %-7

25、s%-12s%-22s%-10s%-20s%-3s |n,m.name,m.phonenumber,m.address,m.birthday,m.mail,m.relation);printf(|-|n);fprintf(fpz,%-7s%-12s%-22s%-10s%-20s%-3sn,m.name,m.phonenumber,m.address,m.birthday,m.mail,m.relation);printf( 修改成功!n);system(pause);system(cls);break;case 3:printf(%s ,m.address);printf(改成:);scanf

26、(%s,&m.address);printf(|-|n);printf(| %-7s%-12s%-22s%-10s%-20s%-3s |n,m.name,m.phonenumber,m.address,m.birthday,m.mail,m.relation);printf(|-|n);fprintf(fpz,%-7s%-12s%-22s%-10s%-20s%-3sn,m.name,m.phonenumber,m.address,m.birthday,m.mail,m.relation);printf( 修改成功!n);system(pause);system(cls);break;case

27、4:printf(%s ,m.birthday);printf(改成:);scanf(%s,&m.birthday);printf(|-|n);printf(| %-7s%-12s%-22s%-10s%-20s%-3s |n,m.name,m.phonenumber,m.address,m.birthday,m.mail,m.relation);printf(|-|n);fprintf(fpz,%-7s%-12s%-22s%-10s%-20s%-3sn,m.name,m.phonenumber,m.address,m.birthday,m.mail,m.relation);printf( 修改

28、成功!n);system(pause);system(cls);break;case 5:printf(%s ,m.mail);printf(改成:);scanf(%s,&m.mail);printf(|-|n);printf(| %-7s%-12s%-22s%-10s%-20s%-3s |n,m.name,m.phonenumber,m.address,m.birthday,m.mail,m.relation);printf(|-|n);fprintf(fpz,%-7s%-12s%-22s%-10s%-20s%-3sn,m.name,m.phonenumber,m.address,m.bir

29、thday,m.mail,m.relation);printf( 修改成功!n);system(pause);system(cls);break;case 6:printf(%s ,m.relation);printf(改成:);scanf(%s,&m.relation);printf(|-|n);printf(| %-7s%-12s%-22s%-10s%-20s%-3s |n,m.name,m.phonenumber,m.address,m.birthday,m.mail,m.relation);printf(|-|n);fprintf(fpz,%-7s%-12s%-22s%-10s%-20

30、s%-3sn,m.name,m.phonenumber,m.address,m.birthday,m.mail,m.relation);printf( 修改成功!n);system(pause);system(cls);break;default:break;else if(l=0)system(cls);elseprintf( 您的通讯录中没有此记录!n);printf( 按0退出修改!n);scanf(%d,&l);if(l=0)system(cls);else if(a=1) /*用号码查询修改*/printf( 输入要修改记录的号码:);scanf(%s,&s.phonenumber)

31、;while(!feof(fp)fscanf(fp,%s%s%s%s%s%s,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation);/*将数据保存在新结构变量中*/x+;fseek(fp,0L,0);for(i=0;i<x-1;i+)fscanf(fp,%s%s%s%s%s%s,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation);/*将数据保存在新结构变量中*/n=ftell(fp);if(strcmp(s.phonenumber

32、,p.phonenumber)!=0)fprintf(fpz,%-7s%-12s%-22s%-10s%-20s%-3sn,p.name,p.phonenumber,p.address,p.birthday,p.mail,p.relation);if(strcmp(s.phonenumber,p.phonenumber)=0)flag=1;break;if(flag=1)printf(|-|n);printf(| %-7s%-12s%-22s%-10s%-20s%-3s |n,p.name,p.phonenumber,p.address,p.birthday,p.mail,p.relation)

33、;/*输出新结构中项目*/printf(|-|n);m=p;fseek(fp,n,0);while(!feof(fp)fscanf(fp,%s%s%s%s%s%s,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation);d+; fseek(fp,n,0); /*用while)直接循环会是最后一条信息保存两次,此处解决此问题*/for(i=0;i<d-1;i+)fscanf(fp,%s%s%s%s%s%s,&p.name,&p.phonenumber,&p.address,&p.birthday,&p.mail,&p.relation);fprintf(fpz,%-7s%-12s%-22s%-10s%-20s%-3sn,p.name,p.phonenumber,p.address,p.birthday

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号