数据结构课设(13页).doc

上传人:1595****071 文档编号:36722041 上传时间:2022-08-28 格式:DOC 页数:13 大小:172.50KB
返回 下载 相关 举报
数据结构课设(13页).doc_第1页
第1页 / 共13页
数据结构课设(13页).doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《数据结构课设(13页).doc》由会员分享,可在线阅读,更多相关《数据结构课设(13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-数据结构课设-第 13 页学 号1507030222数据结构课程设计设计说明书Gorilla管理信息系统+Gorilla图结构数据应用起止日期: 2017年 01月 09 日 至 2017年 01 月 13日学生姓名XXX班级15网络2班成绩指导教师(签字)计算机与信息工程学院2017年 01月 09日天津城建大学课程设计任务书20162017学年第 1 学期 计算机与信息工程 学院 网络工程 专业 网络2 班级课程设计名称: 数据结构课程设计 设计题目: Gorilla管理信息系统+Gorilla图结构数据应用 完成期限:自 2017 年 01月 09日至 2017 年 01月 13 日共

2、 1 周设计依据、要求及主要内容(可另加附页):一、建立一个小型的管理信息系统:1、确认管理信息系统的主题:(一)主题词汇表:1.hippopotamus 河马 2.jackal 豺 3.kingfisher 翠鸟 4. leopard豹 5.lion 狮 6.actor 演员 7.astronaut 太空员8.policeman 警察 9.firefighter 消防员 10.mugger 强盗 11.farmer 农民 12. boss 老板 13.dancer 跳舞者 14. Ostrich 鸵鸟 15. pilot 飞行员16.hairdresser 理发师 17. Mule 骡 18

3、.waiter 服务员 19.accountant 会计20.monk-和尚 狗 22. priest-牧师23.director- 导演24.model- 模特儿 25. singer-歌手 26.dentist-牙医 27. elephant-象 28.nurse-护士 29.navigator- 航海家 30.pilot- 飞行员31.architect建筑师 32. peacock孔雀 33.baker面包师 34.businessman商人 35. penguin企鹅 36.receptionist接待员 37.secretary-秘书 38.attorney-律师 39.judge

4、-法官 40. rabbit兔子41.carpenter-木匠 42.painter-油漆匠 43.tailor-裁缝师 44.driver-司机 45.captain-船长 46.fisherman-渔夫 医师 48.gardener园丁 49. chemist-药剂师 50.engineer工程师 51.scientist-科学家 52.salesperson售货员 53.photographer摄影师 ox狐 55.hourse 马 56.giraffe 长颈鹿 57.goat 山羊 58. Gorillagull海鸥 60.hedgehog 刺猬 61. Teacher 教师 62.p

5、rofessor 教授 63. cook 厨师 64.principal 校长65.singer 歌手66. monkey猴子按对应序号的后两位,每个同学获取对应词汇。(二)为每个主题词确定具有特征的信息集。例:fish:id, name, length, Weight, Color, Is_Carnivore, Is_Marine意义:编号, 名字, 长度, 体重, 颜色, 是否食肉, 是否海鱼Gorilla:num,high,weight,name,sex,position,group意义:编号, 身高, 体重, 名字, 性别, 地位,族群名struct Gorillanode/定义一个名

6、字为Gorillanode的结构体int num;/编号float high;/身高float weight;/体重string name;/名字char sex;/性别string position;/地位string group;/ 族群名Gorillanode *next;/定义next指针(三)为每个主题建立一个信息管理系统要求:1.定义结构体存储每个主题词实体的数据;2.使用单向链表进行多个数据的存储;3.要求程序有主菜单,执行时显示实例为:Fish管理系统功能菜单1.增加Fish;2.删除Fish;3.修改Fish;4.查询Fish信息;5.统计Fish个数;6.输出Fish列表;

7、7.退出;请输入你的选择(1-7):请实现以上功能。功能1 数据录入功能2 数据输出功能3统计功能功能4查询功能若查询的是未输入的信息功能5 信息修改如果修改的医生信息不存在功能6 删除信息功能7 退出二、现在考虑新的应用场景,使得产生多对多的关系,例如:Fish主题中,一条鱼与另外多条鱼存在相邻的关系;那么在Fish的基础信息之上,还需要保存相邻的Fish的信息。为此,需要额外扩充关系数据。使用邻接链表是一个很好的方式。其思想是:先开辟数组存储Fish的基本数据,然后,为每个Fish,构建链表,存储所有的关系(即指向相邻Fish的指针数据); 请按照上述思想,为你的每个主题词实体,建立邻接链

8、表实现,并且实现以下功能:Fish图结构数据处理程序1.创建Fish图)2.按照深度遍历的方式打印所有的Fish;3.按照广度遍历的方式打印所有的Fish;V0-v1-v2V10V2vertax firsreageadjvex nextV0V1111v0V2三、直觉上,我们会认为:图的遍历的编程问题,比给定n个数字的线性序列求最大值问题更难。我们知道:面向过程编程的核心问题是:当处理完当前数据,决定下一个数据是谁。请回答下面的问题:直觉上,我们会认为:图的遍历的编程问题,比给定n个数字的线性序列求最大值问题更难。我们知道:面向过程编程的核心问题是:当处理完当前数据,决定下一个数据是谁。请回答下

