ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:92.57KB ,
资源ID:12809007      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-12809007.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(号码系统查询.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

号码系统查询.docx

1、号码系统查询湖南人文科技学院运算机科学技术系课程设计说明书课 程 名 称: 数据结构 课 程 代 码: 408024 题 目: 号码查询系统 年级/专业/班: 学 生 姓 名: 学 号: 指 导 教 师: 开 题 时 间: 2020 年 12 月 21 日完 成 时 间: 2020 年 1 月 1 日摘 要哈希表最大的优势,确实是把数据的存储和查找消耗的时刻大大降低,几乎能够看成是常数时刻;而代价仅仅是消耗比较多的内存。但是在当前可利用内存愈来愈多的情形下,用空间换时刻的做法是值得的。另外,编码比较容易也是它的特点之一。哈希表又叫做散列表,分为开散列 和闭散列。本次课程设计是为用户解决关于号码

2、的存储,查询,和添加删除。用户能够通过键盘输入用户信息进行存储,然后在通过哈希表提供的2种查询方式进行用户信息查询。关键词:哈希表;散列函数;冲突处置Abstract Hash table of the biggest advantages is that the data storage and search time significantly reduced consumption, almost can be regarded as constant time; while the price is just consuming more and more memory. Howeve

3、r, in the current available memory, an increasing number of cases, the practice of using space for time is worth it. In addition, the code is also relatively easy to one of its characteristics. Hash table is also called a hash table is divided into “open hash” and “closed hashing”.This course is des

4、igned to solve on the phone numbers for users to store, query, and add remove. Users can enter user information via the keyboard is stored, and then through the hash table provided by the two kinds of ways to search for user information query. Keywords: hash table; hash function; Conflict Management

5、.数据结构课程设计-号码查询系统一、引 言随着我国进一步的开放,咱们需要扩大国际交流,增强学习国外的先进体会。把握国际的领先技术是咱们的首要任务。运算机技术进展异样迅速,内容更新专门快,咱们对运算机的了解程度也直接阻碍了我国的现代化和信息化的程度。数据结构是运算机程序设计的重要理论技术基础,它不仅是运算机学科的核心课程,而且是其他理工专业的热点选修课。数据结构研究的是世界上所有非数值量的信息结构及其处置方式,它不仅是运算机科学与技术相关专业十分重要的核心课程,也是应用数学、治理科学、环境计划等很多专业的一门重要基础课。所有的运算机系统软件和应用软件都要用到各类类型的数据结构。因此,关于所有想更

6、好地运用运算机来解决实际问题得人们而言,仅把握几种运算机程序设计语言是难以应付众多复杂的课题的。要想有效地利用运算机、充分发挥运算机的性能,还必需学习和把握好数据结构的有关知识。打好数据结构这门课程的扎实基础,关于学习运算机专业的其他课程,如操作系统、编译原理、数据库治理系统、软件工程、人工智能等都是十分有利的。本课程设计要求实现号码的查询。一样的查找方式有各式各样的缺点,可是哈希表不同,哈希表是一种通过捐躯空间来提高效率的方式,理论上,有足够的空间的话,哈希表和他的函数几乎能不通过任何比较一次性就能够取得结果。为了实现查询功能,用到了关于哈希表的存储结构和链表结构,而且通过链地址法解决哈希表

7、冲突。 课程设计要求用哈希表实现功能,第一要解决哈希表的存储冲突问题,对不同的关键字可能取得同一个哈希地址,这种现象称为冲突。在以住,咱们都以为冲突只能尽可能地少,而不能完全地幸免。关于那个问题,通过一番对照和试探,决定采纳链地址法解决冲突。成立一个链表,将冲突的关键字都存入同一个链表,同时将每一个链表的头指针存入另一个链表。 二、设计目的与任务一、课程设计的目的 通过课程设计,使咱们巩固所学知识、培育咱们动手能力。咱们用数据结构设计一个完整的应用程序,综合应用所学知识完成软件的分析、设计、调试和总结,提高咱们对数据结构综合应用能力和解决问题的能力。灵活应用所学数据结构知识,独立完成问题分析。

8、 初步把握软件开发进程的问题分析、系统设计、程序编码、测试等方式。训练用系统的观点和软件开发一样标准进行软件开发。提高综合运用所学的理论知识和方式独立分析和解决问题的能力。同时增加了咱们之间的团队合作精神!加倍也体会到以后在工作中团队合作的重要性和必要性! 二、课程设计的任务 问题描述: 利用哈希表实现号码的查找功能,要求输入号码或用户姓名能够查找出用户信息。而且能加入新的用户。设计散列表实现查询系统。三、设计方案一、需求分析1) 设每一个记录有以下数据项:号码、用户名、地址;2) 从键盘输入各记录,别离以号码和用户名为关键字成立散列表;3) 采纳必然的方式解决冲突;4) 查找并显示给定的号码

