C++通讯录管理课程设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

湖南涉外经济学院课程设计报告课程名称:面向对象程序设计课程设计报告题目:通讯录管理学生姓名:蒋行伍田方成刘倩所在学院:信息科学与工程学院专业班级:计应1301指导教师:2014年6月10日课程设计任务书报告题目C++语言程序设计课程设计—通讯录管理完成时间6.10学生姓名蒋行伍田刘倩方成专业班级计应1301指导教师职称总体设计要求和技术要点编写一个简单的通讯录管理程序。通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。程序应提供的基本管理功能有:1)添加:即增加一个人的记录到通信录中2)显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。3)存储:即将通讯录信息保存在一个文件中。4)装入:即将文件中的信息读入程序。5)查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。6)修改:可修改一个人的除姓名外其它信息。工作内容及时间进度安排设计第一周;分配每个人需要写的模块各自完成第二周;伍田,方成综合代码并改错第三周:蒋行,刘倩排版,写报告课程设计成果1.与设计内容对应的软件程序2.课程设计总结报告摘要在《面向对象程序设计》课程理论与实验教学的基础上,根据软件工程的方法与流程,在相对集中的实训教学时间内,通过一个功能较完整的小型应用系统,复习与深入掌握面向对象的程序设计思想与技术方法。同时,作为整个实践教学体系一部分,系统培养学生采用面向对象的方法分析问题与解决问题的能力及团体组织与协作能力。本课题要设计的是简单的通讯录管理程序。通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。程序提供了通信录的基本管理功能。包括添加、显示、存储、装入、查询和修改等功能。关键词:类;C++;通讯录;结构体目录一、概述…………………………………………………………………………1二、方案设计………………………………………………………………21.类设计……………………………………………………………………22.特殊设计……………………………………………………………………2三、系统整体设计及详细设计………………………………………………………21.整体设计……………………………………………………………22.详细设计……………………………………………………………3四、系统测试…………………………………………………………6五、结论与心得………………………………………………………………………8六、参考文献……………………………………………………………………10七、程序代码……………………………………………………………………111一、概述编写一个简单的通讯录管理程序。通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。程序应提供的以下基本管理功能有:1)添加:即增加一个人的记录到通信录中2)显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。3)存储:即将通讯录信息保存在一个文件中。4)装入:即将文件中的信息读入程序。5)查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。6)修改:可修改一个人的除姓名外其它信息。二、方案设计1.类设计程序可用一个单向链表来管理人员信息,每个人员的姓名,地址,电话号码和邮政编码用一个类来实现,作为链表的值指针指向这些类对象,通过链表的遍历可以操作这些数据。首先,本程序中设计如下的结构体存储通信录信息。该结构体重包括了姓名、地址、电话号码和邮政编码等。typedefstructTeleNode{charname[20];/*姓名*/charaddress[50];/*地址*/charphone[20];/*电话号码*/charcode[20];/*邮政编码*/structTeleNode*next;}TeleNode;基于该结构体,定义了如下通信录类。该类中包括了指向结构体的头指针head。函数InitTeleBook()的功能是初始化head;函数isNameExist的功能是判断名字是否已存在结构体中,如果存在则返回1,否则返回0;函数addTeleBook()的功能是添加通讯录信息;函数findByName()的功能是根据姓名查找某人的相关信息;函数printTeleBook()的功能是在屏幕上显示所有通信录中的人员信息,可以分屏显示;函数writeToFile()的功能是将通讯录信息保存在一个文件中;函数loadFromFile()的功能是将文件中的信息读入程序;函数updateTeleBook()的功能是修改一个人的除姓名外其它信息。2classTeleBook{private:TeleNode*head;public:TeleBook(){head=NULL;}voidInitTeleBook();intisNameExist(charname[20]);voidaddTeleBook();voidfindByName();voidprintTeleBook();voidwriteToFile();voidloadFromFile();voidupdateTeleBook();};2.特殊设计本程序为了加快数据定位查找的速度,采用常用优先的方法对链表的各个节点进行排序,即一旦操作了一个人员的数据,他的数据就将被调用到链表的链首。这样经过有限次操作,经常查阅的人员的信息就将排在链表的前端。虽然不能说链首的节点一定是最常用的,但常用的节点一定会排在较靠前的部分,链表查找时所要走的平均距离一定较短。对于人员重名的情况,本程序会检测到将要添加的人名是否重复,并将提示用户重新输入新的人名。三、系统整体框架及详细设计1.总体框架系统的整体框架如图1所示。开始主菜单显示存储查询装入修改添加退出图1系统总体框架32.详细设计添加通讯录信息的代码如下所示,主要通cin及cout完成数据的输入及提示。TeleNode*tmp;tmp=(TeleNode*)new(TeleNode);tmp-next=NULL;cout请输入姓名:;cintmp-name;while(isNameExist(tmp-name)){cout该用户名已存在,请输入别的名称以区分:;cintmp-name;}cout请输入地址:;cintmp-address;cout请输入电话号码:;cintmp-phone;cout请输入邮政编码:;cintmp-code;tmp-next=head-next;head-next=tmp;cout添加成功!!\n;显示通讯录功能的实现主要通过遍历链表来实现,主要代码如下所示。while(cur){cout.width(10);coutcur-name;cout.width(20);coutcur-address;cout.width(15);coutcur-phone;cout.width(10);coutcur-code;coutendl;cur=cur-next;if(flag%15==0){getch();}flag++;}文件的存储和读出主要是通过istream和ostream来完成,具体代码如下所示。4voidTeleBook::writeToFile(){ofstreamfile;TeleNode*tmp;file.open(telebook_info.dat,0x02);//打开文件,不存在则创建if(!file){coutFilecreateFailureendl;return;}tmp=this-head-next;while(tmp){filetmp-nametmp-addresstmp-phonetmp-code;tmp=tmp-next;}file.close();}voidTeleBook::loadFromFile(){ifstreamfile;TeleNode*tmp;charch[100];file.open(telebook_info.dat,0x20);//if(!file){coutFileopenFailureendl;return;}while(filech){tmp=(TeleNode*)new(TeleNode);strcpy(tmp-name,ch);filetmp-address;filetmp-phone;filetmp-code;tmp-next=this-head-next;this-head-next=tmp;}file.close();}对于查找功能,用优先的方法对链表的各个节点进行排序,一旦操作了一个人员的数据,他的数据就将被调用到链表的链首。具体代码如下所示。5while(cur){if(!strcmp(cur-name,name)){cout.width(10);coutcur-name;cout.width(20);coutcur-address;cout.width(15);coutcur-phone;cout.width(10);coutcur-code;coutendl;pre-next=cur-next;cur-next=head-next;head-next=cur;break;}pre=cur;cur=cur-next;}6测试功能1,添加通讯录测试功能2,显示通讯录7测试五,查询通讯录测试6,修改8五、结论与心得经过三周的课程设计,我完成了一个较大的C++语言程序的设计以及完成了课程设计的设计报告的撰写工作。回忆着三周的时间,我的收获很大。首先,通过这次课程设计,我熟练的掌握并运用了所学知识进行编程,而去取得了成功,这大大激发了我对编程的兴趣;其次,在设计的过程中所遇到的困难,我都认真地去思考,和同学以及老师交流,或者利用网上资源来获取帮助,寻求解决办法,通过各种渠道完善所学到的东西。最后,这次设计让我了解到了更多课堂以外的知识,这对我将来的学习和应用都是很有帮助的。对于计算机专业的大学生来说,积累实战经验是一项极其重要的内容,这可能会成为将来就业的敲门砖。而此次课程设计就是积累实战经验的一个过程,虽然程序的规模不是很大,但是能够让我们认识软件开发的重要性和必要性,为将来的就业打下坚实的基础。通过这次课程设计,让我认识到,其实认真学习一门语言并不困难,关键是所要追求的学习的方法和途径。一条好的途径便于快速掌握,熟悉运用语言。学习的目的在于应用,理论来源于实践,如果在学习中能够通过有效的途径如自己动手设计一个功能比较强大的开发系统,借鉴于各种工具书,善于总结,一定可以有很好的效果。通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C++,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己更好地学好计算机的相关课程。结束课设的时侯,心里就有一种很渴望但又很害怕的感觉,明白了自己与9实际所需的距离,因为现在毕业求职难,特别是对于像自己一般的人,更多的时侯是社会,职业选择自己,而不是更多的自己去选择职业,所以更应该把所学的知识灵活地用于实践,这次课设就是对自己一个很好的锻炼机会,无论任何的偿试,都是自己以后很宝贵的经验,更是对自己的一种充实。10六、参考文献1、谭浩强著.《C++程序设计》.北京:清华大学出版社,2004.62、吴乃陵、况迎辉著.《C++程序设计》.北京:高等教育出版社,2006.311程序代码#includeiostream#includefstream#includeiomanip#includeconio.husingnamespacestd;typedefstructTeleNode/*标记为telebook*/{charname[20];/*姓名*/charaddress[50];/*

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功