1、校园导航系统源代码#define INFINITY 10000 #define MAX_VERTEX_NUM 40#define MAX 40#include#include#include#includetypedefstruct ArCell int adj; /*路径长度 */ArCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM; typedefstruct/*图中顶点表示主要景点,存放景点的编号、名称、简介等信息, */char name30; int num; char introduction100;/*简介*/infotype; typedef
2、structinfotype vexsMAX_VERTEX_NUM; AdjMatrix arcs; int vexnum,arcnum; MGraph; MGraph b; void cmd(void); MGraph InitGraph(void); void show1();void list();void Menu(void); void ShortestPath_DIJ(MGraph * G); void Search(MGraph *G); int LocateVex(MGraph *G,char* v); /*主函数*/void main(void) system(color 5
3、f); /*修改控制台的颜色信息,改为白字蓝底的模式*/system(mode con: cols=140 lines=130); /*设置批处理运行时窗口大小的*/cmd(); /*自定义函数*/* cmd函数(根据目录选择要进展的项目)*/void cmd(void) char k; b=InitGraph(); show1();Menu(); while(1) scanf(n%c,&k); switch(k) casex: system(cls); show1(); Menu(); list(); ShortestPath_DIJ(&b); printf(-欢送您的使用-n); prin
4、tf(n请您继续选择效劳:);break; casey: system(cls); Menu(); list(); Search(&b); printf(-欢送您的使用-n); printf(n请您继续选择效劳:);break; casez: system(cls);printf( n); printf( 感使用 n); printf( 建筑术大学 n); printf( 智能导航系统 n); printf( n); exit(0); default: printf(输入信息错误!n请输入x或y或z.n);break;/* 迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点 */v
5、oid ShortestPath_DIJ(MGraph * G) int v,w,i,min,t=0,x,flag=1,v0,v1,have100,k; int final20, D20, p2323; while(flag) printf(请输入起始景点编号:n); scanf(%d,&v0);if(v0G-vexnum) printf(景点编号不存在!); printf(请输入终止景点编号:n); scanf(%d,&v1);if(v1G-vexnum) printf(景点编号不存在!);if(v0=0&v0vexnum&v1=0&v1vexnum)flag=0;for(v=0;vvexn
6、um;+v) finalv=0; Dv=G-arcsv0v.adj;for(w=0;wvexnum;+w) pvw=INFINITY;if(DvINFINITY) pvv0=1; pvv=1; Dv0=0; finalv0=1;have0=v0;for(i=1;ivexnum;+i) min=INFINITY;for(w=0;wvexnum;+w)if(!finalw)if(Dwmin) v=w; min=Dw; finalv=1; havek=v; k+;for(w=0;wvexnum;+w)if(!finalw&(min+(G-arcsvw.adj)arcsvw.adj;for(x=0;x
7、vexnum;x+) pwx=pvx; pww=1;for(i=0;ivexnum;i+)if(pv1havei=1) printf(-%s,G-vexshavei.name);if(v1-v0)=1)printf(n路径长度:%dn,G-arcsv0v1);else printf(n路径长度:%dn,Dv1);/ShortestPath_DIJ end/*查找函数的建立 */void Search(MGraph *G) int k,flag=1; while(flag) printf(请输入要查询的景点编号:); scanf(%d,&k); if(kG-vexnum) printf(景点编号
8、不存在!请重新输入景点编号:); scanf(%d,&k); if(k=0&kvexnum) flag=0; printf(n); printf(编号景点名称 简介 n); printf(%-4d%-16s%-58sn,G-vexsk.num,G-vexsk.name,G-vexsk.introduction); printf(n); /Search endvoid show1() printf(tt 欢送使用建筑大学智能导航系统 n); printf(ttt建筑大学南校区简单版平面图nn); printf(t 学校北门n); printf(t n); printf(t 北食堂宿舍楼1n);
9、printf(t n); printf(t 宿舍楼2n); printf(t 九月桥n); printf(t n); printf(t 主教楼 n); printf(t n); printf(t 日月广场n); printf(t n); printf(t 图书馆n); printf(t n); printf(t 还在建n); printf(t n); printf(t 南食堂宿舍楼15n); printf(t n); printf(t n); printf(t 南苑超市 n);void list() printf(学校景点列表:n); printf(0:学校北门); printf(1:宿舍楼1
10、 ); printf(2:宿舍楼2 ); printf(3:宿舍楼15 ); printf(4:九月桥n); printf(5:主教楼 ); printf(6:图书馆 ); printf(7:日月广场 ); printf(8:体育场n); printf(9:还在建); printf(10:南食堂 );/*目录函数的构建*/void Menu() printf(n 建筑大学南校区导游图n); printf( n); printf( x.选择出发点和目的地 n); printf( y.查看景点信息 n); printf( z.退出系统 n); printf( n); printf(请选择效劳);
11、/*MGraph函数图的构建*/MGraph InitGraph(void) MGraph G; int i,j; G.vexnum=17; /顶点是17个G.arcnum=25; /弧线有25个for(i=0;iG.vexnum;i+) G.vexsi.num=i; strcpy(G.vexs0.name,学校北门); strcpy(G.vexs0.introduction,学校的正门,气势宏伟); strcpy(G.vexs1.name,宿舍楼1); strcpy(G.vexs1.introduction,睡觉的地方); strcpy(G.vexs2.name,宿舍楼2); strcpy(
12、G.vexs2.introduction,睡觉的地方); strcpy(G.vexs3.name,宿舍楼15); strcpy(G.vexs3.introduction,,); strcpy(G.vexs4.name,九月桥); strcpy(G.vexs4.introduction,连接生活区和教学区的桥。); strcpy(G.vexs5.name,主教楼); strcpy(G.vexs5.introduction,教学,开会); strcpy(G.vexs6.name,图书馆); strcpy(G.vexs6.introduction,安静当学霸的地方); strcpy(G.vexs7.
13、name,日月广场); strcpy(G.vexs7.introduction,有漂亮喷泉的广场); strcpy(G.vexs8.name,体育场); strcpy(G.vexs8.introduction,运动健身的地方); strcpy(G.vexs9.name,还在建); strcpy(G.vexs9.introduction,学校新修的实验楼,灰常高大上); strcpy(G.vexs10.name,南食堂); strcpy(G.vexs10.introduction,不好吃); for(i=0;iG.vexnum;i+) for(j=0;jG.vexnum;j+) G.arcsij
14、.adj=INFINITY; G.arcs01.adj=50; G.arcs12.adj=15; G.arcs13.adj=40; G.arcs23.adj=30; G.arcs03.adj=90; G.arcs34.adj=30; G.arcs49.adj=1000; G.arcs45.adj=20; G.arcs56.adj=10; G.arcs67.adj=8; G.arcs68.adj=12; G.arcs78.adj=7; G.arcs09.adj=30; G.arcs910.adj=500; G.arcs1011.adj=25; G.arcs1112.adj=8; G.arcs1213.adj=5; G.arcs1314.adj=10; G.arcs1214.adj=10; G.arcs1415.adj=150; G.arcs1516.adj=3; G.arcs515.adj=150; G.arcs415.adj=30; G.arcs111.adj=300; G.arcs814.adj=40;for(i=0;iG.vexnum;i+) for(j=0;jG.vexnum;j+) G.arcsji.adj=G.arcsij.adj; return G; /InitGraph end
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1