1、 数 据 结 构数 据 结 构 课 程课 程 设 计 说 明 书设 计 说 明 书 题目: 通讯录管理 院 系: 计算机科学与工程学院 专业班级: 计算机 12-1 班 学 号: 学生姓名: 指导教师: 2014 年 01 月 17 日 课程设计(论文)任务书课程设计(论文)任务书 计算机科学与工程 学院 学 号 学生姓名 专业(班级) 计 12-1 设计题目 通讯录管理 设 计 技 术 参 数 系统平台:Windows 7/Windows XP 开发工具:Visual Studio 2010 设 计 要 求 (1) 设每个记录有下列数据项:电话号码、用户名、地址; (2) 从键盘输入各记录,
2、分别以电话号码为关键字建立散列表来存储通讯录; (3) 采用解决冲突的方法解决冲突(如线性探测再散列法) ; (4) 查找并显示给定电话号码的记录,同时可以修改或删除该记录; (5) 通讯录信息文件保存与读取; (6) 界面友好,易与操作。 工 作 量 课程设计报告要求不少于 3000 字。 源程序要求不少于 300 行 工 作 计 划 11月21日12月01日 根据课程设计大纲的要求,查找相关资料,完成需求分析; 12月02日12月16日 进行系统的概要设计; 12月17日12月31日 进行系统的详细设计和源代码的书写; 01月01日01月17日 对系统进行调试分析,写出课程设计报告。 参
3、考 资 料 1何钦铭主编.C 语言程序设计(第 2 版).北京:高等教育出版社,2012. 2谭浩强编著.C 程序设计(第四版).北京:清华大学出版社,2008. 3严蔚敏,吴伟民编著.数据结构(C 语言版).北京:清华大学出版社,2007. 4温秀梅编著.面向对象程序设计(第二版).北京:清华大学出版社,2009. 指导教师签字 教研室主任签字 2013 年 11 月 21 日 I 目目 录录 1 需求分析 1 2 概要设计 1 2.1 功能模块设计. 1 3 详细设计 2 3.1 存储结构设计. 2 3.2 详细代码设计. 2 4 运行与调试 7 5 总结 10 参考文献 10 1 1 1
4、 需求分析需求分析 设计散列表实现通讯录查找系统。主要功能包括插入联系人,删除联系人, 显示所有联系人,修改联系人,备份联系人等功能,实现计算机管理通讯信息功 能,满足用户的一些需求,在一定程度上简化了用户的工作量,实现信息化,现 代化。 2 2 概要概要设计设计 2.1 功能模块设计 功能模块设计图如图 1 所示。 图 1 功能模块设计图 通 讯 录 管 理 系 统 显示联系人 修改联系人 删除联系人 备份联系人 退 出 查找联系人 2 3 3 详细设计详细设计 3.1 存储结构设计 (1) 联系人数据类型定义 typedef struct Contact string number; st
5、ring name; string add; Contact *next; Contact; (2) 哈希表数据类型定义 typedef struct Contact *elem; int LLength; / 表长 int count; HashTable; 3.2 详细代码设计 (1)Hash函数 算法思想:由于使用的是 string 类存储的电话号码,因此使用了 stringstream 来把 string类型的电话号码转化成 int 型, 从而根据散列函数 hash (key) =key%17 找到对应的存储地址。 代码如下: int Hash(string num) int sum=
6、0,result,i=11; stringstream stream; streamnext=Ha.elemhash; Ha.elemhash=pc_new; Ha.count+; 4 return 1; else Contact* pc=Find(Ha,pc_new-number); coutch; if(ch=y) int hash=Hash(pc_new-number); pc_new-next=Ha.elemhash; Ha.elemhash=pc_new; Ha.count+; return 1; return 1; (5)修改联系人 算法思想: 利用 Find 函数找到需要修改的联系人的存储位置, 然后询问用户 需要修改的项目进行操作。 代码如下: int Alter(HashTable i