数据结构CC++学生通讯录管理系统.docx

上传人:b****6 文档编号:15518792 上传时间:2023-07-05 格式:DOCX 页数:43 大小:281.12KB
下载 相关 举报
数据结构CC++学生通讯录管理系统.docx_第1页
第1页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第2页
第2页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第3页
第3页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第4页
第4页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第5页
第5页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第6页
第6页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第7页
第7页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第8页
第8页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第9页
第9页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第10页
第10页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第11页
第11页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第12页
第12页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第13页
第13页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第14页
第14页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第15页
第15页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第16页
第16页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第17页
第17页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第18页
第18页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第19页
第19页 / 共43页
数据结构CC++学生通讯录管理系统.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构CC++学生通讯录管理系统.docx

《数据结构CC++学生通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构CC++学生通讯录管理系统.docx(43页珍藏版)》请在冰点文库上搜索。

数据结构CC++学生通讯录管理系统.docx

数据结构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<

cout<<"性别:

"<data.sex<

cout<<"电话:

"<data.phone<

cout<<"地址:

"<data.addr<

j++;

}

}

if(!

flag1)cout<

"<

cout<<"共查询到"<

cout<<"是否继续查询(Y/N):

";

cin>>YN;

system("cls");

if(YN=='Y'||YN=='y')flag=true;

elseflag=false;

}

}

}

}

}

3.3.8通讯录的删除

voidStudentRecords:

:

Delete()

{

ListNode*p,*q;

stringNUM;

charYN='Y';

boolflag,flag1;

flag1=true;

while(flag1)

{

while(YN=='Y'||YN=='y')

{

inti=0;

flag=false;

p=head;q=p->next;

if(!

q)

{

cout<<"通讯录已为空,按任意键返回主界面...";

while(chara=getch())

{

system("cls");

return;

}

}

cout<<"输入删除编号:

";

cin>>NUM;

while(q)

{

if(NUM==q->data.num)

{

if(i==0)cout<

"<

cout<

"<data.num<

cout<<"姓名:

"<data.name<

cout<<"性别:

"<data.sex<

cout<<"电话:

"<data.phone<

cout<<"地址:

"<data.addr<

p->next=q->next;

deleteq;

flag=true;

i++;

q=p->next;

continue;

}

else{p=p->next;q=p->next;}

}

if(!

flag){cout<<"查无此人!

"<

if(p)

{

cout<

cout<<"是否继续删除(Y/N):

";

cin>>YN;

system("cls");

if(YN=='Y'||YN=='y')flag1=true;

elseflag1=false;

}

}

}

}

3.3.9通讯录的输出

voidStudentRecords:

:

PrintList()

{

ListNode*p,*q,*s,*Max,*Min,*first;

intcount=0;

cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓";

cout<<"┃★通讯录的全部信息★┃";

cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫";

cout<<"┃编号姓名性别电话地址┃";

cout<<"┃----------------------------------------------------------------------------┃";

if(head->next)

{

first=newListNode;

s=first;

while(head->next)

{

Min=head->next;Max=Min->next;q=head;

while(Max&&Min)

{

if(Max->data.numdata.num)

{

Min=Max;

Max=Max->next;

}

elseMax=Max->next;

}

while(q->next!

=Min)q=q->next;

q->next=Min->next;

s->next=Min;

s=Min;

s->next=NULL;

}

deletehead;

head=first;

p=head->next;

while(p)

{

cout<<"┃"<data.num

<data.name

<data.sex

<data.phone

<data.addr<<"┃";

p=p->next;count++;

if(p)

cout<<"┃----------------------------------------------------------------------------┃";

}

cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛";

}

elsecout<<"┃通讯录为空!

┃"

<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛";

cout<

cout<<"按任意键返回主界面..."<

while(chara=getch())

{

system("cls");

return;

}

}

3.3.10读取文件信息

voidStudentRecords:

:

Preservation_file()

{

ofstreamoutfile("RD.txt",ios:

:

out);

if(!

outfile)

{

cerr<<"openerror!

"<

exit

(1);

}

ListNode*p;

p=head->next;

while(p)

{

outfile<data.num

<data.name

<data.sex

<data.phone

<data.addr<

p=p->next;

}

cout<<"记录已保存..."<<"按任意键返回主界面..."<

while(chara=getch())

{

system("cls");

outfile.close();

return;

}

}

3.3.11主函数

intmain()

{

system("color5f");

StudentRecordsRD;

intn=1;

fstreamoutfile("RD.txt",ios:

:

out|ios:

:

app);

if(!

outfile)

{

cerr<<"openerror!

"<

abort();

}

outfile.close();

RD.cin_file("RD.txt");

while(n)

{

intm;

cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓";

cout<<"┃★欢迎进入学生通讯录管理系统★┃";

cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫";

cout<<"┃(*_*)(*_*)(*_*)★1→通讯录的建立★(*_*)(*_*)(*_*)┃";

cout<<"┃(*_*)(*_*)(*_*)★2→通讯录的添加★(*_*)(*_*)(*_*)┃";

cout<<"┃(*_*)(*_*)(*_*)★3→通讯录的查询★(*_*)(*_*)(*_*)┃";

cout<<"┃(*_*)(*_*)(*_*)★4→通讯录的删除★(*_*)(*_*)(*_*)┃";

cout<<"┃(*_*)(*_*)(*_*)★5→通讯录的输出★(*_*)(*_*)(*_*)┃";

cout<<"┃(*_*)(*_*)(*_*)★6→通讯录的保存★(*_*)(*_*)(*_*)┃";

cout<<"┃(*_*)(*_*)(*_*)★0→退出管理系统★(*_*)(*_*)(*_*)┃";

cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛";

cout<<"功能调用(0~6):

";

cin>>m;

system("cls");

switch(m)

{

case1:

RD.Build();break;

case2:

RD.Add();break;

case3:

RD.Check();break;

case4:

RD.Delete();break;

case5:

RD.PrintList();break;

case6:

RD.Preservation_file();break;

case0:

n=0;cout<<"★感谢您的使用,再见!

★"<

default:

cout<<"输入错误,请重新输入!

"<

}

}

return0;

}

3.4调试分析

3.4.1主界面效果图

下图为程序编译完成后运行所得界面,可以输入“0~6”进行不同功能的调用:

 

当输入了“0~6”之外的内容时系统提示错误并要求重新输入,如下图:

3.4.2通讯录的建立

建立一个新的通讯录,直到输入编号为“0”时结束通讯录的建立。

如下图共新建了4记录:

编号分别为:

001

002

003

004

 

3.4.3通讯录的添加

添加一条记录并选择是否继续添加。

如下图(左)添加了一条记录并输入“Y”继续添加,下图(右)继续添加一条记录并输入“N”结束添加:

3.4.4通讯录的删除

按编号删除通讯录中已存在的指定记录。

如下图(左)删除了一条记录并输入“Y”继续删除,下图(右)继续删除一条记录并输入“N”结束删除:

当通讯录中没有任何记录时系统提示如下可按任

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2