9、面的问题:1图的广度和深度优先遍历中,如何找到下一个要处理的数据? 访问到一个结点的时,看他的所有邻接点,然后再看下一个处理的数据是那个。在广度遍历中,遍历时,结点以队列的形式存储,通过被访问过的队列来找到下一个处理数据。在深度遍历时,遍历时,结点以栈的形式存储,通过被访问过的栈来找到下一个处理数据。2n个数字线性序列求最大值问题中,如何找到下一个要处理的数据? 线性序列中,数据以线性表形式存储,一个数据的最后一个域的指针指向另一个数据存储即可。 3结合前述解答,解释为何图的广度和深度优先遍历问题难度直觉上大于线性序列最大值问题。线性表中数据之间的关系是一对一的关系,一个结点和他的邻接点是固定

10、的一个,而广度和深度优先遍历数据之间的关系是多对多,一个结点可以有多个邻接点,感觉不确定性大。四、心得和体会1.如何理解数据结构中的关系?如果说:数据结构等同于数据+关系,那么对于编程问题而言,数据更重要还是关系更重要?为什么?我感觉数据结构中的关系是数据直接的一种联系和一种相关性,把数据彼此之间建立联系,让孤立的数据变成一个整体,变成一种结构,在数据间建立关联,有助于更好的管理和处理数据。编程问题而言,我感觉关系更重要,数据只是一种元素,在没有一定的相关性时,这些数据不能做任何编程,而建立关系能让编程处理很多事情。数据之间有了关系,才会有它的意义。2.能够预先建立关系,对于编程来说很重要。能

11、否举例说明:哪些问题无法事先建立数据的关系?括号匹配问题无法事先建立数据的关系3.做完本课程设计后,你尚存在的问题是什么?有所收获的是什么? 做完本课程设计后,我感觉我存在的问题在于如何把现实的问题能用编程更为具体的表示出来,这种把实际问题转化为计算机语言,怎么来综合起来运用,对我来说,我感觉还有点难度,但是我相信如果你用心去做,我的目前存在的问题都会解决。 通过这次课设我个人感觉收获挺大的,起初我对数据结构,学习课本时,感觉到茫然,对课本学习不透,感觉门课,没什么实际用途,其实是我自己感觉的,呵呵。之后就有了这次课设,开始我还是看不懂,没有什么头绪,不过在我坚持下来认真学习后,感觉这门课程在

