数据结构CC++学生通讯录管理系统.docx
《数据结构CC++学生通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构CC++学生通讯录管理系统.docx(38页珍藏版)》请在冰豆网上搜索。
数据结构CC++学生通讯录管理系统
第1部分题目及功能说明
1.1设计目的
通过本课程设计的实践,全面总结课程学习中的数据类型、程序结构、数组、函数、指针、结构体等基本概念、使用方法。
培养编写计算机应用程序的能力。
通过本次实训使自己在实际应用中熟悉并掌握编程方法,并具有初步的编程能力。
1.2设计题目
学生通讯录管理系统
功能:
新建、添加、查询、删除、输出、保存、退出。
1.3系统功能简介
1.通讯录的建立
2.通讯录的添加
3.通讯录的查询
4.通讯录的删除
5.通讯录的输出
6.通讯录的保存
0.退出管理系统
第2部分环境要求
2.1硬件要求
电脑型号技嘉台式电脑
操作系统Windows8专业版64位(DirectX11)
处理器AMDA8-3870APUwithRadeonHDGraphics四核
主板技嘉A55M-DS2(AMDK12)
内存8GB(金士顿DDR31600MHz)
主硬盘希捷ST500DM002-1BD142(500GB/7200转/分)
显卡ATIRadeonHD6550D(512MB/ATI)
显示器飞利浦PHLC0A9227E4Q(21.7英寸)
声卡ATIK12高保真音频
网卡瑞昱RTL8168EPCI-EGigabitEthernetNIC/技嘉
2.2软件要求
Windows8专业版64位
MicrosoftVC++6.0
第3部分系统详述
3.1需求分析
本软件是学生通讯录管理系统,为了更好地方便大家之间的联系,更加有效地提取在程序中的每个人的信息和随时都能添加和删除信息,及时地将信息存盘和保留数据,并且为了方便使用本软件,系统分了7个备选项,功能强大,管理方便。
具体功能如下:
【新建】建立一个新的通讯录,每条记录包含编号、姓名、性别、电话、地址,输入编号为“0”时结束。
【添加】添加一条通讯录记录,包含编号、姓名、性别、电话、地址,可选择是否继续添加。
【查询】选择按编号或姓名进行查询,输出所有相符合的记录,可选择是否继续查询。
【删除】输入要删除记录的编号,删除并显示所有符合条件的记录,可选择是否继续删除。
【输出】输出通讯录的所有记录。
【保存】保存当前通讯录信息到“RD.txt”文件中。
【退出】退出通讯录管理系统。
3.2概要设计
3.2.1总体设计思路(主流程图)
为了更好地方便大家之间的联系,更加有效地管理通讯信息,本通讯录系统共设计了新建、添加、查询、删除、输出、保存、退出7个模块。
下面是设计框图:
3.2.2主函数(main())
程序采用结构化,模块化设计。
主函数是程序的入口,各模块相互独立,并且可以分块调试,均由主函数控制调用。
控制功能的实现通过执行一个while()循环语句和一个switch()分支语句。
3.2.3新建函数(voidStudentRecords:
:
Build())
本函数用于建立一个新的通讯录。
依次输入编号、姓名、性别、电话、地址添加一条记录,直到输入的编号为“0”时结束通讯录的建立。
流程图如下:
3.2.4添加函数(voidStudentRecords:
:
Add())
本函数用于添加记录,依次输入编号、姓名、性别、电话、地址添加一条记录,输入“Y/N(不区分大小写)”选择是否继续添加。
流程图如下:
3.2.5查询函数(voidStudentRecords:
:
Check())
本函数用于查询指定通讯记录。
可选择按编号或姓名进行查询,输出所有符合条件的记录,输入“Y/N(不区分大小写)”选择是否继续查询。
流程图如下:
3.2.6删除函数(voidStudentRecords:
:
Delete())
本函数用于删除指定编号的记录,并显示删除的所有记录。
输入“Y/N(不区分大小写)”选择是否继续查询。
流程图如下:
3.2.7输出函数(voidStudentRecords:
:
PrintList())
此函数用来显示当前通讯录中的所有记录。
流程图如下:
3.2.8保存函数(voidStudentRecords:
:
Preservation_file())
此函数用于保存当前通讯录信息到“RD.txt文档中”。
3.2.9读取文件信息(voidStudentRecords:
:
cin_file(char*filename))
此函数在其他函数执行过程中自动读取。
3.3详细设计
3.3.1预编译部分
#include
#include
#include
#include
#include
#include
usingnamespacestd;
3.3.2结构体框架
typedefstruct
{
stringnum;
stringname;
stringsex;
stringphone;
stringaddr;
}DataType;
typedefstructnode
{
DataTypedata;
structnode*next;
}ListNode;
typedefListNode*LinkList;
3.3.3类的定义
classStudentRecords
{
public:
StudentRecords(){head=newListNode;head->next=NULL;}
~StudentRecords();
voidBuild();
voidAdd();
voidCheck();
voidDelete();
voidPrintList();
voidcin_file(char*filename);
voidPreservation_file();
private:
LinkListhead;
};
3.3.4通讯录的建立
voidStudentRecords:
:
Build()
{
stringNUM;
boolflag=false;
ListNode*p;
cout<<"输入编号为0结束通讯录的建立"<while(!
flag)
{
cout<<"编号:
";
cin>>NUM;
if(NUM!
="0")
{
p=newListNode;
p->data.num=NUM;
cout<<"姓名:
";
cin>>p->data.name;
cout<<"性别:
";
cin>>p->data.sex;
cout<<"电话:
";
cin>>p->data.phone;
cout<<"地址:
";
cin>>p->data.addr;
p->next=head->next;
head->next=p;
cout<<"-------------------"<}
else
{
system("cls");
break;
}
}
}
3.3.5析构函数释放空间
StudentRecords:
:
~StudentRecords()
{
ListNode*p,*q;
p=head;
q=p->next;
deletep;
while(q)
{
p=q;
q=p->next;
deletep;
}
}
3.3.6通讯录的添加
voidStudentRecords:
:
Add()
{
ListNode*p;
boolflag=true;
while(flag)
{
p=newListNode;
cout<<"分别输入编号,姓名,性别,电话,地址:
"<cout<<"编号:
";
cin>>p->data.num;
cout<<"姓名:
";
cin>>p->data.name;
cout<<"性别:
";
cin>>p->data.sex;
cout<<"电话:
";
cin>>p->data.phone;
cout<<"地址:
";
cin>>p->data.addr;
p->next=head->next;
head->next=p;
cout<cout<<"是否继续添加(Y/N):
";
charYN;
cin>>YN;
system("cls");
if(YN=='Y'||YN=='y')flag=true;
elseflag=false;
}
}
3.3.7通讯录的查询
voidStudentRecords:
:
Check()
{
ListNode*p,*q;
inti;
boolflag1,flag2,flag3,flag;
flag=true;
charYN='Y';
stringNUM;
stringNAME;
while(flag)
{
if(!
head->next)
{
cout<<"通信录为空!
"<break;
}
else
{
while(YN=='Y'||YN=='y')
{
intj=0;
flag3=false;
cout<<"请选择查询的方式(1编号,2姓名):
";
cin>>i;
switch(i)
{
case1:
cout<<"请输入编号:
";cin>>NUM;break;
case2:
cout<<"请输入姓名:
";cin>>NAME;break;
default:
cout<<"输入错误,请重新输入!
"<}
if(!
flag3)
{
p=head->next;
flag1=false;
while(p)
{
flag2=false;
switch(i)
{
case1:
if(NUM==p->data.num){flag2=flag1=true;q=p;}
p=p->next;break;
case2:
if(NAME==p->data.name){flag2=flag1=true;q=p;}
p=p->next;break;
default:
break;
}
if(flag2)
{
if(j==0)
cout<<"查询到学生信息如下:
"<cout<<"编号:
"<data.num<cout<<"姓名:
"<data.name<