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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

校园导航系统数据结构.docx

1、校园导航系统数据结构校园导航系统-数据结构数据结构预与算法分析课程设计报告题目:校园导航系统班级:网络工程 姓名:xxx学号:xxxxxxx指导教师:xxx日期:2016/7/111.任务说明(要求、知识点、实现的功能) 1.1题目: 校园导航系统 1.2要求:用无向网表示你所在学校的校园景点品面图,图中顶点表示主要景点,存放景点的编号,名称,简绍等信息,图中的边表示景点间的道路,存放路径长度等信息。系统功能:(1)景点信息简绍(2)任意两景点间最短距离(3)任意一点到所有点最短距离1.3知识点: 图的创建,图的搜素,领接矩阵,迪杰斯特拉算法,结构体,函数的声明与调用等知识点。2概要设计(结构

2、体类型及函数声明,功能模块图,流程图)2.1结构体类型及函数声明在近一个星期的努力下,我编写的校园导航系统软件终于能够成功完成。采用工程思想,将系统共分一下几个模块:导航图建立模块、求最短路径模块、主菜单;下面是具体各功能简单的实际应用:导航图建立模块:采用上述结构体类型对导航图中每个节点进行赋值。包括:各定点的名称(地点名),各个节点到其他所有节点的真实路径长度(赋权值)。 求最短路径模块: 本模块的基本思想是采用迪杰斯特拉算法求最短路径。次模块是本校园导航系统的核心模块,求两点间的最短路径与求一点到其他所有点最短路径两个子功能均是在最短路径算法模块的基础上进行调用,进而实现导航功能。主菜单

3、:主菜单中主要是显示导航图中的所有导航节点,能够快速方便的对各个地点进行导航。以上程序的几个模块,构成了校园导航系统的基本组成部分,程序运行良好,达到了课程设计的基本要求。由于所学知识有限,功能各个方面还有欠妥之处,希望得到指出与改正。函数声明:int CreateUDN(MGraph &G) 创建导航图函数void ShortPath(MGraph &G,int v0,int pMAX_VMAX_V,int d) 最短路径导航函数void menu() 导航菜单声明2.2功能模块图总功能模块图 2.3流程图迪杰斯特拉算法流程图3详细设计(数据类型实现、编码)3.1节点数据结构类型:#defi

4、ne MAX_V 40 /最大顶点个数typedef struct char* vexsMAX_V; /顶点向量 int arcsMAX_VMAX_V;/邻接矩阵 int vexnum,arcnum;/图的当前顶点数和弧数MGraph;3.2创建导航图函数:int CreateUDN(MGraph &G) 函数描述:主要将每个节点进行命名、每个顶点到其他所有定点的路径值用邻接矩阵进行存储。例:G.vexs0 = 校门; G.vexs2 = 校办公室;作用:使0号定点命名为“校门”; G.arcs02 = G.arcs20 =900;作用:使0号节点到2号节点的路径赋值为900,因为是无向图,所

5、以2号节点到0号节点的路径长度也应赋值为900;3.3最短路径导航函数:void ShortPath(MGraph &G,int v0,int pMAX_VMAX_V,int d)函数描述:用Dijkstra算法求无向网G的V0定点到其余定点V的最短路径Pv及其带权长度Dv。若Pvw为True,则w是从V0到V当前求得最短路径上的顶点。Finalv为True当且仅当VS,即已经求得从V0到V的最短路径。3.4导航菜单函数声明void menu()函数描述:输出各个节点的编号,放便导航。4调试分析(出现哪些问题,如何解决)问题: 在程序的一开始是准备,将系统共分为:数据结构定义模块、导航图建立模

