完整word版通讯管理系统源代码Word文档下载推荐.docx
《完整word版通讯管理系统源代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整word版通讯管理系统源代码Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
#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->
data.name;
请输入联系人的电话号码:
data.teleNum;
请输入联系人的分类(分类如下,输入相应序号即可)"
<
endl;
1办公类2个人类3商务类"
cin>
data.classes;
请输入联系人的电子邮件:
data.email;
next=L->
next;
next=p;
}
//根据类别查看联系人信息
voidCheckAll(LinkListL,intc)//c是联系人类别
p=L->
姓名\t\t"
电话号码"
//表头
while(p)//当链表没到尾部时
if(p->
data.classes==c)//若符合类别则输出联系人姓名和电话号码
{
cout<
data.name<
\t\t"
data.teleNum<
}
p=p->
//重载函数,查看所有联系人
voidCheckAll(LinkListL)
p=L->
while(p)
p=p->
}
//根据姓名查找联系人
LinkListSearch(LinkListL,stringname)
while(p&
&
p->
data.name!
=name)//当链表没到尾部且没找到联系人时
returnp;
//判断链表中是否存在联系人c
charIfExist(LinkListL,contactsc)
=c.name)//根据姓名查找是否存在该联系人
if(!
p)//若到达链表尾部,则不存在
return'
n'
if(p->
data.teleNum==c.teleNum)//若找到联系人姓名
data.classes==c.classes)//依次判断电话号码、类别、电子邮件是否相同
data.email==c.email)
y'
//获取链表的长度
intLength(LinkListL)
inti=0;
LinkListp=L->
++i;
returni;
//增加联系人
intAdd(LinkList&
L,contactsc)
LinkListp,s;
if(Length(L)>
=MAXSIZE)//判断链表长度是否达到最大值
存储空间已满,无法新增联系人!
if(IfExist(L,c)=='
)//判断输入的联系人是否已经存在
对不起,您输入的联系人已存在!
//若通讯录中不存在该联系人,则增加到通信录
p=L;
s=newLNode;
s->
data=c;
next=p->
next=s;
//拨号功能
voidDail(LinkListL,stringname)
s=Search(L,name);
//根据姓名查找联系人所在
//模拟打字机效果,输出联系人电话号码
stringtele=s->
for(inti=0;
i<
tele.length();
i++)
charc=tele[i];
Sleep(500);
cout<
c;
//播放声音
//PlaySound("
E:
\\670.wav"
NULL,SND_FILENAME|SND_ASYNC);
//修改联系人信息
voidChangeInfo(LinkList&
L,stringname)
p=Search(L,name);
//找到联系人的位置所在
请输入要修改的信息(输入对应序号即可):
1姓名"
2电话号码"
3分类"
4电子邮件"
//根据选择修改联系人信息
intelec;
elec;
switch(elec)
case1:
姓名改为:
stringnewName;
newName;
data.name=newName;
break;
case2:
电话号码改为:
endl;
stringnewTele;
newTele;
data.teleNum=newTele;
case3:
分类改为(分类如下,输入相应序号即可)"
intnewCalsses;
newCalsses;
data.classes=newCalsses;
case4:
电子邮件改为:
stringnewEmail;
newEmail;
data.email=newEmail;
//删除联系人
voidDelete(LinkList&
LinkListp=L,s;
//找到需删除联系人的前一个位置
while(p->
next&
next->
=name)
s=p->
next=s->
deletes;
//删除联系人
//导入通信录
voidRead(LinkListL)
//打开文件导入通信录
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;
个人类"
c.classes=2;
商务类"
c.classes=3;
Add(L,c);
//将联系人c增加到链表中
fin.close();
//导出通信录
voidWrite(LinkListL)
intl=Length(L);
//打开文件写入通信录
ofstreamfout("
out|ios:
trunc);
fout<
姓名\t"
电话号码\t"
分类\t"
电子邮件"
l;
fout<
\t"
;
switch(p->
data.classes)
case1:
{
fout<
break;
}
case2:
case3:
}
if(i<
(l-1))
fout<
fout.close();
intMenu()//主菜单
system("
cls"
);
//清屏
intchoice;
cout<
---------------欢迎来到通信录管理系统!
--------------\n"
//主菜单显示内容
***************主菜单***************\n"
*1新增联系人*\n"
*2查看通信录*\n"
*3拨号*\n"
*4修改信息*\n"
*5删除联系人*\n"
*6导入通信录*\n"
*7导出通信录*\n"
*0退出系统*\n"
************************************\n"
请根据您的需求,输入相应的数字:
cin>
choice;
//输入选择
returnchoice;
intmain()//主函数
LinkListL;
InitList(L);
for(;
switch(Menu())//根据不同选择,执行不同的功能
case1:
cout<
请选择批量增加或单个增加(输入相应序号即可):
1批量增加2单个增加"
intc1;
cin>
c1;
if(c1==1)
cout<
请输入新增联系人的个数:
intnumber;
cin>
number;
CreateList_H(L,number);
//用前插法批量增加联系人
else//单个增加联系人
{
contactsc;
c.name;
c.teleNum;
c.classes;
Add(L,c);
}
system("
pause"
break;
//查看通信录
请输入查看联系人的类别(输入相应序号即可):
1办公类2个人类3商务类"
intc2;
c2;
已有联系人如下:
CheckAll(L,c2);
//根据分类查看联系人信息
system("
{
CheckAll(L);
stringname;
请输入拨号人的姓名:
name;
Dail(L,name);
//根据
CheckAll(L);
stringchangeName;
请输入要修改信息的联系人姓名:
changeName;
ChangeInfo(L,changeName);
case5:
stringdeleteName;
请输入要删除的联系人姓名:
deleteName;
Delete(L,deleteName);
联系人"
deleteName<
已删除!
case6:
Read(L);
成功导入通信录!
已导入联系人姓名如下:
CheckAll(L);
break;
}
case7:
Write(L);
成功导出通信录!
break;
case0:
//退出系统
cout<
感谢您对本通信录管理系统的使用!
return0;
default:
cout<
您输入的指令有误,请重新输入!
//输入错误指令时给予提示