C++简单通讯录管理 程序.docx

上传人:b****6 文档编号:13473189 上传时间:2023-06-14 格式:DOCX 页数:18 大小:17.91KB
下载 相关 举报
C++简单通讯录管理 程序.docx_第1页
第1页 / 共18页
C++简单通讯录管理 程序.docx_第2页
第2页 / 共18页
C++简单通讯录管理 程序.docx_第3页
第3页 / 共18页
C++简单通讯录管理 程序.docx_第4页
第4页 / 共18页
C++简单通讯录管理 程序.docx_第5页
第5页 / 共18页
C++简单通讯录管理 程序.docx_第6页
第6页 / 共18页
C++简单通讯录管理 程序.docx_第7页
第7页 / 共18页
C++简单通讯录管理 程序.docx_第8页
第8页 / 共18页
C++简单通讯录管理 程序.docx_第9页
第9页 / 共18页
C++简单通讯录管理 程序.docx_第10页
第10页 / 共18页
C++简单通讯录管理 程序.docx_第11页
第11页 / 共18页
C++简单通讯录管理 程序.docx_第12页
第12页 / 共18页
C++简单通讯录管理 程序.docx_第13页
第13页 / 共18页
C++简单通讯录管理 程序.docx_第14页
第14页 / 共18页
C++简单通讯录管理 程序.docx_第15页
第15页 / 共18页
C++简单通讯录管理 程序.docx_第16页
第16页 / 共18页
C++简单通讯录管理 程序.docx_第17页
第17页 / 共18页
C++简单通讯录管理 程序.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++简单通讯录管理 程序.docx

《C++简单通讯录管理 程序.docx》由会员分享,可在线阅读,更多相关《C++简单通讯录管理 程序.docx(18页珍藏版)》请在冰点文库上搜索。

C++简单通讯录管理 程序.docx

C++简单通讯录管理程序

#include

#include

#include

#include

#include

#include

classAddrList;

classNode

{

charID[20];

charName[20];

charOfficePhone[20];

charHomePhone[20];

charMobilePhone[20];

charEmail[20];

Node*Next;

public:

Node(char*id=0,char*name=0,char*op=0,char*hp=0,char*mp=0,char*email=0,Node*next=NULL)

{

strcpy(ID,id);

strcpy(Name,name);

strcpy(OfficePhone,op);

strcpy(HomePhone,hp);

strcpy(MobilePhone,mp);

strcpy(Email,email);

Next=next;

}

voidShow()

{

cout<

}

friendclassAddrList;

friendvoidadd(AddrList&addrlist);

friendvoidquery(AddrList&addrlist);

friendvoidmodify(AddrList&addrlist);

};

classAddrList

{

Node*HeadPtr;

intTag;

public:

AddrList(Node*headptr=NULL,Node*tailptr=NULL,inttag=0)

{//构造函数,创建空链表,将Tag的值置为1

HeadPtr=headptr;

Tag=tag;

}//将p指向的结点加入到链表尾部

voidAddSort(char*id,char*name,char*op,char*hp,char*mp,char*email);//将p指向的结点按Tag指定的顺序插入到链表中

Node*LookUp(char*name);//按姓名查找结点,返回该结点指针

voidDelete(char*name);//删除指定姓名的结点

intSort(int);//按tag指定的关键字重新排序

intShowAll();//显示全部结点,每10个显示一//取Tag的值//统计链表中结点个数//取首指针

~AddrList();//释放链表空间

voidCreateList(char*filename);//从二进制文件中读入数据,构造链表

voidWriteToFile(char*filename);//将链表中数据写入指定的二制文件

voidWriteToTxtFile(char*filename);//将链表写到文本文件中

voidCreateFromTxt(char*filename);

friendvoidsort(AddrList&addrlist);//按姓名或办公室电话排序

};

voidAddrList:

:

AddSort(char*id,char*name,char*op,char*hp,char*mp,char*email)//将p指向的结点按Tag指定的顺序插入到链表中

{

Node*p;

p=newNode(id,name,op,hp,mp,email);

Node*x1=HeadPtr;

Node*x2=x1;

if(id)

{

if(HeadPtr)

{

while(x1=x1->Next){x2=x1;}

x2->Next=p;

p->Next=NULL;

}

elseHeadPtr=p,p->Next=NULL;

}

}

Node*AddrList:

:

LookUp(char*name)//按姓名查找结点,返回该结点指针

{

Node*x=HeadPtr;

while(x!

=NULL&&strcmp(x->Name,name)!

=0){x=x->Next;}

if(x){returnx;}

elsereturn0;

}