6、块、求最短路径模块、主菜单这四个模块的来构成了校园导航系统的基本组成部分,但调试的过程数据结构定义这一模块总是出现调试错误,程序的调试一度进入难题。改进方法:由于数据结构定义模块总出错,便不再把数据结构定义设为单独的模块,而是在每一个其他模块中都进行一次编写,这样就避免了数据结构定义模块的调用错误,虽然这样使得程序变得冗余,但好在能调试成功,能使校园导航系统按照预先的设想正常运行。5测试结果系统登陆界面: 导航功能1景点信息介绍导航功能2两点最短距离导航测试结果如下导航功能3某点到其他所有点的距离6总结经过一个学期对数据结构课程的学习,我能够掌握数据结构所教会我的对待问题的方法,以及遇到问题时

7、如何抽象出一个合理的数据结构类型。数据结构教会我的不但是每一个算法,更多的是如何解决问题的方法。例如,在本次课程设计中我做的是校园导航系统,对于校园导航问题的关键是最短路径的问题,在教材中有算法迪杰斯特拉求最短路径问题,在花了几天时间后,终于能够将算法的整个流程弄清楚,在对各个定点的存储上采用邻接矩阵的方法,在寻找各个点到其他所有点的关系的时候更为方便直观。在课程设计中遇到的一系列问题都能够在老师和同学的指导下及时解决。最后,感谢一年来为我们付出努力的老师们,感谢给过我指导意见的同学们,在这一年对数据结构的学习中,真的收获颇多,为我以后继续学习计算机的基础课程打下了坚实的基础。7.附录7.1源

8、代码Creat.cpp#include #define MAX_V 36 #define INFINITY 32767 typedef struct char* vexsMAX_V; int arcsMAX_VMAX_V; int vexnum,arcnum; MGraph;int CreateUDN(MGraph &G) int i = 0,j=0; G.vexnum = 36; G.arcnum = 49; G.vexs0 = 校门; G.vexs1 = 工程训练中心; G.vexs2 = 校办公楼; G.vexs3 = 17号教学楼(电控,继教); G.vexs4 = 16号教学楼(计算

9、机,通信); G.vexs5 = 2号教学楼(人外);G.vexs6 = 1号教学楼(艺术); G.vexs7 = 15号教学楼(管理,档案室); G.vexs8 = 14号教学楼(能源); G.vexs9 = 3号教学楼; G.vexs10 = 实验楼; G.vexs11 =13号教学楼(建工);G.vexs12 = 12号教学楼(化工,材料); G.vexs13 = 11号教学楼(地环,测绘); G.vexs14 = 图书馆;G.vexs15 = 10号教学楼(机械); G.vexs16 = 9号教学楼(阶梯教室); G.vexs17 = 体育馆; G.vexs18 = 第二俱乐部; G.

10、vexs19 = 综合楼,校医院; G.vexs20 = 一,二号学生公寓;G.vexs21 = 第一学生食堂; G.vexs22 = 教师公寓; G.vexs23 = 三,四,五号学生公寓 ; G.vexs24 = 水房; G.vexs25 = 超市; G.vexs26 = 田径场;G.vexs27 = 六,七号学生公寓; G.vexs28 = 体育场; G.vexs29 = 第二学生食堂; G.vexs30 = 浴室; G.vexs31 = 后勤用房; G.vexs32 = 十,十一,十二,十三号学生公寓;G.vexs33 = 游泳池; G.vexs34 = 十四,十五,十六号学生公寓;

11、G.vexs35 = 八,九号学生公寓; for(i=0;iG.vexnum;i+) /初始化路径长度 for(j=0;jG.vexnum;j+) if(i=j) G.arcsij=0; else G.arcsij=INFINITY; G.arcs02 = G.arcs20 =900; G.arcs12 = G.arcs21 =340 ; G.arcs13 = G.arcs31 =80; G.arcs25 = G.arcs52 =240; G.arcs26 = G.arcs62 =300; G.arcs34 = G.arcs43 =80; G.arcs45 = G.arcs54 =340; G

