通讯簿管理(顺序表的应用)_C++程序

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

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

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

资源描述

13通讯簿管理(顺序表的应用)【问题描述】通讯簿是一个线性表,可以存储一定数量的联系人记录,提供查找、插入、删除和修改等操作。通讯簿的特点是以查找为主要操作,要求快速查找到指定对象的位置,故宜采用具有随机访问功能的顺序表。【数据结构】使用顺序表SeqList建立通讯簿。作为表项的联系人记录,至少应包括以下属性:{序号,姓名,与本人关系,电话号码}其中序号具有唯一性。序号和姓名可作为查找的主要关键字。与本人关系可枚举为“亲人”、“朋友”和“同事”,主要作用是为联系人分组,并作为次要关键字。将上述联系人记录定义为一个结构(struct),在主程序中建立模板类顺序表SeqList的对象时用该结构实例化表结点的类型。【主要功能】程序应为用户提供操作选择界面,必要的操作包括:查找某人电话号码,添加新记录,修改记录,删除记录,打印亲人清单、朋友清单或同事清单以及退出等。另外,为初始化方便,原始数据可存储在磁盘文件中。【主要代码】#includeiostream.h#includestring.hstaticn=1;enumRelation{Friend,Relative,colleague};templateclassTstructPeople{charNumber[10];//编号charPNumber[12];//电话号码charname[20];//姓名intm;//关系People(int&ite){m=ite;}People(int&p1,charName[],charP[],charitem[]){for(inti=0;i20;i++){name[i]=Name[i];}for(intj=0;j11;j++){PNumber[j]=P[j];}for(intk=0;k10;k++){Number[k]=item[k];}m=p1;}};templateclassTclassSeqList{protected:PeopleT*data;intmaxSize;intlast;voidreSize(intnewSize);public:SeqListT(){data=newPeopleT;}2SeqListT(T&x){data=newPeopleT(x);}PeopleT*getdata(){returndata;}boolinput();voidoutput();voidtianjia();voidchaxun();voidshowall();voidremove();voidxiugai();voidshowfriend();voidshowrelative();voidshowcolleague();};templateclassTboolSeqListT::input(){staticl;cout请输入您要添加的人的编号:;cindata[l].Number;cout请输入您要添加的人的姓名:;cindata[l].name;cout请输入您要添加的人的电话号码:;cindata[l].PNumber;cout请输入您要添加人与您的关系(0为朋友,1为亲人,2为同事):;cindata[l].m;l++;n++;returntrue;}booldeng(charp1[],charp2[]){boolflag=1;for(inti=0;p1[i]!='\0'||p2[i]!='\0';i++){if(p1[i]!=p2[i]){returnflag=0;}}returnflag;}templateclassTvoidSeqListT::tianjia(){this-input();cout信息已保存好!endl;}templateclassTvoidSeqListT::chaxun(){charpr[20];cout请输入您要查找的姓名或电话号码:endl;cinpr;boolflag=1;for(intli=0;lin-1;li++){if(deng(pr,data[li].name)||deng(pr,data[li].PNumber)){3cout#data[li].Number\t姓名:data[li].name\t电话号码:;for(intk=0;data[li].PNumber[k]!='\0';k++){coutdata[li].PNumber[k];}cout'\t';switch(data[li].m){case0:{cout朋友'\t'endl;break;}case1:{cout亲人'\t'endl;break;}case2:{cout同事'\t'endl;break;}default:{cout关系设置错误!;break;}}flag=0;}}if(flag)cout查找失败!endl;}voidinface(){coutendl;cout\t\t┏━━━━━━━━━━━━━━━━━━━━━━━━┓endl\t\t┃********************┃endl\t\t┃※通※迅※录※┃endl\t\t┃********************┃endl\t\t┃1.添加新联系人.6.显示同事信息.┃endl\t\t┃┃endl\t\t┃2.删除联系人.7.修改信息.┃endl\t\t┃┃endl\t\t┃3.显示所有联系人.8.查询联系人.┃endl\t\t┃┃endl\t\t┃4.显示亲人信息.┣━━━━━━┫┃endl\t\t┃┃按其他退出┃┃endl\t\t┃5.显示朋友信息.┣━━━━━━┫┃endl\t\t┃┃endl\t\t┗━━━━━━━━━━━━━━━━━━━━━━━━┛endlendl;}templateclassTvoidSeqListT::showall(){cout所有人的信息如下:endl;for(intlm=0;lmn-1;lm++){cout#data[lm].Number\t姓名:data[lm].name\t电话号码:;for(intk=0;data[lm].PNumber[k]!='\0';k++){coutdata[lm].PNumber[k];}cout'\t';switch(data[lm].m){case0:{cout朋友'\t'endl;break;}4case1:{cout亲人'\t'endl;break;}case2:{cout同事'\t'endl;break;}default:{cout关系设置错误!;break;}}}}templateclassTvoidSeqListT::showfriend(){cout朋友的信息如下:endl;for(intlm=0;lmn-1;lm++){if(data[lm].m==0){cout#data[lm].Number\t姓名:data[lm].name\t电话号码:;for(intk=0;data[lm].PNumber[k]!='\0';k++){coutdata[lm].PNumber[k];}cout'\t';switch(data[lm].m){case0:{cout朋友'\t'endl;break;}case1:{cout亲人'\t'endl;break;}case2:{cout同事'\t'endl;break;}default:{cout关系设置错误!;break;}}}}}templateclassTvoidSeqListT::showrelative(){cout亲人的信息如下:endl;for(intlmm=0;lmmn-1;lmm++){if(data[lmm].m==1){cout#data[lmm].Number\t姓名:data[lmm].name\t电话号码:;for(intk=0;data[lmm].PNumber[k]!='\0';k++){coutdata[lmm].PNumber[k];}cout'\t';switch(data[lmm].m){case0:{cout朋友'\t'endl;break;}case1:{cout亲人'\t'endl;break;}case2:{cout同事'\t'endl;break;}5default:{cout关系设置错误!;break;}}}}}templateclassTvoidSeqListT::showcolleague(){cout同事的信息如下:endl;for(intlmp=0;lmpn-1;lmp++){if(data[lmp].m==2){cout#data[lmp].Number\t姓名:data[lmp].name\t电话号码:;for(intk=0;data[lmp].PNumber[k]!='\0';k++){coutdata[lmp].PNumber[k];}cout'\t';switch(data[lmp].m){case0:{cout朋友'\t'endl;break;}case1:{cout亲人'\t'endl;break;}case2:{cout同事'\t'endl;break;}default:{cout关系设置错误!;break;}}}}}templateclassTvoidSeqListT::xiugai(){charptk[20];cout请输入您要修改的姓名或电话号码:;cinptk;boolflag=1;for(intlp=0;lpn-1;lp++){if(deng(ptk,data[lp].name)||deng(ptk,data[lp].PNumber)){cout修改编号:;cindata[lp].Number;cout修改姓名:;cindata[lp].name;cout修改电话号码:;cindata[lp].PNumber;cout修改与您的关系(0为朋友,1为亲人,2为同事):;cindata[lp].m;flag=0;}}if(flag)cout您要修改的人不存在!endl;}templateclassT6voidSeqListT::remove(){charptr[20];cout请输入您要删除的姓名或电话号码:;cinptr;boolflag=1;for(intlr=0;lrn-1;lr++){if(deng(ptr,data[lr].name)||deng(ptr,data[lr].PNumber)){strcpy(data[lr].Number,data[n-2].Number);strcpy(data[lr].name,data[n-2].name);strcpy(data[lr].PNumber,data[n-2].PNumber);data[lr].m=data[n-2].m;n--;cout信息已删除!endl;flag=0;}}if(flag)cout删除失败!endl;}voidmain(){boolflag1=0;inface();intx=0;SeqListinta(x);while(1){cout'\t''\t'选择:;int

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

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

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

×
保存成功