电话簿系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电话簿系统设计
一、前言
随着通信技术的发展,电话越来越普及,如何管理成百上千的电话号码成了人们工作生活中新的烦恼,传统的手抄电话簿已经不能满足要求了,方便快捷、高效易用的电子电话簿将成为人们联系交流的重要工具。因此,制作一款电话簿管理程序符合市场的需求,具有一定的现实意义。
二、需求分析
1、功能需求
根据所设计的题目,分析得到所要完成的目的,对电话簿的了解,知道电话簿应该具有的功能有
(1)增加一个新的电话号码;
(2)显示所有已存的电话号码;
(3)删除一个电话号码;
(4)根据姓名查询一个人的电话号码;
(5)帮助;
(6)退出;
2、设计目标
明确程序的设计任务,要知道程序要实现什么功能和需要做什么。
(1)实现了对电话号码的存储和查询;
(2)方便用户的使用和管理;
(3)解决了需要记忆电话号码冗长数字的烦恼;
(4)满足了用户的需求,方便了人们之间的交流;
(5)完善了手机功能。
3、实验环境
Visual C++ 6.0 开发环境
4、实验要求
(1)根据实验目的设计实验;
(2)根据实验功能设计代码,能够实现基本功能;
(3)基本符合老师的要求;
三、概要设计
1.据需求分析设计出相应的流程
2.功能分析
(1)Add record:可以添加姓名和电话号码信息;
(2)Display all records:对每个记录的信息按照姓名第一个姓氏的首字母排列显示;
(3) Search for friend by name:根据姓名寻找电话号码;
(4)Delete record:删除存储的信息;
(5)Help:点击提示操作者;
(6) Exit program:退出项目操作;
四、程序设计方案
1、基本设想
将联系人数据和相应的操作函数封装在node类中,利用链表进行数据结构的组织,使用添加结点、删除结点、输出结点等单向链表的操作实现添加、删除、显示联系人电话号码的功能。
2、基本原理和数据结构:单向链表
链表是一种常见的数据组织形式,它采用动态分配内存的形式实现。需要时
可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内
存空间的浪费。
在链表中,逻辑上相邻的两个元素ai与ai+1在内存中并不一定相邻。为了
表示ai与ai+1之间的逻辑关系,对数据元素ai来说,除了需要存储本
身的信息之外,还需要存储一个指向下一个元素ai+1的指针。将链表
中的数据元素称为结点(Node)结点结构如图1所示。
从图1中可以看出,每个结点包含数据域和指针域。数据域存放数据元素本
身的信息;指针域存放下一个结点的地址。链表是由n(n≥0)个结点组成的。当
n为0时表示空链表。图2给出了一个由5个结点组成的链表示意图。
图2中的head称为头指针,它指向链表的第1个结点a1,a1的指针指向第
2个结点a2,a2的指针指向第3个结点a3,…,直到最后一个结点a5,将a5的
指针域置为空,表示后面没有结点。
对链表的访问必须从头指针head开始,然后按照结点的先后顺序依次访问
链表中的每个结点。因此,链表具有顺序存取的特点。
综上所述,本程序的结点结构定义如下:
Class friend_node //用类定义联系人结点
{ char first_name[15]; //名字
char phone_num[12]; //电话号码
friend_node *next; //指针,指向下一个结点}
五、回顾与总结
1、本程序以单向链表为基本数据结构,实现了电话簿管理的各项功能,包
括加入、删除、显示和查询联系人电话号码的功能,并且加入系统自动记录添加
的时间功能,添加了模糊查找和首字母查找的新模式,非常的实用和人性化。
2、在做课程设计的过程中,我翻阅了大量的资料,包括不少英文资料,学
到了许多课堂上没有的知识,了解到了国外许多大师的编程经验,提高了我的自
学能力和英文水平。
3、通过本课程设计的实践提高了自己发现问题、分析问题、以及解决问题特别是用计算机编程解决实际问题的能力。
4、在做课程设计的过程中体会到了学习编程语言一定要多实践才行的道理,有时认为是正确的语句实际写出来却可能出现很多的错误,在实际编程中我积累了不少发现错误和改正错误的经验。