通讯簿管理(C++顺序表的应用).doc

上传人:小** 文档编号:93527276 上传时间:2019-07-23 格式:DOC 页数:6 大小:104.51KB
返回 下载 相关 举报
通讯簿管理(C++顺序表的应用).doc_第1页
第1页 / 共6页
通讯簿管理(C++顺序表的应用).doc_第2页
第2页 / 共6页
通讯簿管理(C++顺序表的应用).doc_第3页
第3页 / 共6页
通讯簿管理(C++顺序表的应用).doc_第4页
第4页 / 共6页
通讯簿管理(C++顺序表的应用).doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《通讯簿管理(C++顺序表的应用).doc》由会员分享,可在线阅读,更多相关《通讯簿管理(C++顺序表的应用).doc(6页珍藏版)》请在金锄头文库上搜索。

1、3 通讯簿管理(顺序表的应用)【问题描述】通讯簿是一个线性表,可以存储一定数量的联系人记录,提供查找、插入、删除和修改等操作。通讯簿的特点是以查找为主要操作,要求快速查找到指定对象的位置,故宜采用具有随机访问功能的顺序表。【数据结构】使用顺序表SeqList建立通讯簿。作为表项的联系人记录,至少应包括以下属性: 序号,姓名,与本人关系,电话号码其中序号具有唯一性。序号和姓名可作为查找的主要关键字。与本人关系可枚举为“亲人”、“朋友”和“同事”,主要作用是为联系人分组,并作为次要关键字。将上述联系人记录定义为一个结构(struct),在主程序中建立模板类顺序表SeqList的对象时用该结构实例化

2、表结点的类型。【主要功能】程序应为用户提供操作选择界面,必要的操作包括:查找某人电话号码,添加新记录,修改记录,删除记录,打印亲人清单、朋友清单或同事清单以及退出等。另外,为初始化方便,原始数据可存储在磁盘文件中。【主要代码】#include#include#includestatic n=1;enum RelationFriends,Familiers,Colleague;templatestruct Person char Num10;/编号 char PhoNum12;/电话号码 char Name20;/姓名 int m;/关系 Person( int &ite) m=ite;Pers

3、on(int &p1,char Name,char P, char item) for(int i=0;i20;i+) Namei=Namei; for(int j=0;j11;j+)PhoNumj=Pj; for(int k=0;k10;k+) Numk=itemk; m=p1; ;templateclass SeqListprotected: Person *data;public: SeqList(T& x)data=new Person(x); bool Input(); void Output(); void Insert(); void Search(); void Show_Al

4、l(); void Delete(); void Correct(); void Show_Select(); void Show_Friends(); void Show_Familiers(); void Show_Colleague();template bool SeqList:Input() static l;coutdatal.Num;coutdatal.Name;coutdatal.PhoNum;coutdatal.m; l+; n+; return true;template void SeqList:Insert() this-Input(); cout信息已保存好!endl

5、; template void SeqList:Search() char pr20; coutpr; bool flag=1; for(int li=0;lin-1;li+) if(IfEqual(pr,datali.Name)|IfEqual(pr,datali.Num) cout序号:datali.Numtt姓名:datali.Namet电话:; for(int k=0;datali.PhoNumk!=0;k+) coutdatali.PhoNumk; coutt;Switch(datali.m);flag=0; if(flag) cout查找失败!请查证后再试!endl;templat

6、e void SeqList:Show_All() cout所有人的信息如下:endl; for(int lm=0;lmn-1;lm+) cout序号:datalm.Numtt姓名:datalm.Namet电话:; for(int k=0;datalm.PhoNumk!=0;k+) coutdatalm.PhoNumk; coutt; Switch(datalm.m); template void SeqList:Show_Select()coutm;switch(m)case 1:Show_Familiers();break; case 2:Show_Friends();break; cas

7、e 3:Show_Colleague();break;case 4:Search();break; default: cout关系设置错误!;break;template void SeqList:Show_Friends() cout所有朋友的信息如下:endl; for(int lm=0;lmn-1;lm+) if(datalm.m=0) cout序号:datalm.Numtt姓名:datalm.Namet电话:; for(int k=0;datalm.PhoNumk!=0;k+) coutdatalm.PhoNumk; coutt;Switch(datalm.m); template v

8、oid SeqList:Show_Familiers() cout所有亲人的信息如下:endl; for(int lmm=0;lmmn-1;lmm+) if(datalmm.m=1) cout序号:datalmm.Numtt姓名:datalmm.Namet电话:; for(int k=0;datalmm.PhoNumk!=0;k+) coutdatalmm.PhoNumk; coutt; Switch(datalmm.m); template void SeqList:Show_Colleague() cout所有同事的信息如下:endl;for(int lmp=0;lmpn-1;lmp+)

9、if(datalmp.m=2) cout序号:datalmp.Numtt姓名:datalmp.Namet电话:; for(int k=0;datalmp.PhoNumk!=0;k+) coutdatalmp.PhoNumk; coutt; Switch(datalmp.m); template void SeqList:Correct() char ptk20; coutptk; bool flag=1; for(int lp=0;lpn-1;lp+)if(IfEqual(ptk,datalp.Name)|IfEqual(ptk,datalp.Num) coutdatalp.Num; cout

10、datalp.Name; coutdatalp.PhoNum; coutdatalp.m; flag=0; if(flag) cout您要修改的联系人不存在!endl;template void SeqList:Delete() char ptr20; coutptr;bool flag=1; for(int lr=0;lrn-1;lr+)if(IfEqual(ptr,datalr.Name)|IfEqual(ptr,datalr.Num) strcpy(datalr.Num,datan-2.Num);strcpy(datalr.Name,datan-2.Name); strcpy(datalr.PhoNum,datan-2.PhoNum); datalr.m=datan-2.m; n-; cout信息已删除!endl; flag=0; if(flag) cout删除失败!endl; void Switch(int i)switch(i)case 1: cout亲人tendl;break;case 2: cout朋友tendl;break; case 3: cout同事tendl;break;default: cout关系设置错误!;break;int IfEqual(char p1,char p2)int flag=strcmp(p1,p2);return fla

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号