C++课程设计报告.docx
《C++课程设计报告.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告.docx(22页珍藏版)》请在冰豆网上搜索。
![C++课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-7/14/57989919-5b9f-46e6-85b3-792e0d09d253/57989919-5b9f-46e6-85b3-792e0d09d2531.gif)
C++课程设计报告
课程设计报告
题目通信录的设计
学院
专业
班级
学生姓名:
12月15日至12月28日共2周
指导教师(签字)李炜
院长(主任)(签字)
2014年12月19日
一、设计内容及要求
设计要求:
定义人员(person)类,其中至少包括姓名、性别、年龄、电话和类别(例如:
同学、朋友等)。
二、实现下面的功能:
1、输入功能:
输入人员信息。
2、查询功能:
1)能够根据姓名精确查询人员信息;
2)根据电话号码查询人员信息。
3、根据姓名对人员信息排序输出。
4、能根据姓名、电话修改人员信息。
5、能根据姓名、电话删除人员信息。
三、分析与设计
3.1系统模块设计
根据系统的功能设计,如下模块
1.主界面模块:
完成系统菜单的显示
2.功能选择模块:
根据用户的选择,完成其相应的功能
(1)通讯录信息录入:
完成用户从界面输入通讯录,保存入系统的功能
(2)通讯录信息修改:
完成用户从界面输入通讯录,在系统中查询定位,并将录入的数据保存入系统的功能
(3)通讯录信息查询:
完成用户从界面输入查询条件,在系统查询符合条件的通讯录信息,并在界面上显示的功能。
(6)通讯录信息删除:
完成用户从界面输入需要的通讯录信息的姓名,并将其从系统中删除。
3.2数据结构设计
根据系统要求,系统中需要保存的数据有通讯录的信息,其结构如下:
数据项名称
数据项系统表示
数据类型
数据长度
备注
姓名
name
字符串
20
地址
address
字符串
100
电话
tele
字符串
20
3.3界面设计
1.主界面:
根据系统要求,设计一个字符界面,显示系统的菜单,为了体现友好性,将在每个菜单前显示该菜单项对应的数字用户输入菜单项前面的数字,主菜单消失,进入该模块的相应界面,进行相应的操作,完成后,回到主界面。
2.输入界面:
在光标下输入通讯录的信息,用空格将信息隔开。
3.修改界面:
首先输入通讯录的姓名,显示该通讯录的详细信息,输入修改后的信息,将原来信息修改。
4.删除界面:
输入需要删除的姓名,将其从通讯录中删除。
5.显示联系人界面:
显示全部联系人
6.查询界面、;输入联系人姓名或号码可查询联系人信息
3.4模块实现
1.主界面实现:
调用cout函数,在屏幕上打印需要显示的字符信息,需要在显示之前调用system(“cls”)函数将前面的界面清空。
对应的实现函数menu_show();
2.功能选择模块实现:
接受从键盘输入的菜单选择,判断并调用相应的功能函数,完成其对应的功能。
实现功能选择。
对应的函数:
menu_select();
(1)通讯录信息录入模块实现:
模块说明:
从键盘接收输入的通讯录信息,在动态存储区中创建通讯录的节点,遍历链表,将其插入到通讯录链表的最后位置。
模块流程:
对应函数:
add(structphone*head)
(2)通讯录信息修改模块实现:
模块说明:
从键盘接收输入的需要修改通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入修改后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。
模块流程:
对应函数:
update(structphone*head)
(3)通讯录信息删除模块实现:
模块说明:
从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。
模块流程:
对应函数:
delete(structphone*head)
(4)通讯录信息导入模块实现:
模块说明:
从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。
模块流程:
对应函数:
load(structphone*head)
(5)通讯录信息导出模块实现:
模块说明:
从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。
模块流程:
对应函数:
save(structphone*head)
(6)通讯录信息查询模块实现:
模块说明:
从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。
模块流程:
对应函数:
search(structphone*head)
(7)通讯录信息显示模块实现:
模块说明:
从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。
模块流程:
对应函数:
list(structphone*head)
四.调试
主界面
修改界面
删除界面
查询界面
显示联系人界面
添加联系人界面
五.程序源代码:
#include
#include
#include
#include
#include
intn,m;
usingnamespacestd;
classmsg
{
public:
msg();//默认构造函数
charinter_face();//首页
voidadd_person();//添加联系人
voiddel_person();//删除联系人
voidshow_all();//显示所有联系人
voidalter();//修改信息
voidselect();//查询联系人
voidsave_new();//保存新增加的联系人
private:
stringname;//姓名
stringsex;//性别
stringnum;//电话号码
stringad;//地址
stringrl;//类型
};
msg:
:
msg()
{
name="\0";
ad="\0";
num="\0";
sex="\0";
rl="\0";
}
//首页
charmsg:
:
inter_face()
{
cout<cout<<"\t\t***********************************************"<<<"\t\t※※"<<<"\t\t※通迅录※"<<<"\t\t※※"<<<"\t\t※1.添加新联系人.4.修改信息.※"<<<"\t\t※※"<<<"\t\t※2.删除联系人.5.查询联系人.※"<<<"\t\t※※"<<<"\t\t※3.显示所有联系人.0.退出通迅录.※"<<<"\t\t※※"<<<"\t\t*****************************************"<<<"\t\t\t选择:
";
charchoose;
cin>>choose;
returnchoose;
}
//添加联系人
voidmsg:
:
add_person()
{
cout<<<"姓名:
";
cin>>name;
cout<<"电话:
";
cin>>num;
cout<<"类型:
";
cin>>rl;
cout<<"性别:
";
cin>>sex;
cout<<"地址:
";
cin>>ad;
save_new();
cout<!
!
!
!
"<}
//删除联系人
voidmsg:
:
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>>num)
{
getline(inData,str);
if((sign==name)||(sign==num))
{
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<!
!
"<return;
}
while(getline(in,str))
{
out<}
out.close();//
in.close();
cout<!
!
"<}
}
//显示所有联系人
voidmsg:
:
show_all()
{
ifstreaminData("pbook.txt",ios:
:
in);
if(!
inData)
{
cout<!
!
!
没有找到文件!
!
!
!
!
"<return;
}
boolflag=true;
stringrecord;
while(getline(inData,record))
{
if(flag)
{
cout<"<cout<<"姓名"<}
cout<flag=false;
}
if(flag)
{
cout<!
!
!
!
"<}
else
{
cout<!
!
!
!
"<}
}
//修改信息
voidmsg:
:
alter()
{
ofstreamoutData("temp.txt",ios:
:
out);
ifstreaminData("pbook.txt",ios:
:
in);//
if(!
outData||!
inData)
{
cout<!
!
!
找不到文件!
!
!
!
"<return;
}
stringsign;
cout<";
cin>>sign;
stringstr1;
boolflag=true;
stringstr;
while(inData>>name>>num)
{
getline(inData,str);
if((sign==name)||(sign==num))
{
cout<"<cout<cout<:
left)<<<""<cout<"<cout<<"姓名:
";
cin>>name;
fflush(stdin);
cout<<"电话号:
";
cin>>num;
fflush(stdin);
cout<<"性别:
";
cin>>sex;
fflush(stdin);
cout<<"类型:
";
cin>>rl;
fflush(stdin);
cout<<"地址:
";
cin>>ad;
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<!
!
"<}
}
//查询联系人
voidmsg:
:
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>>num)
{
getline(inData,str);
if((name==sign)||(num==sign))
{
cout<"<cout<cout<:
left)<<flag=false;
system("pause");
break;
}
}
}
voidmsg:
:
save_new()
{
ofstreamoutData("pbook.txt",ios:
:
app);
if(!
outData)
{
cout<!
!
打开文件失败!
!
!
!
"<system("pause");
return;
}
outData<:
left)<<<""<<<<outData.close();
}
voidmain()
{
msgabj;
do{
cout<cout<<"\t\t***********************************************"<<<"\t\t※※"<<<"\t\t※通迅录※"<<<"\t\t※※"<<<"\t\t※1.添加新联系人.4.修改信息.※"<<<"\t\t※※"<<<"\t\t※2.删除联系人.5.查询联系人.※"<<<"\t\t※※"<<<"\t\t※3.显示所有联系人.0.退出通迅录.※"<<<"\t\t※※"<<<"\t\t*****************************************"<<<"\t\t\t选择你需要的功能:
";
cin>>n;
switch(n)
{
case1:
abj.add_person();////添加联系人
break;
case2:
abj.del_person();////删除联系人
break;
case3:
abj.show_all();////显示所有联系人
break;
case4:
abj.alter();////修改信息
break;
case5:
abj.select();////查询联系人
break;
default:
break;
}
cout<<"\n输入1:
继续;输入0:
退出\n";
cin>>m;
}
while(m==1);
}
六、主要参考资料
1)《C++面向对象课程设计》谭浩强,清华大学出版社,2012年
2)《面向对象程序设计》李涛,西安电子科技大学出版社,2010年