校园导游咨询系统源代码.docx_第1页
校园导游咨询系统源代码.docx_第2页
校园导游咨询系统源代码.docx_第3页
校园导游咨询系统源代码.docx_第4页
校园导游咨询系统源代码.docx_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include/standard library标准库头文件#include/标注输入输出函数头文件 #include/字符函数头文件 #define MAX 10000 /定义路程最远距离符号常量无穷大 #define MAX_VERTEX_NUM 10/定义的景点/顶点数量符号常量 最大顶点数10个 typedef struct /定义一个结构体用于表示路径 int adj; /路径长度权值 Ar,Ad1010;/起点和终点变量名 typedef struct /定义一个结构体用于存放景点信息 char name30;/景点名 int num;/景点编号 char introduction100;/景点介绍 infotype;/景点信息变量名 typedef struct/用来定义一个图 infotype vexs10; Ad arcs; int vexnum,arcnum;MGraph;MGraph b;MGraph InitGraph()/初始化图形 MGraph G; int i; int j; G.vexnum=10; G.arcnum=10; for(i=0;iG.vexnum;i+) G.vexsi.num=i; /用字符串复制把各个景点的信息传递给指针 strcpy(G.,老校区宿舍); strcpy(G.roduction,这里有夺命坡,冬天来这里一定要小心脚下); strcpy(G.,二教); strcpy(G.roduction,同学们日常上课大多数都在这); strcpy(G.,石头楼); strcpy(G.roduction,石头楼是我国著名建筑大师梁思成在美国宾西法尼亚大学建筑系毕业回国之后设计的第一件作品); strcpy(G.,主教); strcpy(G.roduction,一座集实验教学于一体的教学楼,但是我没在里面上过课); strcpy(G.,媒体楼); strcpy(G.roduction,信息院有一部分的上机课是在这里上的,在这里你还有可能艳遇到媒体系的美女呦); strcpy(G.,图书馆); strcpy(G.roduction,自从新校区图书馆建成后这里就变成了纯粹的自习室,不过这里冬天真的很暖); strcpy(G.,专家招待所); strcpy(G.roduction,这里是招待一些贵宾的地方,有些留学生也住在这儿); strcpy(G.,学术交流中心); strcpy(G.roduction,这里经常会开很多高大上的会议,还会有外国友人出现在这); strcpy(G.,东街教学楼); strcpy(G.roduction,这里也是一个日常上课比较多的地方,没课的时候来这里上自习也是不错的选择); strcpy(G.,校医院); strcpy(G.roduction,新生的体检,打疫苗都在这,而且来这里买药真的很便宜); /运用双重循环给每条边赋权值 for(i=0;iG.vexnum;i+) for(j=0;jG.vexnum;j+) G.arcsij.adj=MAX; G.arcs01.adj=600; G.arcs02.adj=600; G.arcs03.adj=700; G.arcs12.adj=50; G.arcs14.adj=100; G.arcs25.adj=150; G.arcs23.adj=50; G.arcs35.adj=250; G.arcs45.adj=100; G.arcs48.adj=450; G.arcs56.adj=150; G.arcs58.adj=200; G.arcs67.adj=50; G.arcs68.adj=100; G.arcs69.adj=250; G.arcs78.adj=100; G.arcs79.adj=80; G.arcs89.adj=50; for(i=0;iG.vexnum;i+) for(j=0;jG.vexnum;j+) G.arcsji.adj=G.arcsij.adj; return G;/菜单 void Menu() printf(n * 欢迎来到东北电力大学 *n); printf( n); printf( 祝你:旅途愉快 n); printf( n); printf( 1.浏览校园全景 n); printf( 2.查看所有游览路线 n); printf( 3.选择出发点和目的地 n); printf( 4.查看各景点信息 n); printf( 5.退出系统 n); printf( n); printf( 诚心为你服务-请选择(输入编号.回车结束): );/查看各景点信息函数 void Browser(MGraph *G)int v; printf(n); printf(编号.景点名称.简介 n); for(v=0;vvexnum;v+) printf(%-4d%-16s%-56sn,G-vexsv.num,G-,G-roduction);printf(n);printf(n);printf( 东 n); printf( n); printf( 1.二教4. 媒体楼 n);printf( n); printf( n); printf( 0.老校区宿舍2.石头楼5.图书馆 n);printf( n); printf( 6.专家招待所 8.东街 n); printf( 3.主教 _/ n);printf( / n); printf( 7.学术交流中心9.校医院 n); printf( n); printf( n);printf(请按任意键继续!);printf(n); getch();/查看所有浏览路线 void ShortestPath_DIJ(MGraph * G)int v,w,i,min,t=0,x,flag=1,v0; int final20, D20, p2020; while(flag) printf(请输入一个起始景点编号0-9:); scanf(%d,&v0); if(v0G-vexnum) printf(景点编号不存在!请重新输入景点编号0-9:); scanf(%d,&v0); if(v0=0&v0vexnum) flag=0; for(v=0;vvexnum;v+) finalv=0; Dv=G-arcsv0v.adj; for(w=0;wvexnum;w+) pvw=0; if(DvMAX) pvv0=1;pvv=1; Dv0=0;finalv0=1; for(i=1;ivexnum;i+) min=MAX; 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+) pwx=pvx; pww=1; for(v=0;vvexnum;v+) if(v0!=v) printf(%s,G-); for(w=0;wvexnum;w+) if(pvw&w!=v0) printf(-%s,G-); t+; if(tG-vexnum-1&v0!=v)printf(总路线长%dmnn,Dv);/弗洛伊德算法 用于求最短路 void Floyd(MGraph *G)int v,u,i,w,k,j,flag=1,p1010,D1010; for(v=0;vvexnum;v+) for(w=0;wvexnum;w+) Dvw=G-arcsvw.adj; for(u=0;uvexnum;u+) pvw=0; if(DvwMAX) pvw=1;pvw=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+) pvw=pvu|puw; while(flag) printf(请输入出发点和目的地的编号0-9如(* *):); scanf(%d%d,&k,&j); if(kG-vexnum|jG-vexnum) printf(景点编号不存在!请重新输入出发点和目的地的编号:); scanf(%d%d,&k,&j); if(k=0&kvexnum&j=0&jvexnum) flag=0; printf(%s,G-); for(u=0;uvexnum;u+) if(pkj&k!=u&j!=u) printf(-%s,G-); printf(-%s,G-); printf( 总路线长%dmn,Dkj);/查询单个景点信息 void Search(MGraph *G)int k,flag=1; while(flag) printf(请输入要查询的景点编号0-9:); scanf(%d,&k); if(kG-vexnum) printf(景点编号不存在!请重新输入景点编号0-9:); scanf(%d,&k); if(k=0&kvexnum) flag=0; printf(n); printf(编号.景点名称.简介n); printf(%-4d%-16s%-56sn,G-vexsk.num,G-,G-roduction); printf(n);int LocateVex(MGraph *G,char* v)/* 初始条件: 图G存在,v和G中顶点有相同特征*/* 操作结果: 若G中存在顶点v,则返回该顶点在图中位置;否则返回-1 */int c=-1,i; for(i=0;ivexnum;i+) if(strcmp(v,G-)=0)c=i; return c;void print(MGraph *G)/输出景点间距离 int v,w,t=0; for(v=0;vvexnum;v+) for(w=0;wvexnum;w+) if(G-arcsvw.adj=MAX) printf();/没有路输出无穷 else printf(%-7d,G-arcsvw.adj);/有路输出权值和 t+; if(t%G-vexnum=0) printf(n); /主函数 void main() int i; b=InitGraph();/调用初始化地图函数 Menu();/调用菜单函数 scanf(%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论