




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南涉外经济学院课程设计报告课程名称:面向对象程序设计课程设计 报告题目: 通讯录管理 学生姓名:蒋行 伍田 方成 刘倩 所在学院: 信息科学与工程学院 专业班级: 计应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七、程序代码11一、概述编写一个简单的通讯录管理程序。通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。程序应提供的以下基本管理功能有:1)添加:即增加一个人的记录到通信录中2)显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。3)存储:即将通讯录信息保存在一个文件中。4)装入:即将文件中的信息读入程序。5)查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。6)修改:可修改一个人的除姓名外其它信息。二、方案设计1类设计程序可用一个单向链表来管理人员信息,每个人员的姓名,地址,电话号码和邮政编码用一个类来实现,作为链表的值指针指向这些类对象,通过链表的遍历可以操作这些数据。首先,本程序中设计如下的结构体存储通信录信息。该结构体重包括了姓名、地址、电话号码和邮政编码等。typedef struct TeleNode char name20; /*姓名*/ char address50; /*地址*/ char phone20;/*电话号码*/ char code20; /*邮政编码*/ struct TeleNode *next;TeleNode;基于该结构体,定义了如下通信录类。该类中包括了指向结构体的头指针head。函数InitTeleBook()的功能是初始化head;函数isNameExist的功能是判断名字是否已存在结构体中,如果存在则返回1,否则返回0;函数addTeleBook()的功能是添加通讯录信息;函数findByName()的功能是根据姓名查找某人的相关信息;函数printTeleBook()的功能是在屏幕上显示所有通信录中的人员信息,可以分屏显示;函数writeToFile()的功能是将通讯录信息保存在一个文件中;函数loadFromFile()的功能是将文件中的信息读入程序;函数updateTeleBook()的功能是修改一个人的除姓名外其它信息。class TeleBookprivate:TeleNode* head;public:TeleBook()head=NULL;void InitTeleBook();int isNameExist(char name20);void addTeleBook();void findByName();void printTeleBook();void writeToFile();void loadFromFile();void updateTeleBook();2特殊设计本程序为了加快数据定位查找的速度,采用常用优先的方法对链表的各个节点进行排序,即一旦操作了一个人员的数据,他的数据就将被调用到链表的链首。这样经过有限次操作,经常查阅的人员的信息就将排在链表的前端。虽然不能说链首的节点一定是最常用的,但常用的节点一定会排在较靠前的部分,链表查找时所要走的平均距离一定较短。对于人员重名的情况,本程序会检测到将要添加的人名是否重复,并将提示用户重新输入新的人名。三、系统整体框架及详细设计1总体框架系统的整体框架如图1所示。图1 系统总体框架2详细设计添加通讯录信息的代码如下所示,主要通cin及cout完成数据的输入及提示。TeleNode *tmp;tmp = (TeleNode*)new(TeleNode);tmp-next = NULL;cout tmp-name;while(isNameExist(tmp-name)cout tmp-name;cout tmp-address;cout tmp-phone;cout tmp-code;tmp-next = head-next;head-next = tmp;cout 添加成功!n;显示通讯录功能的实现主要通过遍历链表来实现,主要代码如下所示。while(cur)cout.width(10);cout name;cout.width(20);cout address;cout.width(15);cout phone;cout.width(10);cout code;cout next;if(flag %15=0)getch();flag+;文件的存储和读出主要是通过istream和ostream来完成,具体代码如下所示。void TeleBook:writeToFile()ofstream file;TeleNode *tmp;file.open(telebook_info.dat, 0x02);/打开文件,不存在则创建if(!file)cout File create Failurehead-next;while(tmp)filename address phone code;tmp = tmp-next;file.close();void TeleBook:loadFromFile()ifstream file;TeleNode *tmp;char ch100;file.open(telebook_info.dat, 0x20);/if(!file)cout File open Failurech)tmp = (TeleNode*)new(TeleNode);strcpy(tmp-name,ch);file tmp-address;file tmp-phone;file tmp-code;tmp-next = this-head-next;this-head-next = tmp;file.close();对于查找功能,用优先的方法对链表的各个节点进行排序,一旦操作了一个人员的数据,他的数据就将被调用到链表的链首。具体代码如下所示。while(cur)if(!strcmp(cur-name, name)cout.width(10);cout name;cout.width(20);cout address;cout.width(15);cout phone;cout.width(10);cout code;cout next = cur-next;cur-next = head-next;head-next = cur;break; pre = cur;cur = cur-next;测试功能1,添加通讯录测试功能2,显示通讯录测试五,查询通讯录测试6,修改五、结论与心得经过三周的课程设计,我完成了一个较大的C+语言程序的设计以及完成了课程设计的设计报告的撰写工作。回忆着三周的时间,我的收获很大。首先,通过这次课程设计,我熟练的掌握并运用了所学知识进行编程,而去取得了成功,这大大激发了我对编程的兴趣;其次,在设计的过程中所遇到的困难,我都认真地去思考,和同学以及老师交流,或者利用网上资源来获取帮助,寻求解决办法,通过各种渠道完善所学到的东西。最后,这次设计让我了解到了更多课堂以外的知识,这对我将来的学习和应用都是很有帮助的。对于计算机专业的大学生来说,积累实战经验是一项极其重要的内容,这可能会成为将来就业的敲门砖。而此次课程设计就是积累实战经验的一个过程,虽然程序的规模不是很大,但是能够让我们认识软件开发的重要性和必要性,为将来的就业打下坚实的基础。通过这次课程设计,让我认识到,其实认真学习一门语言并不困难,关键是所要追求的学习的方法和途径。一条好的途径便于快速掌握,熟悉运用语言。学习的目的在于应用,理论来源于实践,如果在学习中能够通过有效的途径如自己动手设计一个功能比较强大的开发系统,借鉴于各种工具书,善于总结,一定可以有很好的效果。 通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C+,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己更好地学好计算机的相关课程。 结束课设的时侯,心里就有一种很渴望但又很害怕的感觉,明白了自己与实际所需的距离,因为现在毕业求职难,特别是对于像自己一般的人,更多的时侯是社会,职业选择自己,而不是更多的自己去选择职业,所以更应该把所学的知识灵活地用于实践,这次课设就是对自己一个很好的锻炼机会,无论任何的偿试,都是自己以后很宝贵的经验,更是对自己的一种充实。六、参考文献1、谭浩强 著.C+程序设计. 北京:清华大学出版社,2004.62、吴乃陵、况迎辉 著.C+程序设计. 北京: 高等教育出版社,2006.3程序代码#include #include #include#include using namespace std;typedef struct TeleNode /*标记为telebook*/ char name20; /*姓名*/ char address50; /*电话号码*/ char phone20; /*省份*/ char code20; /*地址*/ struct TeleNode *next;TeleNode;class TeleBookprivate:TeleNode* head;public:TeleBook()head=NULL;void InitTeleBook();int isNameExist(char name20);void addTeleBook();void findByName();void printTeleBook();void writeToFile();void loadFromFile();void updateTeleBook();void TeleBook:InitTeleBook()this-head = (TeleNode*)new(TeleNode);this-head-next = NULL;int TeleBook:isNameExist(char name20)TeleNode *tmp = this-head-next;while(tmp)if(!strcmp(tmp-name, name)return 1;tmp = tmp-next;return 0;void TeleBook:addTeleBook()TeleNode *tmp;tmp = (TeleNode*)new(TeleNode);tmp-next = NULL;cout tmp-name;while(isNameExist(tmp-name)cout tmp-name;cout tmp-address;cout tmp-phone;cout tmp-code;tmp-next = head-next;head-next = tmp;cout 添加成功!n;void TeleBook:findByName()char name20;TeleNode *pre, *cur;cout name;pre = this-head;cur = this-head-next;cout.width(10);cout 姓名;cout.width(20);cout 地址;cout.width(15);cout 电话号码;cout.width(10);cout 邮政编码;cout name, name)cout.width(10);cout name;cout.width(20);cout address;cout.width(15);cout phone;cout.width(10);cout code;cout next = cur-next;cur-next = head-next;head-next = cur;break; pre = cur;cur = cur-next;void TeleBook:printTeleBook()TeleNode *cur;int flag = 1;cur = this-head-next;cout.width(10);cout 姓名;cout.width(20);cout 地址;cout.width(15);cout 电话号码;cout.width(10);cout 邮政编码;cout endl;while(cur)cout.width(10);cout name;cout.width(20);cout address;cout.width(15);cout phone;cout.width(10);cout code;cout next;if(flag %15=0)getch();flag+;void TeleBook:writeToFile()ofstream file;TeleNode *tmp;file.open(telebook_info.dat, 0x02);/打开文件,不存在则创建if(!file)cout File create Failurehead-next;while(tmp)filename address phone code;tmp = tmp-next;file.close();void TeleBook:loadFromFile()ifstream file;TeleNode *tmp;char ch100;file.open(telebook_info.dat, 0x20);/打开文件,不存在则创建if(!file)cout File open Failurech)tmp = (TeleNode*)new(TeleNode);strcpy(tmp-name,ch);file tmp-address;file tmp-phone;file tmp-code;tmp-next = this-head-next;this-head-next = tmp;file.close();void TeleBook:updateTeleBook()TeleNode *tmp;char name20;char tmp150, tmp220, tmp320;cout name;tmp = this-head-ne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论