欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    校园导航系统算法及分析课程设计Word文件下载.docx

    • 资源ID:4829257       资源大小:218.59KB        全文页数:19页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    校园导航系统算法及分析课程设计Word文件下载.docx

    1、用图的结点代表景点或场所,用图的边代表景点或场所之间的路径。所以首先应创建图的存储结构。结点值代表景点信息,边的权值代表景点间的距离。结点值及边的权值采用图存储。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度,最短路线和最佳路径时可分别用迪杰斯特拉(Dijkastra)算法和哈密而顿回路算法实现。最后switch选择语句选择执行浏览景点信息或查询最短路径和距离。 2.1.1学校以及各景点介绍模块 采用了图的邻接矩阵存储结构,首先初始化每一个景点名称(一维数组)for(i=1;iG.vexnum;+i) G.

    2、vexi.number=i 景点介绍功能流程图2.1.2查询最短路径(主要) 算法的主要思想是按路径长度递增的次序产生最短路径的算法。中心思想是假设s为已求得最短路径的终点的集合,则下一条最短路径或者是弧(v,x)或者是中间经过s中是顶点而最后到达顶点x的路径。(1)arcs表示弧上的权值。若不存在,则置arcs为。S为已找到从v出发的最短路径的终点的集合,初始状态为空集。那么,从v出发到图上其余各顶点vi可能达到的最短路径长度的初值为D=arcsLocate Vex(G,v),i viV(2)选择vj,使得Dj=MinD | viV-S (3修改从v出发到集合V-S上任一顶点vk可达的最短路

    3、径长度路径查询流程图2.1.3查询各点距离由于图的结构比较复杂,任意两个点之间都可能存在联系。因此无法以数据元素在存储区中的物理位置来表示元素之间的关系,但是却可以借助数组的数据类型表示元素之间的关系。2.1.4主函数循环体用开关语句,该语句的条件值ck是当用户选择菜单通过调用主菜单函数得到,返回值整数作开关语句的条件。根据该值调用相应的各功能函数,同时设置一个退出程序点,执行完用户的某项功能后继续显示菜单,当返回值为e时函数结束程序,以免造成死循环。2.2数据结构与函数考虑2.2.1数据结构定义结构体类型,将多个相关的变量包装成为一个整体使用。#define Max 32767 #defin

    4、e NUM 20 自定义顶点的类型typedef struct VertexType int number; / 景点编号char *sight;/ 景点名称VertexType;自定义图的类型typedef structVertexType vexNUM; / 图中的顶点,即为景点int arcsNUMNUM; / 图中的边,即为景点间的距离int vexnum; / 顶点数MGraph;把图定义为全局变量MGraph G;int PNUMNUM; 辅助变量存储最短路径长度long int DNUM;2.2.2 使用的系统头文件#include stdio.h /*I/O 函数*/ stdl

    5、ib.h /*使用system()exit()atoi()malloc()free()函*/ string.h /*字符串函数,strcpy()strlen()strcmp()*/ 三、主程序 #include string.hstdlib.h #define Max 32767 #define NUM 20 typedef struct VertexType int number; char *sight; typedef struct VertexType vexNUM; int arcsNUMNUM; int vexnum; MGraph; MGraph G; void CreateMG

    6、raph(int v)/创建图的函数,v是函数入口 int i,j; G.vexnum=v; for(i=1;+i) G.vexi.number=i; G.vex0.sight=各个地点名字; G.vex1.sight=江南大学校北门 G.vex2.sight=第一食堂 G.vex3.sight=江南大学东偏门 G.vex4.sight=设计学院 G.vex5.sight=体育中心 G.vex6.sight=物联网工程学院 G.vex7.sight=图书馆 G.vex8.sight=江南大学东门 G.vex9.sight=国家重点实验室 G.vex10.sight=第二教学楼 G.vex11.

    7、sight=第四食堂 G.vex13.sight=臻善楼 G.vex12.sight=江南大学南门for(j=1;j+j) G.arcsij=Max; G.arcs12=G.arcs21=200; G.arcs13=G.arcs31=210; G.arcs15=G.arcs51=521; G.arcs24=G.arcs42=299; G.arcs25=G.arcs52=450; G.arcs23=G.arcs32=869; G.arcs35=G.arcs53=620; G.arcs38=G.arcs83=756; G.arcs45=G.arcs54=355; G.arcs46=G.arcs64

    8、=221; G.arcs57=G.arcs75=225;G.arcs58=G.arcs85=900; G.arcs67=G.arcs76=280; G.arcs69=G.arcs96=241; G.arcs78=G.arcs87=440; G.arcs710=G.arcs107=350;G.arcs810=G.arcs108=570; G.arcs910=G.arcs109=1300; G.arcs911=G.arcs119=998; G.arcs912=G.arcs129=1200; G.arcs1011=G.arcs1110=639; G.arcs1012=G.arcs1210=805;

    9、G.arcs1112=G.arcs1211=283;G.arcs1213=G.arcs1312=296; void Map()/地图展示函数 printf(t *江南大学大学地图导航系统* n); 1 江南大学北大门 n n 2第一食堂 3江南大学东偏门 n 4设计学院5体育中心 n 6物联网工程学院7图书馆 8江南大学东门 n 9国家重点实验室 10第二教学楼 n n n 11第四食堂 n n 13臻善楼12江南大学南门 n void Info()/资料介绍函数1 江南大学校北大门 :这是江南大学最有名的大门,是一座充满历史感的高大的牌坊,正上面写着“江南大学”四个大字,背面写着“江南第一学

    10、府”六个字n2 江南大学第一食堂n3 江南大学东偏门: n4 设计学院:n5 体育中心:6 物联网工程学院:7 图书馆:高达15层的雄伟的图书馆 n8 江南大学东门:9 国家重点实验室:10 第二教学楼:printf(11 第四食堂:13 臻善楼:12 江南大学南门:void ShortestPath(int num) / 迪杰斯特拉算法最短路径函数num为入口点的编号 int v,w,i,t; / i、w和v为计数变量 int finalNUM; int min;for(v=1;vNUM;v+) finalv=0; / 假设从顶点num到顶点v没有最短路径 Dv=G.arcsnumv;/ 将

    11、与之相关的权值放入D中存放 for(w=1;ww+) / 设置为空路径 Pvw=0; if(Dv32767) /存在路径 Pvnum=1; /存在标志置为一 Pvv=1; /自身到自身 Dnum=0;finalnum=1; /初始化num顶点属于S集合/ 开始主循环,每一次求得num到某个顶点的最短路径,并将其加入到S集合for(i=1;+i) /其余G.vexnum-1个顶点min=Max; / 当前所知离顶点num的最近距离for(w=1;+w) if(!finalw) / w顶点在v-s中if(Dwmin) / w顶点离num顶点更近 v=w;min=Dw; / 更新当前最短路径极其距离

    12、finalv=1; / 离num顶点更近的v加入到s集合 if(!finalw&(min+G.arcsvw)Dw) / 不在s集合,并且比以前所找到的路径都短就更新当前路径Dw=min+G.arcsvw;for(t=0;tt+)Pwt=Pvt;Pww=1;char Menu()/应用主界面显示函数 char c; int flag; do system(cls flag=1; Map(); printf(tt欢迎使用江南大学导航图系统ntt 1.查询地点之间最短路径 ntt 2.江南大学景点介绍ntt e.退出 nttt请输入您的选择: scanf(%c,&c); if(c=1|c=2e)/如

    13、果输入为1,2,E中的一个,则返回C flag=0; while(flag); return c;void Display(int sight1,int sight2)/最短距离显示函数 int a,b,c,d,q=0; a=sight2; if(a!=sight1) nt从%s到%s的最短路径是,G.vexsight1.sight,G.vexsight2.sight);t(最短距离为 %d.m)nnt,Da);t%s,G.vexsight1.sight); d=sight1; for(c=0;c+c) Pasight1=0; for(b=0;bb+) if(G.arcsdb%s,G.vexb

    14、.sight); q=q+1; Pab=0; d=b; if(q%8=0) printf( void main()/主界面最短路线查询显示函数 int v0,v1; char e; char ck; CreateMGraph(NUM); do ck=Menu(); switch(ck) case : gate: system( Map(); do printf(nnttt请选择出发地序号(113): scanf(%dv0); if(v013)nntttt输入错误! while(v013);ttt请选择目的地序号(113):v1); if(v113|v1=v0) while(v113|v1=v0

    15、); ShortestPath(v0); Display(v0,v1); printf(nntttt按回车键继续,按e退回首页n getchar(); scanf(e); if(e=) break; goto gate; case Info();nntttt按回车键返回首页.n break; ; while(ck!=四、程序调试及运行结果贴图五、总结通过这次设计,是我得以更好的掌握C语言的编程,对一些算法思想和实现方法有了更深的了解。在设计中,出现了一系列的问题,好多次都差点坚持不下去,但最终还是完成了!当程序编译并且运行成功的那一刻,真的是非常的激动。感谢老师平时上课时的教导,可以使我更好的完成这次作业


    注意事项

    本文(校园导航系统算法及分析课程设计Word文件下载.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开