长春大学课程设计_第1页
长春大学课程设计_第2页
长春大学课程设计_第3页
长春大学课程设计_第4页
长春大学课程设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、装订线 长 春 大 学 课程设计纸 目 录 一设计目的2 二设计内容2 2.1设计要求2 三设计过程.2 3.1算法思想分析.2 3.2算法描述与实现.2 四程序运行8 五设计总结10 六参考文献11 七附录源代码12共 19 页 第 1 页装订线 长 春 大 学 课程设计纸 一、设计目的 1了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作

2、风 二、设计内容 设计散列表实现电话号码查找系统。 1.设计要求 (1)设每个记录有下列数据项:电话号码、用户名、地址; (2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表; (3)采用一定的方法解决冲突; (4)查找并显示给定电话号码的记录; (5)查找并显示给定用户名的记录。 三、设计过程 1.算法思想分析 散列(Hash)同顺序、链式和索引存储结构一样,是存储线性表的又一种方法。散列存储的基本思想是:以线性表中的每个元素的关键字key为自变量,通过一种函数H(key)计算出函数值,把这个函数值解释为一块连续存储空间的单元地址(即下标),将该元素存储到这个单元中。散列存储中使

3、用的函数H(key)称为散列函数或哈希函数,它实现关键字到存储地址的映射(或称转换),H(key)的值称为散列地址或哈希地址;使用的数组空间是线性表进行散列存储的地址空间,所以被称之为散列表或哈希表。当在散列表上进行查找时,首先根据给定的关键字key,用与散列存储时使用的同一散列函数H(key)计算出散列地址,然后按此地址从散列表中取对应的元素。 2.算法描述与实现建节点:struct node char name8,address20; char num11;node * next;共 19 页 第 2 页装订线 长 春 大 学 课程设计纸 typedef node* pnode; type

4、def node* mingzi; node *phone; node *nam; node *a; 哈希函数1: void hash(char num11) int i = 3; key=(int)num2; while(numi!=NULL) key+=(int)numi; i+; key=key%20; 哈希函数2: void hash2(char name8) int i = 1; key2=(int)name0; while(namei!=NULL) key2+=(int)namei;i+;key2=key2%20;输入节点:node* input()共 19 页 第 3 页装订线

5、长 春 大 学 课程设计纸 node *temp; temp = new node; temp->next=NULL; cout<<"输入用户名:"<<endl; cin>>temp->name; cout<<"输入地址:"<<endl; cin>>temp->address; cout<<"输入电话:"<<endl; cin>>temp->num; return temp; 添加节点: int apen

6、d() 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->next; namkey2->next=newname; ret

7、urn 0;新建节点:void create() int i;phone=new pnode20;共 19 页 第 4 页装订线 长 春 大 学 课程设计纸 for(i=0;i<20;i+) phonei=new node; phonei->next=NULL; nam=new mingzi20; for(i=0;i<20;i+) nami=new node; nami->next=NULL; 显示列表: void list() int i; node *p; for(i=0;i<20;i+) p=phonei->next; while(p) cout<

8、;<p->name<<'_'<<p->address<<'_'<<p->num<<endl;p=p->next; 显示列表:void list2() 共 19 页 第 5 页装订线 长 春 大 学 课程设计纸 int i; node *p; for(i=0;i<20;i+) p=nami->next; while(p) cout<<p->name<<'_'<<p->address<<&#

9、39;_'<<p->num<<endl; p=p->next; 查找用户信息: void find(char num11) hash(num); node *q=phonekey->next; while(q!= NULL) if(strcmp(num,q->num)=0) break; q=q->next; if(q) cout<<q->name<<"_" <<q->address<<"_"<<q->num<

10、<endl; else cout<<"无此记录"<<endl; void find2(char name8) hash2(name);node *q=namkey2->next;while(q!= NULL)if(strcmp(name,q->name)=0)共 19 页 第 6 页 装 订 线 长 春 大 学 课程设计纸 break; q=q->next; if(q) cout<<q->name<<"_" <<q->address<<"

11、_"<<q->num<<endl; else cout<<"无此记录"<<endl; 保存用户信息: void save() int i; node *p; for(i=0;i<20;i+) p=phonei->next; while(p) fstream iiout("contact.txt", ios:out); iiout<<p->name<<"_"<<p->address<<"_&q

12、uot;<<p->num<<endl; p=p->next; 共 19 页 第 7 页 装 订 线 长 春 大 学 课程设计纸 三程序运行 初始界面:添加内容:用户名显示:共 19 页 第 8 页 装 订 线 长 春 大 学 课程设计纸 号码查询:按用户名查询:号码显示:共 19 页 第 9 页 装 订 线 长 春 大 学 课程设计纸 清空记录:保存记录:四.设计总结 通过这次数据结构的编程题目,使我对C+语言和数据结构的知识有了更深的了解。从最初的不知道从何入手到最后编写程序的完成,虽然耗费了我们一定的时间跟精力,但同时我们也收获硕果累累,一方面使我对函数

13、的运用有了更加深刻的了解,对面向对象语言更深层次的掌握和应用。在初始编程的过程中,出现了许多的错误,但通过改正,借阅书本,对程序的运行方式有了进一步体会。坚信了知识是基础,而实践才是最大的进步!共 19 页 第 10 页 装 订 线 长 春 大 学 课程设计纸 五参考文献 数据结构程序设计题典 李春葆等编 清华大学出版社 数据结构(C语言版) 黄国瑜 叶乃菁编 清华大学出版 数据结构课程设计 苏仕华 等编 机械工业出版社 数据结构用C语言描述 耿国华 等编 高等教育出版社共 19 页 第 11 页装订线 长 春 大 学 课程设计纸 六附录源代码 #include "iostream.

14、h" #include "string.h" #include "fstream.h" #define NULL 0 unsigned int key; unsigned int key2; /* author XXX */ int *p; struct node char name8,address20; char num11; node * next; ; typedef node* pnode; typedef node* mingzi; node *phone; node *nam; node *a;void hash(char num

15、11) int i = 3;key=(int)num2;while(numi!=NULL)共 19 页 第 12 页装订线 长 春 大 学 课程设计纸 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<<"请您输入用

