通讯录查询系统:数据结构与冲突解决设计

1 下载量 83 浏览量 更新于2024-08-03 1 收藏 58KB DOCX 举报
在数据结构课程设计中,学生被要求设计并实现一个通讯录查询系统,该系统针对一个单位的员工信息管理,目标是方便快捷地查询员工的电话号码和地址。系统的核心是基于散列表的数据结构来存储和检索这些信息。 首先,需求分析阶段明确了几个关键要素。系统需要支持的基本功能包括: 1. **记录结构**:每个员工记录包含电话号码、用户名和地址三个字段。 2. **输入与散列表**:用户通过键盘输入数据,利用散列表(这里采用二次探测再散列法解决冲突)存储这些记录,其中电话号码作为关键字。 3. **功能需求**:实现查找功能,能够根据给定的电话号码查找到相应的员工记录,并将结果展示出来。 4. **文件操作**:要求将通讯录信息保存到文件中,便于后续访问。 概要设计部分详细规划了程序的组成。程序分为两个模块:功能实现函数模块和主函数模块。系统子程序包括哈希函数Hx、建立通讯录函数BulidHx以及查找函数Search。哈希函数负责计算散列表的索引,BulidHx负责接收用户输入并将数据存入散列表,而Search则用于实际的查询操作。 在详细设计阶段,定义了两个结构体:message用于存储员工信息,包括姓名、地址和电话号码;HxList用来表示散列表,包括指向message的指针数组和记录总数。BulidHx函数负责打开文件,接收用户输入的记录数量,动态分配存储空间,然后逐条录入员工信息,电话号码作为散列表的键值。同时,为了处理可能出现的冲突,预先将最后一个元素的指针设为NULL,以便于二次探测。 具体实现时,用户会首先被提示输入要建立的记录数量,然后按照指示依次输入每个员工的信息。电话号码会被哈希函数转换为散列表中的索引,然后插入到对应位置。查找功能Search则遍历散列表,当找到匹配的电话号码时,返回相应的员工记录。 这个项目不仅锻炼了学生的数据结构知识,如散列表的设计与实现,还包括文件操作、输入输出处理和冲突解决策略等技能,有助于理解和应用这些概念于实际编程中。