哈希表实现电话号码查询系统.docx

上传人:b****5 文档编号:8335838 上传时间:2023-01-30 格式:DOCX 页数:13 大小:53.82KB
下载 相关 举报
哈希表实现电话号码查询系统.docx_第1页
第1页 / 共13页
哈希表实现电话号码查询系统.docx_第2页
第2页 / 共13页
哈希表实现电话号码查询系统.docx_第3页
第3页 / 共13页
哈希表实现电话号码查询系统.docx_第4页
第4页 / 共13页
哈希表实现电话号码查询系统.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

哈希表实现电话号码查询系统.docx

《哈希表实现电话号码查询系统.docx》由会员分享,可在线阅读,更多相关《哈希表实现电话号码查询系统.docx(13页珍藏版)》请在冰豆网上搜索。

哈希表实现电话号码查询系统.docx

哈希表实现电话号码查询系统

 

设计性综合性实验

 

实验课题名称:

院系:

计算机科学与技术学院专业:

计算机科学与技术

课程:

数据结构教师:

学号:

姓名:

(组长)

学号:

姓名:

学号:

姓名:

学号:

姓名:

学号:

姓名:

学号:

姓名:

 

至学年度学期

实验名称:

哈希表实现电话号码查询系统 

实验性质:

  设计性(*) 综合性(*)

实验器材:

PC机并装有VC++6.0环境

实验目的:

利用《数据结构》课程的相关知识完成一个具有一定难度的综合设计题目,利用C/C++语言进行程序设计,并规范地完成课程设计报告。

通过课程设计,巩固和加深对线性表、栈、队列、字符串、树、图、查找、排序等理论知识的理解;掌握现实复杂问题的分析建模和解决方法(包括问题描述、系统分析、设计建模、代码实现、结果分析等);提高利用计算机分析解决综合性实际问题的基本能力。

一、目的 

利用《数据结构》课程的相关知识完成一个具有一定难度的综合设计题目,利用C/C++语言进行程序设计,并规范地完成课程设计报告。

通过课程设计,巩固和加深对线性表、栈、队列、字符串、树、图、查找、排序等理论知识的理解;掌握现实复杂问题的分析建模和解决方法(包括问题描述、系统分析、设计建模、代码实现、结果分析等);提高利用计算机分析解决综合性实际问题的基本能力。

 

二、需求分析 

1、 程序的功能 

1.1录入姓名、电话、住址

1.2查找功能

1.3散列方式

1.4清空记录

1.5保存成TXT格式

1.6退出

三、程序设计

3.1定义结构体

structnode//建节点

{

charname[8],address[20];

charnum[11];

node*next;

};

3.1函数列表和功能说明

不同的函数来比较冲突

voidhash(charnum[11])//哈希函数

voidhash2(charname[8])//哈希函数

不同的散列方式

voidfind(charnum[11])//查找用户信息

voidfind2(charname[8])//查找用户信息

voidsave()//保存用户信息

voidmenu()//菜单

intmain()

四、输出形式

4.1数据文件“old.txt”存放原始电话号码数据。

4.2查找到相关信息时显示姓名、地址、电话号码。

五、调试结果

调试界面图如下

录入的联系人姓名、地址、联系电话截图如下

程序如下已通过上机调试

//#include"iostream.h"

#include

#include"string.h"

#include"fstream"

#defineNULL0

unsignedintkey;

unsignedintkey2;

int*p;

structnode//建节点

{

charname[8],address[20];

charnum[11];

node*next;

};

typedefnode*pnode;

typedefnode*mingzi;

node**phone;

node**nam;

node*a;

usingnamespacestd;//使用名称空间

voidhash(charnum[11])//哈希函数

{

inti=3;

key=(int)num[2];

while(num[i]!

=NULL)

{

key+=(int)num[i];

i++;

}

key=key%20;

}

voidhash2(charname[8])//哈希函数

{

inti=1;

key2=(int)name[0];

while(name[i]!

=NULL)

{

key2+=(int)name[i];

i++;

}

key2=key2%20;

}

