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