通讯管理系统源代码_第1页
通讯管理系统源代码_第2页
通讯管理系统源代码_第3页
通讯管理系统源代码_第4页
通讯管理系统源代码_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题目:用C/C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。(一)功能要求(1)查看功能:选择此功能时,列出下列三类选择。A办公类B个人类C商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码)(2)增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类(可选项有:A办公类B个人类C商务类)、电子邮件)。例如杨务类Chuny@126.C++om当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。(3)拔号功能:能显示通信录中所有人姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示此人电话号码中的各个数字,并伴随相应的拔号声音。(4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改(5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。(二)其它要求:(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)建议使用结构和链表等数据结构(4)学生可自动增加新功能模块(视情况可另外加分)以下是源代码,相应的文档为《通讯录管理系统-数据结构课程设计报告》,搜索即可#include<iostream>#include<stdlib.h>#include<string>#include<fstream>#include<windows.h>#include<Mmsystem.h>#pragmacomment(lib,"winmm.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->data.teleNum;cout<<"请输入联系人的分类(分类如下,输入相应序号即可)"<<endl;cout<<"1办公类2个人类3商务类"<<endl;cin>>p->data.classes;cout<<"请输入联系人的电子邮件:";cin>>p->data.email;p->next=L->next;L->next=p;}}//根据类别查看联系人信息voidCheckAll(LinkListL,intc)//c是联系人类别{ LinkListp; p=L->next; cout<<"姓名\t\t"<<"电话号码"<<endl;//表头 while(p)//当链表没到尾部时 { if(p->data.classes==c)//若符合类别则输出联系人姓名和电话号码 { cout<<p-><<"\t\t"<<p->data.teleNum<<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;}//判断链表中是否存在联系人ccharIfExist(LinkListL,contactsc){LinkListp;p=L->next;while(p&&p->!=)//根据姓名查找是否存在该联系人{p=p->next;}if(!p)//若到达链表尾部,则不存在return'n';if(p->data.teleNum==c.teleNum) //若找到联系人姓名if(p->data.classes==c.classes)//依次判断电话号码、类别、电子邮件是否相同if(p->data.email==c.email)return'y';return'n';}//获取链表的长度intLength(LinkListL){inti=0;LinkListp=L->next;while(p){++i;p=p->next;}returni;}//增加联系人intAdd(LinkList&L,contactsc){ LinkListp,s; if(Length(L)>=MAXSIZE)//判断链表长度是否达到最大值 {cout<<"存储空间已满,无法新增联系人!"<<endl;return0; }if(IfExist(L,c)=='y')//判断输入的联系人是否已经存在{cout<<"对不起,您输入的联系人已存在!"<<endl;return0;}//若通讯录中不存在该联系人,则增加到通信录p=L; s=newLNode; s->data=c; s->next=p->next; p->next=s; return0;}//拨号功能voidDail(LinkListL,stringname){LinkListp,s;p=L->next;s=Search(L,name);//根据姓名查找联系人所在 //模拟打字机效果,输出联系人电话号码stringtele=s->data.teleNum;for(inti=0;i<tele.length();i++){ charc=tele[i]; Sleep(500); cout<<c; } cout<<endl; //播放声音//PlaySound("E:\\670.wav",NULL,SND_FILENAME|SND_ASYNC);}//修改联系人信息voidChangeInfo(LinkList&L,stringname){LinkListp;p=Search(L,name);//找到联系人的位置所在cout<<"请输入要修改的信息(输入对应序号即可):"<<endl;cout<<"1姓名"<<endl;cout<<"2电话号码"<<endl;cout<<"3分类"<<endl;cout<<"4电子邮件"<<endl;//根据选择修改联系人信息intelec;cin>>elec;switch(elec){case1:{cout<<"姓名改为:"<<endl;stringnewName;cin>>newName;p->=newName;break; }case2:{ cout<<"电话号码改为:"<<endl;stringnewTele;cin>>newTele;p->data.teleNum=newTele;break; }case3:{ cout<<"分类改为(分类如下,输入相应序号即可)";cout<<"1办公类2个人类3商务类"<<endl;intnewCalsses;cin>>newCalsses;p->data.classes=newCalsses;break; }case4:{ cout<<"电子邮件改为:"<<endl;stringnewEmail;cin>>newEmail;p->data.email=newEmail;break; }}}//删除联系人voidDelete(LinkList&L,stringname){LinkListp=L,s;//找到需删除联系人的前一个位置while(p->next&&p->next->!=name){p=p->next;}s=p->next;p->next=s->next;deletes;//删除联系人}//导入通信录voidRead(LinkListL){ LinkListp; //打开文件导入通信录 ifstreamfin; fin.open("通信录.txt",ios::in); strings1,s2,s3,s4; fin>>s1>>s2>>s3>>s4; while(!fin.eof())//当没有到文件尾时 { strings5; contactsc; fin>>>>c.teleNum>>s5>>c.email; if(pare("办公类")==0) c.classes=1; if(pare("个人类")==0) c.classes=2; if(pare("商务类")==0) c.classes=3; Add(L,c);//将联系人c增加到链表中 } fin.close(); }//导出通信录voidWrite(LinkListL){ LinkListp=L->next; intl=Length(L); //打开文件写入通信录 ofstreamfout("通信录.txt",ios::out|ios::trunc); fout<<"姓名\t"<<"电话号码\t"<<"分类\t"<<"电子邮件"<<endl; for(inti=0;i<l;i++) { fout<<p-><<"\t"<<p->data.teleNum<<"\t"; switch(p->data.classes) { case1: { fout<<"办公类"; break; } case2: { fout<<"个人类"; break; } case3: { fout<<"商务类"; break; } } fout<<"\t"<<p->data.email; if(i<(l-1)) fout<<endl; p=p->next; } fout.close();}intMenu()//主菜单{ system("cls");//清屏 intchoice; cout<<endl; cout<<"---------------欢迎来到通信录管理系统!--------------\n";//主菜单显示内容 cout<<" ***************主菜单***************\n"; cout<<" *1新增联系人*\n"; cout<<" *2查看通信录*\n"; cout<<" *3拨号*\n"; cout<<" *4修改信息*\n"; cout<<" *5删除联系人*\n"; cout<<" *6导入通信录*\n"; cout<<" *7导出通信录*\n"; cout<<" *0退出系统*\n"; cout<<" ************************************\n"; cout<<" 请根据您的需求,输入相应的数字:"; cin>>choice;//输入选择 returnchoice;}intmain()//主函数{ LinkListL; InitList(L); for(;;) { switch(Menu())//根据不同选择,执行不同的功能 { case1: { cout<<"请选择批量增加或单个增加(输入相应序号即可):"<<endl; cout<<"1批量增加2单个增加"<<endl; intc1; cin>>c1; if(c1==1) { cout<<"请输入新增联系人的个数:"<<endl; intnumber; cin>>number; CreateList_H(L,number);//用前插法批量增加联系人 } else//单个增加联系人 { contactsc; cout<<"请输入联系人的姓名:"; cin>>; cout<<"请输入联系人的电话号码:"; cin>>c.teleNum; cout<<"请输入联系人的分类(分类如下,输入相应序号即可)"<<endl; cout<<"1办公类2个人类3商务类"<<endl; cin>>c.classes; cout<<"请输入联系人的电子邮件:"; cin>>c.email; Add(L,c); } system("pause"); break;}case2://查看通信录 { cout<<"请输入查看联系人的类别(输入相应序号即可):"<<endl; cout<<"1办公类2个人类3商务类"<<endl; intc2; cin>>c2; cout<<"已有联系人如下:"<<endl; CheckAll(L,c2);//根据分类查看联系人信息 system("pause"); break;}case3: { cout<<"已有联系人如下:"<<endl; CheckAll(L); stringname; cout<<"请输入拨号人的姓名:"<<endl; cin>>name; Dail(L,name);//根据 system("pause"); break;}case4:{ cout<<"已有联系人如下:"<<endl; CheckAll(L); stringchangeName; cout<<"请输入要修改信息的联系人姓名:"<<endl; cin>>changeName; ChangeInfo(L,changeName); system("pause"); break;}case

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论