通讯录管理系统解析.docx
《通讯录管理系统解析.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统解析.docx(46页珍藏版)》请在冰豆网上搜索。
通讯录管理系统解析
一.实验1通讯录管理系统
通讯录中的联系人包含以下信息项:
姓名、手机、办公电话、家庭电话、电子邮箱、所在省市、工作单位、家庭住址,群组分类(亲属、同事、同学、朋友、其他)。
系统的主要功能包括:
1.输入联系人的信息,要求:
至少输入10个联系人的数据,且注意数据的多样性。
2.按姓名对联系人信息进行排序,并将排序后信息存放到一个文本文件中。
3.添加联系人的信息,在已经存在的通讯录文件中添加若干个联系人。
要求:
添加后仍按联系人的姓名排序,并保存至原文件。
4.删除联系人的信息,输入一个姓名,若通讯录中有该联系人的信息,则删除该联系人,否则输出提示信息,并提示用户选择是否继续进行删除操作。
5.修改联系人的信息,输入一个姓名,根据具体需要修改该联系人的某一项信息,将修改后的信息重新保存到通讯录文件中,并提示用户选择是否继续进行修改操作。
6.按不同条件对通讯录进行查询操作,输出满足条件的联系人的信息。
(1)按姓名查询,包括精确查询(输入全名),模糊查询(输入姓);
(2)按手机号码查询,输入全部号码或号码位段(如输入130、133、139等);
(3)按群组分类查询,输入分类名称,输出该群组的全部联系人信息。
7.输出联系人的信息,按一定格式输出信息,保证信息排列整齐美观。
#include
#include
#include
#defineN100//最多能添加的联系人数
/***********************************************/
intn1=0;
intn2=0;
/*************************************************/
typedefstruct
{
charname[10];//姓名
charsex[10];//性别
charbirthday[20];//生日日期
charcellphone[15];//手机号码
chartelephone[15];//电话号码
charhomeaddress[100];//家庭地址
charQQ[15];//QQ号码
charemail[20];//电子邮件
charworkspace[100];//工作单位
charworkcity[100];//工作地址
}AddressList;
AddressListt[N];
AddressListe;
typedefstructrelatives//定义单链表
{
AddressListdata;
structrelatives*next;
}Address;
Address*h;
/*************************************************/
voidmenu();//一级菜单
voidrelatives();//亲人
voidfriends();//朋友
voidclassmates();//同学
voidworkmates();//同事
voidothers();//其他
voidSecondMenu();//二级菜单
voidInput();//插入好友信息
voidOutput();//显示好友的相关信息
voidDelete();//删除好友信息
voidSort();//按照姓名进行排序操作
voidCorrect();//给定姓名进行修改信息
voidThirdmenu();//三级菜单
voidNameFound();//查找好友信息(按照姓名)
voidCellFound();//查找好友信息(按照手机号)
voidTeleFound();//查找好友信息(按照电话号码)
/********************************************************/
voidInitList(Address*&L);
intListInsert(Address*&L,inti,AddressListe);
voidDispList(Address*L);
voidCreateListR(Address*&L,AddressLista[],intn);
intListEmpty(Address*L);
voidDispName(Address*L);
intListLength(Address*L);
intListDelete(Address*&L,inti,AddressList&e);
intLocateElem1(Address*L,AddressListe);
intLocateElem2(Address*L,AddressListe);
intLocateElem3(Address*L,AddressListe);
intGetElem(Address*L,inti,AddressList&e);
voidInsertSort(Address*L,intn);
voidDestroyList(Address*&L);
/*****************************************************************************************/
intName(Address*&L,inti,charnewname[]);
intSex(Address*&L,inti,charnewsex[]);
intBirthday(Address*&L,inti,charnewbirthday[]);
intCellphone(Address*&L,inti,charnewcellphone[]);
intTelephone(Address*&L,inti,charnewtelephone[]);
intHomeaddress(Address*&L,inti,charnewhomeaddress[]);
intQq(Address*&L,inti,charnewQQ[]);
intEmail(Address*&L,inti,charnewemail[]);
intWorkspace(Address*&L,inti,charnewworkspace[]);
intWorkcity(Address*&L,inti,charnewworkcity[]);
/*****************************************************************************************/
voidInput()
{
if(n1==0)
{
//intn1;
printf("\t*******************添加联系人功能的实现**********************\n");
printf("很高兴为你服务,请输入添加的联系人个数:
");
scanf("%d",&n1);
for(inti=0;i{
printf("请输入第%d个联系人的详细信息\n",i+1);
printf("姓名:
");
scanf("%s",t[i].name);
printf("性别:
");
scanf("%s",t[i].sex);
printf("生日日期:
");
scanf("%s",t[i].birthday);
printf("手机号码:
");
scanf("%s",t[i].cellphone);
printf("电话号码:
");
scanf("%s",t[i].telephone);
printf("家庭住址:
");
scanf("%s",t[i].homeaddress);
printf("QQ号码:
");
scanf("%s",t[i].QQ);
printf("电子邮件:
");
scanf("%s",t[i].email);
printf("工作单位:
");
scanf("%s",t[i].workspace);
printf("工作地址:
");
scanf("%s",t[i].workcity);
}
for(intj=0;j{
ListInsert(h,j+1,t[j]);
//CreateListR(h,t,n1);
}
printf("添加完成!
\n");
}
else
{
n2=n1;
printf("\t*******************添加联系人功能的实现**********************\n");
printf("很高兴为你服务,请输入添加的联系人个数:
");
scanf("%d",&n1);
for(inti=n2;i{
printf("请输入第%d个联系人的详细信息\n",i+1);
printf("姓名:
");
scanf("%s",t[i].name);
printf("性别:
");
scanf("%s",t[i].sex);
printf("生日日期:
");
scanf("%s",t[i].birthday);
printf("手机号码:
");
scanf("%s",t[i].cellphone);
printf("电话号码:
");
scanf("%s",t[i].telephone);
printf("家庭住址:
");
scanf("%s",t[i].homeaddress);
printf("QQ号码:
");
scanf("%s",t[i].QQ);
printf("电子邮件:
");
scanf("%s",t[i].email);
printf("工作单位:
");
scanf("%s",t[i].workspace);
printf("工作地址:
");
scanf("%s",t[i].workcity);
for(intj=n2;j{
ListInsert(h,j+1,t[j]);
//CreateListR(h,t,n1);
}
printf("添加完成!
\n");
}
n1=n2+n1;
}
}
voidOutput()
{
printf("显示好友信息功能\n");
printf("通信录中所有联系人详细信息如下:
\n");
DispList(h);
}
voidDelete()
{
intm;
printf("删除功能的实现算法\n");
printf("%s\n",(ListEmpty(h)?
"老大,拜托!
通信录是空的!
\n":
"删除功能正常....\n"));
printf("通信录中共有%d个联系!
\n",ListLength(h));
if(ListLength(h)==0)
{
SecondMenu();
}
else
{
printf("通信录中所有联系人姓名如下:
\n");
DispName(h);
}
printf("请输入你想删除的联系人前面的序号(1——%d):
",ListLength(h));
scanf("%d",&m);
ListDelete(h,m,e);
printf("你删除的联系人的详细信息有:
\n");
printf("*姓名*:
%s\n",e.name);
printf("*性别*:
%s\n",e.sex);
printf("*生日日期*:
%s\n",e.birthday);
printf("*手机号码*:
%s\n",e.cellphone);
printf("*电话号码*:
%s\n",e.telephone);
printf("*家庭住址*:
%s\n",e.homeaddress);
printf("*QQ号码*:
%s\n",e.QQ);
printf("*电子邮件*:
%s\n",e.email);
printf("*工作单位*:
%s\n",e.workspace);
printf("*工作地址*:
%s\n",e.workcity);
}
voidSort()
{
printf("排序功能\n");
printf("%s\n",(ListEmpty(h)?
"老大,拜托!
通信录是空的!
\n":
"排序功能正常....\n"));
printf("通信录中共有%d个联系!
\n",ListLength(h));
InsertSort(h,ListLength(h));
}
voidCorrect()
{
charnewsex[10];
charnewname[10];
charnewbirthday[20];
charnewcellphone[15];
charnewtelephone[15];
charnewhomeaddress[100];
charnewQQ[15];
charnewemail[20];
charnewworkspace[100];
charnewworkcity[100];
intnum;
intnumber;
AddressListf;
printf("修改功能\n");
printf("%s\n",(ListEmpty(h)?
"老大,拜托!
通信录是空的!
\n":
"修改功能正常....\n"));
printf("通信录中共有%d个联系!
\n",ListLength(h));
if(ListLength(h)==0)
{
SecondMenu();
}
else
{
printf("通信录中所有联系人姓名如下:
\n");
DispName(h);
}
printf("请输入你想要修改的联系人姓名:
");
scanf("%s",f.name);
printf("你要修改的联系人的序号是%d\n",LocateElem1(h,f));
printf("***********************你具有的修改权限如下**************************\n");
printf("---------------------------------------------------------------------\n");
printf("||\t1.姓名2.性别3.生日日期4.手机号码5.电话号码\t||\n");
printf("||\t6.家庭地址7.QQ号码8.电子邮件9.工作单位10.工作地址\t||\n");
printf("---------------------------------------------------------------------\n");
printf("请输入你想修改的总项数:
");
scanf("%d",&num);
printf("\n");
for(inti=0;i{
printf("请输入你想修改的选项的序号<1——10>:
");
scanf("%d",&number);
if(number==1)
{
printf("姓名修改:
");
scanf("%s",newname);
Name(h,LocateElem1(h,f),newname);
}
elseif(number==2)
{
printf("性别修改:
");
scanf("%s",newsex);
Sex(h,LocateElem1(h,f),newsex);
}
elseif(number==3)
{
printf("生日日修改:
");
scanf("%s",newbirthday);
Birthday(h,LocateElem1(h,f),newbirthday);
}
elseif(number==4)
{
printf("手机号码修改:
");
scanf("%s",newcellphone);
Cellphone(h,LocateElem1(h,f),newcellphone);
}
elseif(number==5)
{
printf("电话号码修改:
");
scanf("%s",newtelephone);
Telephone(h,LocateElem1(h,f),newtelephone);
}
elseif(number==6)
{
printf("家庭住址修改:
");
scanf("%s",newhomeaddress);
Homeaddress(h,LocateElem1(h,f),newhomeaddress);
}
elseif(number==7)
{
printf("QQ号码修改:
");
scanf("%s",newQQ);
Qq(h,LocateElem1(h,f),newQQ);
}
elseif(number==8)
{
printf("电子邮件修改:
");
scanf("%s",newemail);
Email(h,LocateElem1(h,f),newemail);
}
elseif(number==9)
{
printf("工作单位修改:
");
scanf("%s",newworkspace);
Workspace(h,LocateElem1(h,f),newworkspace);
}
elseif(number==10)
{
printf("工作地址修改\n");
scanf("%s",newworkcity);
Workcity(h,LocateElem1(h,f),newworkcity);
}
else
{
printf("没有其它选项,请重新输入!
\n");
}
//continue;
}
}
voidNameFound()
{
AddressListr;
AddressListf;
printf("按照姓名进行查找功能\n");
printf("请输入你想要查询的联系人姓名:
");
scanf("%s",f.name);
printf("你要查找的联系人在通信录中的位置是%d\n",LocateElem1(h,f));//有问题没有解决
printf("%s的详细信息如下:
\n",f.name);
GetElem(h,LocateElem1(h,f),r);
Thirdmenu();
}
voidCellFound()
{
AddressListr;
AddressListf;
printf("按照手机号进行查找功能\n");
printf("请输入你想要查询的联系人手机号:
");
scanf("%s",f.cellphone);
printf("你要查找的联系人在通信录中的位置是%d\n",LocateElem2(h,f));//有问题没有解决
printf("%s的详细信息如下:
\n",f.cellphone);
GetElem(h,LocateElem2(h,f),r);
Thirdmenu();
}
voidTeleFound()
{
AddressListr;
AddressListf;
printf("按照电话号码进行查找功能\n");
printf("请输入你想要查询的联系人电话号码:
");
scanf("%s",f.telephone);
printf("你要查找的联系人在通信录中的位置是%d\n",LocateElem3(h,f));//有问题没有解决
printf("%s的详细信息如下:
\n",f.telephone);
GetElem(h,LocateElem3(h,f),r);
Thirdmenu();
}
/**************************************************************************************/
voidrelatives()
{
printf("亲人模块\n");
SecondMenu();
};
voidfriends()
{
printf("朋友模块\n");
SecondMenu();
}
voidclassmates()
{
printf("同学模块\n");
SecondMenu();
}
voidworkmates()
{
printf("同事模块\n");
SecondMenu();
}
voidothers()
{
printf("其他模块\n");
SecondMenu();
}
/******************************************************************************************/
/*--------一级主菜单-----------*/
voidmenu()
{
inti;
intnum1;
printf("\t*********************<<通讯录管理程序>>**********************\n");
printf("\n");
printf("\n");
printf("\t***亲人<1>*****朋友<2>*****同学<3>*****同事<4>*****其他<5>***\n");
printf("\n");
printf("很高兴能为你服务,请输入你的选择(1、2、3、4、5):
");
scanf("%d",&num1);
for(i=1;i<5;i++)
{
if(num1<1||num1>5)
{