设计哈希表实现电话号码查询系统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
之前几个月由于CHIA挖矿导致全球固态硬盘的价格疯涨,如今硬盘挖矿基本上已死,硬盘的价格基本上恢复到常规价位,所以,pacificrack决定对全系Cloud server进行价格调整,降幅较大,“如果您是老用户,请通过续费管理或升级套餐,获取同步到最新的定价”。官方网站:https://pacificrack.com支持PayPal、支付宝等方式付款VPS特征:基于KVM虚拟,纯SSD raid...
妮妮云的来历妮妮云是 789 陈总 张总 三方共同投资建立的网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑妮妮云的市场定位妮妮云主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。妮妮云的售后保证妮妮云退款 通过于合作商的友好协商,云服务器提供2天内全额退款,超过2天不退款 物...
Sharktech荷兰10G带宽的独立服务器月付319美元起,10Gbps共享带宽,不限制流量,自带5个IPv4,免费60Gbps的 DDoS防御,可加到100G防御。CPU内存HDD价格购买地址E3-1270v216G2T$319/月链接E3-1270v516G2T$329/月链接2*E5-2670v232G2T$389/月链接2*E5-2678v364G2T$409/月链接这里我们需要注意,默...