12、编程方面用处很多,功能也很强大,而且对你掌握语言编程有着极大的帮助,虽然每天晚上都是编程调试程序到半夜睡觉,开始很反感,不过我坚持下来了,感觉自己的编程能力上了一个新台阶,我对程序有了自己的见解,可以自己调试程序,并且激起我学习编程的兴趣,我们专业对计算机编程要求比较高,所以对我以后好好学习,有着极大的帮助,是这次课设给了我这种心态。这是我通过这次课设的收获。3修改Gorillanode功能的实现描述(文字描述和流程图) 这个Gorillanode的信息修改可以修改编号,但个人觉得不妥的是选择修改后无法选择单个修改某个内容,只能全部修改,而且修改的编号不能与你想修改的编号相同,这是令我感到尴尬

13、的地方。4. 删除Gorillanode功能的实现描述(文字描述和流程图) 删除功能中,首先查找到所要删除的药剂师的注册号,删除并输出该药剂师的信息。指导教师(签字): 系主任: 陈亚东 批准日期: 2017年 01月 09日(打印时删除红色字体)(1报告正文样式:各级标题,文字字体/行距严格按照示例)(2以下各个内容请结合参考任务书中的相关分析3提交:打印稿,电子文档:doc,两个程序cpp,压缩zip,命名:10290201姓名.zip)Fish管理信息系统+Fish图结构数据应用设计报告一、Fish信息管理系统1属性集及对应意义2结构体定义3修改Fish功能的实现描述(文字描述和流程图)

