电话簿管理程序设C++.docx
《电话簿管理程序设C++.docx》由会员分享,可在线阅读,更多相关《电话簿管理程序设C++.docx(13页珍藏版)》请在冰豆网上搜索。
电话簿管理程序设C++
综合实验电话簿管理程序设
一、实验目的
综合运用面向对象程序设计的基础知识,设计一个小型的应用程序,提高解决问题的能力。
二、实验内容
设计一个电话簿管理程序,要求:
1、具有添加、删除、显示、修改和查询联系人电话号码的功能。
2、联系人的信息保存到文件中。
3、可以实现为控制台程序或图形界面程序。
4、按学院实验报告要求格式书写实验报告。
三、实验原理:
实验中涉及了类的构造,用类book实现对数据的封装,函数的调用,用成员函数voidadd_person(),voiddel_person(),voidshow_all(),voidalter(),voidselect(),实现文件的添加、删除、显示、修改和查询功能。
四、实现环境:
vc++6.0环境下运行
六、实现程序如下:
#include
#include
#include
#include
#include
usingnamespacestd;
classbook
{
public:
book();//默认构造函数
charinter_face();//首页
voidadd_person();//添加联系人
voiddel_person();//删除联系人
voidshow_all();//显示所有联系人
voidalter();//修改信息
voidselect();//查询联系人
voidselect();//保存新增加的联系人
private:
stringname;//姓名
stringnumber;//电话号码
};
Book:
:
book()
{Name="\0";
number="\0";
}//首页
charbook:
:
inter_face()
{system("cls");
cout<cout<<"\t\t通迅录"<<<"\t\t1.添加新联系人.4.修改信息."<<<"\t\t"<<<"\t\t2.删除联系人.5.查询联系人."<<<"\t\t"<<<"\t\t3.显示所有联系人.6.关闭通迅录."<<<"\t\t"<<<"\t\t\t选择:
";
charchoose;
cin>>choose;
fflush(stdin);
returnchoose;
}
//添加联系人
voidbook:
:
add_person()
{
cout<<<"姓名:
";
cin>>name;
fflush(stdin);
cout<<"电话:
";
cin>>number;
fflush(stdin);
save_new();
cout<"<system("pause");
}//删除联系人
voidbook:
:
del_person()
{
ofstreamoutData("temp.txt",ios:
:
out);
ifstreaminData("pbook.txt",ios:
:
in);//
if(!
outData||!
inData)
{
cout<找不到文件!
"<system("pause");
return;
}
stringsign;
cout<";
cin>>sign;
stringstr1;
boolflag=true;
stringstr;
while(inData>>name>>number)
{
getline(inData,str);
if((sign==name)||(sign==number))
{
cout<"<cout<cout<:
left)<<<""<flag=false;
break;
}
outData<:
left)<<<""<}
if(flag)
{
cout<联系人中没你找的人!
"<}
else
{
while(getline(inData,str))
{
outData<}
outData.close();
inData.close();
ofstreamout("pbook.txt",ios:
:
out);
ifstreamin("temp.txt",ios:
:
in);
if(!
out||!
in)
{cout<!
!
"<system("pause");
return;
}
while(getline(in,str))
{out<}
out.close();//
in.close();
cout<!
!
"<}
system("pause");
}
//显示所有联系人
voidbook:
:
show_all()
{
ifstreaminData("pbook.txt",ios:
:
in);
if(!
inData)
{
cout<!
!
!
没有找到文件!
!
!
!
!
"<system("pause");
return;
}
boolflag=true;
stringrecord;
while(getline(inData,record))
{
if(flag)
{
cout<"<}
cout<flag=false;
}
if(flag)
{
cout<"<}
else
{
cout<"<}
system("pause");
}
//修改信息
voidbook:
:
alter()
{
ofstreamoutData("temp.txt",ios:
:
out);
ifstreaminData("pbook.txt",ios:
:
in);//
if(!
outData||!
inData)
{
cout<找不到文件!
"<system("pause");
return;
}
stringsign;
cout<";
cin>>sign;
stringstr1;
boolflag=true;
stringstr;
while(inData>>name>>number)
{
getline(inData,str);
if((sign==name)||(sign==number))
{
cout<"<cout<cout<:
left)<<<""<cout<"<cout<<"姓名:
";
cin>>name;
fflush(stdin);
cout<<"电话号:
";
cin>>number;
fflush(stdin);
save_new();
flag=false;
break;
}
outData<:
left)<<<""<}
if(flag)
{
cout<联系人中没你找的人!
"<}
else
{
while(getline(inData,str))
{
outData<}
outData.close();
inData.close();
ofstreamout("pbook.txt",ios:
:
out);
ifstreamin("temp.txt",ios:
:
in);
if(!
out||!
in)
{
cout<"<system("pause");
return;
}
while(getline(in,str))
{
out<}
out.close();
in.close();
cout<"<}
system("pause");
}
//查询联系人
voidbook:
:
select()
{ifstreaminData("pbook.txt",ios:
:
in);
if(!
inData)
{
cout<文件找不到!
"<system("pause");
return;
}
stringsign;
cout<";
cin>>sign;
fflush(stdin);
stringstr1;
boolflag=true;
stringstr;
while(inData>>name>>number)
{getline(inData,str);
if((name==sign)||(number==sign))
{
cout<"<cout<cout<:
left)<<flag=false;
system("pause");
break;}
}
}
voidbook:
:
save_new()
{
ofstreamoutData("pbook.txt",ios:
:
app);
if(!
outData)
{
cout<打开文件失败!
"<system("pause");
return;}
outData<:
left)<<<""<<outData.close();}
enumpower{ADD='1',DEL='2',SHOW='3',Alter='4',Select='5',END='6'};
intmain()
{
charchoose;
bookabj;
while(choose=abj.inter_face())
{switch(choose)
{
caseADD:
abj.add_person();////添加联系人
break;
caseDEL:
abj.del_person();////删除联系人
break;
caseSHOW:
abj.show_all();////显示所有联系人
break;
caseAlter:
abj.alter();////修改信息
break;
caseSelect:
abj.select();////查询联系人
break;
caseEND:
cout<"<exit(0);
break;
default:
break;}}
return0;}
五、流程图:
八、实验中遇到的问题及解决方法:
局部变量不能没有初始化就使用了,例如Name="\0";需要初始化。
成员函数前没有加类名导致程序出错,书中提到必须在成员函数名前面加上类名,并且在类名与成员函数之间用:
:
间隔。
还有在类声明结束时后面一定要加;在程序中忘了加,使程序运行时出错了。
【实验总结】
第一次上机时对在c++6.0下环境还不是很熟悉,通过几次上机后,掌握了一些基本知识。
比如怎样建一个工程,怎样调试程序,怎样添加函数等的一些小问题。
不过在一些地方还是有些不懂。
通过这次实验,我也学会了一些东西,通过自己的努力和别人的帮忙和讲解,终于把程序弄出来了,程序中的插入、删除、添加、查询等问题在c语言和数据结构中也已经运用很多次了,但这次需要运用在c++在类中实现这个问题,这就需要对它有熟练的掌握了。
平时在课上学的不是很好,通过这次练习,我发现自己还有许多欠缺的地方,为了以后的学习其它本专业的知识打好基础,我还要多学一些东西来武装自己了。
【指导教师评语及成绩】
成绩:
指导教师(签字):
年月日