9、的记录;5) 查找并显示给定用户名的记录;二、概要设计1)哈希表数据类型(ADT)如下:ADT node 数据对象:name,address,num;数据关系:name为用户姓名,address为用户地址,num为用户号码; 大体操作:(1)void hash(char A)程序功能:关于key的哈希函数,函数值为key的值(2)node* input()程序功能:输入一个节点的值(3)int apend()程序功能:将节点添加到哈希表(4)void create()程序功能:新建一个哈希表(5)void find(char A)程序功能:通过线索查找用户 2)存储结构 struct node

10、 char name8,address20; /姓名,地址存储字符组char num11; /号码存储字符组node * next; /后继元素地址;3)流程图开始 输入bb是1 ?22,输入数据入key21,输入数据入key从姓名列表查询从号码列表查询输出搜索结果结 束3、详细设计在本次课程设计中,咱们用到了哈希表那个重要的数据结构,在实现程序功能的时候,很多地址都涉及哈希表,另外咱们用到了链表,在程序顶用到了许多链表的操作,比如成立,添加,删除等操作。在对程序进行整体设计时,咱们选用了哈希表表这种数据结构来存贮数据,哈希表查找迅速,理论上空间足够大的话,能够不需比较直接找到目标因此比较适合

11、本程序的要求。重要程序段如下:1)以号码和姓名为关键字的哈希函数void hash(char num11) int i = 3; key=(int)num2; while(numi!=NULL) key+=(int)numi; i+; key=key%20; 同意传来的号码和姓名,第一判定号码和姓名是不是为空。不为空那么将号码和姓名的每位转化为整型进行累加,然后用用除留取余法取得关键码。2)输入函数node* input() node *temp; temp=(struct node *)malloc(sizeof(struct node); temp = new node; temp-nex

12、t=NULL; cout输入姓名:temp-name; cout输入地址:temp-address; cout输入:temp-num; return temp; 成立一个新结点,将结点的下个结点置空。输入姓名,地址,后返回结点 。 3)添加新结点int apend() node *newphone; node *newname; newphone=input(); newname=newphone; newphone-next=NULL; newname-next=NULL; hash(newphone-num); hash2(newname-name); newphone-next = ph

