设计哈希表实现电话号码查询系统C语言版(课程设计报告)
设计哈希表实现电话号码查询系统
一 目的
通过课程设计,巩固和加深对结构体、文件、哈希表等理论知识的理解掌握现实复杂问题的分析建模和解决方法,掌握包括问题描述、系统分析、设计建模、代码实现、结果分析等的方法;提高利用计算机分析解决综合性实际问题的基本能力锻炼个人动手能力历练自身素质。
哈希表实现电话号码查询系统是利用哈希表实现电话系统的快速查询程序实现哈希表建表和查表并实现对没有查找到的内容进行记录。掌握哈希表的工作原理熟悉建立哈希表、对哈希表冲突处理、哈希表查找等功能的实现回顾文件读取、写入,回顾随机函数的作用。
二需求分析
1.输入的形式和输入值的范围
数据输入分两种模式一种是将原有数据记录在old。 t文档中 由程序读入另一种是由程序随机生成,并储存在nw。 txt文档中。数据的格式为:姓名、 电话号码、家庭住址.
用户使用时显示菜单,用户输入菜单选项完成操作。
2.输出的形式
查找的结果显示在屏幕上。未被查找到的内容输出到u 。 tx文档中。在用户需要时,将哈希表显示在屏幕上。
3.程序所能达到的功能
根据用户的选择从原有文档读入数据或随机生成数据,分别以姓名和电话号码做为关键字生成哈希表。生成哈希表后用户可以根据相应关键字进行数据的查找,若查找到对应的数据则将数据输出到屏幕,若没有查找到对应的数据则将用户输入的查找内容输出到ou 。 txt文档.在用户选择显示哈希表时,显示完整的哈希表。
程序使用文字菜单的友好界面在数据输入时对输入内容进行范围控制。
4。初步测试计划
在 d.tt文档中输入 条记录令程序读入并分别以姓名和电话号码做为关键字生成哈希表查找记录中原有的记录查看输出数据,查找记录中没有的记录查看回馈,查看整个哈希表的数据.
令程序随机生成记录,查看n.tx文档分别以姓名和电话号码做为关键字生
设计哈希表实现电话号码查询系统C语言版(课程设计报告)
成哈希表查看整个哈希表的数据,分别查找原有和没有的记录查看回馈。
三概要设计
。数据类型
定义结构体类型存储每条记录struc D a
{
char me s ize na me ;
ar phon size on
chr address i eaddres s]
ol used;
}hahd ata;
2各种函数说明int _a ke(char* s r,it s lct 获得关键字vod so(int i //显示每条信息vod Stoec har str/在没有找到时输出未找到的记录打开文件u xt并将记录储存在文档中v d Allsow( /输出哈希表中的记录void Auof l( 随机生成数据并将数据保存在 。 txvo id uild_H s(int Ha sTp //建立哈希表vid Findame( /根据姓名查找哈希表中的记录vi F indhone //根据电话号码查找哈希表中的记录
四详细设计
。头文件及定义结构体类型
in lu d e< im 。 h〉
inc ude 〈stdi 。 h>
clud tr ng 〉
#in lde<s dli 。 h〉
设计哈希表实现电话号码查询系统C语言版(课程设计报告)struc t ata
tring name;//st ng phn
i ddre s ;
; Dat hah_aa
2。定义长度
define sizehash1 0
define s ename 20
d e sizephone15
#d e sizeadde s 4
.获取关键字函数int ge _hahke char s ,int selec
in Key0,ReKe,m
ar tmp[10]
for nt =0; 〈str en t ;i++
{
Key+str i ;
y%=sizehash
f ha s_dta e u e d
m=Key;
Key—
if s ect==1
{
设计哈希表实现电话号码查询系统C语言版(课程设计报告) o =0 i0 i+)
{
eKe(+Ai]%siea ;
if !ah_aa Reey].sed
KeyReKy
b re ak
}
se f( e e ==2)
{
Ke=m
r(i= ;i<100; ++
ReKe=eKy+1;
ReKy=ReKy iz ah;
hash_ata eKey u ed)
{
KeReey
b re ak;
}
}
etu K
设计哈希表实现电话号码查询系统C语言版(课程设计报告)
4。产生ha 表
oid Bu d_H h H sTye) {
fo int i0 〈siehas; s_ ta i .u ed=fa eFLE* re rfoe(DataF ile ” ");
i re ade ==NULL
{
rint ( 读取失败\n”,D ataF il);
fc ose(r dr)
x t(1 ;
ch 1 0
a sps
r *nae ar p ho ne car*adre s;
n ashKey;whi ! o f(read
{
gets s 1 0 ae r
if s len s)>0
nstrtk(s sep s);
hon=strtok L, p s
add s trt (NL, );
f hy ==1
{
Hashyg askey ae Hasp); }e e Hashype=2
设计哈希表实现电话号码查询系统C语言版(课程设计报告)
{
ashKe=et_ashkey(phone HshTy }
f ahey=-
print f( ”哈希表过小或哈希碰撞过多" ;
fc lo red
ex 1);
se
strcy hs h_dta[H hK e y]。 n,na mes rcp y hahata as hKe]。 p e p hoe ;
s c h _d a[H s hKy。 ad s s, dre s s a _dat Hase use= rue;
}
l e d ;
}
在没有找到时输出未找到的记录打开文件ou xt并将记录储存在文档中vod St e har *str)/将查找失败记录添加到ou 。 tx文件末尾
LE =fop en(”ot txt” ”wa ) 以追加的方式写入 (p==NLL)/判断文件是否打开成功
p nf "创建ut。 tx失败n )
f los p)
ex t(1 ;
设计哈希表实现电话号码查询系统C语言版(课程设计报告)}
fsaf p,”s , ;
fc os pf)
6。输出哈希表中的记录
oidAl sho
{
r(int i= ; izeash +
f( shda i].used)
{
sho i
}
p ntf(”nn");
7。随机生成数据并将数据保存在ew ttvo id Auo_f le )
FLE p=o en("ew t " ”w”)
writer。 open("ne.t ”)
iffp=NULL)
pritf ”创ä¡ä建¡§n tx失º¡ì败㨹 \n ) lo e(f);
设计哈希表实现电话号码查询系统C语言版(课程设计报告) ex t 1 ;
chr s 100]={ };
k= ;
sran t ime 0) ;
fr it ; < i++)
meset s,0, 0 );
=0;
//随?机¨²产¨²生¦¨²用®?户¡ì名
or(int j=0;j8 j++ k++
s k ='a’rnd
//随机¨²产¨²生¦¨²电Ì话¡ã号码?
s k+ \t ;
f (j=0;j<12 ++,+)
{
s[k]=’ ran(%10
}
//随?机¨²产¨²生¦¨²地Ì址¡¤
s[k++ ='\t’
设计哈希表实现电话号码查询系统C语言版(课程设计报告)fr(j=0;j<20 j+ k+
s = ’+rnd( 2
}
fpr ntff "s", )
if(i =49
nt (p, \n
}fcls(fp ;
}
.根据姓名查找哈希表中的记录in Fnd_y_nme s r ng nam
{
i =0;
in 1
intky;chr* ;for(ey ,p=nam 0];p +)
ey=key+
keyky%
whi (
{
if( ig k == 0’&ey 〈=
ky+;j++ if as h_ata[e].nme==nme
reu k e y
e e
我们对于BlueHost主机商还是比较熟悉的,早年我们还是全民使用虚拟主机的时候,大部分的外贸主机都会用到BlueHost无限虚拟主机方案,那时候他们商家只有一款虚拟主机方案。目前,商家国际款和国内款是有差异营销的,BlueHost国内有提供香港、美国、印度和欧洲机房。包括有提供虚拟主机、VPS和独立服务器。现在,BlueHost 商家周年活动,全场五折优惠。我们看看这次的活动有哪些值得选择的。 ...
小欢互联成立于2019年10月,主打海外高性价比云服务器、CDN和虚拟主机服务。近期上线了自营美国CERA机房高速VPS,进行促销活动,为客户奉上美国/香港八折优惠码:Xxc1mtLB优惠码适用于美国CERA一区/二区以及香港一区/二区优惠时间:即日起至10月底优惠码可无限次使用,且续费同价!官网:https://idc.xh-ws.com购买地址:美国CERA一区:https://idc.xh-...
这两天在站长群里看到不少有使用DEDECMS织梦程序的朋友比较着急,因为前两天有看到来自DEDECMS,我们熟悉的织梦程序官方发布的公告,将会在10月25日开始全面商业用途的使用DEDECMS内容管理程序的会采用授权收费模式,如果我们有在个人或者企业商业用途的,需要联系且得到授权才可以使用,否则后面会通过维权的方式。对于这个事情,我们可能有些站长经历过,比如字体、图片的版权。以及有一些国内的CMS...