C简单通讯录管理程序Word文件下载.docx
- 文档编号:22477216
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:17
- 大小:41.12KB
C简单通讯录管理程序Word文件下载.docx
《C简单通讯录管理程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《C简单通讯录管理程序Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
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)
//
//将p指向的结点
构造函数,创建空链表,将Tag的值置为1
HeadPtr=headptr;
Tag=tag;
}加入到链表尾部
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;
"
已删除"
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:
}n=m;
j++)
{if(strcmp(p[j]->
ID,p[k]->
ID)<
p[i]->
Tag=2;
break;
}}
ShowAll()//显示全部结点,每10个显示一屏
if(x);
inti=1;
while
(1)
cout<
setw(12)<
学号"
姓名"
办公电话"
家庭电话"
"
移动电话"
电子邮件"
while(i<
=10)
x->
Show();
i++;
if(x=x->
Next);
elsebreak;
}system("
pause"
);
i=1;
AddrList:
~AddrList()//释放链表空间
Node*x1=HeadPtr;
while(x2=x2->
Next)
deletex1;
x1=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>
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->
;
out<
while(p=p->
out.close();
WriteToTxtFile(char*filename)//将链表写到文本文件中
Node*x=HeadPtr;
ofstreamout(filename);
out<
学号"
姓名"
办公电话"
家庭电话"
移动电话"
E-mail"
while(x=x->
setw(12)<
voidDisplayMenu()//显示菜单
inti;
char*menu[]={"
II
***********小巧通讯录管理系统
*************H
IIII
******************************************n
j
nn
A_A欢迎使用
NULL};
system("
cls"
for(i=0;
menu[i];
i++)
menu[i]<
请选择(1--9):
voidadd(AddrList&
addrlist)//按当前Tag标志插入结点,插入结点后,链表仍然保持升序
添加记录"
endl<
请输入一个联系人数据"
学号"
办公电话"
移动电话"
cin>
a>
addrlist.AddSort(a,b,c,d,e,f);
cout<
添加完成"
system("
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)
//修改一个结点
修改联系人
{system("
charname[30];
Node*p;
if(p=addrlist.LookUp(name)){cout<
请输入修改后的联系人"
电子邮件"
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<
此文档未排序"
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();
//显示主菜单cin>
ch;
if(ch<
'
1'
||ch>
9'
)continue;
choice=ch-'
0'
switch(choice)
add(addrlist);
del(addrlist);
case3:
showall(addrlist);
case4:
query(addrlist);
case5:
modify(addrlist);
case6:
addfromtxtfile(addrlist);
case7:
writetotxtfile(addrlist);
case8:
sort(addrlist);
case9:
quit(addrlist);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 通讯录 管理程序