收藏 分享(赏)

数据结构课程设计-哈希表及其应用new.doc

上传人:dreamzhangning 文档编号:2226119 上传时间:2018-09-06 格式:DOC 页数:21 大小:1.15MB
下载 相关 举报
数据结构课程设计-哈希表及其应用new.doc_第1页
第1页 / 共21页
数据结构课程设计-哈希表及其应用new.doc_第2页
第2页 / 共21页
数据结构课程设计-哈希表及其应用new.doc_第3页
第3页 / 共21页
数据结构课程设计-哈希表及其应用new.doc_第4页
第4页 / 共21页
数据结构课程设计-哈希表及其应用new.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、 1 / 212 / 21课程设计任务书2010 2010 学年第 1 学期学生姓名: 吴浪 专业班级: 09 网络工程 指导教师 刘志远 工作部门: 计算机学院 一、课程设计题目 哈希表及其应用二、课程设计内容建立一个小型信息管理系统(可以是图书、人事、学生、物资、商品等任何信息管理系统) 。要求:1.使用哈希查找表存储信息;2.实现查找、插入、删除、统计、输出等功能;三、进度安排1初步完成总体设计,搭好框架;2完成最低要求:尝试使用多种哈希函数和冲突解决方法,并通过实际运行测试给出自己的评价四、基本要求1界面友好,函数功能要划分好2程序要加必要的注释3要提供程序测试方案教研室主任签名: 年

2、 月 日3 / 21目 录1 概述42 设计目的43 设计功能说明44 详细设计说明55 流程图56 程序代码67 程序运行结果158 总结19参考文献 19成绩评定表 204 / 211 概述数据结构是一门理论性强、思维抽象、难度较大的课程,是基础课和专业课之间的桥梁,只有进行实际操作,将理论应用于实际中,才能确实掌握书中的知识点。通过课程设计,不仅可以加深学生对数据结构基本概念的了解,巩固学习成果,还能够提高实际动手能力。为学生后继课程的学习打下良好的基础。2 设计目的数据结构课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。因此,要求学生能综合应用所学知

3、识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。通过程序的编译掌握对程序的调试方法及思想,并且让学生学会使用一些编程技巧。促使学生养成良好的编程习惯。1.使学生能够较全面地巩固和应用课堂中所学的的基本理论和程序设计方法,能够较熟练地完成程序的设计和调试。2.培养学生综合运用所学知识独立完成程序课题的能力。3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。4提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中

4、找到解决问题的新途径的悟性,初步培养工程意识和创新能力。6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。3 设计功能分析本设计的功能如下:1、利用哈希函数来实现一个小型信息管理系统,其中信息包含用户名,地址,电话等。2、能添加用户信息,并能保存该信息。3、查询管理系统中的信息:可通过姓名查找,也可通过电话查找等两种5 / 21方式。4、能散列管理系统中的信息,保存信息等功能。4 详细设计说明哈希表是一种重要的存储方式,也是一种常见的检索方法。其基本思想是将关系码的值作为自变量,通过一定的函数关系计算出对应的函数值,把这个数值解释为结点的存

5、储地址,将结点存入计算得到存储地址所对应的存储单元。检索时采用检索关键码的方法。(1) 假定每个记录有下列数据项:用户名、电话号码、地址。(2) 初始记录为空,通过不断添加记录,并保存到数据文件 telphone.txt中。 (3) 分别采用线性和平方探测解决冲突。(4) 查找并显示给定电话号码的记录;查找并显示给定用户名的记录。5 流程图开始6 / 216 程序代码#include #include #include #include using namespace std;#define Maxsize 57 struct recordchar name20;char tel20;char

6、 add20;typedef record *precord;struct HashTable int elemMaxsize; /存放数组 a的下标选择操作添加记录 建立哈希表查找线性 号码姓名平方显示输出结果删除退出7 / 21int count;typedef HashTable * pHashTable;int Number; /统计当前数组 a中的记录总数void Getdata(precord a) /从文件 telphone.txt 中读取数据存放到数组 a Number=0;ifstream infile(“telphone.txt“,ios:in|ios:binary);if

