1、#define MAXSIZE 15/联系人信息typedef struct string name; /姓名 string teleNum; /电话号码 int classes; /分类 string email; /电子邮件contacts;/链表存储结构typedef struct LNode contacts data; /数据域 struct LNode* next; /指针域LNode,*LinkList;/初始化链表int InitList(LinkList &L) L = new LNode; L-next = NULL; return 0;/前插法创建链表void Creat
2、eList_H(LinkList &L,int n) LinkList p; for(int i = 0;i n;i+) /根据联系人个数创建链表 p = new LNode; cout p-data.name;请输入联系人的电话号码:data.teleNum;请输入联系人的分类(分类如下,输入相应序号即可) data.classes;请输入联系人的电子邮件:data.email;next = L-next;next=p; /根据类别查看联系人信息 void CheckAll(LinkList L,int c)/c是联系人类别 p = L-姓名tt电话号码 /表头 while(p) /当链表没
3、到尾部时 if(p-data.classes=c) /若符合类别则输出联系人姓名和电话号码 cout data.name ttdata.teleNum /重载函数,查看所有联系人 void CheckAll(LinkList L) p=L- while(p) p=p- /根据姓名查找联系人LinkList Search(LinkList L,string name) while(p&p-data.name!=name) /当链表没到尾部且没找到联系人时 return p;/判断链表中是否存在联系人cchar IfExist(LinkList L,contacts c) =c.name) /根据
4、姓名查找是否存在该联系人 if(!p) /若到达链表尾部,则不存在 return n if(p-data.teleNum=c.teleNum) /若找到联系人姓名data.classes=c.classes) /依次判断电话号码、类别、电子邮件是否相同 data.email=c.email)y/获取链表的长度int Length(LinkList L) int i=0; LinkList p=L- +i; return i;/增加联系人 int Add(LinkList &L,contacts c) LinkList p,s; if(Length(L)=MAXSIZE) /判断链表长度是否达到
5、最大值 存储空间已满,无法新增联系人! if(IfExist(L,c)=) /判断输入的联系人是否已经存在 对不起,您输入的联系人已存在! /若通讯录中不存在该联系人,则增加到通信录 p=L; s=new LNode; s-data=c;next=p-next=s;/拨号功能void Dail(LinkList L,string name) s=Search(L,name); /根据姓名查找联系人所在 /模拟打字机效果,输出联系人电话号码 string tele=s- for(int i=0;itele.length();i+) char c=telei; Sleep(500); cout n
6、ext&next-=name) s=p-next=s- delete s; /删除联系人 /导入通信录 void Read(LinkList L) /打开文件导入通信录 ifstream fin; fin.open(通信录.txt,ios:in); string s1,s2,s3,s4; fin s1 s2 s3 s4; while(!fin.eof() /当没有到文件尾时 string s5; contacts c; fin c.name c.teleNum s5 c.email; if(pare(办公类)=0) c.classes=1;个人类 c.classes=2;商务类 c.class
7、es=3; Add(L,c); /将联系人c增加到链表中 fin.close();/导出通信录 void Write(LinkList L) int l=Length(L); /打开文件写入通信录 ofstream fout(out|ios:trunc); fout 姓名t电话号码t分类t电子邮件 l; fout data.classes) case 1: fout break; case 2: case 3: if(i(l-1) fout fout.close();int Menu()/主菜单 system(cls);/清屏 int choice; coutchoice;/输入选择 retu
8、rn choice; int main()/主函数 LinkList L; InitList(L); for(; switch(Menu()/根据不同选择,执行不同的功能 case 1: cout c1; if(c1=1) cout number; CreateList_H(L,number); /用前插法批量增加联系人 else /单个增加联系人 contacts c; c.name; c.teleNum; c.classes; Add(L,c); system(pause break;/查看通信录请输入查看联系人的类别(输入相应序号即可):1 办公类 2 个人类 3 商务类 int c2;
9、 c2;已有联系人如下: CheckAll(L,c2); /根据分类查看联系人信息 system( CheckAll(L); string name;请输入拨号人的姓名: name; Dail(L,name); /根据 CheckAll(L); string changeName;请输入要修改信息的联系人姓名: changeName; ChangeInfo(L,changeName); case 5: string deleteName;请输入要删除的联系人姓名: deleteName; Delete(L,deleteName);联系人 deleteName 已删除! case 6: Read(L);成功导入通信录!已导入联系人姓名如下: CheckAll(L); break; case 7: Write(L);成功导出通信录! break; case 0: /退出系统 cout 感谢您对本通信录管理系统的使用! return 0; default: cout 您输入的指令有误,请重新输入!/输入错误指令时给予提示
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1