完整word版通讯管理系统源代码.docx
- 文档编号:4928696
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:15
- 大小:18.72KB
完整word版通讯管理系统源代码.docx
《完整word版通讯管理系统源代码.docx》由会员分享,可在线阅读,更多相关《完整word版通讯管理系统源代码.docx(15页珍藏版)》请在冰豆网上搜索。
完整word版通讯管理系统源代码
题目:
用C/C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。
(一)功能要求
(1)查看功能:
选择此功能时,列出下列三类选择。
A办公类B个人类C商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码)
(2)增加功能:
能录入新数据(一个结点包括:
姓名、电话号码、分类(可选项有:
A办公类B个人类C商务类)、电子邮件)。
例如
杨春13589664454商务类Chuny@126.C++om
当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。
(3)拔号功能:
能显示通信录中所有人姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示此人电话号码中的各个数字,并伴随相应的拔号声音。
(4)修改功能:
选中某个人的姓名时,可对此人的相应数据进行修改
(5)删除功能:
选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。
(二)其它要求:
(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读
(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)
(3)建议使用结构和链表等数据结构
(4)学生可自动增加新功能模块(视情况可另外加分)
以下是源代码,相应的文档为《通讯录管理系统-数据结构课程设计报告》,搜索即可
#include
#include
#include
#include
#include
#include
#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 { p=newLNode; cout<<"请输入联系人的姓名: "; cin>>p->data.name; cout<<"请输入联系人的电话号码: "; cin>>p->data.teleNum; cout<<"请输入联系人的分类(分类如下,输入相应序号即可)"< cout<<"1办公类2个人类3商务类"< 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"<<"电话号码"< while(p)//当链表没到尾部时 { if(p->data.classes==c)//若符合类别则输出联系人姓名和电话号码 { cout< } p=p->next; } } //重载函数,查看所有联系人 voidCheckAll(LinkListL) { LinkListp; p=L->next; while(p) { cout< p=p->next; } } //根据姓名查找联系人 LinkListSearch(LinkListL,stringname) { LinkListp; p=L->next; while(p&&p->data.name! =name)//当链表没到尾部且没找到联系人时 { p=p->next; } returnp; } //判断链表中是否存在联系人c charIfExist(LinkListL,contactsc) { LinkListp; p=L->next; while(p&&p->data.name! =c.name)//根据姓名查找是否存在该联系人 { 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<<"存储空间已满,无法新增联系人! "< return0; } if(IfExist(L,c)=='y')//判断输入的联系人是否已经存在 { cout<<"对不起,您输入的联系人已存在! "< 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 { charc=tele[i]; Sleep(500); cout< } cout< //播放声音 //PlaySound("E: \\670.wav",NULL,SND_FILENAME|SND_ASYNC); } //修改联系人信息 voidChangeInfo(LinkList&L,stringname) { LinkListp; p=Search(L,name);//找到联系人的位置所在 cout<<"请输入要修改的信息(输入对应序号即可): "< cout<<"1姓名"< cout<<"2电话号码"< cout<<"3分类"< cout<<"4电子邮件"< //根据选择修改联系人信息 intelec; cin>>elec; switch(elec) { case1: { cout<<"姓名改为: "< stringnewName; cin>>newName; p->data.name=newName; break; } case2: { cout<<"电话号码改为: "< stringnewTele; cin>>newTele; p->data.teleNum=newTele; break; } case3: { cout<<"分类改为(分类如下,输入相应序号即可)"; cout<<"1办公类2个人类3商务类"< intnewCalsses; cin>>newCalsses; p->data.classes=newCalsses; break; } case4: { cout<<"电子邮件改为: "< stringnewEmail; cin>>newEmail; p->data.email=newEmail; break; } } } //删除联系人 voidDelete(LinkList&L,stringname) { LinkListp=L,s; //找到需删除联系人的前一个位置 while(p->next&&p->next->data.name! =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.name>>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"<<"电子邮件"< for(inti=0;i { fout< switch(p->data.classes) { case1: { fout<<"办公类"; break; } case2: { fout<<"个人类"; break; } case3: { fout<<"商务类"; break; } } fout<<"\t"< if(i<(l-1)) fout< p=p->next; } fout.close(); } intMenu()//主菜单 { system("cls");//清屏 intchoice; cout< 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<<"请选择批量增加或单个增加(输入相应序号即可): "< cout<<"1批量增加2单个增加"< intc1; cin>>c1; if(c1==1) { cout<<"请输入新增联系人的个数: "< intnumber; cin>>number; CreateList_H(L,number);//用前插法批量增加联系人 } else//单个增加联系人 { contactsc; cout<<"请输入联系人的姓名: "; cin>>c.name; cout<<"请输入联系人的电话号码: "; cin>>c.teleNum; cout<<"请输入联系人的分类(分类如下,输入相应序号即可)"< cout<<"1办公类2个人类3商务类"< cin>>c.classes; cout<<"请输入联系人的电子邮件: "; cin>>c.email; Add(L,c); } system("pause"); break; } case2: //查看通信录 { cout<<"请输入查看联系人的类别(输入相应序号即可): "< cout<<"1办公类2个人类3商务类"< intc2; cin>>c2; cout<<"已有联系人如下: "< CheckAll(L,c2);//根据分类查看联系人信息 system("pause"); break; } case3: { cout<<"已有联系人如下: "< CheckAll(L); stringname; cout<<"请输入拨号人的姓名: "< cin>>name; Dail(L,name);//根据 system("pause"); break; } case4: { cout<<"已有联系人如下: "< CheckAll(L); stringchangeName; cout<<"请输入要修改信息的联系人姓名: "< cin>>changeName; ChangeInfo(L,changeName); system("pause"); break; } case5: { cout<<"已有联系人如下: "< CheckAll(L); stringdeleteName; cout<<"请输入要删除的联系人姓名: "< cin>>deleteName; Delete(L,deleteName); cout<<"联系人"< "< system("pause"); break; } case6: { Read(L);//导入通信录 cout<<"成功导入通信录! "< cout<<"已导入联系人姓名如下: "< CheckAll(L); system("pause"); break; } case7: { Write(L);//导出通信录 cout<<"成功导出通信录! "< system("pause"); break; } case0: { //退出系统 cout<<"感谢您对本通信录管理系统的使用! "< return0; } default: cout<<"您输入的指令有误,请重新输入! "< system("pause"); break; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 通讯 管理 系统 源代码
![提示](https://static.bdocx.com/images/bang_tan.gif)