当前位置:文档之家› C通讯录管理课程设计报告

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

C通讯录管理课程设计报告IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】湖南涉外经济学院课程设计报告课程名称:面向对象程序设计课程设计报告题目:通讯录管理学生姓名:蒋行伍田方成刘倩所在学院:信息科学与工程学院专业班级:计应1301指导教师:2014年6月10日课程设计任务书摘要在《面向对象程序设计》课程理论与实验教学的基础上,根据软件工程的方法与流程,在相对集中的实训教学时间内,通过一个功能较完整的小型应用系统,复习与深入掌握面向对象的程序设计思想与技术方法。

同时,作为整个实践教学体系一部分,系统培养学生采用面向对象的方法分析问题与解决问题的能力及团体组织与协作能力。

本课题要设计的是简单的通讯录管理程序。

通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。

程序提供了通信录的基本管理功能。

包括添加、显示、存储、装入、查询和修改等功能。

关键词:类;C++;通讯录;结构体目录一、概述 (1)二、方案设计 (2)1.类设计 (2)2.特殊设计 (2)三、系统整体设计及详细设计 (2)1.整体设计 (2)2.详细设计 (3)四、系统测试 (6)五、结论与心得 (8)六、参考文献 (10)七、程序代码 (11)一、概述编写一个简单的通讯录管理程序。

通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。

程序应提供的以下基本管理功能有:1)添加:即增加一个人的记录到通信录中2)显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。

3)存储:即将通讯录信息保存在一个文件中。

4)装入:即将文件中的信息读入程序。

5)查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。

6)修改:可修改一个人的除姓名外其它信息。

二、方案设计1.类设计程序可用一个单向链表来管理人员信息,每个人员的姓名,地址,电话号码和邮政编码用一个类来实现,作为链表的值指针指向这些类对象,通过链表的遍历可以操作这些数据。

首先,本程序中设计如下的结构体存储通信录信息。

该结构体重包括了姓基于该结构体,定义了如下通信录类。

该类中包括了指向结构体的头指针head。

函数InitTeleBook()的功能是初始化head;函数isNameExist的功能是判断名字是否已存在结构体中,如果存在则返回1,否则返回0;函数addTeleBook()的功能是添加通讯录信息;函数findByName()的功能是根据姓名查找某人的相关信息;函数printTeleBook()的功能是在屏幕上显示所有通信录中的人员信息,可以分屏显示;函数writeToFile()的功能是将通讯录信息保存在一个文件中;函数loadFromFile()的功能是将文件中的信息读入程序;函数2.特殊设计本程序为了加快数据定位查找的速度,采用常用优先的方法对链表的各个节点进行排序,即一旦操作了一个人员的数据,他的数据就将被调用到链表的链首。

这样经过有限次操作,经常查阅的人员的信息就将排在链表的前端。

虽然不能说链首的节点一定是最常用的,但常用的节点一定会排在较靠前的部分,链表查找时所要走的平均距离一定较短。

对于人员重名的情况,本程序会检测到将要添加的人名是否重复,并将提示用户重新输入新的人名。

三、系统整体框架及详细设计1.总体框架系统的整体框架如图1所示。

图1系统总体框架2.详细设计添加通讯录信息的代码如下所示,主要通cin及cout完成数据的输入及显示通讯录功能的实现主要通过遍历链表来实现,主要代码如下所示。

文件的存储和读出主要是通过istream和ostream来完成,具体代码如下所示。