7、(!infile) coutnum;ofstream ofile(“telphone.txt“,ios:app);if(!ofile) coutaNumber.name; coutaNumber.tel; coutaNumber.add; ofile.seekp(ios:end);ofile.write(char *)Number+;ofile.close();8 / 21void Print(precord a) /显示所有记录 int i;for(i=0;ielemi=-1;int menu;void Creathash_Name(pHashTable h,precord a)/以员工姓名

8、为关键字创建哈希表coutmenu;Init_Hash(h);for(i=0;ielemaddress!=-1)if(menu=1) address=Line_Sollution(address);else address=Square_Sollution(address);if(address=-1) break;if(address!=-1) h-elemaddress=i; h-count+;coutnam;10 / 21address=Hash(nam);derter=0;n=-1;while(h-elemaddress!=-1 else address=Square_Sollutio

9、n(address);i+;if(address=-1) break;if(h-elemaddress!=-1 Init_Hash(h);for(i=0;ielemaddress!=-1)11 / 21if(menu=1) address=Line_Sollution(address);else address=Square_Sollution(address);if(address=-1) break;if(address!=-1) h-elemaddress=i; h-count+;couttelphone;address=Hash(telphone);derter=0; n=-1; /初

10、始化线性增量while(h-elemaddress!=-1else address=Square_Sollution(address);i+;if(address=-1) break;if(h-elemaddress!=-1 if(m=1)couttelphone;address=Hash(telphone);derter=0; n=-1; /初始化线性增量while(h-elemaddress!=-1 else address=Square_Sollution(address);if(address=-1) break;if(h-elemaddress!=-1h-elemaddress=-1

11、;for (i=j;inam;address=Hash(nam);derter=0;n=-1;while(h-elemaddress!=-1 else address=Square_Sollution(address);i+;if(address=-1) break;if(h-elemaddress!=-1 h-elemaddress=-1;for (i=j;imenu1;switch(menu1) case 0:system(“cls“);exit();break;case 1:Add(a);system(“pause“);system(“cls“);goto start;break;cas

12、e 2:Print(a);system(“pause“);system(“cls“);goto start;break;case3:Creathash_Name(H,a);system(“pause“);system(“cls“);goto start;break;case4:Creathash_tel(H,a);system(“pause“);system(“cls“);goto start;break;case5:Search_Name(H,a);system(“pause“);system(“cls“);goto start;break;case 6:Search_tel(H,a);sy

13、stem(“pause“);system(“cls“);goto start;break;case 7:Delet(H,a);system(“pause“);system(“cls“);goto start;break;default:cout“请输入正确的操作选项!n“;system(“cls“);goto start;break;return 0;7 程序运行结果16 / 21主界面添加记录17 / 21显示所有18 / 21建立哈希表查找19 / 21删除退出20 / 218 总结数据结构是计算机学科非常重要的一门必修课程,它与计算机其他课程都有密切联系,具有独特的承上启下的重要位置。同

14、时数据结构还是一门实践性极强的理论技术基础课。这次数据结构课程设计为我们提供了与众不同的学习方法和学习机会,让我们从被动授学转变为主动求学,从死记硬背的模式中脱离出来,转变为在实践中学习。 在实际的上机操作过程中,不仅是让我们了解数据结构的理论知识,更重要的是培养解决实际问题的能力,所以相信通过此次实习可以提高我们分析设计能力和编程能力,为后续课程的学习及实践打下良好的基础。参考文献1 苏仕民.数据结构课程设计 北京:机械工业出版社.20052 C+面向对象程序设计教程/陈维兴,林小茶编著 北京:清华大学出版社,2009.63 C 语言版/严蔚敏,吴伟民 北京:清华大学出版社,20074 徐孝

15、凯.数据结构实用教程(C/C+描述)M. (第一版)北京:清华大学出版社.19995 陈慧南.数据结构(使用 C+语言描述)M. (第一版)南京:东南大学出版社.20016 殷人昆,陶永雷,谢若阳等.数据结构(用面向对象方法与 C+描述)M. (第一版)北京:清华大学出版社.199921 / 21数据结构 课程设计成绩评定表姓 名 吴浪 性 别 男专业班级 网络工程课程设计题目:哈希表及其应用课程设计答辩或质疑记录:1、请简单概括一下你对哈希查找的理解哈希查找就是在记录的存储位置和他的关键字之间建立一个确定的对应关系 f,使每个关键字和结构中的一个唯一的存储位置相对应,在查找是只要根据这个对应关系 f 找到对应的像 f(K)即可。2、程序解决哈希冲突的方法考虑到算法的时间复杂度,减小查找次数,程序采用了两种解决哈希冲突的方法,线性探测和平方探测,可任选其一。成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报