C++通讯录管理系统地设计与实现.docx
《C++通讯录管理系统地设计与实现.docx》由会员分享,可在线阅读,更多相关《C++通讯录管理系统地设计与实现.docx(22页珍藏版)》请在冰豆网上搜索。
C++通讯录管理系统地设计与实现
通讯录的设计与实现
摘要
随着互联网的不断发展,互联网对我们生活产生的影响越来越大。
在日常的生活中,我们需要接触很多不同的人,如何运用互联网技术实现朋友圈通讯录的管理呢?
这是我们日常生活中经常要面临的问题。
本次毕业设计中设计的通讯录管理系统既可以实现对通讯录进行管理,在本地进行通讯录的增加、修改、删除、更新等操作。
本次设计的通讯录管理系统主要是了解通讯录管理系统的业务逻辑,熟悉通讯录管理系统的实现方式,模拟了真实的通讯录管理软件,为后续相关内容的学习打下了坚实的基础。
通讯录管理系统是一个专门针对少用户的实用系统,它方便了大家对众多信息的储存和快速查询的功能,大大减少了查找过程的时间,是一个比较实用的通讯录管理系统,。
对我们后续学习移动端的通讯录管理也会有很大的帮助。
本设计使用的计算机语言是C++,C++语言是在C语言的基础上作了进一步的强化。
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。
它的应用范围广泛,具备很强的数据处理能力。
作为C语言家族的一种,C++也具备了C语言所具有的优点,并对其进行了优化封装,是开发者更容易操作运用,所以本次课程设计采用了C++作为系统的开发语言。
本通讯录管理系统的主要功能有:
建立通讯录的链表、插入通讯录信息、查询通讯录信息、删除通讯录信息,输出通讯录信息,保存到通讯录信息。
采用的是面向过程的方法,封装函数功能,调用各个功能函数来实现系统的各个功能。
关键词
通讯录;链表;类;
第一章绪论
1.1课题背景
随着市场经济的发展和人们生活水平的提高,互联网技术也在不断地取得新的成果,近些年移动通讯软件层出不穷,人与人之间的联系越来越便捷,这也使得同时与许多人保持联系成为生活中不可或缺的一部分,而单纯的依靠人脑已经很难记住所有人的联系方式,使用传统的纸面方式记录联系人信息时,在联系人比较多时查找将非常的困难。
因此,本设计实现的通讯录成为了许多人保持联系方式的首选。
当前在许多软件中都附带了通讯录功能,部分手机及一些手机软件也提供了功能不一的通讯录功能,一定程度上说明了通讯录对我们工作生活的重要性。
1.2目的和意义
本毕业设计可以加深对课堂理论学习的理解,增强动手能力,培养了学生合作的能力,为以后的工作学习打下了坚实的基础。
在计算机领域中,信息管理系统是我们在学习和生活中比较常见的系统,通过对通讯录管理系统的业务逻辑进行分析,可以很好的理解信息管理系统的业务逻辑,由于市面上绝大部分的信息管理系统的业务逻辑都存在共性,所以通过通讯录管理系统的设计,可以很好地掌握市面上很多的通讯录管理系统的业务逻辑。
同时,通讯录系统也是计算机理论学习过程中最常见的信息管理系统之一,通过对该系统的设计与实现,也可以很好地锻炼学生的实践能力,以及培养学生的计算机逻辑思维。
本系统最求简洁、实用、方便等一些实用性的功能,新建模块上可以实现多添加;查询模块可以根据姓名、性别和电话号码查询,以方便管理员查询自己想要的信息;删除模块上,管理员可以根据自己不想要的或者过时的信息进行删除,删除方便简洁。
该设计的任务是利用一个简单实用的菜单,通过菜单项进行选择,实现和完成通讯录管理中常用的几个不同的功能。
第二章需求分析
2.1范围
(1)标识
文件状态:
【】草稿
【√】正式发布
【】正在修改
文件标识:
需求分析报告
当前版本:
1.0
作者:
姜芸
完成日期:
2014.03.25
(2)系统概述
软件名称:
通讯录系统。
软件功能:
该软件可用于通讯录中插入,删除,快速查找,输出通讯信息,保存到文件中。
用户:
管理员
开发者:
2.2需求概述
(1)系统目标
本系统的总体目标是通过该系统的实施,可以对通讯录信息更加有效地进行管理。
系统设计实施过程中,力争做到以下几点:
①.具有较高的可靠性和可用性;
②.使用方便,易学易用;
③.系统易于管理维护;
(2)运行环境
①设备
Pentium4800MHz或更高主频CPU512MB以上内存。
②支持程序
MicrosoftVisualC++6.0Windows系统DOS系统
③用户的特点
最终用户为参加等级考试的学生,要求操作具有便捷易用等特点。
2.3功能需求
(1)功能介绍
通讯录用户的建立、插入、查询、删除、输出,保存到文件中。
系统功能主要分为以下六个部分:
①.查询功能:
1)在通讯录的查询模块中,用户可以快速查找自己想要联系的人,查找不支持模糊查询。
2)如能查询到,在最顶端显示,没查询到则不显示信息。
②.插入功能:
1)用户可以对已有的通讯录信息进行添加。
2)插入信息后,给出提示,用户插入信息成功。
③.建立通讯信息功能:
1)用户在需要时可以添加信息,当信息需要录入时,根据系统的输入要求填写信息。
2)当添加完毕后,系统会提示建立通讯录信息成功。
④.删除功能:
1).用户如要删除不需要的信息,可以调出删除功能,在选定后,可以一个或者多个信息进行删除,并更新通讯录信息内容。
2).在删除信息时要确认都才能删除。
⑤.保存功能:
用户可以根据需要选择保存功能,对数据进行存储。
⑥.输出功能:
用户可以对操作后的通讯录信息进行输出,检查通讯录信息。
(2)系统用例图
系统主要部分:
管理员的用例图
图2-1系统用例图
2.4实体关系图
系统用到实体的关系图如下:
图2-2系统E-R图
第三章概要设计
3.1范围
(1)标识
文件状态:
【】草稿
【√】正式发布
【】正在修改
文件标识:
概要设计报告
当前版本:
1.0
作者:
姜芸
完成日期:
2014.03.25
(2)系统概述
软件名称:
通讯录管理系统。
软件功能:
该软件可用于通讯录中插入,删除,快速查找,输出通讯信息,保存到文件中。
用户:
管理员
开发者:
3.2系统结构
通讯录管理系统的结构如下图所示
图3-1系统结构图
3.3通讯录界面设计
通讯录用户的建立、插入、查询、删除、输出,保存到文件中。
系统功能主要分为以下六个部分:
(1).查询功能:
1)在通讯录的查询模块中,用户可以快速查找自己想要联系的人,查找不支持模糊查询。
2)如能查询到,在最顶端显示,没查询到则不显示信息。
(2).插入功能:
1)用户可以对已有的通讯录信息进行添加。
2)插入信息后,给出提示,用户插入信息成功。
(3).建立通讯信息功能:
1)用户在需要时可以添加信息,当信息需要录入时,根据系统的输入要求填写信息。
2)当添加完毕后,系统会提示建立通讯录信息成功。
(4).删除功能:
1).用户如要删除不需要的信息,可以调出删除功能,在选定后,可以一个或者多个信息进行删除,并更新通讯录信息内容。
2).在删除信息时要确认都才能删除。
(5).保存功能:
用户可以根据需要选择保存功能,对数据进行存储。
(6).输出功能:
用户可以对操作后的通讯录信息进行输出,检查通讯录信息。
第四章系统详细设计
4.1范围
(1)标识
文件状态:
【】草稿
【√】正式发布
【】正在修改
文件标识:
详细设计报告
当前版本:
1.0
作者:
姜芸
完成日期:
2014.03.25
(2)系统概述
软件名称:
通讯录管理系统。
软件功能:
该软件可用于通讯录中插入,删除,快速查找,输出通讯信息,保存到文件中。
用户:
管理员
开发者:
4.2详细设计说明
(1)各个界面设计
通讯录资料有ID、姓名、性别、手机号码、地址。
具体结构如下:
structstudent
{
intid;
charname[20];
charsex[20];
charcellphone[20];
charaddress[50];
structstudent*next;
};
函数原型:
intmain()
main()函数主要是整个系统的控制端,主要功能是控制整个程序的运行。
从主函数开始调用各相关函数来达到相应的功能,关键代码如下:
voidmain()
{
structstudent*creat();
voidprint(structstudent*head);
structstudent*del(structstudent*head);
voidjiemian();//功能函数的声明
voidchaxun(structstudent*head);
structstudent*increase(structstudent*head);
voidSave(structstudent*head);
structstudent*stu,*p;
inta=1;
p=NULL;
while(a!
=0)//使用循环语句让程序重复可执行,知道输入0结束循环
{
p=stu;
jiemian();
cout<<"请输入0-6操作数进行操作\n";
cin>>a;
switch(a)
{
case1:
cout<<"※当输入ID号为0时结束通讯录信息的输入操作※\n";
stu=creat();
printf("建立信息链表完成\n");
system("pause");
system("cls");
break;
case2:
increase(p);
system("pause");
system("cls");
break;
case3:
chaxun(p);
system("pause");
system("cls");
break;
case4:
del(p);
system("pause");
system("cls");
break;
case6:
Save(p);
system("pause");
system("cls");
break;
case5:
print(p);
system("pause");
system("cls");
break;
case0:
system("pause");break;
}
}
cout<<"\n\n";
}
桌面设计函数
函数原型:
voidjiemian()
代码如下:
voidjiemian()//桌面设计函数
{
cout<<"\t※------------------------------------------------※\n";
cout<<"\t※************欢迎使用通讯信息管理系统************※\n";
cout<<"\t※※\n";
cout<<"\t※------------------------------------------------※\n";
cout<<"\t※1.建立通讯录信息链表※\n";
cout<<"\t※2.插入通讯录信息※\n";
cout<<"\t※3.查询通讯录信息※\n";
cout<<"\t※4.删除通讯录信息※\n";
cout<<"\t※5.输出通讯录信息※\n";
cout<<"\t※6.保存到文件※\n";
cout<<"\t※0.退出通讯录系统※\n";
cout<<"\t※------------------------------------------------※\n";
}
建立通讯信息函数
函数原型:
structstudent*creat()
代码如下:
structstudent*creat()
{
structstudent*head;
structstudent*p1,*p2;
p1=p2=(structstudent*)malloc(LEN);//为p1,p2分配空间
cout<<"请输入ID号:
";
cin>>p1->id;
cout<<"请输入姓名:
";
cin>>p1->name;
cout<<"请输入性别:
";//输入数据对数据进行存储
cin>>p1->sex;
cout<<"请输入手机号码:
";
cin>>p1->cellphone;
cout<<"请输入地址:
";
cin>>p1->address;
head=NULL;
n=0;
while(p1->id)
{
n++;
if(n==1)
{
head=p1;//让头结点指向P1所指向的结点
}
else
{
p2->next=p1;//让p2指向p1;
}
p2=p1;
p1=(structstudent*)malloc(LEN);//为产生新的节点分配空间
cout<<"请输入ID号:
";
cin>>p1->id;
if(p1->id==0)break;//当输入0时,结束循环
cout<<"请输入姓名:
";
cin>>p1->name;
cout<<"请输入性别:
";
cin>>p1->sex;
cout<<"请输入手机号码:
";
cin>>p1->cellphone;
cout<<"请输入地址:
";
cin>>p1->address;
}
p2->next=NULL;
returnhead;//返回头节点地址给主函数
}
查询函数
函数原型:
voidchaxun(structstudent*head)
进入此函数后,输入ID号进行通讯录信息的查询。
代码如下:
voidchaxun(structstudent*head)
{
structstudent*p1,*p2;
intID;
p1=head;
cout<<"请输入要查询的ID号:
";
cin>>ID;
while(p1->id!
=ID&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(p1->id==ID)
{
cout<<"查询的信息如下所示:
\n";
cout<<"ID号:
"<id<<''<<"姓名:
"<name<<''<<"性别:
"<sex<<''<<"手机号码:
"<cellphone<<''<<"地址:
"<address<cout<<"\n";
}
else
{
cout<<"没有需要查询的ID相关数据\n";
cout<<"\n";
}
}
删除函数
函数原型:
structstudent*del(structstudent*head)
代码如下:
structstudent*del(structstudent*head)
{
structstudent*p1,*p2;
intnum;
cout<<"请输入要删除的ID号";
cin>>num;
if(NULL==head)
{
cout<<"\n没有通讯信息输出\n";
gotoend;
}
p1=head;
while(p1->id!
=num&&p1->next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(num==p1->id)
{
if(p1==head)
{
head=p1->next;
}
else
{
p2->next=p1->next;//起到删除结点的作用
}
cout<<"\n删除成功!
请保存到文件中\n",num;
}
else
{
cout<<"%d没有相关信息可删除!
\n",num;
}
end:
returnhead;
}
插入函数
函数原型:
structstudent*increase(structstudent*head)
代码如下:
structstudent*increase(structstudent*head)
{
structstudent*p1,*p3,*p;
p=head;
p1=p->next;
p3=(structstudent*)malloc(LEN);//为P3分配空间
cout<<"请输入要插入的通讯信息:
\n";
cout<<"请输入ID号:
";
cin>>p3->id;
cout<<"请输入姓名:
";
cin>>p3->name;
cout<<"请输入性别:
";
cin>>p3->sex;
cout<<"请输入手机号码:
";
cin>>p3->cellphone;
cout<<"请输入地址:
";
cin>>p3->address;
cout<<"增添通讯录信息成功,请保存到文件中\n";
p3->next=p1;
p->next=p3;
returnhead;
}
保存函数
函数原型:
voidSave(structstudent*head)
代码如下:
voidSave(structstudent*head)
{
FILE*fp;
structstudent*p;
intflag=1,count=0;
fp=fopen("通讯录信息.doc","wb");//以二进制形式保存到文件中
if(fp==NULL)
{
cout<<"\n重新打开文件时发生错误!
\n";
exit
(1);
}
p=head;
while(p)
{
if(fwrite(p,sizeof(p),1,fp)==1)//写入到txt文件中
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
cout<<"\n文件保存成功\n";
}
fclose(fp);//关闭资源
}
第五章测试说明
5.1范围
(1)标识
文件状态:
【】草稿
【√】正式发布
【】正在修改
文件标识:
需求分析报告
当前版本:
1.0
作者:
姜芸
完成日期:
2014.03.25
(2)系统概述
软件名称:
通讯录管理系统。
软件功能:
该软件可用于通讯录中插入,删除,快速查找,输出通讯信息,保存到文件中。
用户:
管理员
开发者:
5.2测试计划及预期结果
本系统用到的算法主要有链表的一些应用及搜索等基本算法,没有用到其它比较复杂的算法,操作起来简单,并且容易控制;还用到输入输出流的一些操作来使显示的信息对称,不凌乱;再就是一些文件操作,更改存储文件中的内容,保存操作后的所有信息。
本系统是在MicrosoftVisualC++6.0上设计及运行的,所有的信息显示均是在dos界面中显示出来,在每一步操作后,都利用system("cls")对dos界面进行清屏,使显示器显示的信息清晰、整齐。
5.3具体测试情况
当运行系统时,首先进入的是登陆界面,如下所示:
图5-1系统登录界面
输入任意键以后,进入主菜单页面,如下:
图5-2主菜单界面
有6个显示功能可供选择,键入1可以增加通讯录信息,可以添加自己想要的人的信息。
外观如上所示:
从主界面显示以建立的通讯录信息中
图5-3显示通讯录
从主界面键入4选项,则可进入删除功能,且有相应的提示信息,以帮助用户正确完成相应的删除功能。
图5-4删除通讯录信息
查询通讯录信息界面说明
图5-5查询通讯录信息
退出系统时的界面说明
图5-6退出通讯录系统
第六章总结
本文主要研究了基于C++通讯录管理系统的设计与实现,很好的模拟了市面上大部分的通讯录管理系统的功能,最终实现了通讯录管理系统对通讯录信息的增加、修改、删除、和更新的操作。
本文首先分析了课题的研究背景,介绍了当前市面上通讯录管理系统的需求和基本功能,从不同的角度说明了本文研究的目的和意义,同时还介绍了本系统需要实现的功能。
然后,是根据获得到的需求结果,对系统进行概要设计和系统模块的详细设计。
最后在系统设计完成之后,完成了对系统的测试任务,使系统更加的符合我们的业务需求。
经过这些天的忙碌,最终把设计任务完成了。
在整个设计实现的过程中也让我学到了很多,要做好一件事,只能一步一步的去做,不可能一下子就完成。
本来以为简单的几个功能,要实现以为很容易,至多一天就可以做完,可是在真正实现、编写代码的过程却发现有太多的问题没有解决。
比如要存储哪些数据,用什么方式存储;用怎么样的结构去保存各种数据等。
要做好一个系统,一个严谨的思维是不可以或缺的,每一个联系都要考虑,每个细节都需要注意,每一种错误都要会解决。
只有把每一种问题都解决了,才能做出一个完善的系统出来。
受时间和作者水平所限,本系统为适用管理员,系统中存在不足或者不当之处。
参考文献
[1]谭浩强.C程序设计(第三版).北京:
清华大学出版社,2005
[2]严蔚敏著.吴伟民.数据结构(C语言版).北京:
清华大学出版社,2007
[3]谭浩强著.C++程序设计.北京:
清华大学出版社,2004.6