c++课程设计总结报告 通讯录管理系统.docx
《c++课程设计总结报告 通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《c++课程设计总结报告 通讯录管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
c++课程设计总结报告通讯录管理系统
C++(或C)语言课程设计总结报告
学号:
姓名:
专业:
计算机科学与技术
班级:
所属学期
一、项目介绍与设计目的
1.项目介绍:
名称:
通讯录管理系统
总体要求:
有一存在的通讯录文件,数据内容为各联系人的信息。
每个联系人信息的组成:
姓名、电话号码、QQ、邮编和地址等个人基本信息。
用户界面:
(1)输入:
程序正常运行后,屏幕上显示一个文字菜单(根据序号选定相应的操作项目),当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据。
(2)输出:
1)应用程序正常运行后,在屏幕上显示一个文字菜单
2)用户输入数据时,给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
功能:
(1)添加联系人:
输入新的联系人信息,并保存其内容。
(2)删除联系人:
从文件中删除相应联系人的信息。
(3)显示联系人:
从文件中输出所有联系人的信息。
(4)修改联系人:
可以修改该联系人的任何一个信息,并保存修改后联系人的信息。
(5)查询联系人:
输入联系人的姓名或电话号码,输出相应联系人的全部信息。
(6)关闭通讯录:
操作结束后,退出操作。
2.设计目的:
(1)通过这次课程设计,巩固c++的知识,尤其对类和文件保存等重要内容进行深入的理解,做到温故而知新。
(2)运用新学的数据结构中链表的知识,加深对新内容的了解,努力做到学以致用。
(3)通过这次编程,增强动手能力,养成良好的编程习惯,做到理论和实践相结合。
二、项目设计思路
首先,定义一个类book,类中包括成员函数,以及私有数据。
成员函数有:
默认的构造函数,用户界面函数,添加、删除、显示、修改、查询,以及关闭通讯录等函数。
私有数据有:
通讯录中联系人的姓名、电话号码、QQ、邮编,以及地址等基本信息。
其次,定义一个结构体record,结构体中的变量,一个指向前驱,一个指向后继。
然后,定义一个主函数main(),调用其他相应功能的函数,来完成通讯录的各个操作。
最后,分别定义添加、删除、显示、修改和查询等函数,完成相应的功能模块。
三、项目环境要求
在VC的环境下即可运行。
四、项目功能模块
本程序主要有以下七个函数:
(1)charbook:
:
inter_face()//用户界面函数
程序正常运行后,在屏幕上显示菜单,用户根据需要,按相应的功能键,进行操作。
(2)voidbook:
:
add_person()//添加联系人的函数
用户按数字键“1”,添加新的联系人,把新添加的内容保存到相应的文件中。
(3)voidbook:
:
del_person()//删除联系人的函数
用户按数字键“2”,输入你要删除的联系人的姓名或电话号码,如果该联系人存在,则输出该联系人的信息,并删除此人。
如果通讯录中没有此人,就输出
“对不起,联系人中没你要找的人”。
(4)voidbook:
:
show_all()//输出所有联系人的函数
用户按数字键“3”,输出文件“pbook.txt”中全部联系人的信息,否则的话,输出“通讯录中没有联系人”。
(5)voidbook:
:
alter()//修改联系人的函数
用户按数字键“4”,打开文件,输入你要修改的联系人的姓名或电话号码,找到该联系人后,从新输入要修改联系人新的信息,并保存到“pbook.txt”文件中;否则的话,输出“通讯录中无此人”。
(6)voidbook:
:
select()//查找联系人的函数
用户按数字键“5”,打开文件,输入要查找的联系人的姓名或者电话号码,找到此人,输出该联系人的全部信息,否则的话输出“对不起,通讯录中没有此人”。
(7)voidbook:
:
save_new()//关闭通讯录的函数
用户操作完成后,按数字键“6”,关闭通讯录的内容。
(8)intmain()//主函数
运用switch()语句,选择相应的功能键,调用相应的函数,进行该功能的操作。
五、程序关键源代码(注:
关键或者比较有特色的代码段,无需完整的源代码)
1、structrecord
{
bookobject;
record*prior;
record*next;
};
2、voidbook:
:
save_new(){
ofstreamoutData("pbook.txt",ios:
:
app);
if(!
outData)
{
cout<<"对不起!
!
!
打开文件失败!
!
!
!
"<system("pause");
return;
}
outData<:
left)<<outData.close();
}
六、程序用户名及密码
本程序无用户名和密码。
七、参考文献
刘加海等,C++程序设计,清华大学出版社
王红梅等,数据结构(C++版),清华大学出版社
刘振安等,C++程序设计课程设计,机械工业出版社
八、体会与感想(总结)
通过这次编程实践,巩固了c++的知识,对c++的内容有了深入的理解,尤其
对文件的知识加深理解。
并运用数据结构中链表的知识,对新知识有进一步的理解。
增强了动手能力,感受到了c++的奥妙,找到了学习编程的乐趣。
同时在编程过
程中,也发现了自身学习态度的问题。
由于上课没认真听讲,课后又没及时花
时间去复习,造成了许多知识的缺漏,很多知识不能很好的运用,编写过程面临困
难,幸好通过这次编程及时把缺漏的知识补过来。
事实告诫了我:
今后上课一定要认真听讲,及时复习,多动手去编程,养成良好的编程习惯,增强实践能力。
九、指导教师意见
指导教师(签名):
年月日
源代码:
#include
#include
#include
#include
#include
#include
usingnamespacestd;
classbook
{
public:
book();
charinter_face();
voidadd_person();
voiddel_person();
voidshow_all();
voidalter();
voidselect();
voidsave_new();
private:
stringname;
stringaddress;
stringnumber;
stringpost;
stringqq;
};
structrecord
{
bookobject;
record*prior;
record*next;
};
book:
:
book()
{
name="\0";
address="\0";
number="\0";
post="\0";
qq="\0";
}
charbook:
:
inter_face()
{
system("cls");
cout<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<<"\t\t※※"<<<"\t\t※小小通迅录※"<<<"\t\t※※"<<<"\t\t※1.添加新联系人.4.修改信息.※"<<<"\t\t※※"<<<"\t\t※2.删除联系人.5.查询联系人.※"<<<"\t\t※※"<<<"\t\t※3.显示所有联系人.6.关闭通迅录.※"<<<"\t\t※※"<<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<<<"\t\t\t选择:
";
intchoose;
cin>>choose;
fflush(stdin);
returnchoose;
}
voidbook:
:
add_person()
{
cout<<"根据下面提示输入新联系人信息"<";
cin>>name;
fflush(stdin);
cout<<"电话:
";
cin>>number;
fflush(stdin);
cout<<"qq:
";
cin>>qq;
fflush(stdin);
cout<<"邮编:
";
cin>>post;
fflush(stdin);
cout<<"地址:
";
cin>>address;
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;
stringrecor;
while(getline(inData,recor))
{
if(flag)
{
cout<<"所有联系人信息如下:
"<}
cout<flag=false;
}
if(flag)
{
cout<<"你的通迅录中没有联系人"<}
else
{
cout<<"所有联系人已经全部显示出来"<}
system("pause");
}
voidbook:
:
alter()
{
ifstreaminData("pbook.txt",ios:
:
in);
if(!
inData)
{
cout<<"对不起不能打开文件"<system("pause");
return;
}
stringsign;
cout<<"请输入你想要修改的联系人的姓名或电话号码:
";
cin>>sign;
fflush(stdin);
stringstr1;
record*H=newrecord;
record*p=H;
record*q=H;
boolflag=true;
while(inData>>p->object.name>>p->object.number>>p->object.qq>>p->object.post>>p->object.address)
{
p->next=newrecord;
p=p->next;
p->prior=q;
q->next=p;
q=p;
}
p->next=NULL;
inData.close();
p=H;
while(p)
{
if((p->object.name==sign)||(p->object.number==sign))
{
if(flag)
{
cout<<"你想修改你联系人的信息如下:
"<cout<:
left)<object.name<<""<object.number
<<""<object.qq<<""<object.post<<""<object.address<flag=false;
}
cout<<"请根据下面提示修改信息:
"<cout<<"姓名:
";
cin>>p->object.name;
fflush(stdin);
cout<<"电话号:
";
cin>>p->object.number;
fflush(stdin);
cout<<"qq:
";
cin>>p->object.qq;
fflush(stdin);
cout<<"邮编:
";
cin>>p->object.post;
fflush(stdin);
cout<<"地址:
";
cin>>p->object.address;
fflush(stdin);
break;
}
p=p->next;
}
if(flag)
{
cout<<"你的通迅录中没有你找的联系人"<system("pause");
return;
}
else
{
ofstreamout("pbook.txt",ios:
:
out);
if(!
out)
{
cout<<"对不起不能打开文件"<system("pause");
return;
}
p=H;
while(p)
{
out<:
left)<object.name<<""<object.number
<<""<object.qq<<""<object.post<<""<object.address<p=p->next;
}
out.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)<getch();
flag=false;
break;
}
}
if(flag)
{
cout<<"对不起联系人中没你找的人"<}
getch();
}
voidbook:
:
save_new()
{
ofstreamoutData("pbook.txt",ios:
:
app);
if(!
outData)
{
cout<<"对不起打开文件失败"<system("pause");
return;
}
outData<:
left)<<outData.close();
}
intmain()
{
intchoose;
bookabj;
while(choose=abj.inter_face())
{
switch(choose)
{
case1:
abj.add_person();
break;
case2:
abj.del_person();
break;
case3:
abj.show_all();
break;
case4:
abj.alter();
break;
case5:
abj.select();
break;
case6:
cout<<"谢谢使用"<exit(0);
break;
default:
break;
}
}
return0;
}