c语言个人通讯录管理系统课程设计报告(编辑修改稿)内容摘要:

p=fopen(同通讯录 .txt,w))==NULL) /*只写方式判断 */ { printf(\n\t\t 建立失败 )。 /*为空结论 */ exit(0)。 /*退出 */ } else /*不为空则执行 else*/ { printf(\n\t欢迎使用通讯录管理系统 )。 printf(\n\t 通讯录文件已建立 )。 printf(\n\t 按任意键进入主菜单 )。 printf(\n\t)。 getch()。 return。 } exit(0)。 } fseek(fp,0,2)。 /*文件位置指针移动到文件末尾 */ if (ftell(fp)0) /*文件不为空 */ { rewind(fp)。 /*文件位置指针移动到文件开始位置 */ for (n=0。 !feof(fp) amp。 amp。 fread(amp。 txl[n],sizeof(struct tongxunlu),1,fp)。 n++)。 printf(\n\t欢迎使用通讯录管理系统 版 )。 printf(\n\t 文件导入成功 )。 XXXXX学院《 C语言程序设计》课程设计报告 10 printf(\n\t 按任意键返回主菜单 )。 printf(\n\t)。 getch()。 return。 } printf(\n\t欢迎使用通讯录管理系统 版 )。 printf(\n\t 文件导入成功 )。 printf(\n\t 通讯录文件中无任何纪录 )。 printf(\n\t 按任意键返回主菜单 )。 printf(\n\t)。 getch()。 return。 } 较难语句分析: ① if((fp=fopen(c:\\通讯录 .txt,r))==NULL) 以只读方式打开判定文件是否为空; ② fseek(fp,0,2)。 文件位置指针移动到文件末尾; ③ ftell(fp): 返回 当前文件 位置,也就是说返回 FILE 指针 当前位置 ; ④ rewind(fp)。 文件位置指针移动到文件开始位置; ⑤ feof(fp) 检测流上的文件结束符 ; ⑥ fread(amp。 txl[n],sizeof(struct tongxunlu),1,fp)。 n++) 从 fp指向的文件中向 txl [n]中 读 入一个( struct tongxunlu)类型的值并 输出后面的内容。 若没有成功执行就 不输出后面的内容。 void readfile()函数的功能分析: 首先由 if((fp=fopen(c:\\通讯录 .txt,r))==NULL) 判断文件是否存在,如果不存在,则显示通讯录文件不存在,如果文件为空,则显示建立失败;若建立成功,则显示通讯录文件已建立,然后利用 fseek(fp,0,2)。 将文件位置指针移动到文件末尾等待输入。 writefile()联系人写入文件函数 函数源程序见下: void writefile() /*联系人写入文件 */ { int i。 if ((fp=fopen(c:\\通讯录 .txt,w))==NULL) { printf(\n\t\t 文件打开失败 )。 } for (i=0。 in。 i++) { if (fwrite(amp。 txl[i],sizeof(struct tongxunlu),1,fp)!=1) { printf(\n\t\t 写入文件错误 !\n)。 } } fclose(fp)。 /*关闭文件 */ printf(\n\t)。 /*输出提示信息 */ printf(\n\t\t 通讯录文件已保存 )。 XXXXX学院《 C语言程序设计》课程设计报告 11 printf(\n\t\t 谢谢使用,欢迎再次使用 !\n)。 printf(如果对本软件有疑问 ,请到我们官网 ()提出您的问题 ,我们将为您解答 .\n)。 printf(我们的软件有不足之处 ,欢迎到官网 ()反映,我们将努力 改正 !)。 printf(\n\t\t 按任意键退出程序 \n\t\t)。 /*输出完毕 */ exit(0)。 printf(\n\t)。 } 较难语句分析: ① fp=fopen(c:\\通讯录 .txt,w)) 以只写的方式打开 c:\\ 文件赋予 fp; ② if (fwrite(amp。 txl[i],sizeof(struct tongxunlu),1,fp)!=1) 从 fp 指向的文件中向 txl [n]中 写 入一个( struct tongxunlu)类型的值并 输出后面的内容。 若没有成功执行就 不输出后面的内容。 ③ fclose(fp)。 关闭文件 writefile()联系人写入文件函数的功能分析: 将 c:\\通讯录 .txt 文件以只读方式打开付给 fp,如果为空则输出“文件打开失败”;若果成功则执行 if (fwrite(amp。 txl[i],sizeof(struct tongxunlu),1,fp)!=1) ,如果写入 ( struct tongxunlu) 成功则关闭文件,若果不成功 则输出“写入文件错误 !”。 zengjia()增加联系人函数 其源程序如下: void zengjia() { printf(\n\t\t 请输入联系人信息 \n)。 printf(\n\t\t 输入联系人姓名 :)。 scanf(%s,txl[n].xingming)。 /*键盘输入 */ printf(\n\t\t 输入联系人电话号码 :)。 scanf(%s,txl[n].dianhua)。 printf(\n\t\t 输入联系人地址 :)。 scanf(%s,txl[n].dizhi)。 n++。 /*统计个数 */ printf(\n\t\t 是否继续添加联系人 ?(Y/N):)。 /*是否继续输入联系人 .*/ if (getch()==39。 y39。 ) zengjia()。 return。 } 功能分析: 调用 zengjia()函数后,就可以通过 txl[n]. xingming, txl[n].dianhua , txl[n].dizhi 数组从键盘上输入联系人的姓名,电话,地址,输入完毕后,系统会提示是否继续输入,输入“ y”后,则再次调用 zengjia()。 函数,如此循环,直到不输入联系人为止。 shanchu()删除函数主界面 原函数代码: void shanchu() { XXXXX学院《 C语言程序设计》课程设计报告 12 char c。 if(n==0) /*如果通讯录中没有一个记录输出以下部分 */ { printf(\n\t\t 对不起,文件中无任何纪录 )。 printf(\n\t\t 按任意键返回主菜单 )。 getch()。 return。 } system(cls)。 /*清屏 */ printf(\n\t\t 删除菜单 )。 printf(\n\t\t| 1删除所有 2删除单个 |)。 printf(\n\t\t| 3返回主菜单 |)。 printf(\n\t\t|)。 printf(\n\t\t 请选择您所所要的服务: )。 c=getch()。 /*输入的赋予 choice*/ switch (c) { case 39。 139。 :shanchu_quanbu()。 break。 case 39。 239。 :shanchu_dange()。 break。 case 39。 339。 :zhucaidan()。 break。 default:zhucaidan()。 break。 } } 函数功能分析: 通过界面上的数字选项,调用 shanchu_quanbu()、 shanchu_dange()。 和 zhucaidan()函数来实现不同的删除功能。 xianshi()显示和查询函数 函数源程序: void chazhao() { char c。 system(cls)。 printf(\n\t\t 显示和查询联系人 )。 printf(\n\t\t| 1逐个显示所有 2按姓名查询 |)。 printf(\n\t\t| 3按电话查询 4返回主菜单 |)。 printf(\n\t\t|)。 printf(\n\t\t 请选择您所所要的服务: )。 c=getch()。 switch (c) { case 39。 139。 :xianshi()。 break。 /*显示所有号码 */ case 39。 239。 :chazhao_xingming()。 break。 /*调用按姓名查询函数 */ case 39。 339。 :chazhao_dianhua()。 break。 /*调用按号码查询函数 */ case 39。 439。 :zhucaidan()。 break。 /*主菜单 */ } } XXXXX学院《 C语言程序设计》课程设计报告 13 函数功能分析: 首先通过 getch()。 从键盘上输入选项,通过 switch case()来调用 xianshi()、chazhao_xingming()chazhao_dianhua()三个函数实现不同的功能。 xianshi()显示所有人函数 函数源程序: void xianshi()//显示所有联系人函数 { int i。 system(cls)。 //清楚屏幕 if(n!=0) { printf(\n\t\t欢迎您查询通讯录所有联系人信息 )。 for (i=0。 in。 i++) /*依次序显示 */ { printf(\n\t\t 姓名: %s,txl[i].xingming)。 printf(\n\t\t 电话: %s,txl[i].dianhua)。 printf(\n\t\t 地址: %s,txl[i].dizhi)。 printf(\n\t\t)。 if (i+1n)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。