发布时间:2025-03-11 12:40:31 点击量:
HASH GAME - Online Skill Game GET 300
哈希表实现查询系统一目的利用《数据结构》课程的相关知识完成一个具有一定难度的综合设计题目,利用C/C++语言进行程序设计,并规地完成课程设计报告。通过课程设计,巩固和加深对线性表、栈、队列、字符串、树、图、查找、排序等理论知识的理解;掌握现实复杂问题的分析建模和解决方法(包括问题描述、系统分析、设计建模、代码实现、结果分析等);提高利用计算机分析解决综合性实际问题的基本能力。二需求分析程序的功能读取数据读取原本存储的信息。读取系统随机新建本存储的信息。查找信息根据查询用户信息。根据查询用户信息。存储信息查询无记录的结果存入记录文档。输出形式数据文件“”存放原始数据。数据文件“”存放有系统随机生成的文件。数据文件“”存放未查找到的信息。查找到相关信息时显示、地址、。初步测试计划从数据文件“”中读入各项记录,或由系统随机产生各记录,并且把记录保存到“”中。分别采用伪随机探测再散列法和再哈希法解决冲突。根据查找时显示给定用户的记录。根据查找时显示给定的用户记录。。系统以菜单界面工作,运行界面友好,演示程序以用户和计算机的对话方式进行。三概要设计子函数功能intCollision_Random(intkey,inti)//伪随机数探量观测再散列法处理冲突voidInit_HashTable_by_name(stringname,stringphone,stringaddress)//以为关键字建立哈希表intCollision_Rehash(intkey,stringstr)//再哈希法处理冲突voidInit_HashTable_by_phone(stringname,stringphone,stringaddress)//以为关键字建立哈希表voidOutfile(stringname,intkey)//在没有找到时输出未找到的记录,(intkey)//输出哈希表中的记录voidRafile()//随机生成数据,(char*fname,intn)//建立哈希表intSearch_by_name(stringname)//根据查找哈希表中的记录intSearch_by_phone(stringphone)//根据查找哈希表中的记录函数调用图四详细设计主函数流程图“伪随机探测再散列处理冲突”伪代码若对应位置上已经存在其他数据,则新的关键字=(原关键字+伪随机数)%哈希表长。若新的位置上也存在其他数据,则用伪随机序列的下一个数求新的关键字,直到找到合适的位置。“再哈希法处理冲突”伪代码用“折叠法”将的ASCII码值定义为关键字,分别为前四位、中四位、后三位。再用“除留余数法”求的新的关键字=原关键字%哈希表长。“以为关键字建立哈希表”伪代码用“除留余数法”将的ASCII码值定义为关键字。若对应位置上存在其他数据,则调用伪随机处理冲突,然后将数据存入哈希表。“以为关键字建立哈希表”伪代码用“除留余数法”将的ASCII码值定义为关键字。若对应位置上存在其他数据,则调用再哈希处理冲突。然后将数据存入哈希表。五调试分析1、程序的关键是掌握文件的相关操作、哈希函数的创建和运用、伪随机法处理冲突、再哈希法处理冲突等。在编程的过程中,出现了很多问题,如文件无常打开、程序进入死循环、无法实现文件的写入操作、忘了添加头文件等错误。修改后程序运行正确。2、创建“”容用子函数来实现,但是原数据是从“”文件中读取的,刚开始不知道怎样实现二者之间的选择,在同学和参考书的帮助下终于得到解决。3、关于伪随机和再哈希的相关容觉得很难懂,看了很久参考书才有所了解六测试结果根据查找查找成功查找失败哈希表根据查找输入错误查询成功查询失败七用户使用说明选择数据来源根据提示信息进行操作,选择已存在的“”文件中的数据或系统当前自动生成的“”文件。