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

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

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

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

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

setw(12)

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&

addrlist);

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

};

voidAddrList:

:

AddSort(char*id,char*name,char*op,char*hp,char*mp,char*email)

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

Name,name)!

=0&

x2!

=NULL){x仁x2;

x2=x2->

}if(x1!

=x2)

{if(x2)

x1->

Next=x2->

deletex2;

"

已删除"

endl;

else{cout<

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

else{HeadPtr=x1->

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[O];

i=0;

while(i<

m-1)

p[i]->

Next=p[i+1];

i++;

Tag=1;

break;

case2:

x=x->

ID,p[k]->

ID)<

=0){

HeadPtr=p[0];

i++;

Tag=2;

}}

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

if(x);

inti=1;

while

(1)

cout<

setw(12)<

学号"

姓名"

办公电话setw(12)<

家庭电话"

"

移动电话"

电子邮件"

=10)

x->

Show();

if(x=x->

Next);

elsebreak;

system("

pause"

);

i=1;

释放链表空间

AddrList:

~AddrList()//

Node*x仁HeadPtr;

while(x2=x2->

Next)

deletex1;

x仁x2;

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>

>

d>

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:

binary);

out<

p->

;

OfficePhone<

MobilePhone<

while(p=p->

HomePhone<

out.close();

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

Node*x=HeadPtr;

ofstreamout(filename);

out<

办公电话"

家庭电话"

E-mail"

MobilePhone<

while(x=x->

setw(12)<

显示菜单

}voidDisplayMenu()//{

inti;

char*menu[]={"

IIII

*************II

II

******************************************II

AA"

NULL};

cls"

for(i=0;

menu[i];

i++)

menu[i]<

请选择(1--9):

voidadd(AddrList&

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

升序

添加记录"

endl<

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

endl<

请输入一个联系人数据"

学号"

家庭

电话"

电子邮件"

cin>

c>

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

cout<

添加完成"

system("

删除一个结点

删除记录"

voiddel(AddrList&

addrlist)//{

charp[30];

'

请输入一个联系人的姓名

p;

addrlist.Delete(p);

删除完成"

显示所有结点

显示所有联系人

voidshowall(AddrList&

addrlist)//{

cin»

name;

if(p=addrlist.LookUp(name))

移动电话"

电子邮件

elsecout<

未找到"

voidmodify(AddrList&

charname[30];

修改一个结点

修改联系人

请输入修改后的联系人"

ID»

Name»

OfficePhone»

HomePhone»

MobilePhone>

Email

修改完成"

}

voidaddfromtxtfile(AddrList&

charfilename[30];

从正文文件增加记录

 

filename;

从TXT文档中增加记录

请输入要加入的文件名

addrlist.CreateFromTxt(filename);

载入完成"

将链表写到正文文件中

}voidwritetotxtfile(AddrList&

导出联系人到Txt文档

请输入要导出的文件名

addrlist.WriteToTxtFile(filename);

导出完成"

voidsort(AddrList&

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

intT_T;

intchoice=0;

switch(addrlist.Tag)

case0:

{cout<

此文档未排序"

case1:

此文档已按"

姓名"

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

}case2:

请输入排序方式:

1.姓名2.学号"

T_T;

if(addrlist.Sort(T_T))

已排序"

空记录!

voidquit(AddrList&

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

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

}voidmain()

color0A"

intchoice=0,state;

charch;

通讯录数据文件.bin"

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

显示主菜单

AddrListaddrlist;

addrlist.CreateList(”表

while(choice!

=9)

DisplayMenu();

//cin>

ch;

if(ch<

'

1'

||ch>

9)continue;

choice=ch-'

O'

switch(choice)

add(addrlist);

break;

del(addrlist);

case3:

showall(addrlist);

case4:

query(addrlist);

case5:

modify(addrlist);

case6:

addfromtxtfile(addrlist);

case7:

writetotxtfile(addrlist);

case8:

sort(addrlist);

case9:

quit(addrlist);

}system("

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

当前位置:首页 > 人文社科 > 法律资料

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

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