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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构课程设计校园导航报告.docx

1、数据结构课程设计校园导航报告数据结构课程设计校园导航报告学院、系: 吉林大学珠海学院计算机科学与技术系 专 业: 软件工程 班 级: 课程设计科目 数据结构 学生姓名: 指导教师: 完成时间: 2010年10月-12月 校园导航系统设计报告 一、设计任务与目标 设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。 本系统是一个涉及吉林大学珠海学院相关景点和场所查询系统,是为了方便人们能够更快更准地获得学校各个景点和场所的详细信息。 本系统为用户提供以下功能: (一)、查询了解学校概况,为导游参

2、观者提供关于学校的相关信息。 (二)、查询校园各个场所和景点信息; (三)、为导游者或外来人员参观人员提供校园交通信息,方便用户走访学校。 校园导航查询系统的开发方法总结如下: (1) 调查,了解学校各个场所与 场所或者是各个景点与景点之间的信息,路径和距离,从外来人员或者参观者和走访者的角度出发,该如何设计才能满足用户需求。 (2) 分析,对调查得到的数据进行分析,根据其要求实现的功能分析系统结构和界面将实现的基本功能。 (3) 设计与开发,设计系统界面并编辑实现其各个功能的代码。 (4) 调试,在设计完成后,调试系统运行的状况,修改完善系统,然后进行测试。 二、方案设计与论证 校园旅游模型

3、是由各个景点和景点以及场所和场所之间的路径组成的,所以这完全可以用数据结构中的图来模拟。用图的结点代表景点或场所,用图的边代表景点或场所之间的路径。所以首先应创建图的存储结构。结点值代表景点信息,边的权值代表景点间的距离。结点值及边的权值采用图存储。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度,最短路线和最佳路径时可分别用迪杰斯特拉(Dijkastra)算法和哈密而顿回路算法实现。最后用switch选择语句选择执行浏览景点信息或查询最短路径和距离。 搭建程序框架图,其图如下所示: 1、打开导航 在屏幕显示

4、输出学校各个景点场所 选择相应数字 查询学校简介,导航参观路线和各2、主菜单 个景点与场所之间的距离 回车返 回主菜 选择屏幕所设菜单 单 进入子菜单 选择景点与场所,查询了解景点与 选择相应数字 3、子菜单 场所信息,及景点与场所之间的最短路径 退出系统 4、退出导航 三、算法说明 (一)设计功能的实现 接下来根据以上搭建的程序框架完成各个模块的算法 1、 首先是抽象数据类型的定义: 图的抽象数据类型的 定义: ADT Mgragh 数据对象V: V是具有相同特征的数据元素的 集合,称为定点集 数据关系R=VR VR= | V, W?V, 表示从V到W的边 2、 基本操作: CreateUD

5、N(&G,V,VR); / 创建图 初始条件:V是图的顶点集,VR是图中边的 集合。 操作结果:按V和VR的定义构造图 G。 (二)主要算法设计及相关算法补充 先创建图存储学校各个景点或场所,以图的顶点表示景点或场所,以边表示路径,再利用迪杰斯特拉(DijkStra)算法求出校园各个地方的最短路径,然后根据需要进行补充相关算法。 四、全部源程序清单 #include stdio.h #include iostream.h #include malloc.h #include conio.h #include stdlib.h #define Num 11 /最多顶点个数 #define upl

6、imit 100000 /定义一个无穷大的值 struct intt int value; ; intt EdgeNumNum; /Edge为带权邻接矩阵 intt distNum; /dist为最短路程 intt pathNum; /path为最短路径上该顶点的前一顶点的顶点号 intt SNum; /S为已求得的在最短路径上的顶点号 intt DNum; /* * 生成地图,输入地图的基本信息 * */ void BuildMap() int i,j; /* 初始化平面图矩阵 */ for ( i=0;i11;i+) for ( j=0;j11;j+) Edge00.value=0 , E

7、dge01.value=25 , Edge02.value=25 ; Edge03.value=90, Edge04.value=uplimit, Edge05.value=uplimit ; Edge06.value=10 , Edge07.value=uplimit , Edge08.value=uplimit; Edge09.value=uplimit, Edge010.value=uplimit; Edge10.value=25 , Edge11.value=0 , Edge12.value=10 ; Edge13.value=32, Edge14.value=uplimit, Edg

