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

    河南科技大学校园模拟导游程序设计报告.docx

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

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

    河南科技大学校园模拟导游程序设计报告.docx

    1、河南科技大学校园模拟导游程序设计报告校园模拟导游程序 一、简介1设计目的:为新生或来访的客人通过与机器的“对话“提供最短路径的信息查询服务。2问题的描述: 1任意选取n个场所,构成一个无向带权图,图中顶点表示场所,边上的权值表示两点间的距离,图的存储结构可采用带权的邻接矩阵。2咨询以用户和计算机的对话方式进行,由用户输入起始点和终点,输出信息:最短路径是多少?并指出所经过的场所。3、计算并记录从校门口到各个场所的最短路径,即求单源点到其它各个场所的最短路径。4、提供校园中任意场所的问路查询,即求任意两点之间的最短路径。二、数据结构的设计:由于各个场所通过校园中的道路相连,各个场所和连接它们的道

    2、路构成了整个校园的地理环境,所以使用图这种数据结构对他们去进行描述。以图中的顶点表示校园内各个场所,应包含场所名称、代号、简介等信息;以边表示连接各个场所的道路,应包含路径的长度等信息;顶点和边均使用结构体定义,整个图的数据结构采用教材中介绍的带权的邻接矩阵方法。 三、功能(函数)设计: 1、创建图模块:函数MGraph InitGraph()通过两个for循环创建图,并通过邻接矩阵存储各路径权值,因为是无向图,仅需对上三角各权值进行赋值,再通过两个for循环进行对称复制。 2、菜单模块:函数void Menu()通过多个printf语句构建一个简单整洁的用户交互界面。 3、浏览模块:函数vo

    3、id Browser(MGraph *G)通过一个for循环得出所有地点的列表,实现浏览功能。 4、查询信息模块:函数void Search(MGraph *G)查询某一个地点的简介信息。 5、查询某两点最短路径模块: 函数void Floyd(MGraph *G) 通过弗洛伊德算法查询任意两点之间的最短路径以及经过的场所。6、查询某一点到其他各点的最短路径模块:函数void ShortestPath_DIJ(MGraph * G) 通过迪杰斯特拉算法来计算出起点到各个顶点之间的最短路 径,即求单源点到其它各个场所的最短路径。4、界面设计: 本程序界面本着易于操作简单整洁而不失美观的理念,采用

    4、数字对应功能选项,结合详细的操作提示,使得操作方便快捷,界面清晰明朗。欢迎界面(附带校园简介):菜单界面:5、程序设计:函数MGraph InitGraph():初始化图。函数void Menu():创建菜单。函数void Browser(MGraph *G):浏览全景。函数void Search(MGraph *G):查询某点信息。函数void Floyd(MGraph *G):查询任意两点之间的最短路径。函数void ShortestPath_DIJ(MGraph * G):查询校门口到其他各点之间的最短路径。 函数void main():通过一个switch语句,实现不同函数的调用来实现

    5、不同的功能。流程图如下:利用迪杰特斯拉算法,求v0到其余顶点的最短路径: 六、运行与测试:1、测试的数据及其结果:(1)选择浏览功能:(2)选择查看某两点之间的最短路径: (3)选择查看校门口到各地点之间的最短路径:(4)选择查看某点信息: (5)如果输入代码有误: (6)选择退出系统:2、运行与测试期间遇到的问题及其解决办法。(1)问题1:一个很低级的错误就是在字符串的赋值上居然还会出错,本来是不可以像int型数据那样直接用等于号赋值的,可是刚开始由于失误却犯了这样低级的错误结果导致出现100多个错误,当时确实有点慌了,等冷静下来一想才把问题想明白,字符串的赋值必须用strcpy函数。 (2

    6、)问题2: 关于最短路径的输出问题。在进行最短路径输出时,我刚开始时只能正序输出,当我逆向输出时,得到的结果却有点问题,经过分析调试后,找到了错误的所在。在找最短路径的时候我用的是Floyd算法,在这个算法中有三重循环,形式均为:for(k=0;kn;k+),它们都是从零开始的,所以在顺序输出时没问题,但是逆序的时候就需要进行一个判断,正序与逆序循环输出是相反的。 (3)问题3:运行显示程序简介后,继续输入时没有清屏操作,导致运行结果不方便观察,后来查资料知道增加getch(); system(cls);语句,可以实现按任意键继续,并清屏。 七、设计后的思考: 此次课程设计,付出了很多的时间和

    7、经历,编程过程中,我看到了自己许多不足,例如程序编写的有点杂乱,造成编译时错误不好找到,没有足够的耐心,有点急功近利,修改编译错误时不能做到系统的分析,造成程序越改越乱,影响了情绪,丢掉了信心。同时,我也深切感受到了程序员的艰辛,明白了作为一个程序员应该尽可能的为用户考虑,缜密的思维,让程序不断地人性化,可操作性强,界面尽可能的友好,把完美作为自己的目标。对于程序本身,我看到了良好的程序编写风格对于程序员的重要性,函数之间调用的便利与简洁,以及循环套用的魅力之所在。总之,不管简单还是复杂的程序设计,都要求扎实的基础知识,因为各种程序都是由简单的一块块的函数结构组成的,并加强实践,从程序的编写中

    8、进一步加强对书本知识的掌握。而且,需要耐心,做程序的编写时比较枯燥的,会出现许多错误,需要我们细心并耐心的进行修改。回顾编程的过程,我也学到了许多程序之外的东西,编程的过程对一个人的耐心和毅力是一种极大地考验,不停地编译,不停地改错,不停地被打击,信心被一点点的消磨,如果放弃,将前功尽弃。所以我选择了停一停稍作休息然后坚持下去,终于在完成的那一瞬间,内心充满了自豪和成就感。这次任务完成的过程给我上了生动而难忘的一课,面对一次次的挫折与打击,我会选择咬牙坚持;为了远方的目标,我会不懈的努力,一点点的去接近。附:源代码:#define M 10000 #define MAX_VERTEX_NUM

    9、40#define MAX 40#include#include#include#includetypedef struct ArCellint adj; /路径长度ArCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedef struct /图中顶点表示主要地点,存放地点的编号、名称、简介等信息,char name30;int num;char introduction100;/简介infotype;typedef structinfotype vexsMAX_VERTEX_NUM;AdjMatrix arcs;int vexnum,arcnum;

    10、MGraph;MGraph b;MGraph InitGraph();void Menu();void Browser(MGraph *G);void ShortestPath_DIJ(MGraph * G);void Floyd(MGraph *G);void Search(MGraph *G);int LocateVex(MGraph *G,char* v);MGraph * CreatUDN(MGraph *G);void print(MGraph *G);void main()system(color 2f); system(mode con: cols=140 lines=130);

    11、 int i; b=InitGraph(); printf( |*|n); printf( |*|n); printf( |* *|n); printf( |*欢迎进入河南科技大学模拟导游系统*|n); printf( |* (西苑校区南院) *|n); printf( |*|n); printf( |*|n); printf( | 注:本程序操作容易,请注意跟随操作提示 |n); printf( n); printf(河南科技大学西苑校区位于洛阳市涧西区,西苑校区占地面积37公顷,建筑面积28万平方米,分为南、n); printf(北两院,西苑路横贯其中,将南、北两院分割开来,因而得名。河南

    12、科技大学西苑校区是原洛阳工学院n); printf(所在地,始建于1952年,至今已有57年历史。这里风景优美,环境幽雅,古树参天。nn); printf(请按任意键继续.); getch(); system(cls); Menu(); scanf(%d,&i); while(1) switch(i) case 1:Browser(&b);Menu();break; case 2:Floyd(&b);Menu();break; case 3:ShortestPath_DIJ(&b);Menu();break; case 4:Search(&b);Menu();break; case 5:pri

    13、ntf(谢谢您的使用,再见!n);exit(1);break; default:printf(对不起,您输入的选项有误.n);printf(请重新输入:);break; scanf(%d,&i); MGraph InitGraph() MGraph G; int i,j; G.vexnum=10; G.arcnum=14; for(i=0;iG.vexnum;i+) G.vexsi.num=i; strcpy(G.vexs0.name,河南科技大学大门); strcpy(G.vexs0.introduction,古朴典雅的学校大门); strcpy(G.vexs1.name,足球场); str

    14、cpy(G.vexs1.introduction,砖渣跑道,跑步健身的好去处); strcpy(G.vexs2.name,3号办公楼); strcpy(G.vexs2.introduction,内有教师办公室,财会办公室等); strcpy(G.vexs3.name,图书馆); strcpy(G.vexs3.introduction,设施良好,2楼为电子阅览室,环境幽雅); strcpy(G.vexs4.name,大学生之家); strcpy(G.vexs4.introduction,两栋男生公寓的集合); strcpy(G.vexs5.name,餐厅); strcpy(G.vexs5.int

    15、roduction,学校最大的餐厅,共两层); strcpy(G.vexs6.name,科技楼); strcpy(G.vexs6.introduction,校园卡充值中心所在地); strcpy(G.vexs7.name,女生公寓); strcpy(G.vexs7.introduction,几栋女生公寓的集合,与大学生之家遥相呼应); strcpy(G.vexs8.name,体育馆); strcpy(G.vexs8.introduction,内有篮球,羽毛球,乒乓球,台球场馆及形体教室); strcpy(G.vexs9.name,河南科技大学南门); strcpy(G.vexs9.introd

    16、uction,与主门对应,对面有大张生活超市); for(i=0;iG.vexnum;i+) for(j=0;jG.vexnum;j+) G.arcsij.adj=M; G.arcs01.adj=100; G.arcs02.adj=80; G.arcs03.adj=100; G.arcs14.adj=50; G.arcs12.adj=60; G.arcs23.adj=60; G.arcs36.adj=50; G.arcs45.adj=60; G.arcs47.adj=20; G.arcs56.adj=60; G.arcs68.adj=20; G.arcs78.adj=120; G.arcs79

    17、.adj=130; G.arcs89.adj=50; for(i=0;iG.vexnum;i+) for(j=0;jG.vexnum;j+) G.arcsji.adj=G.arcsij.adj; return G;/InitGraph endvoid Menu()printf(n * n); printf( * 请选择您需要的服务: * n); printf( * - * n); printf( * 1.浏览校园各地点列表 * n); printf( * 2.查看某两点之间的最短路径 * n); printf( * 3.查看校门口到其他各点的最短路径 * n); printf( * 4.查看某

    18、点信息 * n); printf( * 5.退出系统 * n); printf( * nn); printf(请输入您需要的服务代码:);void Browser(MGraph *G) int v; printf( n); printf( 编号地点名称 n); for(v=0;vvexnum;v+) printf( %-4d%-16sn,G-vexsv.num,G-vexsv.name); printf( );/ 迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,0为起点void ShortestPath_DIJ(MGraph * G) int v,w,i,min,t=0,x; int fi

    19、nal20, D20, p2020; for(v=0;vvexnum;v+) finalv=0; Dv=G-arcs0v.adj; for(w=0;wvexnum;w+) pvw=0; if(DvM) pv0=1;pvv=1; D0=0;final0=1; for(i=1;ivexnum;i+) min=M; for(w=0;wvexnum;w+) if(!finalw) if(Dwmin)v=w;min=Dw; finalv=1; for(w=0;wvexnum;w+) if(!finalw&(min+G-arcsvw.adjarcsvw.adj; for(x=0;xvexnum;x+) p

    20、wx=pvx; pww=1; for(v=0;vvexnum;v+) if(0!=v) printf(%s,G-vexs0.name); for(w=0;wvexnum;w+) if(pvw&w!=0) printf(-%s,G-vexsw.name); t+; if(tG-vexnum-1&0!=v)printf( 总路线长%dmnn,Dv); void Floyd(MGraph *G) int v,u,i,w,k,j,flag=1,p101010,D1010; for(v=0;vvexnum;v+) for(w=0;wvexnum;w+) Dvw=G-arcsvw.adj; for(u=0

    21、;uvexnum;u+) pvwu=0; if(DvwM) pvwv=1;pvww=1; for(u=0;uvexnum;u+) for(v=0;vvexnum;v+) for(w=0;wvexnum;w+) if(Dvu+DuwDvw) Dvw=Dvu+Duw; for(i=0;ivexnum;i+) pvwi=pvui|puwi; while(flag) printf(请输入出发点和目的地的编号:); scanf(%d%d,&k,&j); if(kG-vexnum|jG-vexnum) printf(地点编号不存在!请重新输入出发点和目的地的编号:); scanf(%d%d,&k,&j);

    22、 if(k=0&kvexnum&j=0&jvexnum) flag=0; printf(%s,G-vexsk.name); for(u=0;uvexnum;u+) if(pkju&k!=u&j!=u) printf(-%s,G-vexsu.name); printf(-%s,G-vexsj.name); printf( 总路线长%dmn,Dkj);void Search(MGraph *G) int k,flag=1; while(flag) printf(请输入要查询的地点编号:); scanf(%d,&k); if(kG-vexnum) printf(地点编号不存在!请重新输入地点编号:); scanf(%d,&k); if(k=0&kvexnum) flag=0; printf(n); printf(编号地点名称 简介 n); printf(%-4d%-16s%-56sn,G-vexsk.num,G-vexsk.name,G-vexsk.introduction); printf(n);


    注意事项

    本文(河南科技大学校园模拟导游程序设计报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




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

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

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


    收起
    展开