您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页校园导航系统源代码

校园导航系统源代码

来源:意榕旅游网
校园导航系统源代码

#define INFINITY 10000

#define MAX_VERTEX_NUM 40 #define MAX 40 #include #include #include

#include

typedef

struct ArCell

{

int adj;

/* 路径长度 */

} ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedef struct /* 图中顶点表示主要景点 , 存放景点的编号、名称、简介等信息, */ {

char name[30]; int num;

char introduction[100]; /* 简介 */

} infotype; typedef struct

{

infotype vexs[MAX_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 void Search(MGraph * G);

int LocateVex(MGraph * G,char * v); /**********

主函数 ************************/

* G);

void main( void ) {

system( \"color 5f\"

); /* 修改控制台的颜色信息 , 改为白字蓝底的模式 */

); /* 设置批处理运行时窗口大小的

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) {

case 'x' :

system( \"cls\" ); show1(); Menu(); list();

ShortestPath_DIJ(

&b);

printf(

\"---------------------------------

--------------------------------\\n\"

printf(

\"\\n 请您继续选择服务 :\" );

break ;

case'y' :

system( \"cls\" ); Menu(); list();

Search( &b);

printf( \"---------------------------------

--------------------------------\\n\"

printf(

\"\\n 请您继续选择服务 :\" );

break ;

);

);

欢迎您的使用

欢迎您的使用

case 'z' :

system( \"cls\" ); printf( \\n\" );

\"

┏━━━━━━━━━━━━━━━━━━━━┓

printf( \\n\" );

\"

感谢使用

printf( \\n\" );

\"

安徽建筑术大学

printf( \\n\" );

\"

智能导航系统

printf( \\n\" );

\"

┗━━━━━━━━━━━━━━━━━━━━┛

exit(0);

default : printf(

\" 输入信息错误! \\n 请输入 x或 y或 z.\\n\" );

break ; } }

}

/* 迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径

,v0 为起点 */

void ShortestPath_DIJ(MGraph {

int v,w,i,min,t

* G)

=0,x,flag =1,v0,v1,have[100],k;

int final[20], D[20], p[23][23]; while (flag)

{

printf(

\" 请输入起始景点编号 :\\n\"

);

scanf( \"%d\

if (v0 <0|| v0>G-> vexnum)

printf(

\" 景点编号不存在

!\" );

printf(

\" 请输入终止景点编号 :\\n\"

);

scanf( \"%d\

if (v1 <0|| v1>G-> vexnum)

printf(

\" 景点编号不存在

!\" );if (v0 >=0&&v0 vexnum&&v1>=0&&v1 vexnum)flag =0; }

for (v =0;v vexnum;++v) {

final[v]

=0;

D[v] =G-> arcs[v0][v] . adj; for (w=0;w vexnum;++w)

p[v][w] =INFINITY;

if (D[v] p[v][v0] =1; p[v][v] =1;

}

}

D[v0] =0; final[v0]

=1;

have[0] =v0;

for (i =1;i vexnum;++i) {

min=INFINITY;

for (w=0;w vexnum;++w)

if ( ! final[w])

if (D[w] v=w;

min=D[w];

}

final[v]

=1;

have[k] =v; k++;

for (w=0;w vexnum;++w)

if ( ! final[w] &&((min +(G-> arcs[v][w] {

D[w]=min+G-> arcs[v][w] . adj; for (x =0;x vexnum;x++)

p[w][x] =p[v][x];

p[w][w] =1;

}

. adj)) }

for (i =0;i vexnum;i ++) {

if (p[v1][have[i]]

==1) {

printf(

\"-->%s\" ,G-> vexs[have[i]] . name);}

}

if ((v1 - v0) ==1)printf( \"\\n 路径长度 :%d\\n\" ,G-> arcs[v0][v1]); else printf( \"\\n 路径长度 :%d\\n\" ,D[v1]);

} //ShortestPath_DIJ end

/* 查找函数的建立 */ void Search(MGraph * G) {

int k,flag =1; while (flag)

{

printf( \" 请输入要查询的景点编号

:\" );

scanf( \"%d\

if (k <0|| k>G-> vexnum) {

printf( \" 景点编号不存在 ! 请重新输入景点编号

:\" );

scanf( \"%d\ }

if (k >=0&&k vexnum)

flag =0; }

printf( \" ┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━

━━━━━━━━━━━━┓ \\n\" ); printf( \" ┃编号 ┃景点名称

┃ 简介

┃ \\n\" );

printf( \" ┃%-4d┃%-16s┃%-58s┃

\\n\" ,G-> vexs[k] . num,G-> vexs[k] . name,G-> vexs[k] . introduction);

printf( \" ┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━┛ \\n\" );

} //Search end

void show1() { printf(

printf( printf( printf( printf( printf( printf( printf( printf( printf( printf( printf( printf(

\"\\ \"\\\ \"\ \"\ \"\ \"\ \"\ \"\ \"\ \"\ \"\ \"\ \"\

★★ 欢迎使用安徽建筑大学智能导航系统 安徽建筑大学南校区简略版平面图

★★ \\n\" );

\\n\\n\" );

学校北门 \\n\" );

┃ \\n\" );

┏━━ 北食堂 ━━━━━━━━━ 宿舍楼 1\\n\" ); ┃ ┃

┃ ━━━━━━九月桥━━━━━ ┃ 主教楼

┃ 日月广场

┃ \\n\" );

宿舍楼 2\\n\" );

┃ \\n\" ); ┃ \\n\" ); ┃ \\n\"

);

┃ \\n\" );

┃ \\n\" ); ┃ \\n\" );

printf( printf( printf( printf( printf( \"\ \"\ \"\ \"\ \"\ 图书馆 ┃ 还在建 ┃

┃ \\n\" ); ┃ \\n\" ); ┃ \\n\" ); ┃ \\n\" );

南食堂 ━━━━━━━━━━━━ 宿舍楼 15\\n\" ); printf( \"\ printf(

\"\ printf(

\"\

\\n\" );

}

void list() {

printf(

\" 学校景点列表 :\\n\"

printf(

\"0: 学校北门 \" );

printf(

\"1: 宿舍楼1\" );

printf(

\"2: 宿舍楼2\" );

printf(

\"3: 宿舍楼 15 \" );

printf(

\"4: 九月桥 \\n\" );

printf(

\"5: 主教楼 \" );

printf(

\"6: 图书馆 \" );

printf(

\"7: 日月广场 \" );

printf(

\"8: 体育场 \\n\" );

printf(

\"9: 还在建 \" );

printf(

\"10: 南食堂 \" );

┃ ┃ \\n\"┃

┃ \\n\"━━━━━━━━━━━━━━南苑超市

); ); );

}

/* 目录函数的构建 */ void Menu() {

printf( \"\\n 安徽建筑大学南校区导游图 \\n\" );

printf( \"

┏━━━━━━━━━━━━━━━━━━━━┓

\\n\" );

printf( \"

┃ x. 选择出发点和目的地

┃\\n\" );

printf( \"

┃ y. 查看景点信息

┃\\n\" );

printf( \"

┃ z. 退出系统

┃\\n\" );

printf( \"

┗━━━━━━━━━━━━━━━━━━━━┛

\\n\" );

printf(

\" 请选择服务 \" );

}

/*MGraph函数(图的构建) */ MGraph InitGraph( void ) {

MGraph G; int i,j;

G. vexnum=17; // 顶点是 17个 G. arcnum=25; // 弧线有 25个 for (i =0;i strcpy(G . vexs[0] . name,\" 学校北门 \" );

strcpy(G . vexs[0] . introduction, \" 学校的正门,气势宏伟 \" );

strcpy(G . vexs[1] . name,\" 宿舍楼 1\" ); strcpy(G . vexs[1] . introduction,

\" 睡觉的地方 \" );

strcpy(G . vexs[2] . name,\" 宿舍楼 2\" ); strcpy(G . vexs[2] . introduction,

\" 睡觉的地方 \" );

strcpy(G . vexs[3] . name,\" 宿舍楼 15\" ); strcpy(G . vexs[3] . introduction,

\" ,,,,,,,, \" );

strcpy(G . vexs[4] . name,\" 九月桥 \" ); strcpy(G . vexs[4] . introduction,

\" 连接生活区和教学区的桥。 \" );strcpy(G . vexs[5] . name,\" 主教楼 \" ); strcpy(G . vexs[5] . introduction,

\" 教学,开会 \" );

strcpy(G . vexs[6] . name,\" 图书馆 \" ); strcpy(G . vexs[6] . introduction,

\" 安静当学霸的地方 \" );

strcpy(G . vexs[7] . name,\" 日月广场 \" ); strcpy(G . vexs[7] . introduction,

\" 有漂亮喷泉的广场 \" );

strcpy(G . vexs[8] . name,\" 体育场 \" ); strcpy(G . vexs[8] . introduction,

\" 运动健身的地方 \" );

strcpy(G . vexs[9] . name,\" 还在建 \" ); strcpy(G . vexs[9] . introduction,

\" 学校新修的实验楼,灰常高大上strcpy(G . vexs[10] . name,\" 南食堂 \" );

strcpy(G . vexs[10] . introduction,

\" 不好吃 \" );

for (i =0;i G. arcs[0][1]

. adj =50;

\" );

G. arcs[1][2] . adj =15; G. arcs[1][3] . adj =40; G. arcs[2][3] . adj =30; G. arcs[0][3] . adj =90; G. arcs[3][4] . adj =30; G. arcs[4][9] . adj =1000; G. arcs[4][5] . adj =20; G. arcs[5][6] . adj =10; G. arcs[6][7] . adj =8; G. arcs[6][8] . adj =12; G. arcs[7][8] . adj =7; G. arcs[0][9] . adj =30; G. arcs[9][10]

. adj =500; G. arcs[10][11] . adj =25; G. arcs[11][12] . adj =8; G. arcs[12][13] . adj =5; G. arcs[13][14] . adj =10; G. arcs[12][14] . adj =10; G. arcs[14][15] . adj =150;G. arcs[15][16] . adj =3; G. arcs[5][15] . adj =150; G. arcs[4][15] . adj =30; G. arcs[1][11] . adj =300; G. arcs[8][14]

. adj =40;

for (i =0;i for (j =0;j } //InitGraph end

. adj =G. arcs[i][j]

. adj;

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务