14、(文字描述:先画一个链表示意图,然后,比如要修改:id=3的结点,你应该如何从L开始动作。如果是头结点呢?又该如何修改。Yi=ni=0;Sum=0;NSum=Sum+iEndi加14各个功能的界面贴图(每个图都要图名)增删改5画出包含有三个数据的链表示意图二、Fish图结构数据处理程序1描述你的场景主题2画图表示你的样例数据对应的邻接链表,并在上方注明结构体的各个域名;3用自己的话,描述深度遍历或广度遍历的算法思想深度优先遍历思想(采用递归方法): 访问指定顶点n; 从n的未被访问的邻接点中选取一个顶点w,从w出发进行深度优先遍历; 重复上述两步,直至图中所有和n有路径相通的顶点都被访问到。

15、广度优先遍历思想: 访问指定顶点v; 依次访问v的各个未被访问的邻接点v1, v2, , vk; 分别从v1,v2,vk出发依次访问它们未被访问的邻接点,并使“先被访问顶点的邻接点”先于“后被访问顶点的邻接点”被访问。直至图中所有与顶点v有路径相通的顶点都被访问到。4广度遍历和深度遍历在存储待处理结点的数目上,哪个更多?为什么?先比之下,深度优先遍历在存储待处理节点的数目上多一些。因为,深度优先遍历一次只遍历一个与指定节点相临界的顶点,如果在递归遍历过程中出现某一个节点的所有节点均已访问,但还有没被访问过的节点,这是需要回溯到它的上一个顶点,再对比没有被访问过的顶点,从而遍历没被访问过的顶点。

16、而广度优先遍历,一次便可把所有与指定节点的相邻接都访问,然后再访问子节点的没被访问的顶点。因此,深度优先遍历在存储待处理节点的数目上多一些。#include/大猩猩#includeusing namespace std;struct Gorillanode/定义一个名字为Gorillanode的结构体int num;/编号float high;/身高float weight;/体重string name;/名字char sex;/性别string position;/地位string group;/ 族群名Gorillanode *next;/定义Gorillanode结构体的next指针cl

17、ass Gorillapublic:void add();/增加void Delete();/删除 void modify();/修改void search();/查询int statistics();/统计void display();/输出数据 Gorilla()/新申请一个链表first=new Gorillanode;first-next=NULL;Gorilla(int d,int n);/初始化空链表Gorilla();/单链表析构函数private:Gorillanode *first;/单链表头指针Gorilla:Gorilla()/单链表析构函数,用来释放节点的存储空间Gor

18、illanode *p;while(first!=NULL)/释放单链表节点的每一个存储空间first=p;/暂存被释放节点p=first-next;/p指向被释放节点的下一个节点delete first;int Gorilla:statistics()Gorillanode *p; int sum=0;p=first-next;/工作指针p初始化while(p!=NULL)p=p-next;/工作指针后移sum+;cout已录入的Gorilla的数目为:sum只endl ;return 0;void Gorilla:add()/添加Gorillanode *p=new Gorillanode

19、;/定义名字为Gorillanode的新node,工作指针为*pint num2;float high2;float weight2;string name2;char sex2;string position2;string group2;cout*输入你要增加的Gorilla信息*endl;coutnum2;coutname2;couthigh2;coutweight2;coutsex2;coutposition2;coutgroup2;p-num=num2;p-name=name2;p-high=high2;p-weight=weight2;p-sex=sex2;p-position=p

20、osition2;p-group=group2;p-next=first-next;/头插法插入first-next=p; cout*信息输入成功*next;q=first;/工作指针p指向头结点cout*输入你要删除的Gorilla信息*endl;coutnum2;while(p!=NULL)/节点p存在if(p-num=num2)/q-next=p-next;/摘链delete p; break;else/在表头删除q=p;p=p-next; if(p=NULL) cout*你要删除的医生信息不存在*endl;else cout*信息删除成功*next;int num1;float hig

21、h1;float weight1;string name1;char sex1;string position1;string group1;display();int num3,y,m;docoutnum3; while(p!=NULL)/节点p存在if(num3=p-num)doy=0; cout请输入要修改部分的序号:endl; cout1.编号 2.高度 3.重量 4.名字 5.性别 6.地位 7.种群名 change; switch(change) case 1: cout请输入新的编号:num1; p-num=num1; break; case 2: cout请输入新的身高:hig

22、h1; p-high=high1; break; case 3: cout请输入新的重量:weight1; p-weight=weight1; break; case 4: cout请输入新的名字:name1; p-name=name1; break; case 5: cout请输入新的性别:sex1; p-sex=sex1; break; case 6: cout请输入新的地位:position1; p-position=position1; break; case 7: cout请输入新的种群名:group1; p-group=group1; break; default:cout输入错误

23、!endl;cout是否重新选择? endl;cout是,请输入1;endl;cout否,请输入任意键y;while(y=1);break; p=p-next;if(p=NULL)cout查无此ID号!endl;cout是否重新输入? 是,请输入1; 否,请输入任意键m;elsecout更改成功!endl;display();cout是否继续修改? 是,请输入1; 否,请输入任意键m;while(m=1);void Gorilla:search()/查询Gorillanode *p;p=first-next;int num2;coutnum2;while(p!=NULL)if(p-num=nu

24、m2)cout编号 名字 性别 身高 体重 地位 族群名endl;coutnum name sex high weight position groupnext;if(p=NULL)cout*你要查询的Gorilla信息不存在*next;cout编号 名字 性别 身高 体重 地位 族群名endl;while(p!=NULL)coutnum name sex high weight position groupnext;int main()int t;Gorilla G;while(t!=7)cout* 欢迎登陆Gorilla查询系统 *endl;cout*【1】增加Gorilla信息*endl

25、;cout*【2】删除Gorilla信息*endl;cout*【3】修改Gorilla信息*endl;cout*【4】查询Gorilla信息*endl;cout*【5】统计Gorilla数目*endl;cout*【6】输出Gorilla列表*endl;cout*【7】退出*endl; cout*请输入使用编号(1-7)*t;switch(t) case 1:G.add();break; case 2:G.Delete();break; case 3:G.modify();break; case 4:G.search();break; case 5:G.statistics();break; case 6:G.display();break; case 7:exit(1);break;return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