1、 数据结构课程设计报告 学院(系) : 班 级: 学生姓名: 学号 指导教师: 2012 年年 12 月月 17 日日 到到 2013 年年 1 月月 2 日日 通 讯 录 电 话 号 码 查 询 系 统 一、课程设计概述:一、课程设计概述: 本次数据结构课程设计共完成两个题:电话号码查询系统、通讯录。 使用语言:C 编译环境:VC6.0 二、课程设计题目一二、课程设计题目一 实验内容实验内容 电话号码查询系统电话号码查询系统 问题描述问题描述 设计散列表实现电话号码查找系统。 需求分析需求分析 (1)设每个记录有下列数据项: 电话号码、用户名、地址; (2)从键盘输入各记录,分别以电话号码和
2、用户名为关键字建立散列表; (3)采用一定的方法解决冲突; (4)查找并显示给定电话号码的记录; (5)查找并显示给定用户名的记录。 整个系统必须满足系统功能要求;设计不同的散列函数,比较冲突率;在散列函数确定 的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。 概要设计概要设计 void getin(Record* a) / 键盘输入联系人的信息 void ShowInformation(Record* a) /显示输入的用户信息 Status collision(int p,int NA tel; NA add; Record; typedef struct/哈希表 Rec
3、ord *elemHASHSIZE; /数据元素存储基址 int count; /当前数据元素个数 int size; /当前容量 HashTable; 流程图流程图 void main_menu() void getin void void void Status ShowInformation CreateHash SearchHash collision 详细设计详细设计 #include /cout,cin 语句的头文件 #include /清屏函数头文件:使用 csl 时调用 system #include /字符串头文件 #include #include #define MAXS
4、IZE 100 /电话薄记录的数量 #define MAX_SIZE 50 /用户名、电话号码、地址的最大长度 #define HASHSIZE 400 /定义表长 #define SUCCESS 1 /查找 #define UNSUCCESS -1 #define LEN sizeof(HashTable) / 哈希表的长度 using namespace std; typedef int Status;/typedef 用来定义类型的别名。 此处用 status 作为 int 别名, 目的表达 int 变量是一个状态变量。 typedef char NAMAX_SIZE; /NA 作为 c
5、har 的别名 typedef struct / 自定义一个记录用户名、电话号码、联系地址的结构体的别名 record NA name,tel,add,way; Record; Record aHASHSIZE; typedef struct /散列表 Record *elemHASHSIZE; /数据元素存储地址 int count; /数据元素个数 int size; /容量 HashTable; Status eq(NA x,NA y) /关键字比较,相等返回 SUCCESS;否则返回 UNSUCCESS if(strcmp(x,y)=0)/2 个 字 符 串 的 大 小 比 较 s1=
6、s2 , strcmp(s1,s2) = 0; s1s2, strcmp(s1,s2) = 1; s1NUM_BER; int i; for(i=0;iai.name; coutai.tel; coutai.add; void ShowInformation(Record* a)/显示输入的用户信息 int i; for( i=0;i=0) return q; else i=c/2+1; return UNSUCCESS; int searchHash( HashTable * while(H-elemp!=NULL if( eq( key, H-elemp-name ) ) return 1; else return