哈希表实现电话号码查询系统.docx
- 文档编号:8335838
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:13
- 大小:53.82KB
哈希表实现电话号码查询系统.docx
《哈希表实现电话号码查询系统.docx》由会员分享,可在线阅读,更多相关《哈希表实现电话号码查询系统.docx(13页珍藏版)》请在冰豆网上搜索。
哈希表实现电话号码查询系统
设计性综合性实验
实验课题名称:
院系:
计算机科学与技术学院专业:
计算机科学与技术
课程:
数据结构教师:
学号:
姓名:
(组长)
学号:
姓名:
学号:
姓名:
学号:
姓名:
学号:
姓名:
学号:
姓名:
至学年度学期
实验名称:
哈希表实现电话号码查询系统
实验性质:
设计性(*) 综合性(*)
实验器材:
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< p=p->next; } } } voidlist2()//显示列表 { inti; node*p; for(i=0;i<20;i++) { p=nam[i]->next; while(p) { cout< 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< 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< elsecout<<"无此记录"< } voidsave()//保存用户信息 { inti; node*p; for(i=0;i<20;i++) { p=phone[i]->next; while(p) { fstreamiiout("out.txt",ios: : out); iiout< 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; } 实验成绩 学号 姓名 课题小组自评分数 最后得分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈希表 实现 电话号码 查询 系统