(完整word版)数据结构课程设计-哈希表及其应用_第1页
(完整word版)数据结构课程设计-哈希表及其应用_第2页
(完整word版)数据结构课程设计-哈希表及其应用_第3页
(完整word版)数据结构课程设计-哈希表及其应用_第4页
(完整word版)数据结构课程设计-哈希表及其应用_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学 号:200940420108

(完整wor版)数据结构课程设计-哈希表及其应用课程设计题教专学目院业哈希表及其应用计算机学院09班姓级名09网络工程(1)班吴浪指导教师 刘志远年 月 日1/21(完整wor版)数据结构课程设计-哈希表及其应用(完整wor版)数据结构课程设计-哈希表及其应用PAGEPAGE3/21课程设计任务书2010 ~2010 学年第1学期学生姓名:指导教师吴浪刘志远::09网络工程计算机学院一、课程设计题目哈希表及其应用二、课程设计内容建立一个小型信息管理系统(可以是图书、人事、学生、物资、商品等任何信息管理系统要求:1.使用哈希查找表存储信息;2。实现查找、插入、删除、统计、输出等功能;三、进度安排初步完成总体设计,搭好框架;的评判四、基本要求界面友好,函数功能要划分好程序要加必要的注释要提供程序测试方案教研室主任签名:年 月 日PAGEPAGE4/21(完整wor版)数据结构课程设计-哈希表及其应用目 录概述 4设计目的 4设计功能说明 4详细设计说明 5流程图 5程序代码 6程序运行结果 158 总结 19参考文献 19成绩评定表 20PAGEPAGE5/211概述

(完整wor版)数据结构课程设计-哈希表及其应用数据结构是一门理论性强、思维抽象、难度较大的课程,是基础课和专业课之间的桥梁,只有进行实际操作,将理论应用于实际中,才能确实掌握书中的知识点。经过课程设计,不仅可课程的学习打下良好的基础。2设计目的识的深化和提高.因此,要求学生能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且且在实验的基本技能方面上进行一次全面的训练.通进程序的编译掌握关于程序的调试方法及思想,并且且让学生学会使用一些编程技巧。促使学生养成良好的编程习惯.完成程序的设计和调试。2。培养学生综合应用所学知识独力完成程序课题的能力。等科学技术人员应具有的素质。提高学生关于工作认真负责、一丝不苟,关于同学团结友爱,协作攻关的基本素质。5题的新途径的悟性,初步培养工程意识和创新能力。6及口头表达能力进行考核。本设计的功能如下:

3设计功能分析1、利用哈希函数来实现一个小型信息管理系统,其中信息包含用户名,地址,电话等。2、能添加用户信息,并且能保存该信息。3、查询管理系统中的信息:可经过姓名查找,也可经过电话查找等两种方式。4、能散列管理系统中的信息,保存信息等功能。4详细设计说明哈希表是一种重要的存储方式,也是一种常见的检索方法。其基本思想是将关系码的值作为自变量,经过一定的函数关系计算出关于应的函数值,把这个数值解释为结点的存储地址,将结点(完整wor版)数据结构课程设计-哈希表及其应用(完整wor版)数据结构课程设计-哈希表及其应用PAGEPAGE14/21存入计算得到存储地址所关于应的存储单元.检索时采用检索关键码的方法。(1)假定每个记录有下列数据项:用户名、电话号码、地址。(2)初始记录为空,经过不断添加记录,并且保存到数据文件telphone.txt中.(3)诀别采用线性和平方探测解决冲突。(4)查找并且显示给定电话号码的记录;查找并且显示给定用户名的记录。开始选择操开始选择操作删除添加记录建立哈希查找线性平方姓名号码显示输出结果退出6程序代码#inclue〈stlib。h〉#inclue〈fstream>#inclue<iostream〉#inclue〈cmath>usingnamespacest;#efineMaxsize57structrecor{charname[20];chartel[20];chara[20];};typeefrecor*precor;structHashTable{intelem[Maxsize];//a[]的下标intcount;};typeefHashTable*pHashTable;intNumber;//统计当前数组a[]中的记录总数voiGetata(precora)//telphone。txta[]{Number=0;m:y;if(!infile){cout<<”文件打开失败!\n"while(!infile。eof()&&infile.get()!=EOF)//文件不为空并且且文件指针没有指到结束符{infile。seekg(Number*sizeof(a[Number]),ios::beg);//定位文件指针infile.rea((char*)&a[Number],sizeof(a[Number]));Number++;}e。(;}voiA(precora)//添加记录{inti,num;cout<〈"当前文件内已有"〈〈Number<〈"条记录\n";cout<〈”请输入添加的个数:”;cin〉>num;me(”telphone。",sp;()}for(i=0;i<num;i++){cout<<Number+1<enl;>〉a[r。cout<〈”请输入第”<<Number+1<〈"个人的电话"〈<enl;cina[Number].tel;cout<〈"请输入第”<<Number+1〈<"个人的地址"<<enl;>〉a[r。ofile。seekp(ios::en);e。((r*)r,());Number++;}ofile。close();}voiPrint(precora)//显示一切记录{inti;for(i=0;i<Number;i++){cout<〈”姓名:"<<a[i]。name;t电话:”<<a[i。;cout<〈”地址:”<〈a[i]。a〈<enl;}}intHash(charstr[])//除留取余{longval=0;charp[20],*p1;strcpy(p,str);p1=p;while(*p1!='\0’)val=val+*p1++//ASCII(e;}interter;//线性增量intLine_Sollution(intaress)//采用线性探测解决冲突{erter++;if(erter==Maxsize)return(-1);ene);}intintSquare_Sollution(intaress)//采用平方探测法解决冲突{intj;erter++;if(erter==Maxsize)return—1;*(—;t(w(t)))e;)}voiInit_Hash(pHashTableh)//初始化哈希表{inti;for(i=0;i〈Maxsize;i++)h—〉elem[i]=—1;}intmenu;voiCreathash_Name(pHashTableh,precora)//以员工姓名为关键字创建哈希表{ cout< 〈 ”———--—--—————--—-——--—-—--——--———-—--—-—-—————--—-—-———-—-———-—\n";cout〈" 1—以线性探测建表\n";cout<<" 2-——-以平方探测建表\n";cout 〈 〈 "--—-———-—-——-———-—--——————-—-————-—-—--—-————-——-———--—-————— inti,aress;cout<<”请选择:";cin〉>menu;Init_Hash(h);for(i=0;i<Number;i++){erter=0;n=-1;a[]。e;e(s!=-1){if(menu==1)aress=Line_Sollution(aress);elsearess=Square_Sollution(aress);if(aress==—1)break;}—){—i;—+}}cout〈〈”姓名哈希表已成功建立!\n";}voiSearch_Name(pHashTablea)//查找并且显示指定姓名的记录{cout〈<"请输入要查找的姓名:”;charnam[20];intaress,i=1;cin〉>nam;aress=Hash(nam);erter=0;n=—1;-〉s!=—1&&m,a[m[s]]。)!=0){if(menu==1)aress=Line_Sollution(aress);es;i++;if(aress==-1)break;}—s!1&&p(e){cout<〈”你要查找的信息为:\n”;"m[s。<〈l;cout<〈"电话:”<〈a[h—〉elem[aress]].telenl;t地址:m[s。<〈cout<<”比较次数为”<〈i〈<enl;}elsecout<<”无此姓名,查找失败!”;}voiCreathash_tel(pHashTableh,precora)//以电话号为关键字创建哈希表{ cout<<"——-—-—--————--——-——-——-———--———--——-———-—--—--———--\n”;cout<〈" 1—-—-以线性探测建表cout〈<" 2——-—以平方探测建表\n”;cout 〈 〈 "——-——————-—-—--—--—--——-———--——--———-——-——-\n";inti,aress;cout〈<"请选择:”;cin>〉menu;Init_Hash(h);for(i=0;i<Number;i++){erter=0;n=-1;aress=Hash(a[i].tel);while(h—>elem[aress]!=-1){(menu==1)s;elsearess=Square_Sollution(aress);if(aress==-1)break;}if(aress!=-1){h->elem[aress]=i;h—〉count++;}}cout<<"电话号码哈希表已成功建立!\n”;}voiSearch_tel(pHashTableh,precora)//查找并且显示指定电话号的记录{cout〈〈”请输入要查找的电话:”;chartelphone[20];intaress,i=1//itelphone;aress=Hash(telphone);erter=0;n=-1;//初始化线性增量h—m[s!&-〉)!{if(menu==1)aress=Line_Sollution(aress);elsearess=Square_Sollution(aress);i++;if(aress==-1)break;}(m[s!1&e,h—s]{cout〈<”你要查找的信息为:\n”;cout<<"姓名:"<<a[h—〉elem[aress]].name<〈enl;couta[h-〉elem[aress]].tel<〈enl;cout:”<<a[h—〉elem[aress]]。a<<enl;cout〈<”比较次数为"〈<i〈<enl;}elsecout}voielet(pHashTableh,precora){cout 〈 <"--—--——-———--—————-—--—-———-——-—————————\n";cout〈” 1-—--按电话号码删除\n";cout〈” 2—-—-按姓名删除cout<<"—-—-—-———-—————--—-———-——-—--————-—-—————\n”;intm;coutcin>〉m;if(m==1){cout〈〈"请输入要删除的电话:";chartelphone[20];intaress,i,j;cin〉>telphone;aress=Hash(telphone);erter=0;n=-1;//初始化线性增量while(h->elem[aress]!=-1&&strcmp(telphone,a[h-〉elem[aress]].tel)!=0){if(menu==1)aress=Line_Sollution(aress);elsearess=Square_Sollution(aress);if(aress==-1)break;}s—1&&peh—m[]。{m[s;h-〉elem[aress]=-1;}for(i=j;i<Number-1;i++){strcpy(a[i].name,a[i+1].name);a[,1。;strcpy(a[i].a,a[i+1].a);}Number=Number-1;}if(m==2){coutr0;ti,j;cin>>nam;aress=Hash(nam);erter=0;n=-1;([1&(m[h[])!=0){if(menu==1)aress=Line_Sollution(aress);elsearess=Square_Sollution(aress);i++;if(aress==-1)break;}if(h&{j=h-〉elem[aress];h—>elem[aress]=-1;}for(i=j;i〈Number—1;i++){strcpy(a[i].name,a[i+1].name);strcpy(a[i].tel,a[i+1]。tel);(a[。);}Number=Number-1;}}voiMenu()//功能菜单函数{coutenl;cout<<"员工管理查询系统\n";cout〈<'\n’;cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n”;cout<〈"★1--—-———添加☆\n”;cout☆2-— 显示一切★\n”;cout★3———-—--以姓名建立哈希表☆\n”;cout<<”☆4———-—-—以电话号码建立哈希表★\n";cout★5-— 按员工姓名查找☆\n”;cout〈<"☆6—————-—按电话号码查找★\n”;cout<<”cout<〈"★7-—-——-—删除员工信息☆0-———--—退出★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n";☆\n”;★\n”;cout<<”使用说明:\n”;cout〈<”1.添加新纪录后,如要进行查找请先进行3或4操作\n”;cout<〈” 2。按员工姓名查找之前,请先进行3操作建立用户名哈希表\n";cout〈" 3.按电话号码查找之前,请先进行4操作建立电话号码哈希表voiexit(){inti;for(i=1;i〈=4;i++)cout<<enl;cout<〈"

\n";cout〈<"◆\n";cout〈<”员工管理查询系统cout<<"◆\n”;cout<<"谢谢您的使用!\n";cout<<”◆\n";cout

◆\n”;(”pause"}intmain(){recora[Maxsize];pHashTableH=newGetata(a);//将文件中的数据读入到数组a中system(”colorB”);start:u(;请选择:”;intmenu1;cin>〉menu1;switch(menu1){em(”cls”;ea;system(”pause”)m(”cls"ok;(完整wore(H,a);system("pause”;m(”cls”ok;l(a;m("pause");system(”cls”)ok;5:);m()m(";ocase6:Search_tel(H,a);system("pause”);system(”cls”);gotostart;break;e7:t(a;system("pause”;)ot;efault:cout〈<”请输入正确的操作选项!\n”;system(”cls”);gotostart;break;}return0;}7程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论