node*input()//输入节点

{

node*temp;

temp=newnode;

temp->next=NULL;

cout<<"输入姓名:

"<

cin>>temp->name;

cout<<"输入地址:

"<

cin>>temp->address;

cout<<"输入电话:

"<

cin>>temp->num;

returntemp;

}

intapend()//添加节点

{

node*newphone;

node*newname;

newphone=input();

newname=newphone;

newphone->next=NULL;

newname->next=NULL;

hash(newphone->num);

hash2(newname->name);

newphone->next=phone[key]->next;

phone[key]->next=newphone;

newname->next=nam[key2]->next;

nam[key2]->next=newname;

return0;

}

voidcreate()//新建节点

{

inti;

phone=newpnode[20];

for(i=0;i<20;i++)

{

phone[i]=newnode;

phone[i]->next=NULL;

}

}

voidcreate2()//新建节点

{

inti;

nam=newmingzi[20];

for(i=0;i<20;i++)

{

nam[i]=newnode;

nam[i]->next=NULL;

}

}

voidlist()//显示列表

{

inti;

node*p;

for(i=0;i<20;i++)

{

p=phone[i]->next;

while(p)

{

cout<name<<'_'<address<<'_'<num<

p=p->next;

}

}

}

voidlist2()//显示列表

{

inti;

node*p;

for(i=0;i<20;i++)

{

p=nam[i]->next;

while(p)

{

cout<name<<'_'<address<<'_'<num<

p=p->next;

}

}

}

voidfind(charnum[11])//查找用户信息

{

hash(num);

node*q=phone[key]->next;

while(q!

=NULL)

{

if(strcmp(num,q->num)==0)

break;

q=q->next;

}

if(q)

cout<name<<"_"<address<<"_"<num<

elsecout<<"无此记录"<

}

voidfind2(charname[8])//查找用户信息

{

hash2(name);

node*q=nam[key2]->next;

while(q!

=NULL)

{

if(strcmp(name,q->name)==0)

break;

q=q->next;

}

if(q)

cout<name<<"_"<address<<"_"<num<

elsecout<<"无此记录"<

}

voidsave()//保存用户信息

{

inti;

node*p;

for(i=0;i<20;i++)

{

p=phone[i]->next;

while(p)

{

fstreamiiout("out.txt",ios:

:

out);

iiout<name<<"_"<address<<"_"<num<

p=p->next;

}

}

}

voidmenu()//菜单

{cout<<"\t\t"<

cout<<"\t\t"<

cout<<"\t\t"<

cout<<"**************个人电话号码查询系统*******************\t\t"<

cout<<"\t\t0.请添加联系人记录!

"<

cout<<"\t\t1.查找联系人记录"<

cout<<"\t\t2.联系人姓名散列"<

cout<<"\t\t3.联系人号码散列"<

cout<<"\t\t4.清空联系人记录"<

cout<<"\t\t5.保存到指定文件夹"<

cout<<"\t\t6.退出系统"<

cout<<"*****************************************************\t\t"<

}

intmain()

{

charnum[11];

charname[8];

create();

create2();

intsel;

while

(1)

{

menu();

cin>>sel;

if(sel==1)

{cout<<"7按号码查询,8按姓名查询"<

intb;

cin>>b;

if(b==7)

{cout<<"请输入电话号码:

"<

cin>>num;

cout<<"输出查找的信息:

"<

find(num);

}

else

{cout<<"请输入姓名:

"<

cin>>name;

cout<<"输出查找的信息:

"<

find2(name);}

}

if(sel==2)

{cout<<"姓名散列结果:

"<

list2();

}

if(sel==0)

{cout<<"请输入要添加的内容:

"<

apend();

}

if(sel==3)

{cout<<"号码散列结果:

"<

list();

}

if(sel==4)

{cout<<"列表已清空:

"<

create();

create2();

}

if(sel==5)

{cout<<"通信录已保存:

"<

save();

}

if(sel==6)return0;

}

return0;

}

实验成绩

学号

姓名

课题小组自评分数

最后得分

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1