C++程序设计》.北京:清华大学出版社,2、吴乃陵、况迎辉着.《C++程序设计》.北京:高等教育出版社,程序代码#include<iostream>#include<fstream>#include<iomanip>#include<>usingnamespacestd;typedefstructTeleNode/*标记为telebook*/{charname[20];/*姓名*/charaddress[50];/*电话号码*/charphone[20]; /*省份*/ charcode[20];/*地址*/structTeleNode*next;}TeleNode;classTeleBook{private:TeleNode*head;public:TeleBook(){head=NULL;}voidInitTeleBook();intisNameExist(charname[20]);voidaddTeleBook();voidfindByName();voidprintTeleBook();voidwriteToFile();voidloadFromFile();voidupdateTeleBook();};voidTeleBook::InitTeleBook(){this->head=(TeleNode*)new(TeleNode);this->head->next=NULL;}intTeleBook::isNameExist(charname[20]){TeleNode*tmp=this->head->next;while(tmp){if(!strcmp(tmp->name,name)){return1;}tmp=tmp->next;}return0;}voidTeleBook::addTeleBook(){TeleNode*tmp;tmp=(TeleNode*)new(TeleNode);tmp->next=NULL;cout<<"请输入姓名:";cin>>tmp->name;while(isNameExist(tmp->name)){cout<<"该用户名已存在,请输入别的名称以区分:";cin>>tmp->name;}cout<<"请输入地址:";cin>>tmp->address;cout<<"请输入电话号码:";cin>>tmp->phone;cout<<"请输入邮政编码:";cin>>tmp->code;tmp->next=head->next;head->next=tmp;cout<<"添加成功!!\n";}voidTeleBook::findByName(){charname[20];TeleNode*pre,*cur;cout<<"请输入要查找的用户名:";cin>>name;pre=this->head;cur=this->head->next;(10);cout<<"姓名";(20);cout<<"地址";(15);cout<<"电话号码";(10);cout<<"邮政编码";cout<<endl;while(cur){if(!strcmp(cur->name,name)){(10);cout<<cur->name;(20);cout<<cur->address;(15);cout<<cur->phone;(10);cout<<cur->code;cout<<endl;pre->next=cur->next;cur->next=head->next;head->next=cur;break;}pre=cur;cur=cur->next;}}voidTeleBook::printTeleBook(){TeleNode*cur;intflag=1;cur=this->head->next;(10);cout<<"姓名";(20);cout<<"地址";(15);cout<<"电话号码";(10);cout<<"邮政编码";cout<<endl;while(cur){(10);cout<<cur->name;(20);cout<<cur->address;(15);cout<<cur->phone;(10);cout<<cur->code;cout<<endl;cur=cur->next;if(flag%15==0){getch();}flag++;}}voidTeleBook::writeToFile(){ofstreamfile;TeleNode*tmp;("",0x02);//打开文件,不存在则创建if(!file){cout<<"FilecreateFailure"<<endl;return;}tmp=this->head->next;while(tmp){file<<tmp->name<<""<<tmp->address<<""<<tmp->phone<<""<<tmp->code;tmp=tmp->next;}();}voidTeleBook::loadFromFile(){ifstreamfile;TeleNode*tmp;charch[100];("",0x20);//打开文件,不存在则创建if(!file){cout<<"FileopenFailure"<<endl;return;}while(file>>ch){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;}();}voidTeleBook::updateTeleBook(){TeleNode*tmp;charname[20];chartmp1[50],tmp2[20],tmp3[20];cout<<"请输入姓名:";cin>>name;tmp=this->head->next;while(tmp){if(!strcmp(tmp->name,name)){cout<<"请输入新地址(输入0不修改):";cin>>tmp1;if(strcmp(tmp1,"0"))strcpy(tmp->address,tmp1);cout<<"请输入新电话(输入0不修改):";cin>>tmp2;if(strcmp(tmp2,"0"))strcpy(tmp->phone,tmp2);cout<<"请输入新邮编(输入0不修改):";cin>>tmp3;if(strcmp(tmp3,"0"))strcpy(tmp->code,tmp3);cout<<"修改成功!!\n";return;}tmp=tmp->next;}cout<<"该姓名不存在!!\n";}voidmain(){TeleBookteleBook;intselect=111;();while(select!=0){cout<<"通信录管理系统\n";cout<<"****************************菜单*******************************\n";cout<<"*1添加*\n";cout<<"*2显示*\n";cout<<"*3存储*\n";cout<<"*4装入*\n";cout<<"*5查询*\n";cout<<"*6修改*\n";cout<<"*0退出*\n";cout<<"******************************************************** *******\n";cout<<"请输入选择:";cin>>select;switch(select){case0:return;case1:();break;case2:();break;case3:();break;case4:();break;case5:();break;case6:();break;default:break;}}return;}。

相关主题