校园导航系统源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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&&v0
}
for(v=0;v
{
final[v]=0;
D[v]=G->arcs[v0][v].adj;
for(w=0;w
p[v][w]=INFINITY;
if(D[v] { p[v][v0]=1; p[v][v]=1; } }