通讯录管理系统报告书.docx

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

通讯录管理系统报告书.docx

《通讯录管理系统报告书.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统报告书.docx(33页珍藏版)》请在冰点文库上搜索。

通讯录管理系统报告书.docx

通讯录管理系统报告书

《C++程序设计》课程设计

通讯录管理系统

学院信息与电气工程学院

专业电子信息工程

年级大一

学号0808140208

班级电子081

姓名蒋明阳

 

2009年7月

目录

一.设计项目名称

二.课程设计目的

三.需求分析及规格说明

3.1需求分析

3.2详细功能

3.3规格说明

四.概要设计

4.1通讯录管理系统说明图

4.2数据的结构和各模块分析

4.3数据保存方式及格式

4.4实现各模块功能的相应程序

五.详细设计的部分

六.调试分析及心得体会

6.1调试分析

6.2心得体会

七.使用说明

7.1运行环境

7.2系统操作说明

八.全部源代码

 

一.设计项目名称:

通讯录管理系统

二.课程设计目的:

通过设计一个《通讯录管理系统》,进一步熟悉C++中类的概念、基本知识和技能,类的封装、继承的实现方式。

掌握面向对象程序设计的基本思路和方法,并利用所学的基本知识和技能解决简单的面向对象的程序设计问题。

了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C++的理解与VisualC++环境的使用:

逐步熟悉程序设计的方法,并养成良好的编程习惯。

三.需求分析及规格说明:

Ø3.1,需求分析:

●3.11设计一个实用的小型学生通讯录管理系统,用文件来存储学生的姓名,电话,QQ号码,邮编,地址等信息,完成对信息的添加,删除,查询,显示所有信息,退出及用双向链表来处理修改等操作.

●3.12详细功能如下:

●A.添加:

系统将提示用户输入新添加学生信息,输入到文件中,学生信息数据包括姓名,电话号码,QQ号,邮编,地址.

●B.删除:

首先由用户输入要删除的学生的姓名或者电话号码,然后调用删除函数,删除该学生的所有相关资料.

●C.显示所有人员信息:

该功能将显示已经保存的所有学生的姓名,电话,QQ号,邮编及地址.

●D.修改:

首先由用户输入要修改的学生姓名或者电话号码,然后系统用修改函数查找,显示该名同学的资料,然后系统提示用户输入需要修改的人员的相关信息.并用双向链表来实现修改功能

●E.查询:

可由用户输入要查找的学生姓名或电话号码,然后系统用查找函数查找,接着系统使用相关文件命令输出所查找的人员的全部信息.

●F.退出系统

关闭通讯录管理系统.

Ø3.2.规格说明:

●3.21:

要有一个菜单,用于选择各项功能:

其中包括:

.a:

添加新联系人;

.b:

删除联系人;

.c:

显示所有人员信息;

.d:

修改人员信息;

.e:

查询联系人;

.f:

关闭通讯录.

●3.22:

采用面向对象的程序设计方法,a,b,c,d,e,这五项菜单都调用一个函数来实现.

四.概要设计:

Ø4.1.通讯录管理系统功能说明图:

Ø4.2.数据的结构及各模块分析:

●4.21:

设计类,对象及基本数据类型:

●4.211创建一个book类,它有五个私有数据成员:

stringname;姓名

stringaddress;家庭地址

stringpersonalnumber;本人联系电话

stringclass;班级

stringuniversity;就读大学名称

stringhomepnumber家庭电话

stringmajor专业

stringpost邮编

包含七个公有成员函数:

功能如下:

charinter_face();首页

voidadd_person();添加联系人

voiddel_person();删除联系人

voidshow_all();显示所有联系人

voidalter();修改信息

voidselect();查询联系人

voidsave_new();保存新增加的联系人

在主函数main()之中,

.bookobj;创建名为obj的对象

●4.212.结构体:

structrecord

bookobject;object对象作为结构体record的一个成员

record*prior;定义一个指向前驱的结构体指针

record*next;定义一个指向后继的结构体指针

};

该结构体是在alter()修改函数中用来处理相关信息的修改.

●4.213.字符串变量:

str,record;

字符变量:

choose;

布尔型变量:

flag;

Ø4.3.数据保存方式以及格式:

该通讯录管理系统将把输入的人员信息保存为pbook.txt文本文件,在文件读取时系统将会把该文件中相关信息读出,并在屏幕上显示出相关信息.

Ø4.4.实现各模块功能的相应程序:

●4.41,界面:

inter_face()

{

system("cls");

cout<

cout<<"\t\t★★★★★★★★★★★★★★★★★★★★

…..……

fflush(stdin);

returnchoose;

}

 

●4.42添加联系人:

add_person()

{

cout<

…….……

.save_new()

{

ofstreamoutData("pbook.txt",ios:

:

app);

if(!

outData)

……

outData.close();

}

cout<

!

!

"<

system("pause");

}

 

●4.43删除联系人

del_person()

{

ofstreamoutData("temp.txt",ios:

:

out);

……

cout<

!

!

"<

}

system("pause");

}

 

●4.44显示所有联系人:

show_all()

{

ifstreaminData("pbook.txt",ios:

:

in);

……

cout<<"所有联系人已经全部显示出来!

!

!

"<

}

system("pause");

}

 

●4.45修改信息

alter()

{

ifstreaminData("pbook.txt",ios:

:

in);

……

cout<

!

!

"<

system("pause");

}

}

 

●4.46查询联系人

select()

{

ifstreaminData("pbook.txt",ios:

:

in);

……

}

system("pause");

}

五.详细设计的部分:

现将“修改”功能模块详解如下:

voidbook:

:

alter()

{

ifstreaminData("pbook.txt",ios:

:

in);

//打开文件pbook.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();//关闭pbook.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.class<<""<

<object.personalnumber<<""<

<object.post<<""<

<object.address<

<objiet.homepnumber<

<object.university<

<object.major<

//输出要修改的人的信息

flag=false;

}

cout<

"<

cout<<"姓名:

";

cin>>p->object.name;

fflush(stdin);

cout<<"个人联系方式:

";

cin>>p->object.personalnumber;

fflush(stdin);

cout<<"家庭地址:

";

cin>>p->object.adress;

fflush(stdin);

cout<<"邮编:

";

cin>>p->object.post;

fflush(stdin);

cout<<"家庭电话:

";

cin>>p->object.homepnumber;

fflush(stdin);

cout<<”就读大学”;

cin>>p->object.university;

fflush(stdin);

cout<<”班级”

cin>>p->object.class

fflush(stdin);

cout<<”专业”;

cin>>p->object.major

break;

//根据提示进行修改

}

p=p->next;//使结构体指针p指向该指针的末尾

}

if(flag)

{

cout<

!

!

";

cout<

system("pause");

return;

}

else

{

ofstreamout("pbook.txt",ios:

:

out);

//打开文件pbook.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();//关闭pbook.txt文件

cout<

!

!

"<

system("pause");//屏幕暂停

}

}

六.调试分析及心得体会:

Ø6.1.调试分析:

●6.11函数:

fflush(stdin);

功用:

stdin是默认的输入流文件,对应输入缓冲区就是清空输入缓冲区,

避免缓冲区内残存读取函数无法取走的内容!

也就是在添加人员信息

(见下程序段)时,如果加入该函数,则输入的信息如:

姓名,电话等,文件调

用该函数时,就可以把缓冲区的内容全部送入文件.

……cout<<"姓名:

";

cin>>name;

fflush(stdin);

cout<<"电话:

";……

●6.22.函数alter();中,用指针来处理双向链表时.相关程序及分析如下:

record*H=newrecord;

//新建一个结构体指针,作用是为了指向要修改的人员的记录

record*p=H;……

//令p结构体指针指向结构体指针H,为了用p来建立双向链表

…p=H;

//再次使用p指向H的头节点,为了在while(){}循环中输出要修改的整

个人员的信息

while(p){}……//依次输出要修改信息,并进行修改.

……………

p=H;//又令p指针指向H指针的头节点,为了将修改后的信息输出到修改

while(p)//前的位置

{

out<

:

left)<

cout<

!

!

"<

 

Ø6.2.心得体会:

●6.21,程序的编写应是:

三分编写,七分调试;