8、e15.value=uplimit ; Edge16.value=10 , Edge17.value=uplimit , Edge18.value=21; Edge19.value=16, Edge110.value=uplimit; Edge20.value=25 , Edge21.value=10 , Edge22.value=0 ; Edge23.value=uplimit, Edge24.value=uplimit, Edge25.value=uplimit ; Edge26.value=uplimit, Edge27.value=uplimit , Edge28.value=upli

9、mit; Edge29.value=uplimit, Edge210.value=uplimit; Edge30.value=90 , Edge31.value=32 , Edge32.value=uplimit ; Edge33.value=0 , Edge34.value=uplimit, Edge35.value=uplimit ; Edge36.value=uplimit, Edge37.value=uplimit , Edge38.value=26; Edge39.value=uplimit, Edge310.value=uplimit; Edge40.value=uplimit,

10、Edge41.value=uplimit , Edge42.value=uplimit ; Edge43.value=uplimit, Edge44.value=0, Edge45.value=9 ; Edge46.value=uplimit, Edge47.value=uplimit , Edge48.value=uplimit; Edge49.value=uplimit, Edge410.value=60; Edge50.value=uplimit , Edge51.value=uplimit , Edge52.value=uplimit ; Edge53.value=uplimit, E

11、dge54.value=9, Edge55.value=0 ; Edge56.value=uplimit , Edge57.value=15 , Edge58.value=50; Edge59.value=14, Edge510.value=uplimit; Edge60.value=10 , Edge61.value=10 , Edge62.value=uplimit; Edge63.value=uplimit, Edge64.value=uplimit, Edge65.value=uplimit ; Edge66.value=0 , Edge67.value=35 , Edge68.val

12、ue=uplimit; Edge69.value=30, Edge610.value=uplimit; Edge70.value=uplimit , Edge71.value=uplimit , Edge72.value=uplimit ; Edge73.value=uplimit, Edge74.value=uplimit, Edge75.value=15 ; Edge76.value=35 , Edge77.value=0 , Edge78.value=uplimit; Edge79.value=13, Edge710.value=uplimit; Edge80.value=uplimit

13、 , Edge81.value=21 , Edge82.value=uplimit ; Edge83.value=26, Edge84.value=uplimit; Edge85.value=50 ; Edge86.value=uplimit , Edge87.value=uplimit , Edge88.value=0; Edge89.value=22, Edge810.value=10; Edge90.value=uplimit , Edge91.value=16 , Edge92.value=uplimit ; Edge93.value=uplimit, Edge94.value=upl

14、imit, Edge95.value=14 ; Edge96.value=30 , Edge97.value=13 , Edge98.value=22; Edge99.value=0, Edge910.value=uplimit; Edge100.value=uplimit , Edge101.value=uplimit , Edge102.value=uplimit; Edge103.value=uplimit, Edge104.value=60; Edge105.value=uplimit ; Edge106.value=uplimit , Edge107.value=uplimit ,

15、Edge108.value=10; Edge109.value=uplimit, Edge1010.value=0; /* 找出场所间的最短距离-迪杰斯特拉算法 */ void ShortestDist(int s) for ( int i=0;i11;i+) /dist和path数组初始化 disti.value=Edgesi.value; /邻接矩阵第s行元素赋值到dist中 Si.value=0; /已求出最短路径的顶点集合初始化 if(i!=s & disti.valueuplimit) pathi.value=s; else pathi.value=-1; /路径存放数组初始化 Ss

