1、 1 数据结构课程设计 实验报告 实验课程名称 数据结构课程设计 专 业 班 级 11 级计科(2)班 学 生 姓 名 学 号 指 导 教 师 实 验 时 间 : 2013 年 9 月 5 日 2013 至 2014 学年第 1 学期第 1 至 9 周 2 目 录 1 概述 . 3 1.1 现状分析 3 1.2 实现意义 3 2 系统分析 3 3 概要设计 3 3.1 算法的设计 . 3 3.2 通讯录系统图. 4 4 详细设计 4 4.1 主菜单模块设计 . 4 4.2 通讯录建立模块设计 4 4.3 通讯录插入模块设计 5 4.4 通讯录查询模块设计 6 4.5 通讯录删除模块设计 7 4
2、.6 通讯录输出模块设计 8 5 运行与测试 . 9 5.1 通讯录链表的建立 9 5.2 通讯录链表的插入 9 5.3 按编号查找通讯录 10 5.4 按编号删除通讯录 10 5.5 通讯录链表的输出.11 6 总结与心得11 3 1 1 概述概述 1.1 现状分析 课程设计是实践教学中的重要环节, 它以某一门课程为基础, 涉及和课程相关的各方面 知识,是一门独立于课程外的特殊课程。课程设计就是让所有同学对课程更全面的应用。本 次实验项目“通讯录管理”就是针对数据结构的一门应用较为广泛的系统管理方法。 1.2 实现意义 本次实验应用性能好,结构清楚,能随时添加、删除、查找联系人;并且可以用姓
3、名、 编号两种方式;操作更精确,以人性化的方式展现出来,效果十分突出。 2 2 系统分析系统分析 编程完成通讯录的一般性管理工作如通讯录中记录的增加、修改、查找、删除、输出等 功能。每个记录包含姓名、电话号码、住址等个人基本信息。 用数据结构中的链表做 数据结构结合 c 语言基本知识编写一个通讯录管理系统。 本程序为使用方便, 几乎不用特殊 的命令,只需按提示输入即可,适合更多的用户使用。对于建立通讯录管理系统,则需了解 并掌握数据结构与算法的设计方法,提高综合运用所学的理论知识和方法独立分析和解决问 题的能力。 3 3 概要设计概要设计 3.1 算法的设计 本实验从整体上分为七大模块: (1
4、)输入联系人信息; (2)查找联系人信息; (3)显示 联系人信息; (4)增加联系人信息; (5)删除联系人信息; (6)存储联系人信息; (7)退出 通讯录管理。 4 3.2 通讯录系统图 4 4 详细设计详细设计 4.1 主菜单模块设计 编写一个主控菜单驱动程序,输入 05 以进入相应选择项。 1. 实现循环和功能选择 假设输入选择用变量 sn 储存,它作为 menu_select 函数的返回值提供给 switch 语句。 使用 for 循环实现重复选择,并在主函数 main( )中实现。 2.得到 ri 的合理值 设计一个函数用来输出提示信息和处理信息输入,这个函数应该返回一个数值ri
5、,以便供 给 switch 语句使用。假设函数名为 menu_select。对于 ri 输入值,在 switch 中 case 语句对应 数字 05,对于不符合要求的输入,提示输入错误并要求重新输入。 4.2 通讯录建立模块设计 我们知道的建立链表有两种方法,一种为头插入法,一种为尾插入法。头插入法是每次 将新插入的结点插在链表的表头, 而尾插入法是将新插入的结点插入在链表的尾部。 我们这 里用尾插入法描述算法。 通讯通讯 录的录的 建立建立 通讯通讯 录的录的 插入插入 通讯通讯 录的录的 查询查询 通讯通讯 录的录的 删除删除 通讯通讯 录的录的 输出输出 通讯录的管理通讯录的管理 5 (
6、1) 使链表的头尾指针 head、rear 指向新生成的头结点(也是尾结点) ; (2) 置结束标志为 0(假) ; (3)while(结束标志不为真) P 指向新生结点; 读入一个通讯者数据至新结点的数据域; 将新结点链接到尾结点之后; 使为指针指向新结点; 提示:是否结束建表,读入一个结束标志; (4) 尾结点指针域置空值 NULL。 具体算法如下: /*/ /* 用尾插入法建立通讯录链表函数 */ /*/ LinkList CreateList(void) /尾插入法建立带头结点的通讯录链表算法 LinkList head=(ListNode *)malloc(sizeof(ListNode);/申请头结点 ListNode *p,*rear; int flag=0; /结束指标置 0 r