c课程设计报告电话簿管理系统内容摘要:

38. if( !=1amp。 amp。 !=2amp。 amp。 !=3) 39. { 40. cout\t 输入错误 ,重选 13:flush。 41. gets(choose)。 42. } 43. else break。 44. } 然后有一个 switch 语句,用来根据用户的选择,调用相应的函数,接着有一个用来检查匹配字符串的语句 45. while(p!=NULL) 46. { 47. do{ 48. if((==1amp。 amp。 strcmp(input,p)==0)||(==2amp。 amp。 strcmp(input,p)==0)) 49. 50. { 第 11页 /共 22页 《 C++程序设计》课程设计 :电话簿管理系统 51. cout\t 找到信息如下 :endl。 52. cout\t 名字 \t 号码 \t 关系 \t 单位 \n。 53. cout39。 \t39。 p39。 \t39。 p39。 \t39。 p39。 \t39。 p39。 \n39。 54. p=pnext。 55. } 56. else 57. { 58. p=pnext。 59. } 60. 61. 62. }while(p!=NULL)。 若没有找到相应的记录,则显示没有找到相应记录,同时返回。 体会: 灵活运用 if 语句可以简化函数代码 ,如本程序中的if((==1amp。 amp。 strcmp(input,p)==0)||(==2amp。 amp。 strcmp(input,p)==0)),将所有的判断条件写在一个语句中,大大简化了代码。 另外就是要注意循环语句的循环条件,以及其开始和结束的地方,这是一个难点,往后还要多加注意。 控制 函数 功能 : 主要用来显示程序的主界面 算法思想 : 这是一个很简单的函数,基本上就是一个 switch 语句就可以了,根据用户输入的数字调用相应的函数。 主要步骤 : 进入函数,使用一个 for( ;;)的无限次循环,在该循环中使用一个 switch(menu())语句,其中 menu()是显示菜单函数,其返回值是用户输入的选择功能的相对应的数字,下面是个数字对应的功能: 第 12页 /共 22页 《 C++程序设计》课程设计 :电话簿管理系统 输入记录 显示所有记录 查找记录 删除记录 修改记录 保存文件 读入文件 退出 其调用语句及相应函数如下函数 63. case 0:top=set(top); break。 /*输入记录 */ 64. case 1:show(top)。 break。 /*显示全部记录 */ 65. case 2:search(top)。 break。 /*查找记录 */ 66. case 3:top=cancel(top)。 break。 /*删除记录 */ 67. case 4:modify(top)。 break。 /*修改纪录 */ 68. case 5:save(top)。 break。 /*保存文件 */ 69. case 6:top=load(top)。 break。 /*读文件 */ 70. case 7:exit(0)。 break。 该函数会根据用户输入的数字或字符调用相应的函数。 该函数设立了一个字符数组用来接收用户输入的字符,目的是可以将用户输入的非数字字符转换成相应的数字,当然,如果用户输入的数字不在1~7 之间则会显示“输入的数字不正确,请您输入正确的数字”,用户这时可以再次输入。 体会: 唯一的感觉就是 switch 语句是一个很好用的语句啊,而且是一个很有用的语句,几乎在所有的需要用到菜单的程序中都会使用到,并且配合 for 循环语句,就是很好的控制菜单函数。 第 13页 /共 22页 《 C++程序设计》课程设计 :电话簿管理系统 5. 读取函数 : 功能: 主要用来将硬盘中的文件记 录读取到内存中,并生成链表以供函数操作。 算 法 思 想 : 首 先 建 立 一 个 输 入 流 类 in , 使 用(,ios::in|ios::nocreate)。 打开文件,并使用 if 语句判断是否正常打开文件。 如果不能正常 打开文件 ,则显示文件不存在。 正常打开文件 后,首先将记录个数读入并赋给 topcount,然后建立类 record 的两个指针 *p 和 *old,并且现将 top 的头结点赋给 p,使用一个 for 语句读入 topcount 条记录。 For 语句中主要有以下方法,将读入的记录存入节点 p,然后在使用 ASK( pnext)为 p分配新的内存,并将 p 赋给 old,然后 p=pnext 使 P 指向下一结点,如此循环。 直到读完文件中的记录,实施代码如下: 71. ifstream in。 72. (,ios::in|ios::nocreate)。 73. if(!in) 74. { 75. cout\t 文件不存在。 请输入数据建立新文件 endl。 76. return top。 77. } 78. cout\n\t 取文件„ endl。 79. 80. intopcount。 81. ()。 82. record *p=top。 83. record *old。 84. for(int i=0。 itopcount。 i++) 85. { 86. in*p。 87. ASK(pnext)。 88. old=p。 89. p=pnext。 第 14页 /共 22页 《 C++程序设计》课程设计 :电话簿管理系统 90. ()。 91. } 最后使 old=NULL;结束链表;然后关闭文件,显示读入的记录数,最后返回 top 体会: 其实在最初我是选用的数组来存储文件记录,但是后来发现一个问题,那就是用数组存储的记录,在读取记录到内存中的时候不能够对这些记录进行按 条操作,当然这也可能是我没找到好的方法,但不管怎么样我都觉得很麻烦,想了很多办法都没能实现,最后只好下决心改用链表动态存储文件记录,这样终于实现了文件的读取功能,并且能够对读取的记录进行任何操作。 由此可见动态存储的优越性啊。 再有就是以后写程序的时候一定要事先各方面都考虑到,不要到了最后才发现程序设计的不合理以至于要从头来过,这样就很耽误时间。 三。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。