C++简单通讯录管理 程序Word格式文档下载.docx

上传人:b****5 文档编号:17764096 上传时间:2022-12-09 格式:DOCX 页数:15 大小:17.97KB
下载 相关 举报
C++简单通讯录管理 程序Word格式文档下载.docx_第1页
第1页 / 共15页
C++简单通讯录管理 程序Word格式文档下载.docx_第2页
第2页 / 共15页
C++简单通讯录管理 程序Word格式文档下载.docx_第3页
第3页 / 共15页
C++简单通讯录管理 程序Word格式文档下载.docx_第4页
第4页 / 共15页
C++简单通讯录管理 程序Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

C++简单通讯录管理 程序Word格式文档下载.docx

《C++简单通讯录管理 程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++简单通讯录管理 程序Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

C++简单通讯录管理 程序Word格式文档下载.docx

HomePhone<

MobilePhone<

setw(20)<

Email<

endl;

}

friendclassAddrList;

friendvoidadd(AddrList&

addrlist);

friendvoidquery(AddrList&

friendvoidmodify(AddrList&

};

classAddrList

Node*HeadPtr;

intTag;

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&

//按姓名或办公室电话排序

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->

Node*AddrList:

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

Node*x=HeadPtr;

while(x!

=NULL&

&

strcmp(x->

Name,name)!

=0){x=x->

Next;

if(x){returnx;

elsereturn0;

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

Node*x2=x1;

while(strcmp(x2->

=0&

x2!

=NULL){x1=x2;

x2=x2->

if(x1!

=x2)

{if(x2)

x1->

Next=x2->

deletex2;

cout<

"

已删除"

else{cout<

未找到,请确认后再输入"

else{HeadPtr=x1->

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->

n=m;

inti,j,k;

for(i=0;

i<

n-1;

i++)

{

k=i;

for(j=i+1;

j<

n;

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<

m-1)

p[i]->

Next=p[i+1];

i++;

p[i]->

Tag=1;

break;

case2:

ID,p[k]->

ID)<

Tag=2;

}}

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

if(x);

inti=1;

while

(1)

cout<

setw(12)<

学号"

姓名"

办公电话"

家庭电话"

"

移动电话"

电子邮件"

=10)

x->

Show();

if(x=x->

Next);

elsebreak;

system("

pause"

);

i=1;

if(x);

elsebreak;

AddrList:

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

Node*x1=HeadPtr;

while(x2=x2->

Next)

deletex1;

x1=x2;

deletex2;

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();

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

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

ifstreamin(filename);

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

Node*p=HeadPtr;

ofstreamout(filename,ios:

out<

p->

;

while(p=p->

out<

out.close();

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

Node*x=HeadPtr;

ofstreamout(filename);

out<

E-mail"

x->

while(x=x->

setw(12)<

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<

menu[i]<

cout<

请选择(1--9):

voidadd(AddrList&

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

添加记录"

endl<

**************************************"

请输入一个联系人数据"

cin>

a>

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

添加完成"

voiddel(AddrList&

addrlist)//删除一个结点

charp[30];

删除记录"

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

p;

addrlist.Delete(p);

删除完成"

voidshowall(AddrList&

addrlist)//显示所有结点

显示所有联系人"

if(addrlist.ShowAll());

elsecout<

空记录!

voidquery(AddrList&

addrlist)//按姓名查找一个结点

charname[30];

查找联系人"

name;

if(p=addrlist.LookUp(name))

未找到"

voidmodify(AddrList&

addrlist)//修改一个结点

修改联系人"

请输入修改后的联系人"

cin>

ID>

Name>

OfficePhone>

HomePhone>

MobilePhone>

Email;

修改完成"

voidaddfromtxtfile(AddrList&

addrlist)//从正文文件增加记录

charfilename[30];

从TXT文档中增加记录"

请输入要加入的文件名"

filename;

addrlist.CreateFromTxt(filename);

载入完成"

voidwritetotxtfile(AddrList&

addrlist)//将链表写到正文文件中

导出联系人到Txt文档"

请输入要导出的文件名"

addrlist.WriteToTxtFile(filename);

导出完成"

voidsort(AddrList&

addrlist)//按姓名或办公室电话排序

intT_T;

intchoice=0;

switch(addrlist.Tag)

case0:

{cout<

此文档未排序"

break;

case1:

此文档已按"

排序,将按另一种方式排序"

请输入排序方式:

1.姓名2.学号"

T_T;

if(addrlist.Sort(T_T))

已排序"

voidquit(AddrList&

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

addrlist.WriteToFile("

通讯录数据文件.bin"

voidmain()

color0A"

intchoice=0,state;

charch;

AddrListaddrlist;

addrlist.CreateList("

//从二进制文件中读入数据,构建链表

while(choice!

=9)

DisplayMenu();

//显示主菜单

ch;

if(ch<

'

1'

||ch>

9'

)continue;

choice=ch-'

0'

switch(choice)

add(addrlist);

break;

case2:

del(addrlist);

case3:

showall(addrlist);

case4:

query(addrlist);

case5:

modify(addrlist);

case6:

addfromtxtfile(addrlist);

case7:

writetotxtfile(addrlist);

case8:

sort(addrlist);

case

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

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1