小型电话号码查询系统.docx
- 文档编号:9495231
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:24
- 大小:201.02KB
小型电话号码查询系统.docx
《小型电话号码查询系统.docx》由会员分享,可在线阅读,更多相关《小型电话号码查询系统.docx(24页珍藏版)》请在冰豆网上搜索。
小型电话号码查询系统
小型电话号码查询系统
王雨娉
3.2系统设计方案3
4.2系统信息保存和清空操作模块6
4.3系统信息查询模块7
5.2测试10
摘要
当前社会已经步入了一个信息化的时代,随着社会劳动生产率的不断提高,与之相对应的信息查询服务系统也在不断的完善。
本程序运用查找函数和结构体的建立,构建的哈希表采用再哈希的方法解决冲突,实现电话号码及有相关信息的准确查询,同时编译了对信息的保存和清空函数,使该电话号码的查询系统操作起来更加自如。
本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成情况进行了总结。
关键词:
哈希表;再哈希法;查找函数
1绪论
高度信息化的年代里,电话号码信息系统的出现正是当前时代发展的需要,它的出现给我们的工作生活无疑带来了很多方便。
编程人员通过对电话号码及其相关信息查询功能的不断编写和完善,来尽量满足人们的需要。
根据课程设计任务书要求,本程序的开发主要完成以下功能和性能。
(1)设置一个包括用户姓、地址、号码的信息的结构体。
(2)编译voidCreate()函数来创建结点,运用intApend()函数来添加结点信息,通过node*Input()函数来对用户的信息进行存储。
(3)编译函数voidList()、voidList2()分别根据号码和姓名的查询方式显示用户信息的哈希结果,并且结果会在屏幕上显示出来。
(4)编译voidFind(charnum[11])、voidFind2(charname[8])函数分别根据用户的电话号码和姓名对用户的详细信息进行查找,当要查询的结果不在系统存储时,屏幕上将显示“无此记录”。
(5)按“7”键退出系统查询。
2系统分析
2.1功能需求
本程序需要对各个组分的函数进行调用。
需要有添加、按各个要求的查询、清空、查找、退出等功能;运用MicrosoftVisualC++6.0软件将程序按要求编译出来;根据数字选项的提示实现各个功能。
2.2性能需求
通过游戏的编译,需要用“1”、“2”、“3”、“4”、“5”、“6”、“7”选择操作选项,一一实现各个功能。
退出操作时,按“7”键来结束操作。
3总体设计
3.1功能模块设计
根据分析整个系统主要划分为3个功能模块,在系统信息添加和结果显示模块中将用户信息存储在结构体structnode中;在系统信息保存和清空操作模块中,根据操作需要实现保存和清空操作;根据屏幕上的提示去实现各个功能,“7”键退出。
如图1所示。
图1功能模块图
(1)系统信息添加和结果显示模块
该模块用结构体实现用户信息的存储,并将储存的信息输出。
(2)系统信息保存和清空操作模块
该模块主要是根据操作者自己的需要来实现保存和清空函数的功能。
(3)系统信息查询模块
操作者通过该模块提示去实现各个功能,按“7”键操作退出。
3.2系统设计方案
设计小型电话号码查询要实现多个功能,所以采用菜单设计的方式进行各项功能的查询,既方便又简洁。
(1)系统循环控制:
该系统用for循环控制实现电话号码、用户名、地址的输入和查询输出。
(2)设计抽象数据类型定义:
ADTTriplet{
数据对象:
D={e1,e2,e3|e1,e2,e3∈ElemSet}
数据关系:
R1={
基本操作:
node*Input()
初始条件:
存储用户名name[8]、电话号码num[11]和地址adress[20]的结点已经存在。
操作结果:
根据用户名、电话号码、地址的三个变量将信息存储。
voidList()
操作结果:
输出用户名、电话号码、地址。
voidFind()
初始条件:
根据用户名(name)或电话号码(num)或地址(adress)查找。
操作结果:
输出查找结果。
}ADTTriplet
(3)存储结构:
用哈希表进行存储。
(4)算法设计:
用电话号码、用户名、地址建立哈希表,存储信息,然后根据各关键字查找信息。
4详细设计
4.1系统信息添加和结果显示模块
系统信息添加和结果显示模块主要运用node*Input()和intApend()函数实现节点的输入和添加,然后执行函数voidList()和voidList2()把存储的信息输出。
如图2和图3。
图2voidList()用户信息输出的流程图
图3voidList2()用户信息输出的流程图
4.2系统信息保存和清空操作模块
在主函数中调用voidSave()函数,保存用户的详细信息,调用函数voidCreate()和voidCreate2()即可清空用户信息。
如图4。
图4voidSave()系统信息保存的流程图
4.3系统信息查询模块
信息查找分两种情况,voidFind(charnum[11])函数是根据电话号码查找用户的其它信息,将从键盘输入的号码传入此函数,当系统存有和要查找的用户号码一致时,系统将该用户的名字和地址输出,否则,输出“无此记录”的警告。
同理,voidFind2(charname[8])函数根据用户姓名来查找地址和号码,两个函数用了
相同的求法。
如图5和图6.
图5voidFind2(charname[8])按姓名查找的流程图
图6voidFind(charnum[11])按号码查找的流程图
5调试与测试
5.1调试
(1)软件不能识别与有些有关的函数
产生原因:
缺少相关的文件头文件。
解决方法:
iotream,string.h,fstream,三个头文件缺一不可。
(2)信息查找有误
产生原因:
没有处理好冲突问题。
解决方法:
修改处理冲突的函数语句,使函数正常运行,此程序用到的处理冲突的方法有再哈希法,问题即得到解决。
5.2测试
此小型电话号码查询的功能都能一一实现了,和其相关的程序也正常运行,成功实现用号码或姓名这两种查找方法,函数哈希的冲突也得到正确解决,对错误或要保存的信息可以进行清空或保存,操作者根据提示,选择不同的选项,按照自己的意愿去实现函数的不同功能。
退出时,按“7”键结束。
6结论
数据结构综合训练顺利完成,题目所要求的功能也都一一实现了,小型电话号码查询的功能也如愿实现。
但是,该程序还不够完美,若设计相关程序,将用户全部信息保存在新建的文件夹里,那么,就能更好的降低运行过程中人为的造成数据丢失的可能。
此程序的编译也就更趋于完美了。
结束语
总算完成了这次数据结构综合训练,这次训练让我深刻体会到平时的知识积累有多重要,虽然它所涉及的哈希函数是我们的课本知识,但是,仅仅局限于书本的内容根本就不足以成功完成这次课程设计,在数据结构的课外辅导书里我找到了很多有用的知识点,值得借鉴的知识点。
这次课设对我来讲最大的收获是:
学好一门语言,需要不断的去琢磨,去突破,把眼光立足于课本之外,找寻更多更有价值的知识。
^_^!
参考文献
[1]谭浩强.C语言程序设计(第三版).清华大学出版社
[2]姜灵芝,余健.C语言程序设计教程.中国电力出版社,2006
[3]严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社
附录1-用户手册
登录即显示如图5所示界面。
图5主界面
在此界面通过选择“1”、“2”、“3”、“4”、“5”、“6”、“7”键,根据以上选项选择需要操作的键,按“Enter”键确定,函数自动开始运行,函数运行结束,按退出时按“Q”键退出操作。
选择“1”键,根据要求添加用户的姓名,地址,号码,如图6。
图6主界面
选择“2”键按姓名哈希的结果如图7所示
图7主界面
选择“3”键,然后根据提示分别选择“8”键和“9”,结果如图8所示。
图8主界面
选择“4”键,结果如图9所示。
图9主界面
选择“5”键和“7”键后的结果如图10所示。
图10主界面
附录2-源程序
#include
#include
#include
#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<<"请在菜单中选择你要执行的选项! \n"; cout<<"0.添加记录"< cout<<"2.按姓名哈希"< cout<<"3.查找记录"< cout<<"4.按号码哈希"< cout<<"5.清空记录"< cout<<"6.保存记录"< cout<<"7.退出系统"< } intmain() { charnum[11]; charname[8]; Create(); Create2(); intsel; while (1) { Menu(); cin>>sel; if(sel==0) { cout<<"请输入要添加的内容: "< Apend(); } if(sel==2) { cout<<"姓名哈希结果: "< List2(); } if(sel==3) { cout<<"8姓名查询,9号码查询"< intb; cin>>b; if(b==9) { cout<<"请输入电话号码: "< cin>>num; cout<<"输出查找的信息: "< Find(num); } else { cout<<"请输入姓名: "< cin>>name; cout<<"输出查找的信息: "< Find2(name); } } if(sel==4) { cout<<"号码散列结果: "< List(); } if(sel==5) { cout<<"列表已清空: "< Create(); Create2(); } if(sel==6) { cout<<"通信录已保存: "< Save(); } if(sel==7) return0; } return0; } 完成日期: 2008年12月31日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小型 电话号码 查询 系统