voidAddrList:

:

Delete(char*name)//删除指定姓名的结点

{

Node*x1=HeadPtr;

Node*x2=x1;

while(strcmp(x2->Name,name)!

=0&&x2!

=NULL){x1=x2;x2=x2->Next;}

if(x1!

=x2)

{if(x2)

{

x1->Next=x2->Next;

deletex2;

cout<<"已删除"<

}

else{cout<<"未找到,请确认后再输入"<

}

else{HeadPtr=x1->Next;deletex2;}

}

intAddrList:

:

Sort(intT_T)//按tag指定的关键字重新排序

{

switch(T_T)

{case1:

{

Node*x=HeadPtr,*t;

if(!

HeadPtr)return0;

intm=0,n=0;

Node*p[100]={0};

while(x){p[m]=x;m++;x=x->Next;}

n=m;

inti,j,k;

for(i=0;i

{

k=i;

for(j=i+1;j

{

if(strcmp(p[j]->Name,p[k]->Name)<=0)

{

k=j;

}

}

{t=p[k];p[k]=p[i];p[i]=t;}

}

HeadPtr=p[0];

i=0;

while(i

{

p[i]->Next=p[i+1];

i++;

}

p[i]->Next=NULL;

Tag=1;

break;

}

case2:

{

Node*x=HeadPtr,*t;

if(!

HeadPtr)return0;

intm=0,n=0;

Node*p[100]={0};

while(x){p[m]=x;m++;x=x->Next;}

n=m;

inti,j,k;

for(i=0;i

{

k=i;

for(j=i+1;j

{

if(strcmp(p[j]->ID,p[k]->ID)<=0)

{

k=j;

}

}

{t=p[k];p[k]=p[i];p[i]=t;}

}

HeadPtr=p[0];

i=0;

while(i

{

p[i]->Next=p[i+1];

i++;

}

p[i]->Next=NULL;

Tag=2;

break;}}

}

intAddrList:

:

ShowAll()//显示全部结点,每10个显示一屏

{

Node*x=HeadPtr;

if(x);

elsereturn0;

inti=1;

while

(1)

{

cout<

while(i<=10)

{

x->Show();

i++;

if(x=x->Next);

elsebreak;

}

system("pause");

i=1;

if(x);

elsebreak;

}

}

AddrList:

:

~AddrList()//释放链表空间

{

Node*x1=HeadPtr;

Node*x2=x1;

while(x2=x2->Next)

{

deletex1;

x1=x2;

}

deletex2;

}

voidAddrList:

:

CreateList(char*filename)//从二进制文件中读入数据,构造链表

{

chara[30]={0},b[30]={0},c[30]={0},d[30]={0},e[30]={0},f[30]={0};

ifstreamin(filename,ios:

:

binary);

while(in>>a)

{

in>>b>>c>>d>>e>>f;

AddSort(a,b,c,d,e,f);

}

in.close();

}

voidAddrList:

:

CreateFromTxt(char*filename)//从文本文件中读入数据,构造链表

{

chara[30],b[30],c[30],d[30],e[30],f[30];

ifstreamin(filename);

while(in>>a)

{

in>>b>>c>>d>>e>>f;

AddSort(a,b,c,d,e,f);

}

}

voidAddrList:

:

WriteToFile(char*filename)//将链表中数据写入指定的二进制文件

{

Node*p=HeadPtr;

ofstreamout(filename,ios:

:

binary);

out<ID<<"";

out<Name<<"";

out<OfficePhone<<"";

out<HomePhone<<"";

out<MobilePhone<<"";

out<Email<<"";

while(p=p->Next)

{

out<ID<<"";

out<Name<<"";

out<OfficePhone<<"";

out<HomePhone<<"";

out<MobilePhone<<"";

out<Email<<"";

}

out.close();

}

voidAddrList:

:

WriteToTxtFile(char*filename)//将链表写到文本文件中

{

Node*x=HeadPtr;

ofstreamout(filename);

out<

out<ID<Name<OfficePhone<HomePhone<MobilePhone<Email<

while(x=x->Next)

{

out<ID<Name<OfficePhone<HomePhone<MobilePhone<Email<

}

out.close();

}

voidDisplayMenu()//显示菜单

{

inti;

char*menu[]={"",

"",

"",

"",

"***********小巧通讯录管理系统*************",

"",

"1.新增一个联系人",

"2.删除一个联系人",

"3.显示所有联系人",

"4.查找联系人",

"5.更改联系人记录",

"6.从TXT文档中增加记录",

"7.导出联系人到Txt文档",

"8.排序",

"9.退出",

"",

"******************************************",

""

"^_^欢迎使用^_^",

NULL};

system("cls");

for(i=0;menu[i];i++)

cout<

cout<<"请选择(1--9):

";

}

voidadd(AddrList&addrlist)//按当前Tag标志插入结点,插入结点后,链表仍然保持升序

{

system("cls");

chara[30],b[30],c[30],d[30],e[30],f[30];

cout<<"添加记录"<

"**************************************"<

"请输入一个联系人数据"<

cout<<"学号"<

cin>>a>>b>>c>>d>>e>>f;

addrlist.AddSort(a,b,c,d,e,f);

cout<<"添加完成"<

system("pause");

}

voiddel(AddrList&addrlist)//删除一个结点

{

system("cls");

charp[30];

cout<<"删除记录"<

"**************************************"<

"请输入一个联系人的姓名"<

cin>>p;

addrlist.Delete(p);

cout<<"删除完成"<

system("pause");

}

voidshowall(AddrList&addrlist)//显示所有结点

{

system("cls");

cout<<"显示所有联系人"<

"**************************************"<

if(addrlist.ShowAll());

elsecout<<"空记录!

"<

system("pause");

}

voidquery(AddrList&addrlist)//按姓名查找一个结点

{

system("cls");

charname[30];

Node*p;

cout<<"查找联系人"<

"**************************************"<

"请输入一个联系人的姓名"<

cin>>name;

if(p=addrlist.LookUp(name))

{

cout<ID<Name<OfficePhone<HomePhone<MobilePhone<Email<

}

elsecout<<"未找到"<

system("pause");

}

voidmodify(AddrList&addrlist)//修改一个结点

{

system("cls");

charname[30];

Node*p;

cout<<"修改联系人"<

"**************************************"<

"请输入一个联系人的姓名"<

cin>>name;

if(p=addrlist.LookUp(name))

{

cout<<"请输入修改后的联系人"<

cout<<"学号"<

cin>>p->ID>>p->Name>>p->OfficePhone>>p->HomePhone>>p->MobilePhone>>p->Email;

cout<<"修改完成"<

}

elsecout<<"未找到"<

system("pause");

}

voidaddfromtxtfile(AddrList&addrlist)//从正文文件增加记录

{

system("cls");

charfilename[30];

cout<<"从TXT文档中增加记录"<

"**************************************"<

"请输入要加入的文件名"<

cin>>filename;

addrlist.CreateFromTxt(filename);

cout<<"载入完成"<

system("pause");

}

voidwritetotxtfile(AddrList&addrlist)//将链表写到正文文件中

{

system("cls");

charfilename[30];

cout<<"导出联系人到Txt文档"<

"**************************************"<

"请输入要导出的文件名"<

cin>>filename;

addrlist.WriteToTxtFile(filename);

cout<<"导出完成"<

system("pause");

}

voidsort(AddrList&addrlist)//按姓名或办公室电话排序

{

system("cls");

intT_T;

intchoice=0;

switch(addrlist.Tag)

{

case0:

{cout<<"此文档未排序"<

case1:

{cout<<"此文档已按"<<"姓名"<<"排序,将按另一种方式排序"<

case2:

{cout<<"此文档已按"<<"学号"<<"排序,将按另一种方式排序"<

}

cout<<"请输入排序方式:

1.姓名2.学号"<

cin>>T_T;

if(addrlist.Sort(T_T))

cout<<"已排序"<

elsecout<<"空记录!

";

system("pause");

}

voidquit(AddrList&addrlist)//退出前将链表写入二进制文件中

{

addrlist.WriteToFile("通讯录数据文件.bin");

}

voidmain()

{

system("color0A");

intchoice=0,state;

charch;

AddrListaddrlist;

addrlist.CreateList("通讯录数据文件.bin");//从二进制文件中读入数据,构建链表

while(choice!

=9)

{

DisplayMenu();//显示主菜单

cin>>ch;

if(ch<'1'||ch>'9')continue;

choice=ch-'0';

switch(choice)

{

case1:

add(addrlist);break;

case2:

del(addrlist);break;

case3:

showall(addrlist);break;

case4:

query(addrlist);break;

case5:

modify(addrlist);break;

case6:

addfromtxtfile(addrlist);break;

case7:

writetotxtfile(addrlist);break;

case8:

sort(addrlist);break;

case

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2