●6.22,程序编写之前需求分析,至关重要,将关系这整个项目的成败.

●6.33,一名优秀程序员的成长,需要付出很多很多,编程是每天必做

之事,就像一位程序大师所说:

“Afterthreedays withoutprogramming, 

ifebecomesmeaningless. 三日不编程,食肉无味”

●6.34,熟能生巧,这次在用指针处理双向链表时,以前对这块内容并不十分清楚,,这次感觉很吃力,所以在今后的编程之中,尽可能把基本技能练习熟练.

●6.35,做软件最终是满足用户的需求,所以做软件时应一切应以用记为导向.

七.使用说明:

Ø7.1运行环境:

MicrosoftVisualC++6.0

Ø7.2在此,把软件使用过程写出,并对此程序的一些细节和具体的操作方法加以说明,说明如下:

●7.21将软件进行初始化,即在VC++6.0中运行该程序,进入程序主界面,

界面显示的是“一个通讯录系统”,总的操作流程有七个方面:

1,添加新联系人

2,删除联系人

3,显示所有联系人

4,修改信息

5,查询联系人

6,关闭通讯录

7,最后是提示用户选择要使用的功能

●7.22.输入和存取人员信息,选择菜单界面的第1个选择,按Enter键进入此选择界面,根据提示,输入信息相关信息,出现以下界面:

●7.23显示所有人的信息,按“3”,出现以下界面:

●7.24要修改人员信息就按“4”,根据提示输入相关信息:

如下:

7.25要查找相关人员信息就按“5”,根据提示输入信息,将出现以下界面

●7.26,要删除相关人员信息,按“2”,根据提示输入信息,将出现以下界面

7.27要退出该程序,按“6”.

 

八.全部源代码:

//C++课程设计---通讯录

#include

#include

#include

#include

#include

usingnamespacestd;

classbook

{

public:

book();

charinter_face();

voidadd_person();

voiddel_person();

voidshow_all();

voidalter();

voidselect();

voidsave_new();

private:

stringname;

stringaddress;

stringhomepnumber;

stringpost;

stringclass;

stringuniversity;

stringpersonalnumber;

classmajor;

};

structrecord

{

bookobject;

record*prior;

record*next;

};

book:

:

book()

{

name="\0";

address="\0";

number="\0";

post="\0";

qq="\0";

}

charbook:

:

inter_face()

{

system("cls");

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.显示所有联系人.6.关闭通讯录.※"<

<<"\t\t※※"<

<<"\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"<

<

";

charchoose;

cin>>choose;

fflush(stdin);

returnchoose;

}

voidbook:

:

add_person()

{

cout<

cout<<"姓名:

";

cin>>p->object.name;

fflush(stdin);

cout<<"个人联系方式:

";

cin>>p->object.personalnumber;

fflush(stdin);

cout<<"家庭地址:

";

cin>>p->object.adress;

fflush(stdin);

cout<<"邮编:

";

cin>>p->object.post;

fflush(stdin);

cout<<"家庭电话:

";

cin>>p->object.homepnumber;

fflush(stdin);

cout<<”就读大学”;

cin>>p->object.university;

fflush(stdin);

cout<<”班级”

cin>>p->object.class

fflush(stdin);

cout<<”专业”;

cin>>p->object.major

save_new();

cout<

!

!

"<

system("pause");

}

voidbook:

:

save_new()

{

ofstreamoutData("pbook.txt",ios:

:

app);

if(!

outData)

{

cout<

!

!

打开文件失败!

!

!

"<

system("pause");

return;

}

outData<

:

left)<

<object.name<<""<

<object.class<<""<

<object.personalnumber<<""<

<object.post<<""<

<object.address<

<objiet.homepnumber<

<object.university<

<object.major<

outData.close();

}

voidbook:

:

del_person()

{

ofstreamoutData("temp.txt",ios:

:

out);

ifstreaminData("pbook.txt",ios:

:

in);

if(!

outData||!

inData)

{

cout<

!

!

找不到文件!

!

!

"<

system("pause");

return;

}

stringsign;

cout<

";

cin>>sign;

boolf

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

当前位置:首页 > 人文社科 > 法律资料

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

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