20xx年个人通讯录管理系统c语言课程设计报告内容摘要:

)。 /*全部 删除 */ void shanchu_dange()。 /*单个删除 */ void xianshi()。 /*号码显示 */ zhucaidan()主菜单函数 其源代码如下: void zhucaidan() { char c。 system(cls)。 printf(\n\t\t| 欢迎您使用通讯录管理系统 版 |)。 printf(\n\t\t| 1添加联系人 2查询和显示联系人 |)。 printf(\n\t\t| 3删除联系人 4修改联系人 |)。 printf(\n\t\t| 5保存退出 0不保存退出 |)。 printf(\n\t\t||)。 printf(\n\t\t 请选择您所所要的服务: )。 c=getch()。 switch (c) /*对 于上边的选择项目 */ { case 39。 139。 :zengjia()。 break。 case 39。 239。 :chazhao()。 break。 case 39。 339。 :shanchu()。 break。 case 39。 439。 :xiugai()。 break。 case 39。 539。 :writefile()。 break。 case 39。 039。 :exit(0)。 default:zhucaidan()。 /*如果没有则返回主菜单等待输入 */ } } 较难语句分析: ① system(cls)。 清除输入在屏幕上的数据; DJHFKDFK DKFJ KDJFKDJKFJ KDJFK JFKD FKDJGK JKLFJG LJSKLGJ FKLJG。 SJKLGJ。 LDSJ ② c=getch()。 将键盘上输入的数据赋予 c; ③ switch (c) case : 实现对主菜单上的选项的控制; main()主函数 main()函数的源代码见下: void main() /*主函数 main*/ { readfile()。 /*读入文件 */ while(1) /* 循环(永远进行) */ { zhucaiidan()。 /*调用主菜单函数 */ } } main()函数功能分析: main()函数通过调用 readfile()函数和循环 menu()函数实现对入文件和界面进行控制。 readfile()读取 文件函数 其源代码如下: void readfile() { if((fp=fopen(c:\\通讯录 .txt,r))==NULL) /*以只读方式打开判定文件是否为空 */ { printf(\n\t\t\t 通讯录文件不存在 )。 /*判断结论 */ if ((fp=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 文件导入成功 )。 DJHFKDFK DKFJ KDJFKDJKFJ KDJFK JFKD FKDJGK JKLFJG LJSKLGJ FKLJG。 SJKLGJ。 LDSJ 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 通讯录文件已保存 )。 DJHFKDFK DKFJ KDJFKDJKFJ KDJFK JFKD FKDJGK JKLFJG LJSKLGJ FKLJG。 SJKLGJ。 LDSJ 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() { DJHFKDFK DKFJ KDJFKDJKFJ KDJFK JFKD FKDJGK JKLFJG LJSKLGJ FKLJG。 SJKLGJ。 LDSJ 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|。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。