C++课程设计同学录设计报告.docx
《C++课程设计同学录设计报告.docx》由会员分享,可在线阅读,更多相关《C++课程设计同学录设计报告.docx(13页珍藏版)》请在冰点文库上搜索。
C++课程设计同学录设计报告
面向对象程序设计
课程设计报告
同学录管理系统
杨敬周
计算101
题目
班级
姓名
学号
2011年7月1日
同学录管理系统详细设计说明书
1.项目设计背景:
2.项目设计目的:
通过设计一个《同学录管理系统》,进一步熟悉C++中类的概念、基本知识和技能,类的封装、继承的实现方式。
掌握面向对象程序设计的基本思路和方法,并利用所学的基本知识和技能解决简单的面向对象的程序设计问题。
了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C++的理解与VisualC++环境的使用:
逐步熟悉程序设计的方法,并养成良好的编程习惯。
3.项目需求分析
以本班的同学的具体数据为背景,设计一个本班同学同学录,要求如下:
(1)录入信息,必须包括:
姓名,性别,电话,家庭地址,邮编,E-mail等基本信息;
(2)修改信息,包括插入一条或多条信息,修改或者删除某人的信息;
(3)查询信息,可以按姓名,家庭住址,性别等多种方式查询;
(4)显示所有信息;
4.概要设计
同学录管理系统
数据结构及各模块分析:
1.设计类,对象及基本数据类型:
创建一个Classmates类,它有五个私有数据成员:
stringname;姓名
stringaddress;地址
stringnumber;电话号码
stringpost;邮编
stringemailE-mail
stringqq;QQ号码
包含七个公有成员函数:
功能如下:
chardiaplay();首页
voidadd_person();添加同学
voiddel_person();删除同学
voidshow_all();显示所有同学
voidalter();修改信息
voidinquiry();查询同学
voidsave_new();保存新增加的同学
在主函数main()之中,
.Classmatesobj;创建名为obj的对象
结构体:
structstudent
{
Classmatesobject;object对象作为结构体student的一个成员
student*prior;定义一个指向前驱的结构体指针
student*next;定义一个指向后继的结构体指针
};
该结构体是在alter()修改函数中用来处理相关信息的修改.
字符串变量:
str,record;
字符变量:
choose;
布尔型变量:
flag;
数据保存方式以及格式:
该同学录管理系统将把输入的人员信息保存为pClassmates.txt文本文件,在文件读取时系统将会把该文件中相关信息读出,并在屏幕上显示出相关信息.
2.实现各模块功能的相应程序:
1.界面:
display()
{
system("cls");
cout<cout<<"\t\t------------------------------
…..……
fflush(stdin);
returnchoose;
}
添加同学:
add_person()
{
cout<…….……
.save_new()
{
ofstreamoutData("pClassmates.txt",ios:
:
app);
if(!
outData)
……
outData.close();
}
cout<!
!
"<system("pause");
}
删除同学信息
del_person()
{
ofstreamoutData("temp.txt",ios:
:
out);
……
cout<!
!
"<}
system("pause");
}
显示所有同学信息:
show_all()
{
ifstreaminData("pClassmates.txt",ios:
:
in);
……
cout<<"所有同学信息已经全部显示出来!
!
!
"<}
system("pause");
}
修改同学信息
alter()
{
ifstreaminData("pClassmates.txt",ios:
:
in);
……
cout<!
!
"<system("pause");
}
}
查询同学信息
select()
{
ifstreaminData("pClassmates.txt",ios:
:
in);
……
}
system("pause");
}
5.详细设计
详细功能如下:
A,添加:
系统将提示用户输入新添加人员信息,输入到文件中,人员信息数据包括姓名,电话号码,QQ号,邮箱,邮编,地址.
B,删除:
首先由用户输入要删除的人员的姓名或者电话号码,然后调用删除函数,删除该人员的所有相关资料.
C,显示所有人员信息:
该功能将显示已经保存的所有人员的姓名,电话,QQ号,邮编及地址.
D,修改:
首先由用户输入要修改的人员姓名或者电话号码,然后系统用修改函数查找,显示该名同学的资料,然后系统提示用户输入需要修改的人员的相关信息.并用双向链表来实现修改功能
E,查询:
可由用户输入要查找的人员姓名或电话号码,然后系统用查找函数查找,接着系统使用相关文件命令输出所查找的人员的全部信息.
F,退出系统
关闭同学录管理系统.
菜单用于选择各项功能:
其中包括:
.a:
添加新同学;
.b:
删除同学;
.c:
显示所有人员信息;
.d:
修改人员信息;
.e:
查询同学;
.f:
关闭同学录.
采用面向对象的程序设计方法,a,b,c,d,e,这五项菜单都调用一个函数来实现.
voidClassmates:
:
alter()
{
ifstreaminData("pClassmates.txt",ios:
:
in);
//打开文件pClassmates.txt,进行读操作
if(!
inData)//判断文件打开是否成功
{
cout<!
!
"<//如果打开失败,输出“对不起不能打开文件!
!
!
”
system("pause");//屏幕暂停
return;
}
stringsign;//定义字符串变量sign
cout<的姓名或电话号码:
";
cin>>sign;//输入变量sign
fflush(stdin);//清空缓冲区
record*H=newrecord;
//新建结构体指针变量H,并为其分配空间
record*p=H;//使p指针指向指针H
record*q=H;//使q指针也指向指针H
boolflag=true;//定义布尔型变量flag.
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;//使p的next成员指向NULL.
inData.close();//关闭pClassmates.txt文件
p=H;//使指针变量P指向结构指针H的头节点
while(p)//当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;//使结构体指针p指向该指针的末尾
}
if(flag)
{
cout<!
!
";
cout<system("pause");
return;
}
else
{
ofstreamout("pClassmates.txt",ios:
:
out);
//打开文件pClassmates.txt,进行写操作
if(!
out)//判断文件打开是否成功打开
{
cout<!
!
不能打开文件!
!
!
!
"<system("pause");
return;
}
p=H;//使结构体指针p指向被修改的人的记录的首地址.
while(p)//如果p不为空,则执行以下语句
{
out<:
left)<object.name
<<""<object.number
<<""<object.qq
<<""<object.post
<<""<object.address<将修改后的信息保存到原来位置
p=p->next;//使用p指针指向其本身的末尾
}
out.close();//关闭pClassmates.txt文件
cout<!
!
"<system("pause");//屏幕暂停
}
}
6.设计总结
参考文献:
《C++程序开发深入浅出》
参考网站:
Google,XX,csdn等等
在开发当中,遇到问题是正常的,关键是怎样解决问题。
不要因为问题难解决就放弃了,如果那样,你就很难完成一件事情了!