通讯录实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

滁州学院

课程设计报告

课程名称:数据结构

设计题目:通讯录管理系统

系别:计算机与信息工程学院

专业:计算机科学与技术

组别:第七组

起止日期: 2011年11月20日~ 2012 年1月8日指导教师: 刘士喜胡成祥

计算机与信息工程学院二○ 一一年制

课程设计任务书

目录

1 需求分析 (1)

1.1 课程设计目的与要求 (1)

1.1.1 课程设计目的 (1)

1.1.2 课程设计要求 (1)

2 概要设计 (1)

2.1 系统功能概要 (1)

2.2 数据结构及原理 (2)

3 详细设计 (3)

3.1 各模块调用关系 (3)

3.2 插入信息 (3)

3.3 显示信息 (4)

3.4 查询信息 (5)

3.5 其他功能 (6)

4 系统测试 (9)

总结 (14)

致谢 (14)

参考文献 (14)

附录 (16)

1 需求分析

1.1 课程设计目的与要求

1.1.1 课程设计目的

随着信息社会的高速发展,人与人之间的联系越来越频繁,通讯方式越来越多样化,如何保证与朋友、同学、同事、领导、亲戚等之间的联系,并能方便快捷的查找、记录、修改其相关通讯信息。仅靠以前单独的手工记录已远远不能满足当前的需要。

开发一个通讯录管理系统,借助计算机可以方便、快捷、灵活的管理个人的朋友及相关人员的通讯信息,了解友人相关信息,帮助与友人保持联络。

所以设计一个通讯录管理系统管理各人的通讯信息是非常必要的,同时,通过用循环双向链表设计通讯录管理系统可以让我们更好的去理解循环双向链表,更好的学好数据结构这门课程。

1.1.2 课程设计要求

建立通讯录信息,实现基础数据信息的录入,信息包括姓名、街道、城市、邮编、国家等内容。

实现查看信息的功能,能够输出全部的通讯录信息。

实现通讯录管理系统的维护,能够提供包括添加通讯信息、删除通讯信息和查询通讯录信息等功能。

提供查询通讯录信息的方法,便于用户查找通讯信息。

能将通讯录保存在文件中。

2 概要设计

2.1 系统功能概要

通讯录管理系统是基于双向循环链表设计而成的信息管理系统。该系统通过对程序进行模块化,建立添加、显示、查找和删除功能的函数,各函数中运用双向循环链表存储数据。从主函数开始执行,调用各函数,并运用文件相关知识将信息存入磁盘中。系统功能模块图如图2-1所示

图2-1 系统功能模块图

2.2 数据结构及原理

(1)为存储通讯录信息,需定义一个结构体类型,成员包括姓名、街道、城市、邮编、国家等,并建立双向循环链表,定义该结构体类型的指针,用于指向各结点。结构体定义如下:

typedef struct message

{

char name[15];

char street[30];

char city[20];

char eip[20];

char state[20];

}dmessage; /*建立通讯录信息结构体;*/

typedef struct dlnode

{

dmessage data;

struct dlnode *prior;//定义结点的前驱指针

struct dlnode *next;//定义结点的后继指针

}dnode; /*建立双向链表结构体;*/

(2)以列表的形式输出文件。

(3)分别建立具有添加、删除、修改、查询等功能的子函数,完成相应功能,对程序实现模块化。这其中要用到对链表的删除、插入等知识。删除时用一结构体指针指向链表的第一个结点,检查该节点的值是否等于输入的要删除的信息,若相等就删除,不相等则后移指针,直至表尾。插入时也要先找到相应结点,再添加。查询功能要设置姓名、城市等多种方式。

(4)为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。

3 详细设计

3.1 各模块调用关系

各模块调用关系图如图3-1所示:

图3-1各模块调用关系图

3.2 插入信息

插入信息功能(void enter(void))是将各联系人的姓名、街道、城市、邮编、国家等信息插入双向循环链表中。流程图如图3-2所示:

图3-2 插入信息

先定义指针并为指针分配存储空间,依次输入姓名、街道、城市、邮编、国家相关数据,将节点p插入链表,将指针rear移至结点p,判断是否继续插入信息,如果是输入y对该函数再重新调用一次,否则输入n返回主函数。

3.3 显示信息

显示信息(void display (dnode *head))功能是将各人的姓名、街道、城市、邮编、国家等信息全部以列表形式显示出来。流程图如图3-3:

图3-3 显示信息

定义一个节点p,指向第一个元素节点,用while循环判断P指向的是否是头结点,如果不是,输出p所指向的结点的信息并且P指向下一个结点,否则退出循环返回主函数。

3.4 查询信息

该系统提供了两种查询方式:第一种是按姓名查找;第二种是按城市查找。

(1)按姓名查找(dnode *search(dnode *head))

按姓名查找通讯信息的功能,是按照用户输入的姓名进行通讯信息的查找,将第一个与用户输入的姓名匹配的那条信息输出。流程图如图3-4:

图3-4 按姓名查找

定义指针p,查找姓名信息与输入姓名一致的结点,将p指向第一个信息结点,然后输入要查找的姓名,用while循环判断通讯录中姓名的信息与输入的姓名是否一致,如果不一致p就指向下一个结点,直到找到两者是一致的就跳出循环,如果最后p指向头结点也跳出循环,说明没有与此数据相关的记录。

3.5 其他功能

该系统还有删除信息、将信息存盘以及退出系统等功能。

(1)删除信息

删除信息(void delete(dnode *head))的功能是按照用户输入的姓名首先进行按姓名查询功能,查找成功,则执行删除信息的功能,查询不成功,则提示错误信息。流程图如图3-5所示:

相关文档
最新文档