12、.arcs47 = G.arcs74 =80; G.arcs56 = G.arcs65 =180; G.arcs59 = G.arcs95 =180; G.arcs69 = G.arcs96 =250; G.arcs610 = G.arcs106 =50; G.arcs78 = G.arcs87 = 80; G.arcs811 = G.arcs118 =110; G.arcs910 = G.arcs109 =180; G.arcs914 = G.arcs149 =220; G.arcs1014= G.arcs1410 = 240; G.arcs1112= G.arcs1211 = 80; G.

13、arcs1213 = G.arcs1312= 80; G.arcs1314 = G.arcs1413 =350; G.arcs1315 = G.arcs1513 =80; G.arcs1419 = G.arcs1914 =70; G.arcs1418 = G.arcs1814 =90; G.arcs1420= G.arcs2014 = 50; G.arcs1422= G.arcs2214 = 45; G.arcs1516= G.arcs1615 = 80; G.arcs1618= G.arcs1816 = 300; G.arcs1718= G.arcs1817 = 20; G.arcs1819

14、= G.arcs1918 = 10; G.arcs1920= G.arcs2019 = 15; G.arcs2021= G.arcs2120 = 10; G.arcs2123= G.arcs2321 = 20; G.arcs2122= G.arcs2221 = 43; G.arcs2125= G.arcs2521 = 26; G.arcs2325= G.arcs2523 = 30; G.arcs2530= G.arcs3025 = 18; G.arcs3031= G.arcs3130 = 20; G.arcs2616= G.arcs1626 = 10; G.arcs2627= G.arcs27

15、26 = 50; G.arcs2729= G.arcs2927 = 30; G.arcs2728= G.arcs2827 = 40; G.arcs2930= G.arcs3029 = 15; G.arcs2932 = G.arcs3229 = 70; G.arcs2832 = G.arcs3228 = 100; G.arcs2835 = G.arcs3528 = 100; G.arcs2834 = G.arcs3428 = 160; G.arcs3334 = G.arcs3433 = 35; G.arcs3435 = G.arcs3534 = 60; G.arcs3426 = G.arcs26

16、34 = 100; return 1;Short_path.cpp #include#define MAX_V 36 #define INFINITY 32767 typedef struct char* vexsMAX_V; int arcsMAX_VMAX_V; int vexnum,arcnum; MGraph;extern have36;void ShortPath(MGraph &G,int v0,int pMAX_VMAX_V,int d) int v,w,i,j,min; int finalMAX_V; int k=1; for(v=0;vG.vexnum;+v) /初始化 fi

