校园导航系统源代码

  • 格式:docx
  • 大小:19.42 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#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 * G);

void Search(MGraph *G);

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

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

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 * G)

{

int v,w,i,min,t=0,x,flag=1,v0,v1,have[100],k;

int final[20], D[20], p[23][23];

while(flag)

{

printf("请输入起始景点编号:\n");

scanf("%d",&v0);

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

printf("景点编号不存在!");

printf("请输入终止景点编号:\n");

scanf("%d",&v1);

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

printf("景点编号不存在!");

if(v0>=0&&v0vexnum&&v1>=0&&v1vexnum) flag=0;

}

for(v=0;vvexnum;++v)

{

final[v]=0;

D[v]=G->arcs[v0][v].adj;

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

p[v][w]=INFINITY;

if(D[v]

{

p[v][v0]=1;

p[v][v]=1;

}

}