《数据结构课程设计报告书》由会员分享,可在线阅读,更多相关《数据结构课程设计报告书(5页珍藏版)》请在金锄头文库上搜索。
1、可编辑版学 号数据结构课程设计设计说明书Horse管理信息系统+Horse图结构数据应用起止日期: 2015年01月06日 至 2015年01月15日学生姓名班级成绩指导教师计算机与信息工程学院2015年 01月 15日天津城建大学课程设计任务书20142015学年第 1 学期学院专业班级课程设计名称:数据结构课程设计设计题目:Horse管理信息系统+Horse图结构数据应用完成期限:自2015年01月6日至2015年01月15日共1周设计依据、要求及主要内容可另加附页:一、建立一个小型的管理信息系统:1、确认管理信息系统的主题:一主题词汇表:1.hippopotamus 河马 2.jacka
2、l 豺 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.waiter 服务员 19.accountant会计20.monk-和尚 21.dog狗 22. priest-牧师23.director- 导演24.model- 模特儿 2
3、5. 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-法官 40. rabbit兔子41.carpenter-木匠 42.painter-油漆匠 43.tailor-裁缝师 44.driver-司机 45.captain-船长
4、46.fisherman-渔夫 47.doctor医师 48.gardener园丁 49. chemist-药剂师 50.engineer工程师 51.scientist-科学家 52.salesperson售货员 53.photographer摄影师 54.fox狐 55.hourse 马 56.giraffe 长颈鹿 57.goat 山羊 58. Gorilla 大猩猩 59.Seagull海鸥 60.hedgehog 刺猬 61. Teacher 教师 62.professor 教授 63. cook 厨师 64.principal 校长65.singer 歌手66. monkey猴子按
5、对应序号,每个同学获取对应词汇二为每个主题词确定具有特征的信息集。例:fish:id, name, length, Weight, Color, Is_Carnivore, Is_Marine意义:编号, 名字, 长度, 体重, 颜色, 是否食肉, 是否海鱼horse: id编号, name名字, age年龄, length身长,weight体重,color颜色,sex性别三为每个主题建立一个信息管理系统要求:1.定义结构体存储每个主题词实体的数据;2.使用单向链表进行多个数据的存储;3.要求程序有主菜单,执行时显示实例为:Fish管理系统功能菜单1.增加Fish;2.删除Fish;3.修改F
6、ish;4.查询Fish信息;5.统计Fish个数;6.输出Fish列表;7.退出;请输入你的选择1-7:请实现以上功能。二、现在考虑新的应用场景,使得产生多对多的关系,例如:Fish主题中,一条鱼与另外多条鱼存在相邻的关系;那么在Fish的基础信息之上,还需要保存相邻的Fish的信息。为此,需要额外扩充关系数据。使用邻接链表是一个很好的方式。其思想是:先开辟数组存储Fish的基本数据,然后,为每个Fish,构建链表,存储所有的关系即指向相邻Fish的指针数据;请按照上述思想,为你的每个主题词实体,建立邻接链表实现,并且实现以下功能:Fish图结构数据处理程序1.创建Fish图2.按照深度遍历
7、的方式打印所有的Fish;3.按照广度遍历的方式打印所有的Fish;4.退出。三、直觉上,我们会认为:图的遍历的编程问题,比给定n个数字的线性序列求最大值问题更难。我们知道:面向过程编程的核心问题是:当处理完当前数据,决定下一个数据是谁。请回答下面的问题:图的广度和深度优先遍历中,如何找到下一个要处理的数据? n个数字线性序列求最大值问题中,如何找到下一个要处理的数据? 结合前述解答,解释为何图的广度和深度优先遍历问题难度直觉上大于线性序列最大值问题。四、心得和体会1.如何理解数据结构中的关系?如果说:数据结构等同于数据+关系,那么对于编程问题而言,数据更重要还是关系更重要?为什么?2.能够预
8、先建立关系,对于编程来说很重要。能否举例说明:哪些问题无法事先建立数据的关系?3.做完本课程设计后,你尚存在的问题是什么?有所收获的是什么?指导教师签字:系主任签字:批准日期: 年 月 日Horse管理信息系统+Horse图结构数据应用设计报告一、Horse信息管理系统1属性集及对应意义数据类型变量含义intid编号stringname名字intage年龄intlength身长intweight体重stringcolor颜色stringsex性别2结构体定义struct hoursenodeint id; /编号string name; /名字int age; /年龄 int length;
9、/身长int weight; /体重string color; /颜色string sex; /性别struct hoursenode *next;3修改Horse功能的实现描述文字描述和流程图输入想要修改的马的idp!=NULL&p-id!=idp=p-next输出:所要修改的马不存在p=NULL输入所要进行的修改ENDY N Y N文字描述:输入想要修改的马的id,当p不为NULL并且 p的id不等于id时,令p指向下一个结点p-next;否则,判断p是否为NULL。如果p为空,则马不存在;否则查找成功,输入所要进行的修改进行修改信息。4 各个功能的界面贴图每个图都要图名主菜单:增加Hou
10、rse:查询Horse:统计Horse:输出Horse:修改Horse:删除Horse:5 画出包含有三个数据的链表示意图123 id name age length weight color sex二、Horse图结构数据处理程序1描述你的场景主题在Horse信息系统中,一匹马与其他多匹马存在相邻关系,在保存一匹马的基本信息基础上,还需要保存马匹之间的相邻关系。在建立信息系统过程中,输入Horse的基本信息后,再建立它的关系属性,用链表的方式存储,建立Horse之间的关系,实现相邻成员之间的链接。2 画图表示你的样例数据对应的邻接链表,并上方注明结构体的各个域名;VertexNumidnam
11、eagelengthweightcolorsexfirstVertexNumnext01jack2190290whitem1212rose2170270redw02423mary2160260redw01334jerry2180280redm245tom2185270whitem1012343 用自己的话,描述深度遍历或广度遍历的算法思想深度遍历:从指定顶点出发,首先访问这个顶点,然后从这个顶点的第一个未被访问过的邻接点出发再次进行深度遍历,直到所有的顶点都被访问过。广度遍历:从指定顶点出发,首先访问这个顶点,然后访问这个顶点的所有未被访问过的邻接点,然后从这些邻接点中第一个出发,访问它的未被
12、访问过的邻接点,直到所有顶点都被访问过。4 广度遍历和深度遍历在存储待处理结点的数目上,哪个更多?为什么?深度遍历在存储待处理结点的数目上多一些。深度优先遍历一次只遍历一个与指定结点邻接的顶点,如果在递归遍历过程中出现某一个顶点的所有邻接点都已被访问,但还有未被访问过的顶点,就需要回到它的上一个顶点,再找出没有被访问过的顶点,进行深度遍历。而广度遍历,一次就可把所有与指定顶点的相邻接都访问,然后再访问邻接点的未被访问的顶点。所以,深度遍历在存储待处理结点的数目较多。三、程序难度的探索直觉上,我们会认为:图的遍历的编程问题,比给定n个数字的线性序列求最大值问题更难。我们知道:面向过程编程的核心问
13、题是:当处理完当前数据,决定下一个数据是谁。请回答下面的问题:1 图的广度和深度优先遍历中,如何找到下一个要处理的数据? 在深度遍历时,遍历时,结点以栈的形式存储,通过被访问过的栈来找到下一个处理数据。在广度遍历中,遍历时,结点以队列的形式存储,通过被访问过的队列来找到下一个处理数据。 2 n个数字线性序列求最大值问题中,如何找到下一个要处理的数据? 线性序列中,数据以线性表形式存储,将一个数据的指针域指向另一个数据存储就可以找到下一个要处理的数据。3 结合前述解答,解释为何图的广度和深度优先遍历问题难度直觉上大于线性序列最大值问题。线性表中数据之间的关系是一对一的关系,一个结点有唯一一个邻接点,而深度遍历和广度遍历数据之间的关系是多对多,一个结点可以有多个邻接点,感觉上难度大。四、心得和体会1.如何理解数据结构中的关系?如果说:数据结构等同于数据+关系,那么对于编程问题而言,数据更重要还是关系更重要?为什么?数据结构中的关系是数据之间的联系,将原本孤立的点联系起来编程一个整体,一种结构,便于更好地处理数据。我觉得对于编程问题而言,关系更为重要。数据是独立的,不能做任何编程,而关系却能处理