用链表的方法实现一个简单的电话本.docx

上传人:b****8 文档编号:9680054 上传时间:2023-05-20 格式:DOCX 页数:12 大小:16.51KB
下载 相关 举报
用链表的方法实现一个简单的电话本.docx_第1页
第1页 / 共12页
用链表的方法实现一个简单的电话本.docx_第2页
第2页 / 共12页
用链表的方法实现一个简单的电话本.docx_第3页
第3页 / 共12页
用链表的方法实现一个简单的电话本.docx_第4页
第4页 / 共12页
用链表的方法实现一个简单的电话本.docx_第5页
第5页 / 共12页
用链表的方法实现一个简单的电话本.docx_第6页
第6页 / 共12页
用链表的方法实现一个简单的电话本.docx_第7页
第7页 / 共12页
用链表的方法实现一个简单的电话本.docx_第8页
第8页 / 共12页
用链表的方法实现一个简单的电话本.docx_第9页
第9页 / 共12页
用链表的方法实现一个简单的电话本.docx_第10页
第10页 / 共12页
用链表的方法实现一个简单的电话本.docx_第11页
第11页 / 共12页
用链表的方法实现一个简单的电话本.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

用链表的方法实现一个简单的电话本.docx

《用链表的方法实现一个简单的电话本.docx》由会员分享,可在线阅读,更多相关《用链表的方法实现一个简单的电话本.docx(12页珍藏版)》请在冰点文库上搜索。

用链表的方法实现一个简单的电话本.docx

用链表的方法实现一个简单的电话本

用链表的方法实现一个简单的电话本:

#include

#include

#include

#include

#include

usingnamespacestd;

//电话本单个成员

classundergraduate

{

private:

stringname;//姓名

stringno;//电话

public:

undergraduate*next_ptr;//指向下一个成员的链结

undergraduate(conststring&n=0,conststring&t=0);//构造

undergraduate(undergraduate&p);//拷贝构造函数

intFindName(conststring&str);//找到该成员是返回1,否则返回0

string&GetTel(){returntel_num;};//得到电话号码

string&GetName(){returnname;};//得到名字

};

//构造函数

undergraduate:

:

undergraduate(conststring&n,conststring&t)

{

name=na;

no=n;

next_ptr=NULL;

}

//拷贝构造函数

undergraduate:

:

undergraduate(undergraduate&p)

{

name=p.name;

no=p.no;

next_ptr=p.next_ptr;

}

//找到该成员

intundergraduate:

:

FindName(conststring&str)

{

if(str==name)

{

return1;

}

else

{

return0;

}

}

//电话本

classPhoneBook

{

private:

undergraduate*head_ptr;

public:

PhoneBook();//构造

voidCreate(undergraduatenewundergraduate);//添加记录

voidDelete(conststring&deletename);//删除记录

voidDeleteAll();//删除所有记录

voidFind(conststring&fname);//查找记录

voidSave();//保存到文件

voidLoad();//从文件读取

voidPrintAll();//全部打印

~PhoneBook();//析构

};

//构造函数

PhoneBook:

:

PhoneBook()

{

head_ptr=NULL;

}

//创建新记录

voidPhoneBook:

:

Create(undergraduatenewundergraduate)

{

if(head_ptr==NULL)//若为空链表直接添加记录

{

head_ptr=newPerson(newundergraduate);

}

else

{

Person*p=head_ptr;

while(p->next_ptr!

=NULL)//找到尾节点为p

{

p=p->next_ptr;

}

p->next_ptr=newundergraduate(newundergraduate);//添加记录

}

cout<<"已添加新纪录"<

}

//删除记录

voidPhoneBook:

:

Delete(conststring&deletename)

{

if(head_ptr==NULL)//头为空

{

cerr<<"还没有任何记录!

"<

system("pause");

}

elseif(head_ptr->next_ptr==NULL)//只有头

{

if(head_ptr->FindName(deletename))

{

deletehead_ptr;

head_ptr=NULL;

cout<<"已成功删除"<

}

else

{

cerr<<"未找到这条记录!

"<

system("pause");

}

}

else//其他情况

{

Person*last=head_ptr;//记录上一个链节

Person*p=last->next_ptr;

if(last->FindName(deletename))//删头

{

deletelast;

head_ptr=p;

cout<<"已成功删除"<

}

else//其他情况

{

while(p!

=NULL&&!

(p->FindName(deletename)))//遍历

{

last=last->next_ptr;

p=last->next_ptr;

}

if(p!

=NULL)//找到了

{

last->next_ptr=p->next_ptr;

deletep;

cout<<"已成功删除"<

}

else//没找到

{

cerr<<"未找到这条记录!

"<

system("pause");

}

}

}

}

//删除所有记录

voidPhoneBook:

:

DeleteAll()

{

if(head_ptr==NULL)//头为空

{

cerr<<"还没有任何记录!

"<

system("pause");

}

else

{

Person*temp=head_ptr;

while(head_ptr!

=NULL)

{

head_ptr=head_ptr->next_ptr;

deletetemp;

temp=head_ptr;

}

head_ptr=NULL;

cout<<"已删除所有联系人!

"<

}

}

