数据结构CC++学生通讯录管理系统Word文件下载.docx
《数据结构CC++学生通讯录管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构CC++学生通讯录管理系统Word文件下载.docx(38页珍藏版)》请在冰豆网上搜索。
主硬盘希捷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<
iostream>
string>
conio.h>
iomanip>
fstream>
windows.h>
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结束通讯录的建立"
endl<
----------------------------"
endl;
while(!
flag)
{
cout<
编号:
;
cin>
>
NUM;
if(NUM!
="
0"
)
{
p=newListNode;
p->
data.num=NUM;
cout<
姓名:
cin>
p->
data.name;
性别:
data.sex;
电话:
data.phone;
地址:
data.addr;
next=head->
next;
head->
next=p;
-------------------"
}
else
system("
cls"
);
break;
}
3.3.5析构函数释放空间
StudentRecords:
~StudentRecords()
ListNode*p,*q;
p=head;
q=p->
deletep;
while(q)
p=q;
q=p->
deletep;
3.3.6通讯录的添加
Add()
boolflag=true;
while(flag)
p=newListNode;
分别输入编号,姓名,性别,电话,地址:
data.num;
p->
head->
是否继续添加(Y/N):
charYN;
YN;
system("
if(YN=='
Y'
||YN=='
y'
)flag=true;
elseflag=false;
3.3.7通讯录的查询
Check()
inti;
boolflag1,flag2,flag3,flag;
flag=true;
charYN='
stringNAME;
if(!
next)
通信录为空!
while(YN=='
{
intj=0;
flag3=false;
cout<
请选择查询的方式(1编号,2姓名):
cin>
i;
switch(i)
{
case1:
cout<
请输入编号:
cin>
break;
case2:
请输入姓名:
NAME;
default:
输入错误,请重新输入!
flag3=true;
}
if(!
flag3)
p=head->
flag1=false;
while(p)
{
flag2=false;
switch(i)
{
case1:
if(NUM==p->
data.num){flag2=flag1=true;
q=p;
p=p->
case2:
if(NAME==p->
data.name){flag2=flag1=true;
default:
}
if(flag2)
if(j==0)
查询到学生信息如下:
cout<
q->
data.num<
data.name<