c++通讯录程序设计.docx

上传人:b****4 文档编号:4110421 上传时间:2022-11-27 格式:DOCX 页数:25 大小:397.52KB
下载 相关 举报
c++通讯录程序设计.docx_第1页
第1页 / 共25页
c++通讯录程序设计.docx_第2页
第2页 / 共25页
c++通讯录程序设计.docx_第3页
第3页 / 共25页
c++通讯录程序设计.docx_第4页
第4页 / 共25页
c++通讯录程序设计.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

c++通讯录程序设计.docx

《c++通讯录程序设计.docx》由会员分享,可在线阅读,更多相关《c++通讯录程序设计.docx(25页珍藏版)》请在冰豆网上搜索。

c++通讯录程序设计.docx

c++通讯录程序设计

C++程序设计课程设计报告

——通讯录管理系统

 

班级:

1120551

学号:

03

姓名:

一课程设计题目与要求

1.1题目

通讯录管理系统

1.2系统功能要求:

(1)录入通讯录

(2)修改通讯录

(3)查询通讯录(可按姓名、电话、联系人类别查询)

(4)删除通讯录

(5)按姓名对通讯录进行排序

一课程设计题目与要求

1.1题目

通讯录管理系统

1.2系统功能要求:

(1)录入通讯录

(2)修改通讯录

(3)查询通讯录(可按姓名、电话、联系人类别查询)

(4)删除通讯录

(5)按姓名对通讯录进行排序

二需求分析

2.1问题描述

根据需求,该系统所应包含的信息有以下一些:

通讯录的基本信息:

姓名、地址、电话

根据需求,该系统所应实现的功能有以下一些:

各种基本数据的录入。

如:

通讯录基本信息录入。

各种基本数据的修改。

即:

允许对已经录入的数据重新进行编辑、修改。

例如修改通讯录中张三的电话信息

各种基本数据的删除。

例如将张三的信息从通讯录中删除

基于各种数据的查询。

例如输入张三姓名,查询张三的电话和地址。

数据导出:

将通讯录中信息导出到指定文件。

数据导入:

从指定文件导入通讯录信息到。

2.2系统环境

采用C++语言实现,开发环境为VC++6.0,可以运行在操作系统windows98及以上皆可。

2.3运行要求

能不受限制的录入通讯录信息

界面友好,操作方便,例如删除前需要提示用户是否删除

三概要设计

3.1系统流程设计

根据系统要求,设计如下的系统流程。

3.2系统模块设计

根据系统的功能设计,如下模块

1.主界面模块:

完成系统菜单的显示

2.功能选择模块:

根据用户的选择,完成其相应的功能

(1)通讯录信息录入:

完成用户从界面输入通讯录,保存入系统的功能

(2)通讯录信息修改:

完成用户从界面输入通讯录,在系统中查询定位,并将录入的数据保存入系统的功能

(3)通讯录信息查询:

完成用户从界面输入查询条件,在系统查询符合条件的通讯录信息,并在界面上显示的功能。

(4)通讯录信息导入:

完成用户从界面输入需要导入的文件路径名称,读取该文件的内容,保存入系统,并在界面上显示导入内容的功能。

(5)通讯录信息导出:

完成用户从界面输入需要导出的文件路径名称,将系统中通讯录信息保存入文件中。

(6)通讯录信息删除:

完成用户从界面输入需要的通讯录信息的姓名,并将其从系统中删除。

四详细设计

4.1数据结构设计

根据系统要求,系统中需要保存的数据有通讯录的信息,其结构如下:

数据项名称

数据项系统表示

数据类型

数据长度

备注

姓名

name

字符串

20

地址

address

字符串

100

电话

tele

字符串

20

4.2界面设计

1.主界面:

根据系统要求,设计一个字符界面,显示系统的菜单,为了体现友好性,将在每个菜单前显示该菜单项对应的数字用户输入菜单项前面的数字,主菜单消失,进入该模块的相应界面,进行相应的操作,完成后,回到主界面。

2.输入界面:

在光标下输入通讯录的信息,用空格将信息隔开

3.修改界面:

首先输入通讯录的姓名,显示该通讯录的详细信息,输入修改后的信息,将原来信息修改。

4.删除界面:

输入需要删除的姓名,将其从通讯录中删除

5.导出界面:

输入需要导出的文件路径,将通讯录信息导出到文件。

6.列表显示页面:

将通讯录中所有记录显示,每页显示10条

7.导入页面:

相关功能的整合

8.查询界面:

相关功能的整合

4.3模块实现

1.主界面实现:

调用cout函数,在屏幕上打印需要显示的字符信息,需要在显示之前调用system(“cls”)函数将前面的界面清空。