//查找记录

voidPhoneBook:

:

Find(conststring&fname)

{

if(head_ptr==NULL)//头为空

{

cerr<<"还没有任何记录!

"<

system("pause");

}

else//有记录

{

Person*p=head_ptr;

while(p!

=NULL&&!

(p->FindName(fname)))//遍历

{

p=p->next_ptr;

}

if(p!

=NULL)//找到了

{

cout<

"<GetTel()<

system("pause");

}

else//没找到

{

cerr<<"未找到这条记录!

"<

system("pause");

}

}

}

//保存到文件

voidPhoneBook:

:

Save()

{

if(head_ptr==NULL)//头为空

{

cerr<<"还没有任何记录!

"<

system("pause");

}

else//有记录

{

ofstreamofile("PhoneBook.txt",ios:

:

out|ios:

:

trunc);//打开文件

if(!

ofile)

{

cerr<<"无法打开PhoneBook.txt"<

system("pause");

}

else//成功打开

{

ofile.seekp(0,ios:

:

beg);//重定位

Person*p=head_ptr;

inti=1;

ofile<<"电话本:

";

while(p!

=NULL)//遍历

{

ofile<<'\n'<

<GetName()<<'\n'

<<"电话:

"<GetTel();

p=p->next_ptr;

i++;

}

ofile.close();//关闭文件

cout<<"成功保存到文件,请查看PhoneBook.txt"<

}

}

}

//从文件中读取

voidPhoneBook:

:

Load()

{

stringfilename;

cout<<"请输入文件名(XXXXX.XXX):

"<

cin>>filename;

ifstreamifile(filename.c_str(),ios:

:

in);//打开文件

if(!

ifile)

{

cerr<<"无法打开"<

system("pause");

}

else//成功打开

{

ifile.seekg(0,ios:

:

beg);//重定位

intz;

stringstr;

getline(ifile,str);//欢迎信息

while(!

ifile.eof())

{

ifile>>z;//数字

ifile.get();//点

stringname;

stringtel;

getline(ifile,name);//名字

ifile>>tel>>tel;//电话

undergraduateper(name,tel);

Create(per);

}

Delete("");

ifile.close();

cout<<"成功从文件"<

"<

}

}

//全部打印

voidPhoneBook:

:

PrintAll()

{

if(head_ptr==NULL)//头为空

{

cerr<<"还没有任何记录!

"<

system("pause");

}

else//有记录

{

undergraduate*p=head_ptr;

inti=1;

while(p!

=NULL)//遍历

{

cout<

<GetName()<GetTel()<

p=p->next_ptr;

i++;

}

system("pause");

}

}

//析构

PhoneBook:

:

~PhoneBook()

{

undergraduate*temp=head_ptr;

while(head_ptr!

=NULL)

{

head_ptr=head_ptr->next_ptr;

deletetemp;

temp=head_ptr;

}

cout<<"已删除所有联系人!

"<

}

//功能选择

intChoice(void)

{

intch;

cout<<"\t\t\t请选择:

\n"

<<"\t\t\t1.添加新的联系人\n"

<<"\t\t\t2.删除某个联系人\n"

<<"\t\t\t3.删除所有联系人\n"

<<"\t\t\t4.查询某个联系人\n"

<<"\t\t\t5.查询所有联系人\n"

<<"\t\t\t6.将电话本导出到文件\n"

<<"\t\t\t7.从文件导入电话本\n"

<<"\t\t\t0.退出系统"<

cin>>ch;

returnch;

}

//主函数

main()

{

cout<<"\t\t\t欢迎您使用电话本系统!

\n\n"<

PhoneBookmypb;

intch;

while(ch=Choice())

{

switch(ch)

{

case1:

//新增联系人

{

stringname;

stringtel;

cout<<"请输入联系人姓名:

"<

cin.get();

getline(cin,name);

cout<<"请输入联系人电话:

"<

cin>>tel;

undergraduateper(name,tel);

mypb.Create(per);

break;

}

case2:

//删除联系人

{

stringdeletename;

cout<<"请输入要删除的联系人姓名:

"

<

cin.get();

getline(cin,deletename);

mypb.Delete(deletename);

break;

}

case3:

//删除所有联系人

{

mypb.DeleteAll();

break;

}

case4:

//查询某个联系人

{

stringfname;

cout<<"请输入要查询的联系人姓名:

"

<

cin.get();

getline(cin,fname);

mypb.Find(fname);

break;

}

case5:

//查询所有联系人

{

mypb.PrintAll();

break;

}

case6:

//将电话本导出到文件

{

mypb.Save();

break;

}

case7:

//从文件导入电话本

{

mypb.Load();

break;

}

default:

{

cerr<<"输入错误,请重新输入!

"<

break;

}

}

}

cout<<"感谢您使用电话本系统,再见!

"<

system("pause");

return0;

}

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

当前位置:首页 > 法律文书

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

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