文档介绍:题目:用C/C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。(一)功能要求(1)查看功能:选择此功能时,列出下列三类选择。A办公类B个人类C商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码)(2)增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A办公类B个人类C商务类)、电子邮件)。例如杨春**********商务类******@++om当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。(3)拔号功能:能显示通信录中所有人姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示此人电话号码中的各个数字,并伴随相应的拔号声音。(4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。(二)其它要求:(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)建议使用结构和链表等数据结构(4)学生可自动增加新功能模块(视情况可另外加分)以下是源代码,相应的文档为《通讯录管理系统-数据结构课程设计报告》,搜索即可#include<iostream>#include<>#include<string>#include<fstream>#include<>#include<>#ment(lib,"")usingnamespacestd;#defineMAXSIZE15//联系人信息typedefstruct{ stringname;//姓名 stringteleNum;//电话号码 intclasses;//分类 stringemail;//电子邮件}contacts;//链表存储结构typedefstructLNode{ contactsdata;//数据域 structLNode*next;//指针域}LNode,*LinkList;//初始化链表intInitList(LinkList&L){ L=newLNode; L->next=NULL; return0;}//前插法创建链表voidCreateList_H(LinkList&L,intn){LinkListp;for(inti=0;i<n;i++)//根据联系人个数创建链表{p=newLNode;cout<<"请输入联系人的姓名:";cin>>p->;cout<<"请输入联系人的电话号码:";cin>>p->;cout<<"请输入联系人的分类(分类如下,输入相应序号即可)"<<endl;cout<<"1办公类2个人类3商务类"<<endl;cin>>p->;cout<<"请输入联系人的电子邮件:";cin>>p->;p->next=L->next;L->next=p;}}//根据类别查看联系人信息voidCheckAll(LinkListL,intc)//c是联系人类别{ LinkListp; p=L->next; cout<<"姓名\t\t"<<"电话号码"<<endl;//表头 while(p)//当链表没到尾部时 { if(p->==c)//若符合类别则输出联系人姓名和电话号码{ cout<<p-><<"\t\t"<<p-><<endl; } p=p->next; }}//重载函数,查看所有联系人voidCheckAll(LinkListL){ LinkListp;p=L->next;while(p){cout<<p-><<endl;p=p->next;}}//根据姓名查找联系人LinkListSearch(LinkListL,stringname){LinkListp;p=L->next;while(p&&p->!=name)//当链表没到尾部且没找到联系人时{p=p->next;}returnp;}//harIfExist(LinkListL,contactsc){LinkListp;p=L->next;while(p&&p->!=)//根据姓名查找是否存在该联系人{p=p->next;}if(!p)//若到达链表尾部,则不存在return'n';if(p->==) //若找到联系人姓名if(p->data.