17、nalv=0; dv=G.arcsv0-1v; for(w=0;wG.vexnum;+w) pvw=0; if(dvINFINITY) pvv0-1=1; pvv=1; dv0-1=0; finalv0-1=1; have0=v0-1; for(i=1;iG.vexnum;+i) /其余的vexnum-1个顶点 min=INFINITY; for(w=0;wG.vexnum;+w) if(!finalw) if(dwmin) v=w; min=dw; finalv=1; havek=v; k+; for(w=0;wG.vexnum;+w) if(!finalw&(min+G.arcsvwdw)

18、 dw=min+G.arcsvw; for(j=0;jG.vexnum;j+) pwj=pvj; pww=1; Menu.cpp#include void menu() printf( 导航主菜单 n); printf( (1)校门 (2)工程训练中心 (3)校办公楼 n); printf( (4)17号教学楼(电控,继教) (5)16号教学楼(计算机,通信) (6)2号教学楼(人外) n); printf( (7)1号教学楼(艺术) (8)15号教学楼(管理,档案室) (9)14号教学楼(能源) n); printf( (10)3号教学楼 (11)实验楼 (12)13号教学楼(建工) n);

19、 printf( (13)12号教学楼(化工,材料) (14)11号教学楼(地环,测绘) (15)图书馆 n); printf( (16)10号教学楼(机械) (17)9号教学楼(阶梯教室) (18)体育馆 n); printf( (19)第二俱乐部 (20)综合楼,校医院 (21)1,2号学生公寓 n); printf( (22)第一学生食堂 (23)教师公寓 (24)3,4,5号学生公寓 n); printf( (25)水房 (26)超市 (27)田径场 n); printf( (28)6,7号学生公寓 (29)体育场 (30)第二学生食堂 n); printf( (31)浴室 (32)后

20、勤用房 (33)10,11,12,13号学生公寓 n); printf( (34)游泳池 (35)14,15,16学生公寓 (36)8,9号学生公寓 n); printf( nn); printf(请选择导航功能:n); printf(n); printf( (1) 景点信息简绍 n); printf( (2) 两点最短距离导航 n); printf( (3) 某点到其他所有点的最短距离 n); printf(n);Main.cpp#include #include #include #define MAX_V 36 #define INFINITY 32767 typedef struct

21、char* vexsMAX_V; int arcsMAX_VMAX_V; int vexnum,arcnum; MGraph;int have36;int CreateUDN(MGraph &G); void ShortPath(MGraph &G,int v0,int pMAX_VMAX_V,int d);void menu(); void main() system(mode con: cols=140 lines=130); MGraph G; int v0,i,end,j; int PMAX_VMAX_V; int DMAX_V; int choice,choice1; printf(

22、n); printf(n 欢迎光临西安科技大学,祝旅程愉快! n); printf(n 西安科技大学校园导游系统为你服务! n); printf(nnn); CreateUDN(G); while(1) menu(); scanf(%d,&choice); switch(choice) case 1: printf(校门 : 学校大门 n); printf(工程训练中心 : 工程实验训练中心n); printf(校办公楼 : 行政办公楼n); printf(17号教学楼(电控,继教) : 电气控制与自动化学院和继续教育学院合楼n); printf(16号教学楼(计算机,通信) : 计算机科学与

23、技术学院和通信学院合楼n); printf(2号教学楼(人外) : 人文外国语n); printf(1号教学楼(艺术) : 艺术学院n); printf(15号教学楼(管理,档案室) : 管理学院和档案管理室n); printf(14号教学楼(能源) : 能源学院n); printf(3号教学楼 : 教学楼不解释n); printf(实验楼 : 做实验的教学楼n); printf(13号教学楼(建工) : 建工学院n); printf(12号教学楼(化工,材料) : 化工学院与材料学院的合楼n); printf(11号教学楼(地环,测绘) : 地环学院与测绘学院的合楼n); printf(图书

24、馆 : 知识的海洋n); printf(10号教学楼(机械) : 机械学院n); printf(9号教学楼 : 阶梯教室n); printf(体育馆 : 体育锻炼的场所n); printf(第二俱乐部 : 简称二俱n); printf(综合楼,校医院 : 生病就医的场所n); printf(1,2号学生公寓 : 学生宿舍 没有空调 夏天有火炉之称n); printf(第一学生食堂 : 小食堂 饭不好吃n); printf(教师公寓 : 老师宿舍 有空调 慢慢的羡慕n); printf(3,4,5号学生公寓 : 女生宿舍楼 不解释 n); printf(水房 : 打水的地方n); printf(

25、 超市 : 买生活用品以及零食的场所n); printf(田径场 : 体育锻炼n); printf(6,7号学生公寓 : 男生宿舍楼 不解释 n); printf(体育场 : 篮球场网球场集中地n); printf(第二学生食堂 : 食堂 饭不好吃啊n); printf(浴室 : 洗地方澡的n); printf(后勤用房 : 食堂工作人员的住处n); printf(10,11,12,13号学生公寓 : 学生公寓 在西科之巅n); printf(游泳池 : 游泳池的水并不干净啊 水面上头发啊树叶啊什么都有n); printf(14,15,16学生公寓 : 学生宿舍 同在西科之巅n); printf(8,9号学生公寓 : 学生宿舍n); break; case 2: while(1) printf(分别输入起点和终点代号以空格分开n); scanf(%d%d,&v0,&end); ShortPath(G,v0,P,D); printf(最短路径:n ); for(i=0;i%s,G.vexshavei); pr

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

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