16、户姓名:"<<endl; cin>>temp->name;cout<<"请您输入联系地址:"<<endl; cin>>temp->address;cout<<"请您输入联系电话:"<<endl; cin>>temp->num;return temp;共 19 页 第 13 页装订线 长 春 大 学 课程设计纸 int apend() node *newphone; node *newname; newphone=input(); n

17、ewname=newphone; newphone->next=NULL; newname->next=NULL; hash(newphone->num); hash2(newname->name); newphone->next = phonekey->next; phonekey->next=newphone; newname->next = namkey2->next; namkey2->next=newname; return 0; void create() int i; phone=new pnode20; for(i=0

18、;i<20;i+) phonei=new node; phonei->next=NULL;nam=new mingzi20; for(i=0;i<20;i+)nami=new node; nami->next=NULL;共 19 页 第 14 页装订线 长 春 大 学 课程设计纸 void list() int i; node *p; for(i=0;i<20;i+) p=phonei->next; while(p) cout<<p->name<<'_'<<p->address<<&

19、#39;_'<<p->num<<endl; p=p->next; void list2() int i; node *p; for(i=0;i<20;i+) p=nami->next; while(p) cout<<p->name<<'_'<<p->address<<'_'<<p->num<<endl; p=p->next;void find(char num11)共 19 页 第 15 页装订线 长 春 大 学

20、 课程设计纸 hash(num); node *q=phonekey->next; while(q!= NULL) if(strcmp(num,q->num)=0) break; q=q->next; if(q) cout<<q->name<<"_" <<q->address<<"_"<<q->num<<endl; else cout<<"对不起,没有您要查找的记录!"<<endl; void find2

21、(char name8) hash2(name); node *q=namkey2->next; while(q!= NULL) if(strcmp(name,q->name)=0) break; q=q->next; if(q) cout<<q->name<<"_" <<q->address<<"_"<<q->num<<endl; else cout<<"对不起,没有您要查找的记录!"<<endl; v

22、oid save() int i;node *p;for(i=0;i<20;i+)共 19 页 第 16 页装订线 长 春 大 学 课程设计纸 p=phonei->next; while(p) fstream iiout("contact.txt", ios:out); iiout<<p->name<<"_"<<p->address<<"_"<<p->num<<endl; p=p->next; void menu() cout&

23、lt;<"ttt 欢迎使用赣易通号码簿"<<endl; cout<<"tt="<<endl; cout<<"tt*0.添加用户记录*"<<endl; cout<<"tt*2.用户名显示*"<<endl; cout<<"tt*3.搜索记录*"<<endl; cout<<"tt*4.号码显示*"<<endl; cout<<"tt*5.清空记录*"<<endl; cout<<"tt*6.保存记录*"<<endl; cout<<"tt*7.退出系统*"<<endl; cout<<"tt="<<endl; int main()char num11; char name8;create();共 19 页 第 17

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论