13、onekey-next; phonekey-next=newphone; newname-next = namkey2-next; namkey2-next=newname; return 0; 成立一个新的结点和姓名结点,挪用输入函数。将结点的地址赋给姓名结点,使它们拥有一样的值,别离挪用以号码和以姓名为关键字的哈希函数。然后将结点插入到表中。4)初始化号码表void create() int i; phone=new pnode20; for(i=0;inext=NULL; 为号码表申请20个元素,为表中每一个元素申请空间,将其数据元素置空。5)查找函数void find(char num

14、11) int i=0; hash(num); node *q=phonekey-next; while(q!= NULL) if(strcmp(num,q-num)=0) coutname_ address_numnext; if(!i) cout无此记录endl; 依照号码查找用户信息,num11为用户需要查询的号码,挪用哈希函数,取得关键码,然后进行判定。声明一个操纵变量,若是找到记录那么将其赋1,不然为0。6)保留用户信息 int i; node *p; for(i=0;inext; while(p) fstream iiout(out.txt, ios:out); iioutname

15、_address_numnext; 。4、程序清单#include #include string.h #include fstream #define NULL 0 unsigned int key; unsigned int key2; int *p; struct node /建节点 char name8,address20; char num11; node * next; ; typedef node* pnode; typedef node* mingzi; node *phone; node *nam; node *a; using namespace std; /利用名称空间

16、void hash(char num11) /哈希函数 int i = 1; key=(int)num2; while(numi!=NULL) key+=(int)numi; i+; key=key%20; void hash2(char name8) /哈希函数 int i = 1; key2=(int)name0; while(namei!=NULL) key2+=(int)namei; i+; key2=key2%20; node* input() /输入节点 node *temp; temp = new node; temp-next=NULL; cout输入姓名:temp-name;

17、 cout输入地址:temp-address; cout输入:temp-num; return temp; int apend() /添加节点 node *newphone; node *newname; newphone=input(); newname=newphone; newphone-next=NULL; newname-next=NULL; hash(newphone-num); hash2(newname-name); newphone-next = phonekey-next; phonekey-next=newphone; newname-next = namkey2-nex

18、t; namkey2-next=newname; return 0; void create() /新建节点 int i; phone=new pnode20; for(i=0;inext=NULL; void create2() /新建节点 int i; nam=new mingzi20; for(i=0;inext=NULL; void find(char num11) /查找用户信息 int i=0;hash(num); node *q=phonekey-next; while(q!= NULL) if(strcmp(num,q-num)=0) coutname_ address_num

19、next; if(!i) cout无此记录next; while(q!= NULL) if(strcmp(name,q-name)=0) coutname_ address_numnext; if(!i) cout无此记录endl; void save() /保留用户信息 int i; node *p; for(i=0;inext; while(p) fstream iiout(out.txt, ios:out); iioutname_address_numnext; void menu() char num11; char name8; int sel; cout -endl; cout |

20、 菜 单 |endl; cout | 1.添加记录 |endl; cout | 2.查找记录 |endl; cout | 3.清空记录 |endl; cout | 4.保留记录 |endl; cout | 5.退出系统 |endl; cout -endl;coutsel;switch(sel) case 1: cout请输入要添加的内容:endl; apend(); menu(); break; case 2: cout1号码查询,2姓名查询b; if(b=1) cout请输入号码:num; cout输出查找的信息:endl; find(num); menu(); break; else co

21、ut请输入姓名:name; cout输出查找的信息:endl; find2(name); menu(); break; case 3: cout列表已清空;endl; create(); create2(); menu(); break; case 4: cout通信录已保留:endl; save(); menu(); break; case 5: cout谢谢!endl; /break; int main() create(); create2() ; menu(); return 0;四、调试分析与体会本次课程设计的实例尽管比较简单,程序设计也不是很复杂。可是在程序的编写和调试进程中,咱们

22、仍是碰到了一些问题。这些问题有些完满是自己的粗心造成的,有的却是一些由于咱们自身的知识面不广造成的。这些问题提示咱们:在做情形的时候专门是在做研究性的课题的时候必然要胆大心细。同时也告知咱们:在科学的世界里咱们要尽力的学习,取得更多的知识。测试环境:Windows XP环境一、问题一:如何成立适当的哈希函数来减少冲突?现象:冲突较多,找不到插入位置。缘故:成立的哈希函数产生的关键码相同,哈希函数不合理。二、问题2:如何查找到相同记录的数据?现象:查找不到相同记录的元素,查找完一个就终止了。缘故:当查找完一个元素时,函数就终止了,并无继续查找。五、运行结果第一直接运行程序,运行结果如图1所示。图

23、1 程序直接运行成效图程序直接运行,挪用菜单运行添加记录程序,运行结果如图2所示。图2 添加记录输入1,选择添加记录,然后依照提示,输入用户姓名,地址,输入完成后,程序自动挪用菜单。 运行查找记录程序,运行结果如图3所示。图3 查找记录按提示输入2,显现2个选择,第一选择1号码查询,按提示输入要查询的号码,程序搜索记录并输出符合要求的记录,接着挪用菜单。再次选择查找记录,这次选择2姓名查找,然后按提示输入要查询的姓名,程序输出符合要求的记录并再次挪用菜单。六、结 论通过这次的课程设计,咱们关于号码查询系统有了更深刻的明白得,巩固了数据结构课学到的知识。在编程的具体进程中,了解的一些关于哈希表的

24、知识和存储结构。通过本次课程设计,咱们了解到了课程设计的要求与方式,学会了程序设计的大体步骤,且进一步提高了团队合作的意识。同时,我们也感觉到,一个优秀的程序,不单单只是能够运行,更应该具有较高的效率,合理的结构,良好的可读性和必然的容错性。其中超级重要的一点是,我们以为整个课程设计是一个团队的工作,一个人要完成所有的工作是超级困难和耗时的,必需发挥团队的团结协作精神,提高工作效率和工作质量,团结协作是咱们本次课程设计取得成功的一项尤其重要的保证。在以后的学习中我们也会加倍注意方方面面能力的和谐和进展。 七、致 谢感激我们的指导教师 教师,谢谢他在我们的课程设计进程中提出了指导性的方案和架构,

25、并指引我们阅读相关的资料和书籍,使我们在不熟悉的领域中仍能迅速把握新的方式和技术。感激校领导给咱们这次宝贵的锻炼机遇,让咱们能更好的明白得和实践数据结构编程,让咱们对数据结构编程有了更深刻的认知,对已学知识有了更进一步的巩固。也谢谢我的同窗与咱们一路合作,一起完成了那个课程设计。八、参考文献1 严蔚敏. 数据结构(C语言版)M. 北京:清华大学出版社,1997.2 朱占立. 数据结构(第二版)M. 西安: 西安交通大学出版社,2000.3 麦中凡. C+程序设计语言教程M. 北京: 北京航空航天大学出版社,1995.4 杜慧、 李哲英、 骆丽, MCTL系统中成立任务流集合的研究J, 北方工业

26、大学学报, 2004 Vol.16 No.1.5 .2007Vol.20 No.5 课程设计任务书及成绩评定课落款称: 号码查询系统 完 成 者:王宇波 龙佳 魏钧宇 肖龙午 肖旭 一、设计的目的与要求: 1)灵活应用所学数据结构知识,独立完成问题分析。2)初步把握软件开发进程的问题分析、系统设计、程序编码、测试等方式。3)训练用系统的观点和软件开发一样标准进行软件开发。4)提高综合运用所学的理论知识和方式独立分析和解决问题的能力。二、设计进度及完成情形 日 期内 容2009.分析问题,找出所要解决问题的关键2009.2009.总体设计,找出解决方案2009.2009.详细设计,列出解决步骤2009.2009.程序编码2009.2009.程序调试,修改加以完善2009.2009.书写文档3、成绩评定:设计成绩: (教师填写)指导教师: (签

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2