对应的实现函数menu_show();

2.功能选择模块实现:

接受从键盘输入的菜单选择,判断并调用相应的功能函数,完成其对应的功能。

实现功能选择。

对应的函数:

menu_select();

(1)通讯录信息录入模块实现:

模块说明:

从键盘接收输入的通讯录信息,在动态存储区中创建通讯录的节点,遍历链表,将其插入到通讯录链表的最后位置。

模块流程:

对应函数:

add(structphone*head)

(2)通讯录信息修改模块实现:

模块说明:

从键盘接收输入的需要修改通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入修改后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。

模块流程:

对应函数:

update(structphone*head)

(3)通讯录信息删除模块实现:

模块说明:

从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。

模块流程:

对应函数:

delete(structphone*head)

(4)通讯录信息导入模块实现:

模块说明:

从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。

模块流程:

对应函数:

load(structphone*head)

(5)通讯录信息导出模块实现:

模块说明:

从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。

模块流程:

对应函数:

save(structphone*head)

(6)通讯录信息查询模块实现:

模块说明:

从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。

模块流程:

对应函数:

search(structphone*head)

(7)通讯录信息显示模块实现:

模块说明:

从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。

模块流程:

对应函数:

list(structphone*head)

五测试

5.1录入通讯录测试

测试结果:

程序运行出现错误,如下

原因电话输入的长度超过了电话表示的长度

测试结果:

程序运行正常,正确的插入到链表的最后位置

3.测试数据:

输入:

张吴波湖北汽车工业学院8241470425

测试结果:

程序运行不正常,可以将张吴波湖北汽车工业学院,8241470插入到链表的最后位置,但是425不能保存

原因:

使用了scanf(“%s”),将空格作为截止符

5.2修改通讯录测试

测试数据:

在系统中存在4个名称为li的通讯录

测试数据:

在系统中不存在名称为张三的通讯录,输入后,提示姓名不存在,如下图

5.3导入通讯录测试

测试数据:

输入C:

\dd.tst路径(系统中不存在该文件)

测试结果:

提示不能打开文件,不能导入

回车后程序结束

原因:

不能打开文件文件使用了exit函数

测试数据:

输入C:

\data.txt路径(系统中该文件,格式符合程序要求)

测试结果:

提示能将文件中的数据正确导入

查询模块测试:

测试数据:

输入C:

\data.txt路

测试结果:

提示能将文件中的数据正确查询

删除模块测试

测试数据:

输入C:

\data.txt路径

测试结果:

提示能将文件中的数据正确删除

六结论及改进设想

此通讯录管理系统的程序开发,其亮点主要是引用了类来宏观调运程序,使得程序简单、明了、可读性强,在程序操作上也比较省事、方便。

通讯录程序无节点,这是一个非常大的不足,急需要改进,但由于时间比较紧,就没有想这部分程序。

其实,这部分程序也就是退出,需要一个好的位置来安放此程序。

通讯录程序是我做的第一个比较大的程序,在专业人士看来这不算什么,但对我来说有很大的意义,他的做出激发着我更好的学好c++,更好的学好专业课。

 

七心得体会

对第一次用C++应用程序来做这么大课题的我来说,了解C++语言的概念是非常重要的,C++语言既保留了C语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持,具有强大的编程功能,可方便地构造出模拟现实问题的实体和操作;编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。

用C++编写的程序可读性好,生成的代码质量高。

所谓C++语言:

是一种使用非常广泛的计算机编程语言。

任何一个优秀的程序,无非有以下几点:

效率高,可读性高,可重用性强,可移植性好。

具体到C++程序,如果做面向对象那块,无非是合理的类的设计,在类中合理安排数据和对数据的处理,信息隐藏的特性等等。

从C++应用程序目前的活跃程度,以及应用现状来说是完全能够肯定C++仍然是软件工业的基础,也不会退出历史舞台的。

我们也能够看到C++的发展非常活跃,对于新技术新思维非常激进,C++仍然广泛受到关注。

八.参考文献

九附录

程序源代码:

#include

#include

#include

#include

#include

intn,m;

usingnamespacestd;

classmsg

{

public:

msg();//默认构造函数

charinter_face();//首页

voidadd_person();//添加联系人

voiddel_person();//删除联系人

voidshow_all();//显示所有联系人

voidalter();//修改信息

voidselect();//查询联系人

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

private:

stringname;//姓名

stringsex;//性别

stringnum;//电话号码

stringad;//地址

stringrl;//类型

};

msg:

:

msg()

{

name="\0";

ad="\0";

num="\0";

sex="\0";

rl="\0";

}

//首页

charmsg:

:

inter_face()

