- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课设说明书数据结构课设说明书
1引言
通讯录是用来记载、查询联系人通讯信息的工具。电子通讯录已成为手机、电子词典等电子设备中不可缺少的工具软件。通讯录管理系统能有效地管理通讯录相关信息,包括输入、查询、添加、修改、删除等功能,该软件给用户提供了一个简单的人机界面,用户可以根据提示信进行各种操作。
使用的编程语言是C语言。2问题分析
(1) 本题目主要涉及线性表的基本操作。
(2) 通讯录中的记录通常按记载顺序先后有序,因此选用线性表;如果考虑到很少删除联系人,并且新增联系人又添加在表尾,则可采用顺序表;但是如果考虑到在任何位置插入或删除操作,因涉及经常性的插入和删除,则应优先考虑采用链表。
通过上述分析,我选择单链表存储结构,通讯录存储如下typedef struct { //通讯录结点类型
char num[5]; //编号
char name[9]; //姓名
char phone[13]; //电话
char email[30]; //邮箱号
char kind[16]; //类别
} DataType;
typedef struct node { //结点类型定义
DataType data; //结点数据域
struct node *next; //结点指针域
} ListNode;
3总体设计
图1 系统模块结构图
输入:记录的录入。
显示;通讯录显示。
查找:按指定方式,输入关键字,查找指定记录。
插入:实现记录的添加或在指定位置插入新记录。
删除:提供指定记录的删除功能。
修改:提供修改某条记录的功能。
退出:结束程序运行。
图3-2 系统模块功能图
4详细设计
该通讯录管理系统可以划分为录入模块、查询模块、修改模块、删除模块、输出模块等。使用链表优化了插入操作,通过比较和指针移动来实现其修改和删除功能,而大大减少了元素的移动。在录入模块里,需要通过新建链表来录入联系人的相关信息,并判断录入的有关信息是否合法;插入操作是通过在链表里添加结点来实现的;查询模块可以实现按编号或姓名来查询链表里已有的联系人并输出其相关信息;修改模块是先调用查找函数在链表中找到记录并确认修改后,重新输入联系人的信息来达到修改的目的的;同样,删除模块也是通过调用查找函数查找到相关记录并确认删除后,来执行删除操作并释放该结点的;输出模块是通过调用函数来输出链表里的记录的。因此,对该通讯录系统实现的操作函数有:
LinkList CreateList(void);
void InsertNode(LinkList head,ListNode *p);
ListNode *ListFind(LinkList head);
void DelNode(LinkList head);
void PrintList(LinkList head);
void ChangeNode(LinkList head);
4.1 录入模块
录入联系人的信息。
4.1.1设计思路
(1)LinkList CreateList(void);
(2)(3)(4)4.1.2流程图
图4-1 录入模块功能图
4.2 查询模块
4.21设计思路为:
(1)ListNode *ListFind(LinkList head);
(2)(3)(4)4.22流程图
图4-2 查询模块功能图
4.3 删除模块
删除联系人的信息。
4.31 设计思路为:
(1)void DelNode(LinkList head);(2)(3)(4)4.32 流程图
图4-3 删除模块功能图
修改模块
修改联系人的信息。
4.41 设计思路
(1)void ChangeNode(LinkList head);(2)(3)(4)4.42 流程图
图4-4 修改模块功能图
4.5 输出模块
模块功能介绍:
4.5.1 设计思路:
(1)void PrintList(LinkList head);(2)(3)(4)4.5.2 流程图:
图4-5 输出模块流程图
5运行测试
图5-1 开始运行界面
(2)通讯录链表建立界面如下:
图5-2 通讯录建立界面
当录入重复时(根据序号判断):
图5-2 根据序号判断录入重复界面
当输入的类别不符合时:
图5-2 输入类别不合法时的界面
(3)通讯录链表插入界面如下:
文档评论(0)