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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(数据结构课程设计报告校园导游系统附有源代码.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计报告校园导游系统附有源代码.docx

1、数据结构课程设计报告校园导游系统附有源代码课程论文(设计)2011-2012学年第2学期课程名称:数据结构课程设计课程性质:实践课专业班级:考核方式:考查学生姓名:学 号:学 时:1周教师姓名:自评分:95分评语及评分 1. 作业内容12. 基本思路12.1 本校10个景点12.2 图的初始化22.3 图的遍历22.4 求最短路径33.系统流程43.1 系统的简单说明43.2 系统流程图54. 系统运行效果图54.1 校园导游界面54.2 华农校园地图64.3 景点的相关信息查询64.4 任意两个景点间的最短路径74.5 退出校园导游系统85.总结96.参考文献101. 作业内容设计一个校园导

2、游程序,为来访客人提供各种信息查询任务。基本要求:(1)设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介信息,以边表示路权,存放路径长度等相关信息。(2)为来访客人提供图中任意景点相关信息的查询(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。2. 基本思路要完成对整个导游图系统的功能实现,需要对的每一项功能都有清楚的设想和认识,了解并明确每一项功能的实现需要解决的问题,选择正确并且高效的算法把问题逐个解决,最终实现程序的正确调试运行。有以下设计思路:(1).结合本校的实际情况,选出10个景点;(2).人

3、为手工为选出的10个景点赋上相关信息(名称、代号、简介信息、以及路权等等);(3).根据选出来的10个景点用邻接矩阵存储校园图。(4).依照景点的相关信息创建校园图。(5).把纸质上的内容,利用C+编程语言编写查找景点相关信息的程序。(6).根据人为赋值的路权,迪杰斯特拉算法计算任意两点之间的最短路径。(7).综上所诉,用一个主函数把这些板块合成,生产一个菜单界面呈现在用户面前。为此,可把系统分为以下几个核心:图的初始化、图的遍历、求最佳路线。2.1 选出本校10个景点结合华南农业大学实际情况,我选出以下10个景点,从1到10编号:编号名称编号名称编号名称编号名称1校史馆2红满堂3行政楼4西园

4、5东区运动场6树木园7竹园8新校门9老校门10黑山运动场2.2 图的初始化由于邻接矩阵特殊的存储方式,它非常便于快速的查找两个顶点之间的边上的权值。所以,图采用带权的邻接矩阵存储。决定了图的存储方式后,以华南农业大学10个景点的游览地图作为蓝本,把校园地图抽象化成顶点与边构成的图形式,如图2.2所示,途中数字代表线的权值。2.3 图的遍历图的遍历是图中最基本的操作。图的遍历是指从图中某一顶点出发,对图中所有顶点访问一次且仅访问一次。导游图需要把每条路径的信息都向游客展示,就需要读取每两个顶点间的路径信息。由于采用了带权的邻接矩阵存储结构进行存储,所以需要针对这一存储结构对路线进行遍历操作。其遍

5、历算法如图2.3所示。图2.3 遍历算法示意图2.4 求最短路径基于本程序中图的存储是邻接矩阵结构存储的图结构,因而采用适合该存储结构的迪杰斯特拉算法用于解决求最短路径的问题。迪杰斯特拉提出了一个按路径长度递增的持续产生最短路径的算法,其基本思想是:设置一个集合S存放已经找到最短路径的顶点,S的初始状态只包含源点v,对于viV-S,假设从源点v到vi的有向边为最短路径。以后每求得一条最短路径v,vk,就将vk加入集合S中,并将路径v,vk,vi,与原来的假设相比较,取路径长度较小者为最短路径。重复上述过程,直到集合V中全部顶点加入到集合S中。如图2.4所示。图2.4 图的遍历算法执行效果示意图

6、辅助数组distn:元素disti表示当前找到的从源点到终点vi的最短路径的长度。初态为:若从v到vi有弧,则disti为弧上的权值;否则置disti为。若当前求得的终点为vk,则根据下式进行迭代:disti=mindisti,distk+arcki 1in辅助数组pathn:元素pathi是一个串,表示当前所找到的从源点到终点vi的最短路径。初态为:若从v到vi有弧,则pathi为“vvk”,否则置pathi为空串。数组sn:存放源点和已经生成的终点(即集合S),初态为只有一个源点v。算法的伪代码描述是:1.初始化数组dist、path和s;2.while(s中的元素个数n) 2.1 在di

7、stn中求最小值,其下标为k(则vk为正在生成的终点); 2.2 输出distj和pathj; 2.3 修改数组dist和path; 2.4 将顶点vk添加到数组s中;3.系统流程3.1 系统的简单说明1.创建校园图:(1)先手工画好华农的10个景点的草图,再用C+语言输出抽象化的校园地图。(2)再用C+语言定义节点个数N,编写函数name( )为景点赋值各类信息项,函数information( ),输入各个景点的简介。(3)读入道路的起始点,为邻接矩阵的边赋相应的值。2利用函数travgraph来查找景点信息。3创建一个校园图creat(Matrix_Graph *G),然后为相应的边赋上现

8、实意义上的权值。4用path( )函数来求任意两景点之间的最短路径。5.如果不查询则调用exit( )函数退出。5用main函数来输出导游界面。3.2 系统流程图 4.系统运行效果图4.1 校园导游界面程序运行,后台对图结构进行初始化,运行结果如图4.1。图4.1 校园导游节目图4.2 华农校园地图校园地图的查看是通过抽象化10个景点来用printf( )函数输出地图,在输入选择1之后弹出的界面,运行结果如图4.2。图4.2 抽象化的华南农业大学校园导游地图4.3 景点的相关信息查询景点的相关信息查询是通过information( )函数来调用输出的,在主菜单那输入2之后,拿第2个景点红满堂和

9、第7个景点竹园来当例子,第运行结果如图4.3.1和图4.3.2。图4.3.1 景点2红满堂信息查询图4.3.2 景点7竹园信息查询4.4 任意两个景点间的最短路径根据用户的需求,在用户输入了起点和终点后计算出最短路径是哪一条路径。以下举两个例子。第一个例子的起点是5东区运动场,终点是1校史馆。第二个例子的起点是2红满堂,终点是10黑山运动场。运行结果如图4.4.1和图4.4.2所示。图4.4.1 从东区运动场到校史馆的最短路径图4.4.2 从红满堂到黑山运动场的最短路径根据截图可知,在现实生活中的最短路径也是如此。证明了程序的正确性。4.5 退出校园导游系统用户满足了需求之后,只要在界面菜单处

10、输入4便可退出此次校园导游系统。运行结果如图4.5。图4.5 退出校园导游系统5.总结由于设计者水平有限,本导游图系统的功能还比较简单,还有一些好的设想没有实现:比如添加管理模式,使得公园管理人员能够同样方便的更改导游图,因此更改这一导游图还必须在程序员的帮助下进行。另外,本导游图系统还有一定的局限性,如果存在只有一条通路的景点,导游图将无法求得最佳旅游路径。公园的导游图系统的这些不足请老师多多谅解。通过这次的课程设计左右,让我对数据结构中定义无向图和创建无向图的理解更加深刻,不断提升认识,提高编程技巧,借以不断地提高程序设计水平,了解数据结构在编写比较复杂的程序的重要作用;理解了迪杰斯特拉算

11、法的原理,但对于其算法的程序编写还是不太明白;学会了在编写几百行程序时如何查找错误,如何改错误等等。总而言之,这次的课程设计很好地锻炼自己实际操作能力!参 考 文 献1严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社.1997.2李春葆,尹为民,李蓉蓉.数据结构教程(第3版)上机实验指导.清华大学出版社.2009.3滕国文.数据结构课程设计.清华大学出版社.2010.218-223.4蒋盛益.数据结构学习指导与训练.中国水利水电出版社.2003./程序名称:校园导游系统/程序员:/编写时间:2012年6月#define N 10#define MAX 25 #define MAXedg 3

12、0 #include #include #include #include void clrscr() system(cls);typedef int AdjMatrixMAXMAX;typedef struct int vexsMAX; AdjMatrix arcs;Matrix_Graph;typedef struct char name10; char information100; struct edgenode *link; vexnode; typedef struct edgenode int adjvex; int length; char info10; char info2

13、100; struct edgenode *next;edgenode, *Node ; typedef struct Edge int lengh; int ivex, jvex; struct Edge *next; EdgeType; typedef struct int num; char name10; vertex;typedef struct vertex vexsMAX; int edgesMAXMAX; adjmax; void Name(int i) switch(i) case 1: printf(1:校史馆nn);break; case 2: printf(2:红满堂

14、nn);break; case 3: printf(3:行政楼nn);break; case 4: printf(4:西园nn);break; case 5: printf(5:东区运动场nn);break; case 6: printf(6:树木园nn);break; case 7: printf(7:竹园nn);break; case 8: printf(8:新校门nn);break; case 9: printf(9:老校门nn);break; case 10: printf(10:黑山运动场nn);break; default: printf(景点编号输入错误!请输入1-10的数字编号

15、!nn); break; void Information(int i)/*景点介绍*/ switch(i) case 1: printf(校史馆:华农校史档案保存的地方。为原来华南农学院地址,建筑中西结合,每届毕业班照相处。nn);break; case 2: printf(红满堂为白色圆顶建筑,外观华美。日常重要报告召开地。nn);break; case 3: printf(行政楼:为学校日常事务办公点,外观壮丽,是华农的标志性建筑。 nn);break; case 4: printf(西园:坐落华山学生区。分为三层,第一层和第二层为学生餐厅,第三层为自助餐。nn);break; case

16、 5: printf(东区运动场:是华农全校最大设施最先进齐全的运动场,平时各类体育比赛都在这里进行。nn);break; case 6: printf(树木园:面积宽广,里面有众多珍贵树种。nn);break; case 7: printf(竹园:校内高档宾馆,为外校嘉宾专设住宿。nn);break; case 8: printf(新校门:华农百年校庆时建立,牌坊建筑。nn);break; case 9: printf(老校门:在地铁口附件,是华农重要标志之一。nnn);break; case 10: printf(黑山运动场:面积不大,为研究生和老师而设立的运动场。nn);break; d

17、efault: printf(景点编号输入错误!请输入1-10的数字编号!nn); break; void travgraph(vexnode g,int n,adjmax adj) /查找指定景点信息 int i = 1,flag = 1,len; char ch; printf(ttt请输入您要查询的景点序号:、nn); printf(ttt1.校史馆 2.红满堂 3.行政楼 4.西园 5.东区运动场n); printf(ttt6.树木园 7.竹园 8.新校门 9.老校门 10.黑山运动场n); printf(你的选择是); scanf(%d,&len); getchar(); print

18、f(此景点的名称是:); Name(len); printf(此景点的介绍是:); Information(len); do printf(tt是否继续? Y/N n); printf(tt你的选择是:); scanf(%c,&ch); getchar(); if(ch = Y | ch = y) clrscr(); flag = 1; i = 1; printf(ttt请再次输入您要查询的景点序号:nn); printf(ttt1.校史馆 2.红满堂 3.行政楼 4.西园 5.东区运动场n); printf(ttt6.树木园 7.竹园 8.新校门 9.老校门 10.黑山运动场n); prin

19、tf(你的选择是); scanf(%d,&len); getchar(); printf(此景点的名称是:); Name(len); printf(此景点的介绍是:); Information(len); continue ; else flag = 0; printf(tt请再次按回车键或者任意键加回车键返回至主菜单); break; while(1);void creat(Matrix_Graph *G) int i,j; for(i=1;ivexsi=i; for(i=1;i=N;i+) for(j=1;jarcsij=0; G-arcs12=1; G-arcs19=7; G-arcs2

20、1=1; G-arcs23=2; G-arcs24=9; G-arcs29=6; G-arcs32=2; G-arcs34=7; G-arcs37=3; G-arcs39=4; G-arcs310=15; G-arcs42=9; G-arcs43=7; G-arcs46=25; G-arcs410=22; G-arcs56=6; G-arcs57=18; G-arcs58=10; G-arcs64=25; G-arcs65=6; G-arcs67=2; G-arcs610=9; G-arcs76=2; G-arcs73=3; G-arcs75=18; G-arcs78=5; G-arcs710

21、=10; G-arcs85=10; G-arcs87=5; G-arcs89=9; G-arcs91=7; G-arcs92=6; G-arcs93=4; G-arcs98=9; G-arcs103=15; G-arcs104=22; G-arcs106=9; G-arcs107=10; for(i=1;i=N;i+) for(j=1;jarcsij=0) G-arcsij=MAX;void path(Matrix_Graph *G,int s,int e) int i,j,u,c=1,t,v; int rN+1N+1; int TN,flagN,dN; for(i=0;i=N;i+) for

22、(j=0;j=N;j+) rij=0; for(i=1;i=N;i+) Ti=-1; flagi=1; di=MAX; flags=0; while(c=N) t=MAX; for(i=1;iarcssiarcssi;v=i;rv1=v; for(i=1;i=c;i+) for(j=1;jarcsTijarcsTij;v=j; if(rv0!=-1) u=1; while(rTiu!=0) rvu=rTiu;u+; rvu=v; rv0=-1; Tc=v; flagv=0; dc=t; c+; printf(n最短路径是以下这条:n(%d),s); j=1; while(rej!=0) pri

23、ntf(-(%d),rej);j+; printf(nn);int main() int i,j; Matrix_Graph G; creat(&G); int n = 0; vexnode gMAX; EdgeType eMAXedg; adjmax adj; char choice = x; while(1) clrscr(); printf(nnttt *校-园-导-游*); printf(ntt-nn); printf(ttt1. 华农校园地图:nn); printf(ttt2. 华农景点信息:nn); printf(ttt3. 查找两点间最短路径:nn); printf(ttt0. 退出nn); printf(ntt-nn); printf(tt华南农业大学校训:修德 博学 求实 创新n); printf(ntt-nn); printf(tt请输入你的选择(0-3): ); choice = getchar(); switch(cho

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1