通信录管理计划系统C语言知识程序设计.doc

上传人:一*** 文档编号:2498889 上传时间:2020-04-13 格式:DOC 页数:46 大小:844.50KB
返回 下载 相关 举报
通信录管理计划系统C语言知识程序设计.doc_第1页
第1页 / 共46页
通信录管理计划系统C语言知识程序设计.doc_第2页
第2页 / 共46页
点击查看更多>>
资源描述

《通信录管理计划系统C语言知识程序设计.doc》由会员分享,可在线阅读,更多相关《通信录管理计划系统C语言知识程序设计.doc(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、#+C语言程序设计通讯录管理系统实习报告组长: 姚士平 B10050927组员: 胡恒山 B10050926芮青荣 B10050925 南京邮电大学电气信息工程B100509班2011年9月14日实习前论:实习的目的、要求与内容一、实习的目的和要求 经过了一个学期对C语言的学习,大家对C语言有了一定的认识。在此基础上,为了加深对C语言课程所学知识的理解,进一步巩固C语言算法规则,学会编制结构清晰、风格良好、数据结构适当的C程序,从而具备解决综合性问题的能力,特设此课程实习内容,通过完成一项具体的程序来检验对所学知识的掌握情况。要求能够完成一项完整并且具有初步实用性,经编写调试,确保能够正常运行

2、的小型程序。二、实习所涉及的内容实习内容所涉及的均为C语言的基础知识,包括:数据类型(整型、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数定义与调用)等,以及进一步掌握各种函数的应用以及文件的读写操作等。实习细述:通讯录管理系统一、程序功能: 1、完成通讯录信息的管理,包括添加、修改、删除、查询功能。尽量丰富联系人的各项信息。 2、能够根据联系人的信息单独或分类查询。 3、联系人的生日提醒功能。二、设计思路所有成员的记录用结构体数组存储,每个结构体包括姓名、性别、生日、电话

3、号码、电子邮箱、家庭住址及分类七个字符型数组;上述的各项功能由定义函数分别实现,由主函数控制各个函数的调用;整个程序产生于文本界面,通过一些字符简单对界面进行装饰。具体的各个函数设计思路如下:1、导入通讯录函数:通过fopen函数打开指定文件,并用fread函数将文件内的数据读入结构体数组中,这两个标准库函数都定义在stdio.h头文件中。整个函数的返回值为整型i,用来并表示导入的数据成员个数,而后将该值赋给全局变量count用来计数。2、保存文件函数:通过将文件名字符串作为参数传入,用fwrite函数将当前结构体数组中的全部数据写入文件中并关闭文件。该函数无返回值。3、分类显示成员信息函数:

4、无参数传入,无返回值,用户根据提示输入指令,用switch语句分析指令并遍历所有结构体数据,将符合的数据输出。该函数也没有返回值。4、录入新成员信息函数:该函数没有参数,通过提示用户输入数据;当输入的姓名或电话号码重复时,提示用户重复并重新输入;被录入一个完整的新数据后让全局变量n自增,并将其作为函数的返回值返回。5、查找记录函数:将用户要找的成员姓名作为参数传入,遍历所有结构体并找出符合的输出,若输出成功则可以继续查找,用户所输姓名不存在则输出用户名不存在。6、删除记录函数:将用户要删除的成员姓名作为参数传入,遍历所有结构体并找出符合的删除,并将后面的所有数据向前移动一个位置,返回值同查找记

5、录函数。7、修改记录函数:将用户要修改的成员姓名作为参数传入,遍历所有结构体并找出符合的,依次提示修改项目,由用户输新数据并保存,返回值同查找记录函数。8、拨号功能函数:无参数传入,显示已存入的所有成员的姓名,由用户选择拨打电话的姓名,依次显示电话号码的各个数字,并用Sleep函数设置一定时间的延时以表现号码依次输出的效果,该函数包含在windows.h头文件中。成功拨号则返回整数1,输入了错误的姓名则返回0。9、主函数:用switch语句来判断用户输入的指令,转向具体的函数来执行,并根据函数的返回值判断执行结果并予以提示。主函数中用exit(0);语句结束程序,并在结束前提示用户保存数据。整

6、个程序由上述9个函数组成。此外,源程序将结构体数组和计数变量count以及文件指针fp设为全局变量,目的是为了让所有函数都能正常使用这几个变量,保证整个程序的正常运行。三、程序源代码及注释#include#include#include#include#define count 20typedef struct Birthdayint day;int month;int year;Birthday;typedef struct Studentchar name10;char sex5;Birthday date;char phone10;char email10;char address10;

7、char others10;stud;FILE *fp;FILE *fp2;FILE *fp3;int n=0;int i=0;int q=0;stud scount;void WRITE();void write();void READ();void read();void display(stud s);void Addinfo();void Changeinfo();void Delinfo();void Consult();void menu();void Remind();void main()Remind();menu();void menu()int choice;int sig

8、n=0;doprintf(n #欢迎使用# n);printf(n 1 添加信息修改信息删除信息查询信息退出系统);printf(nn请输入您的选择15:n);scanf(%d,&choice);switch(choice)case 1:Addinfo();sign=1;break;case 2:Changeinfo();sign=1;break;case 3:Delinfo();sign=1;break;case 4:Consult();sign=1;break;case 5:sign=0;default:printf(n请重新选择!);while(sign);system(cls);pri

9、ntf(nnnnnn );printf(nn 感谢你使用通信录管理系统!nnn );printf( nn );getchar();getchar();void WRITE() FILE *fp2;if(fp2=fopen(count.txt,w)=NULL)printf(无法创建文件!n);getchar();return; fprintf(fp2,%d,n);fclose(fp2); void write() FILE *fp3;if(fp3=fopen(delete.txt,w)=NULL)printf(无法创建文件!n);getchar();return; fprintf(fp3,%d,

10、q);fclose(fp3);void read()FILE *fp3;if(fp3=fopen(delete.txt,rb)=NULL)printf(无法打开文件!nn);getchar();return;fscanf(fp3,%d,&q);fclose(fp3);void READ()if(fp2=fopen(count.txt,rb)=NULL)printf(无法打开文件!nn);getchar();return;fscanf(fp2,%d,&n);fclose(fp2);void display(stud s)printf( $通信录信息$);printf(n姓名:%s,s.name)

11、;printf(n性别:%s,s.sex);printf(n生日:%d %d %d,s.date.year,s.date.month,s.date.day);printf(n电话:%s,s.phone);printf(n邮箱地址:%s,s.email);printf(n住址:%s,s.address);printf(n备注:%s,s.others);void Addinfo()char c;READ();read();printf(您已有联系人:);fscanf(fp2,%d,&n);fprintf(stdout,%d,n);printf(n);if(!fp2)printf(打开文件时出错!)

12、;exit(1);printf(n 欢迎使用通信录管理系统!);dofp=fopen(stud.dat,ab+);getchar();printf(n请输入姓名:);gets(si.name);printf(n请输入性别(male/fmale):);gets(si.sex);printf(n请输入生日(年/月/日):);scanf(%d%d%d,&si.date.year,&si.date.month,&si.date.day);getchar();printf(n请输入电话:);gets(si.phone);printf(n请输入邮箱地址:);gets(si.email );printf(n

13、请输入居住地:);gets(si.address);printf(n请输入备注(friend/common):);gets(si.others);fwrite(&si,sizeof(si),1,fp);fclose(fp);n+;i+;printf(n是否继续新建(YorN)?n);scanf(%c,&c);while(c=Y|c=y); WRITE();printf(n添加成功!n);system(cls);void Changeinfo()int h=0,j=1,t,choice,sign=0;FILE *fp;char num20;char name20;printf(t1、按号码查找n

14、);printf(t2、按姓名查找n);printf(请选择.n);scanf(%d,&t);switch(t)case 1:while(j=1)READ();fp=fopen(stud.dat,rb+);printf(请输入想查找的电话号码:n);scanf(%s,num);for(h=0;hn;h+)fread(&sh,sizeof(sh),1,fp);if(!strcmp(num,sh.phone) printf(n您想修改的内容:1.姓名 2.号码 3.生日 4.居住地 5.邮箱地址 6.备注n);scanf(%d,&choice);switch(choice)case 1:sign=

15、1;printf(请输入修改后的姓名:n);getchar();gets(sh.name);fseek(fp,-sizeof(sh),1);fwrite(&sh,sizeof(sh),1,fp);fclose(fp);break;case 2:sign=1;printf(请输入修改后的号码:n);getchar();gets(sh.phone);fseek(fp,-sizeof(sh),1);fwrite(&sh,sizeof(sh),1,fp);fclose(fp);break;case 3:printf(请输入修改后的生日:n);sign=1;getchar();scanf(%d%d%d,

16、&sh.date.year,&sh.date.month,&sh.date.day);fseek(fp,-sizeof(sh),1);fwrite(&sh,sizeof(sh),1,fp);fclose(fp);break;case 4:printf(请输入修改后的居住地:n);sign=1;getchar();gets(sh.address);fseek(fp,-sizeof(sh),1);fwrite(&sh,sizeof(sh),1,fp);fclose(fp);break;case 5:printf(请输入修改后的邮箱:n);sign=1;getchar();gets(sh.email

17、);fseek(fp,-sizeof(sh),1);fwrite(&sh,sizeof(sh),1,fp);fclose(fp);break;case 6:printf(请输入修改后的备注:n);sign=1;getchar();gets(sh.others);fseek(fp,-sizeof(sh),1);fwrite(&sh,sizeof(sh),1,fp);fclose(fp);break;printf(n *修改后的通讯录*n);display(sh);j=0;break;fclose(fp);if(strcmp(num,sh.phone)&sign=0)printf(n你输入的号码有

18、误!n请重新输入n);j=1;case 2:while(j=1)READ();printf(请输入想查找的姓名:n);scanf(%s,name);fp=fopen(stud.dat,rb+);for(h=0;hn;h+)fread(&sh,sizeof(sh),1,fp);if(!strcmp(name,sh.name) printf(n您想修改的内容:1.姓名 2.号码 3.生日 4.居住地 5.邮箱地址 6.备注n);scanf(%d,&choice);switch(choice)case 1:sign=1;printf(请输入修改后的姓名:n);getchar();gets(sh.na

19、me);fseek(fp,-sizeof(sh),1);fwrite(&sh,sizeof(sh),1,fp);fclose(fp);break;case 2:sign=1;printf(请输入修改后的号码:n);getchar();gets(sh.phone);fseek(fp,-sizeof(sh),1);fwrite(&sh,sizeof(sh),1,fp);fclose(fp);break;case 3:printf(请输入修改后的生日:n);sign=1;getchar();scanf(%d%d%d,&sh.date.year,&sh.date.month,&sh.date.day)

20、;fseek(fp,-sizeof(sh),1);fwrite(&sh,sizeof(sh),1,fp);fclose(fp);break;case 4:printf(请输入修改后的居住地:n);sign=1;getchar();gets(sh.address);fseek(fp,-sizeof(sh),1);fwrite(&sh,sizeof(sh),1,fp);fclose(fp);break;case 5:printf(请输入修改后的邮箱:n);sign=1;getchar();gets(sh.email);fseek(fp,-sizeof(sh),1);fwrite(&sh,sizeo

21、f(sh),1,fp);fclose(fp);break;case 6:printf(请输入修改后的备注:n);sign=1;getchar();gets(sh.others);fseek(fp,-sizeof(sh),1);fwrite(&sh,sizeof(sh),1,fp);fclose(fp);break;printf( *修改后的通讯录*n);display(sh);j=0;break;if(strcmp(name,sh.name)&sign=0)printf(你输入的姓名有误!n请重新输入n);j=1;h=0;fclose(fp); menu();void Delinfo()int

22、 j=1,h=0,k,sign=0;char name20;READ();read();FILE *fp;fp=fopen(stud.dat,rb+);printf(请输入想删除的姓名:n);while(j=1)FILE *fp;scanf(%s,name);fp=fopen(stud.dat,rb+);while(!feof(fp)fread(&sh,sizeof(sh),1,fp);if(!strcmp(name,sh.name ) for(k=h;kn;k+)fseek(fp,-sizeof(sh),1);fwrite(&sh+1,sizeof(sh),1,fp);n-;WRITE();

23、q+;write();j=0;sign=1;break;if(strcmp(name,sh.name)&sign=0)printf(你输入的姓名有误!n请重新输入n);j=1;h=0;fclose(fp); printf(删除成功!);void Consult()int num,j=1,h=0,con=1,sign=0;char ch;char name20;char address20;char sex2;char phonecall20;FILE *fp;READ();if(n=0)printf(n您目前还没有联系人!n);menu();return;fp=fopen(stud.dat,r

24、b);doj=1;sign=0;printf(t1、按号码查找n);printf(t2、按姓名查找n);printf(t3、按地址查找n);printf(t4、按性别查找n);printf(请选择.n);scanf(%d,&num);switch(num)case 1:while(j=1)fp=fopen(stud.dat,rb);printf(请输入想查找的电话号码:n);scanf(%s,phonecall);for(;hn;h+)fread(&sh,sizeof(sh),1,fp);if(!strcmp(phonecall,sh.phone) display(sh); j=0;sign=

25、1;h=0;if(strcmp(phonecall,sh.phone)&sign=0)printf(n你输入的号码有误!n请重新输入n);j=1;h=0;fclose(fp);printf(n您想继续查找吗?(Y OR N)n);getchar();scanf(%c,&ch);if(ch=Y|ch=y)con=1;elsecon=0;break;case 2:while(j=1)fp=fopen(stud.dat,rb);printf(请输入想查找的姓名:n);scanf(%s,name);for(;hn;h+)fread(&sh,sizeof(sh),1,fp);if(!strcmp(nam

26、e,sh.name) display(sh); j=0;sign=1;h=0;break;if(strcmp(name,sh.name)&sign=0)printf(n你输入的姓名有误!n请重新输入n);j=1;h=0;fclose(fp);printf(n您想继续查找吗?(Y OR N)n );getchar();scanf(%c,&ch);if(ch=Y|ch=y)con=1;elsecon=0;break;case 3:while(j=1)printf(请输入想查找的地址:n);scanf(%s,address);fp=fopen(stud.dat,rb);for(;hn;h+)frea

27、d(&sh,sizeof(sh),1,fp);if(!strcmp(address,sh.address) display(sh); sign=1;j=0;break;if(strcmp(address,sh.address)&sign=0)printf(n你输入的地址有误!n请重新输入n);j=1;h=0;fclose(fp);printf(n 您想继续查找吗?(Y OR N)n );getchar();scanf(%c,&ch);if(ch=Y|ch=y)con=1;elsecon=0;break;case 4:while(j=1)printf(请输入想查找的性别:n);scanf(%s,

28、sex);fp=fopen(stud.dat,rb);for(;htm_mon + 1;day = timeinfo-tm_mday;fp=fopen(stud.dat,rb);READ();for(h=0;hn;h+)fread(&sh,sizeof(sh),1,fp);if(month=sh.date.month&day=sh.date.day)printf(n 温馨提醒 n);printf(n今天是您好友 %s 的生日,祝 %s 生日快乐n,sh.name,sh.name);break;四、程序运行主界面:添加一个人的信息,界面如下:添加另一个人的信息,界面如下:实现查询功能之号码查询:实现查询功能之姓名查询:实现查询功能之地址查询:实现查询功能之性别查询:退出通讯录管理系统:重新打开主界面,实现生日提醒功能:实现修改功能之生日修改:修改后的个人信息:实现修改功能之姓名修改:实现修改功能之居住地修改:实现修改功能之号码修改:实现修改功能之邮箱修改:实现修改功能之备注修改:实现删除功能: 实习心得: 经过一个多星期的团结协作,终于把老师布置的任务完成。在这期间深深的感受到仅仅学习C语言书本知识是不够的,必须要实践来检验。我们在编程中一起发现问题,并一起通过上网查询,翻阅书籍,请教老师、同学等等方式最终解决了问题。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 施工组织

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