通讯录课程设计.docx
《通讯录课程设计.docx》由会员分享,可在线阅读,更多相关《通讯录课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
![通讯录课程设计.docx](https://file1.bdocx.com/fileroot1/2023-1/27/8c65f65c-94f7-46eb-ac2d-89de1945f30b/8c65f65c-94f7-46eb-ac2d-89de1945f30b1.gif)
通讯录课程设计
《通讯录》
程序设计基础课程设计报告
专业:
电子信息工程
班级:
2007级2班
学号:
2007082074
姓名:
张东地
指导教师:
常耀辉
二OO八年六月三十日
目录
一、编程目的:
…………………………………………………………2
二、设计要求:
…………………………………………………………2
三、各函数功能说明:
………………………………………………....2
四、结构图:
…………………………………………………………..11
五、函数流程图………………………………………………………11
六、运行结果…………………………………………………………14
七、总结:
……………………………………………………………..14
参考书目:
………………………………………………………………15
一、编程目的:
建立一个通讯录,并对它进行增加、查询、删除、修改、显示记录等操作。
二、设计要求:
结构体中应包括姓名,住宅电话,办公室电话,手机号,通讯地址等字段。
第一个模块--主函数main()的功能是:
根据选单的选项调用各函数,并完成相映的功能.
第二个模块--Menu()的功能是:
显示英文提示选单.
第三个模块--Quit()的功能是退出选单.
第四个模块--Creat()的功能是:
创建新的通讯录.
第五个模块--Add()的功能是:
在通讯录的末尾,写入新的信息,并返回选单.
第六个模块--Find()的功能是:
查询某人的信息如果找到了,则显示该人的信息,如果未找到,则显示通讯录中没有此人的信息,并返回选单。
第七个模块--Alter()的功能是:
修改某人信息,如果未找到则显示通讯录中无此人信息,并返回菜单
第八个模块--Delete()的功能是:
删除某人的信息,如果未找到要修改的某人的信息,则提示通讯录中没有此人的信息,并返回选单。
第九个模块--List的功能是:
显示通讯录中的所有记录。
第十个模块--save()的功能:
存储数据放在f.dat。
三、各函数功能说明:
#include//清屏
#include//清屏
#include
#include
#include
#include
#include
usingnamespacestd;
structNUM//电话本结构体
{
stringhom;
stringoff;
stringtel;
};
structBOOK//定义结构体类型BOOK
{
stringname;
NUMnums[10];
stringaddr;
}book[10];
voidchose();
voidQuit();
statici=0;
voidmenu()//菜单函数
{
system("CLS");
cout<cout<<"\t\t★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"<<<"\t\t☆☆"<<<"\t\t★Recordopenlyandfast★"<<<"\t\t☆☆"<<<"\t\t★1.Add(添加).4.Modification(修改).★"<<<"\t\t☆☆"<<<"\t\t★2.Deletion(删除).5.Inquiry(查询).★"<<<"\t\t☆☆"<<<"\t\t★3.Reveal(输出).6.Withdraw(退出).★"<<<"\t\t☆☆"<<<"\t\t★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"<<<"\t\t\tchose:
";
chose();
}
voidsave()//保存数据
{
ofstreamoutfile("f.dat");
if(!
outfile)
{
cerr<<"Itisunabletoopen!
!
"<exit
(1);
}
inth=0;
do
{
outfile<<<""<<<""<<<""<<<""<h++;
}while(h
outfile.close();
}
voidcreat()//添加联系人
{
system("CLS");//清屏
if(i>9)
{
cout<<"Thememoryhasbeenalreadyfull!
"<cout<<"Mainmenu/Quit?
(M/Q)";//主菜单/退出?
(M/Q)
charl;
cin>>l;
switch(l)
{
case'M':
case'm':
system("CLS");menu();break;
case'Q':
case'q':
system("CLS");Quit();break;
default:
system("CLS");//清屏
cout<<"Inputthemistake!
!
"<cout<<"Pressanykeytocontinue."<getch();menu();break;//输入错误
}
menu();
}
else
{
cout<<"Name:
";
cin>>book[i].name;
cout<<"Hometelephone:
";
cin>>book[i].nums[i].hom;
cout<<"Officenumber:
";
cin>>book[i].nums[i].off;
cout<<"Mobilephone:
";
cin>>book[i].nums[i].tel;
cerr<<"Homeaddress:
";
cin>>book[i].addr;
i++;
save();
system("CLS");//清屏
cout<<"Thecontacthasalreadykept!
"<<<"Goonadding?
(Y/N)";//是否继续添加
charc;
cin>>c;
switch(c)
{
case'N':
case'n':
system("CLS");menu();break;
case'Y':
case'y':
creat();break;
default:
cout<<"Inputthemistake!
!
"<cout<<"Pressanykeytocontinue."<getch();menu();break;
}
}
}
voidList()//显示所有联系人
{
system("CLS");//清屏
ifstreaminfile("f.dat");
if(!
infile)
{
cerr<<"Itisunabletoopen!
!
!
"<exit
(1);
}
cout.setf(ios:
:
left);//输出数据在本域宽范围内向左对齐
intn=0;
for(intm=0;m
{
infile>>book[m].name>>book[m].nums[m].hom
>>book[m].nums[m].off>>book[m].nums[m].tel>>book[m].addr;
cout<<"Name:
"<<<"Hometelephone:
"<<<"Officenumber:
"<<<"Mobilephone:
"<<<"Homeaddress:
"<n++;
}
cout<<"1:
Mainmenu"<<<"2:
Quit"<charl;
cin>>l;
switch(l)
{
case'1':
system("CLS");menu();break;
case'2':
system("CLS");Quit();break;
default:
system("CLS");//清屏
cout<<"Inputthemistake!
!
"<cout<<"Pressanykeytocontinue."<getch();menu();break;
}
}
voidFind()//查询联系人
{
system("CLS");//清屏
stringNM;
cout<<"Pleaseinputthenamethatwillbeinquiredaboutthecontact:
"<//提示输入要查询联系人的姓名
cin>>NM;
system("CLS");//清屏
intm=0;
boolfabl=0;
for(intj=0;j
{
m=0;
if(NM==book[j].name)
{fabl=1;m=j;continue;}
elsefabl=0;
}
if(fabl==0)cout<<"Thiscontacthasnotexistedoralreadydeleted!
!
"<//提示"此联系人不存在或已删除"
elseif(fabl==1)
{
cout<<"Name:
"<<<"Hometelephone:
"<<<"Officenumber:
"<<<"Mobilephone:
"<<<"Homeaddress:
"<cout<<"Finishinquiring!
!
"<}
cout<<"1:
Mainmenu"<<<"2:
Goon"<charl;
cin>>l;
switch(l)
{
case'1':
system("CLS");menu();break;
case'2':
system("CLS");Find();break;
default:
system("CLS");cout<<"Inputthemistake!
!
"<cout<<"Pressanykeytocontinue."<getch();menu();break;
}
}
voidAlter()//修改信息
{
system("CLS");
cout<<"Pleaseinputthenameofthecontactthatwillrevise:
"<//请输入要修改的联系人的姓名
stringCh;
cin>>Ch;
inta=0;
boolfabl2=0;
for(intb=0;b
{
a=0;
if(Ch==book[b].name)
{fabl2=1;a=b;continue;}
elsefabl2=0;
}
if(fabl2==0)cout<<"Thiscontacthasnotexistedoralreadydeleted!
!
"<//此联系人不存在或已删除
elseif(fabl2==1)
{
system("CLS");//清屏
cout.setf(ios:
:
left);//输出数据在本域宽范围内向左对齐
cout<<"Theprimitiveinformationofthecontactwhomyouwanttoreviseis:
"<//您要修改的联系人的原始信息为
cout<<"Name:
"<<<"Hometelephone:
"<<<"Officenumber:
"<<<"Mobilephone:
"<<<"Homeaddress:
"<<<"Pleaseinputnewinformation:
"<<<"Name:
";
cin>>book[a].name;
cout<<"Hometelephone:
";
cin>>book[a].nums[a].hom;
cout<<"Officenumber:
";
cin>>book[a].nums[a].off;
cout<<"Mobilephone:
";
cin>>book[a].nums[a].tel;
cout<<"Homeaddress:
";
cin>>book[a].addr;
cout<<"Informationisrevisedsuccessfully!
"<save();
}
cout<<"1:
Mainmenu"<<<"2:
Goonalter"<charl;
cin>>l;
switch(l)
{
case'1':
system("CLS");menu();break;
case'2':
system("CLS");Alter();break;
default:
system("CLS");cout<<"Inputthemistake!
!
"<cout<<"Pressanykeytocontinue."<getch();menu();break;
}
}
voidDEL()//删除联系人
{
system("CLS");
ofstreamoutfile("f.dat");
if(!
outfile)
{
cerr<<"Itisunabletoopen!
!
!
"<exit
(1);
}
cout<<"Pleaseinputthenameofcontactthatyouwanttodelete:
"<//请输入您要删除的联系人的姓名
stringCh;
cin>>Ch;
inta=0;
boolfabl3=0;
for(intb=0;b
{
a=0;
if(Ch==book[b].name)
{fabl3=1;a=b;break;}
elsefabl3=0;
}
if(fabl3==0)cout<<"Thiscontacthasnotexistedoralreadydeleted!
!
"<//此联系人不存在或已删除
elseif(fabl3=1)
{
for(a=b;a
{
book[a].name=book[a+1].name;
book[a].nums[a].hom=book[a+1].nums[a+1].hom;
book[a].nums[a].off=book[a+1].nums[a+1].off;
book[a].nums[a].tel=book[a+1].nums[a+1].tel;
book[a].addr=book[a+1].addr;
i=i-1;
}
cout<<"Thecontactdeletessuccessfully!
!
"<{
intn=0;
do
{
outfile<<<""<<<""<<<""<<<""<n++;
}
while(n
}
}
cout<<"1:
Mainmenu"<<<"2:
Goondelete"<charl;
cin>>l;
switch(l)
{
case'1':
system("CLS");menu();break;
case'2':
system("CLS");DEL();break;
default:
system("CLS");cout<<"Inputthemistake!
!
"<cout<<"Pressanykeytocontinue."<getch();menu();break;
}
}
voidQuit()//退出
{
system("CLS");
cout<<"Doyousuretoquit?
(Y/N):
"<charp;
cin>>p;
switch(p)
{
case'Y':
case'y':
system("CLS");
cout<<"Thanksanduse!
!
"<exit(0);
case'N':
case'n':
menu();
}
}
voidchose()//选择
{
charQ;
cin>>Q;
switch(Q)
{
case'1':
creat();break;
case'2':
DEL();menu();break;
case'3':
List();menu();break;
case'4':
Alter();menu();break;
case'5':
Find();menu();break;
case'6':
Quit();break;
default:
cout<<"Inputthemistake!
!
!
"<cout<<"Pressanykeytocontinue."<getch();menu();
}
}
voidmain()//主函数
{
menu();
chose();
}
四、函数结构图:
五、
函数流程图:
六、运行结果:
例如:
七、总结:
在做程序设计之前,我曾一度觉得我的《通讯录》比较简单,并且会又好几种的做法,例如:
结构体、类、指针等等。
可是当我真正开始做的时候,我才发现,原来课程设计并不像我想象的那么简单。
编写出来的程序不仅要实现各种功能的函数还要保证函数之间的联系,还要保证程序能够很好的并且有效的运行。
在编写程序的过程中,我遇到了一些以前没有用到的知识,像怎么样把输入的数据另存到另一个文件中去,再例如,函数中的一些清屏的功能,这些都需要通过函数的功能来实现,这些都我来说都是新知识,而且很有难度。
由于编写程序遇到了一些老师没有讲过的新知识,所以在程序设计进行到一半的时候,不得不停了下来,花了一个通宵,把课本里老师没有给我们讲过的新知识给学了一下,终于皇天不负有心人,如此复杂的工作还是被我完成了。
当然,在编程的过程中,也遇到了很多自己无法解决的困难,但是通过同学的帮助,使我一点一点的战胜了难题。
而且他们还给了我好多的建议,这在我编程的过程中起到了很大的作用。
参考书目:
【1】谭浩强,《C++程序设计》,清华大学出版社,2006年。
【2】《C语言程序设计》西安,西安交通大学出版社,2007年。
工程完成时间:
2008-6-28
张东地
07电信