16、.value=1; /顶点s加入顶点集合 dists.value=0; /* 循环计算该场所与邻接场所之间的最短距离 */ for (i=0;i11-1;i+) /从顶点s确定n-1条路径 float min=uplimit; int u=s; for (int j=0;j11;j+) /选择当前不在集合S中具有最短路径的顶点u /* 如果有路径比目前的最小值还小,则替换这个最小值 */ if (!Sj.value & distj.valuemin) u=j; min=distj.value; Su.value=1; /将顶点u加入集合S,表示它已在最短路径上 for (int w=0;w11

17、;w+) /修改 if (!Sw.value & Edgeuw.valueuplimit & distu.value+Edgeuw.valuedistw.value) distw.value=distu.value+Edgeuw.value; pathw.value=u; void bh() /显示场所名称 coutt0.女生公寓 1.图书馆 2.体育馆endl; coutt3.校东门 4.一教学楼 5.教师公寓endl; coutt6.食堂 7.体育场 8.校南门endl; coutt9.大学生活动中心 10.实验楼endl; /*将顶点序列号转换成场所名称*/ void Outpath(i

18、nt c) switch(c) case 0: cout女生公寓;break; case 1: cout 图书馆;break; case 2: cout 体育馆;break; case 3: cout 校东门;break; case 4: cout 一教学楼;break; case 5: cout 教师公寓;break; case 6: cout 食堂;break; case 7: cout 体育场;break; case 8: cout 校南门;break; case 9: cout 大学生活动中心;break; case 10:cout实验楼;break; /* 输出两个场所之间的最短距离

19、,和最短路径 */ void getdata(int s,int e) D0.value=e; int k; for (k=0;Dk.value!=s;k+) Dk+1.value=pathDk.value.value; if(Se.value) coutnt场所s,e之间的最短距离是:diste.valueendl; coutnt场所s,e之间的最短路径是:; for(; k!=-1;k-) Outpath(Dk.value); if (k!=0) cout ; else coutnt场所s到场所e之间没有路径!endl; void Begin() int flag=1; int s,e;

20、while ( flag ) bh(); coutse; coutendl; if(s=0 & e=0) flag=0; else coutn场所号非法,请重新输入; ShortestDist(s); getdata(s,e); /*显示场所的具体信息*/ void info(int c) /c为场所对应的数字号 switch(c) case 0: coutt? 女生公寓,具体指桂园七栋,住宿条件较好。endl; break; case 1: coutt? 图书馆,内部藏有丰富的书籍,供同学们学习参考,也可以自习。endl; break; case 2: coutt? 体育馆,供同学们进行体育

21、活动以及上体育课。endl; break; case 3: coutt? 校东门,吉林大学珠海学院的正门。endl; break; case 4: coutt? 一教学楼,供同学们上课和自习使用。endl; break; case 5: coutt? 教师公寓,提供给单身的老师们居住。endl; break; case 6: coutt? 食堂,有两层楼,是同学们用餐的地方。endl; break; case 7: coutt? 体育场,是同学们开运动会和进行体育赛事的地方。endl; break; case 8: coutt? 校南门,这是同学,老师比较集中的地方。晚上的时候这里最热闹。;e

22、ndl; coutt 另一边是小店的集中地,相当于一个小型商业街。endl; break; case 9: coutt? 大学生活动中心,这栋楼是办公楼也是活动中心,主要供各系的同学办活动使用 ;endl; coutt 这栋楼的后面就是高尔夫球场,主要供旅游系的同学上课使用。endl; break; case 10: coutt? 实验楼,是同学们计算机上机,各系做实验的地方。endl; break; case 11: system(cls); break; default: coutt输入不合法,请重新输入!endl; break; void num() couttt*endl; coutt

23、t* 校园导航系统 *endl; couttt*endl; couttt 0.女生公寓endl; couttt 1.图书馆endl; couttt 2.体育馆endl; couttt 3.校东门endl; couttt 4.一教学楼endl; couttt 5.教师公寓endl; couttt 6.食堂endl; couttt 7.体育场endl; couttt 8.校南门endl; couttt 9.大学生活动中心endl; couttt 10.实验楼endl; void main() int c; char option=0; coutt-endl; coutt* * * * * * *

24、* * endl; coutt* * * * * * * * * * * * endl; coutt * * * * * * * * * * * * * * endl; coutt * * * * * * * * * * * * endl; coutt * * * * * * * * * endl; coutt-endl; coutendl; coutendl; coutt*endl; coutttt欢迎光临吉林大学珠海学院endl; coutt*endl; coutendl tendl; coutttt1.显示场所的编号endl; coutttt2.查看场所的具体信息endl; coutttt3.找出最短路径及计算路径长度endl; coutttt4.退出endl; couttendl; coutendloption; while (option!=0) switch(option) case 1: num(); coutendl tt*endl; coutttt1.显示场所的编号endl; coutttt2.查看场所的具体信息endl; coutttt3.找出最短路径及计算路径长度endl; coutttt4.退出endl; couttt*endl; coutoption; system(cls); /清屏 break;

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

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