{

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

<<"\t\t※※"<

<<"\t\t*****************************************"<

<<"\t\t\t选择:

";

charchoose;

cin>>choose;

returnchoose;

}

//添加联系人

voidmsg:

:

add_person()

{

cout<

<<"姓名:

";

cin>>name;

cout<<"电话:

";

cin>>num;

cout<<"类型:

";

cin>>rl;

cout<<"性别:

";

cin>>sex;

cout<<"地址:

";

cin>>ad;

save_new();

cout<

!

!

!

!

"<

}

//删除联系人

voidmsg:

:

del_person()

{

ofstreamoutData("temp.txt",ios:

:

out);

ifstreaminData("pbook.txt",ios:

:

in);//

if(!

outData||!

inData)

{

cout<

!

!

!

找不到文件!

!

!

!

"<

system("pause");

return;

}

stringsign;

cout<

";

cin>>sign;

stringstr1;

boolflag=true;

stringstr;

while(inData>>name>>num)

{

getline(inData,str);

if((sign==name)||(sign==num))

{

cout<

"<

cout<

cout<

:

left)<

<<""<

flag=false;

break;

}

outData<

:

left)<

<<""<

}

if(flag)

{

cout<

!

!

联系人中没你找的人!

!

!

!

"<

}

else

{

while(getline(inData,str))

{

outData<

}

outData.close();

inData.close();

ofstreamout("pbook.txt",ios:

:

out);

ifstreamin("temp.txt",ios:

:

in);

if(!

out||!

in)

{

cout<

!

!

"<

return;

}

while(getline(in,str))

{

out<

}

out.close();//

in.close();

cout<

!

!

"<

}

}

//显示所有联系人

voidmsg:

:

show_all()

{

ifstreaminData("pbook.txt",ios:

:

in);

if(!

inData)

{

cout<

!

!

!

没有找到文件!

!

!

!

!

"<

return;

}

boolflag=true;

stringrecord;

while(getline(inData,record))

{

if(flag)

{

cout<

"<

cout<<"姓名"<

}

cout<

flag=false;

}

if(flag)

{

cout<

!

!

!

!

"<

}

else

{

cout<

!

!

!

!

"<

}

}

//修改信息

voidmsg:

:

alter()

{

ofstreamoutData("temp.txt",ios:

:

out);

ifstreaminData("pbook.txt",ios:

:

in);//

if(!

outData||!

inData)

{

cout<

!

!

!

找不到文件!

!

!

!

"<

return;

}

stringsign;

cout<

";

cin>>sign;

stringstr1;

boolflag=true;

stringstr;

while(inData>>name>>num)

{

getline(inData,str);

if((sign==name)||(sign==num))

{

cout<

"<

cout<

cout<

:

left)<

<<""<

cout<

"<

cout<<"姓名:

";

cin>>name;

fflush(stdin);

cout<<"电话号:

";

cin>>num;

fflush(stdin);

cout<<"性别:

";

cin>>sex;

fflush(stdin);

cout<<"类型:

";

cin>>rl;

fflush(stdin);

cout<<"地址:

";

cin>>ad;

fflush(stdin);

save_new();

flag=false;

break;

}

outData<

:

left)<

<<""<

}

if(flag)

{

cout<

!

!

联系人中没你找的人!

!

!

!

"<

}

else

{

while(getline(inData,str))

{

outData<

}

outData.close();

inData.close();

ofstreamout("pbook.txt",ios:

:

out);

ifstreamin("temp.txt",ios:

:

in);

if(!

out||!

in)

{

cout<

!

!

"<

system("pause");

return;

}

while(getline(in,str))

{

out<

}

out.close();

in.close();

cout<

!

!

"<

}

}

//查询联系人

voidmsg:

:

select()

{

ifstreaminData("pbook.txt",ios:

:

in);

if(!

inData)

{

cout<

!

!

!

文件找不到!

!

!

!

"<

system("pause");

return;

}

stringsign;

cout<

";

cin>>sign;

fflush(stdin);

stringstr1;

boolflag=true;

stringstr;

while(inData>>name>>num)

{

getline(inData,str);

if((name==sign)||(num==sign))

{

cout<

"<

cout<

cout<

:

left)<

<

flag=false;

system("pause");

break;

}

}

}

voidmsg:

:

save_new()

{

ofstreamoutData("pbook.txt",ios:

:

app);

if(!

outData)

{

cout<

!

!

打开文件失败!

!

!

!

"<

system("pause");

return;

}

outData<

:

left)<

<<""<

<

<

<

outData.close();

}

voidmain()

{

msgabj;

do{

cout<

cout<<"\t\t***********************************************"<

<<"\t\t※※"<

<<"\

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1