数据结构课程设计——烟大导航系统

来源:互联网 发布:韩国视频软件 编辑:程序博客网 时间:2024/04/26 03:17

/*  *版权所有  *Copyright (c) 2017,烟台大学计算机与控制工程学院  *项目名称:烟大导航系统        *作    者:申鹏鹏          *完成日期:2017年1月1日         *      */
代码:

data.h

int A[57][57]=  {      {0,150,INF,170,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,300,200,INF,INF,INF,INF,INF,INF},//1        {150,0,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,10,20,20,INF,INF},//2        {INF,30,0,INF,50,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//3        {170,INF,INF,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//4        {INF,INF,50,10,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//5        {INF,INF,INF,INF,10,0,10,INF,INF,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//6        {INF,INF,INF,INF,INF,10,0,INF,20,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//7        {INF,INF,INF,INF,INF,INF,INF,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//8        {INF,INF,INF,INF,INF,INF,20,10,0,15,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//9        {INF,INF,INF,INF,INF,15,15,INF,15,0,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//10        {INF,INF,INF,INF,INF,INF,INF,INF,10,INF,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//11        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,30,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//12        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,20,INF,80,90,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//13        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,20,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//14        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,40,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,50,INF,INF,15},//15        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,80,INF,INF,0,100,30,INF,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//16            {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,90,INF,INF,100,0,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//17        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,0,60,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//18        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,60,0,30,20,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//19        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,40,INF,40,30,0,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//20        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,20,0,10,INF,INF,INF,70,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//21        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,40,INF,10,0,10,INF,INF,60,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//22        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,30,INF,50,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//23        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,20,160,INF,INF,INF,INF,INF,INF,INF,190,INF,INF,510,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//24        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,0,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,500,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//25        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,70,60,50,160,INF,0,10,INF,INF,INF,INF,INF,20,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//26        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,30,INF,INF,INF,INF,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//27        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,10,INF,INF,INF,30,INF,25,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//28        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,20,INF,20,INF,INF,35,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//29        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//30        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//31        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,10,0,INF,INF,80,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//32        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,15,30,INF,INF,INF,INF,0,INF,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//33        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,190,INF,40,INF,INF,INF,INF,INF,INF,INF,0,20,INF,120,100,50,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//34        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,25,35,INF,INF,80,15,20,0,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//35        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,30,0,INF,INF,110,100,20,30,30,100,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//36        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,510,500,INF,INF,INF,INF,INF,INF,INF,INF,120,INF,INF,0,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//37        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,100,INF,INF,20,0,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//38        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,50,INF,110,INF,30,0,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//39        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,100,INF,INF,30,0,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//40        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,INF,20,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//41        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,10,0,INF,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//42        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,0,INF,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//43        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,100,INF,INF,INF,INF,INF,10,INF,0,20,100,INF,150,INF,INF,INF,INF,INF,INF,INF,INF,INF},//44        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,20,0,100,INF,30,20,INF,INF,15,INF,INF,INF,INF,INF},//45        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,100,100,0,20,10,INF,INF,INF,INF,INF,INF,INF,INF,INF},//46        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,0,20,INF,INF,INF,INF,INF,INF,INF,INF,INF},//47        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,150,30,10,20,0,30,50,INF,INF,INF,INF,INF,INF,INF},//48        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,30,0,20,INF,INF,INF,INF,INF,INF,INF},//49        {300,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,50,20,0,30,INF,INF,INF,INF,INF,INF},//50        {200,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,30,30,INF,INF,INF,INF},//51        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,15,INF,INF,INF,INF,INF,30,0,10,INF,INF,INF,INF},//52        {INF,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,10,0,INF,INF,INF,INF},//53        {INF,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,50,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,0,INF,INF,INF},//54        {INF,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,0,30,INF},//55        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,40},//56        {INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,40,0}//57  };
graph.h
#ifndef GRAPH_H_INCLUDED  #define GRAPH_H_INCLUDED  #define MAXV 100                //最大顶点个数  #define INF 32767       //INF表示∞  typedef int InfoType;  //定义邻接矩阵类型  typedef struct  {      int no;                     //顶点编号      InfoType info;              //顶点其他信息,在此存放带权图权值  } VertexType;                   //顶点类型  typedef struct                  //图的定义  {      int edges[MAXV][MAXV];      //邻接矩阵      int n,e;                    //顶点数,弧数      VertexType vexs[MAXV];      //存放顶点信息  } MGraph;                       //图的邻接矩阵类型  void ArrayToMat(int *Arr, int n, MGraph &g); //用普通数组构造图的邻接矩阵  #endif // GRAPH_H_INCLUDEDvoid welcome();  void ccc();  
point.h
char *vertice_name[57] = { //烟台大学地图地图  "南门","综合楼","逸夫图书馆","海洋学院","法学院","外国语学院","数学与信息科学学院","药学院","九龙广场",  "实训中心","环境与材料工程学院","机电汽车工程学院","办公楼","文科馆","三元湖","1#、2#、3#教","西门","承先图书馆","八景园",  "计算机中心","二餐九餐","一餐","四餐五餐","教师公寓","北门","1#、2#、3#、4#、5#学生公寓","青春广场","生命科学学院","化学学院",  "光电学院","钟楼","计算机学院","三餐","小树林","土木工程学院","4#、5#、6#、7#教","东门","公安处","六餐","6#、7#、8#、9#学生公寓",  "篮球(网球)场","排球场","新足球场","国防生训练场","篮球(手球)场","10#学生公寓","11#、12#、13#、14#学生公寓","七餐",  "停车场","大学生活动中心","建筑馆","体育学院","体院运动场","体校","八餐","国际交流学院","育秀大楼"  };
graph.cpp
char *vertice_name[57] = { //烟台大学地图地图  "南门","综合楼","逸夫图书馆","海洋学院","法学院","外国语学院","数学与信息科学学院","药学院","九龙广场",  "实训中心","环境与材料工程学院","机电汽车工程学院","办公楼","文科馆","三元湖","1#、2#、3#教","西门","承先图书馆","八景园",  "计算机中心","二餐九餐","一餐","四餐五餐","教师公寓","北门","1#、2#、3#、4#、5#学生公寓","青春广场","生命科学学院","化学学院",  "光电学院","钟楼","计算机学院","三餐","小树林","土木工程学院","4#、5#、6#、7#教","东门","公安处","六餐","6#、7#、8#、9#学生公寓",  "篮球(网球)场","排球场","新足球场","国防生训练场","篮球(手球)场","10#学生公寓","11#、12#、13#、14#学生公寓","七餐",  "停车场","大学生活动中心","建筑馆","体育学院","体院运动场","体校","八餐","国际交流学院","育秀大楼"  };
yandadaohang.cpp
#include <stdio.h>  #include <malloc.h>  #include <cstring>  #include <string.h>  #include "graph.h"  #include "data.h"  #include "point.h"  #define MaxSize 100  char string1[100], string2[100],address1[100],address2[100]; //string1[100] 定义输入的起始点,string2[100] 定义输入的终止点,address1[100] 定义起始点的转化(如"一教"转化为"1#,2#,3#教"等),address2[100] 定义终止点的转化(如"二教"转化为"1#,2#,3#教"等)  char ppp[500];                                               //文件读存字符串  int c1=0,c2=0;                                               // ccc()函数中的输入点    /******************************************** *功能描述:Ppath()函数用于递归查找路径上的顶点 *参数:i,j,k *返回值:无 *其他说明:无 ********************************************/  void Ppath(int path[][MAXV],int i,int j)   {      int k;      k=path[i][j];      if (k==-1) return;  //到了起点则返回      Ppath(path,i,k);    //顶点i的前一个顶点k      printf("%s -> ",vertice_name[k]); //改 printf("%d,",k);      strcat(ppp,vertice_name[k]);      strcat(ppp," -> ");      Ppath(path,k,j);    //顶点k的前一个顶点j  }    /******************************************** *功能描述:图的遍历及输出,以及文件的写入,通过将start和end所表示的起始点和终止点的两个所位于矩阵中下角标的数值,传递给该Dispath()函数 *参数:n=57,start,end *返回值:无 *其他说明:该函数涉及到文件的存储问题 ********************************************/  void Dispath(int A[][MAXV],int path[][MAXV],int n, int start, int end)  {      int i,j;      for (i=0; i<n; i++)          for (j=0; j<n; j++)          {              if (i==start&&j==end)                  if (A[i][j]==INF)                  {                      if (i!=j)                          printf("从%s到%s没有路径\n", vertice_name[i], vertice_name[j]); //改 printf("从%d到%d没有路径\n",i,j);                  }                  else                  {                      printf("从%s到%s路线长度约为 : %d米 \n所走路线为 : ",string1 , string2, A[i][j]); //改 printf("  从%d到%d=>路径长度:%d 路径:",i,j,A[i][j]);                      strcat(ppp,"从");                      strcat(ppp,string1);                      strcat(ppp,"到");                      strcat(ppp,string2);                      strcat(ppp,"路线长度约为 : ");                      char s[10];                      int t=A[i][j];                      int k=0;                      if(t)                      {                          while(t)                          {                              s[k++]=t%10+'0';                              t/=10;                          }                      }                      else                      {                          s[k++]='0';                      }                      s[k]=0;                      strrev(s);                      strcat(ppp,s);                      strcat(ppp,"米 \n所走路线为 : ");                      printf("%s -> ", string1); //改 printf("%d,",i);    //输出路径上的起点                      strcat(ppp,string1);                      strcat(ppp," -> ");                      Ppath(path,i,j);    //输出路径上的中间点                      printf("%s\n", string2); //改 printf("%d\n",j);   //输出路径上的终点                      strcat(ppp,string2);                      strcat(ppp,"\n");                  }          }  }    /******************************************** *功能描述:输出最短路径 *参数:g,start,end *返回值:将所得到的值,调用Dispath函数,进行最短路径的输出 *其他说明:无 ********************************************/  void Floyd(MGraph g, int start, int end)  {      int A[MAXV][MAXV],path[MAXV][MAXV];      int i,j,k;      for (i=0; i<g.n; i++)          for (j=0; j<g.n; j++)          {              A[i][j]=g.edges[i][j];              path[i][j]=-1;          }      for (k=0; k<g.n; k++)      {          for (i=0; i<g.n; i++)              for (j=0; j<g.n; j++)                  if (A[i][j]>A[i][k]+A[k][j])                  {                      A[i][j]=A[i][k]+A[k][j];                      path[i][j]=k;                  }      }      Dispath(A,path,g.n,start,end);   //输出最短路径  }    /******************************************** *功能描述:进行起始点和终止点的特殊判断并转化点 *参数:address1,address2,string1,string2 *返回值:将所得到的值通过address1和address2进行传递到Dispath()函数进行调用。 *其他说明:主要是通过运用strcmp的包含关系,进行点的转化 ********************************************/  void str()   {      if((strcmp(string1,"一教")==0)||(strcmp(string1,"二教")==0)||(strcmp(string1,"三教")==0))      {          strcpy(address1,"1#、2#、3#教");      }      else if((strcmp(string1,"二餐")==0)||(strcmp(string1,"九餐")==0))      {          strcpy(address1,"二餐九餐");      }      else if((strcmp(string1,"四餐")==0)||(strcmp(string1,"五餐")==0))      {          strcpy(address1,"四餐五餐");      }      else if((strcmp(string1,"四教")==0)||(strcmp(string1,"五教")==0)||(strcmp(string1,"六教")==0)||(strcmp(string1,"七教")==0))      {          strcpy(address1,"4#、5#、6#、7#教");      }      else if((strcmp(string1,"1#学生公寓")==0)||(strcmp(string1,"2#学生公寓")==0)||(strcmp(string1,"3#学生公寓")==0)||(strcmp(string1,"4#学生公寓")==0)||(strcmp(string1,"5#学生公寓")==0))      {          strcpy(address1,"1#、2#、3#、4#、5#学生公寓");      }      else if((strcmp(string1,"6#学生公寓")==0)||(strcmp(string1,"7#学生公寓")==0)||(strcmp(string1,"8#学生公寓")==0)||(strcmp(string1,"9#学生公寓")==0))      {          strcpy(address1,"6#、7#、8#、9#学生公寓");      }      else if((strcmp(string1,"11#学生公寓")==0)||(strcmp(string1,"12#学生公寓")==0)||(strcmp(string1,"13#学生公寓")==0)||(strcmp(string1,"14#学生公寓")==0))      {          strcpy(address1,"11#、12#、13#、14#学生公寓");      }      else      {          strcpy(address1,string1);      }        if((strcmp(string2,"一教")==0)||(strcmp(string2,"二教")==0)||(strcmp(string2,"三教")==0))      {          strcpy(address2,"1#、2#、3#教");      }      else if((strcmp(string2,"二餐")==0)||(strcmp(string2,"九餐")==0))      {          strcpy(address2,"二餐九餐");      }      else if((strcmp(string2,"四餐")==0)||(strcmp(string2,"五餐")==0))      {          strcpy(address2,"四餐五餐");      }      else if((strcmp(string2,"四教")==0)||(strcmp(string2,"五教")==0)||(strcmp(string2,"六教")==0)||(strcmp(string2,"七教")==0))      {          strcpy(address2,"4#、5#、6#、7#教");      }      else if((strcmp(string2,"1#学生公寓")==0)||(strcmp(string2,"2#学生公寓")==0)||(strcmp(string2,"3#学生公寓")==0)||(strcmp(string2,"4#学生公寓")==0)||(strcmp(string2,"5#学生公寓")==0))      {          strcpy(address2,"1#、2#、3#、4#、5#学生公寓");      }      else if((strcmp(string2,"6#学生公寓")==0)||(strcmp(string2,"7#学生公寓")==0)||(strcmp(string2,"8#学生公寓")==0)||(strcmp(string2,"9#学生公寓")==0))      {          strcpy(address2,"6#、7#、8#、9#学生公寓");      }      else if((strcmp(string2,"11#学生公寓")==0)||(strcmp(string2,"12#学生公寓")==0)||(strcmp(string2,"13#学生公寓")==0)||(strcmp(string2,"14#学生公寓")==0))      {          strcpy(address2,"11#、12#、13#、14#学生公寓");      }      else      {          strcpy(address2,string2);      }  }    /******************************************** *功能描述:判断查找起始点和终止点是否输入有误 *参数:start,end,address1,address2, *返回值:0-成功,1-失败 *其他说明:start和end是矩阵中元素的位置,address1和address2是需要判断的元素的名称 ********************************************/  int find()    {      MGraph g;      int start=0,end=0,flag=0,i=0,j=0;      while(j<57) //进行判断输入点错误情况      {          if(strcmp(vertice_name[j],address1)==0)          {              start=j;              if(flag==0)              {                  while(i<57)                  {                      if(strcmp(vertice_name[i],address2)==0)                      {                          end=i;                          ArrayToMat(A[0],57, g);                          Floyd(g, start, end);                          return 1;                      }                      i++;                  }                  printf("输入终止点错误!");                  printf("\n");                  return 0;              }          }          else          {              j++;              if(j == 57 )              {                  while(i<57)                  {                      if(strcmp(vertice_name[i],address2)==0)                      {                          printf("输入起始点错误!\n");                          return 0;                      }                      i++;                  }                  printf("输入起始点和终止点均错误!");                  printf("\n");                  return 0;              }          }      }  }    /******************************************** *功能描述:文件读存 *参数:string1,string2 *返回值:true-成功,false-失败 *其他说明:通过存入三行数据,并进行判断和调用,所定的点为起始点和终止点,当可判断到两点时,直接从文档中读取数据到dos界面上 ********************************************/  bool PathSaved()   {    FILE *fp=fopen("line.txt","r+");      //r+:正文文件读写打开,文件不存在,则打开失败(顺序读/写、随机读/写,含改写与添加)    if(fp==NULL)      {          return false;      }      char t[100]= {0};      strcat(t,string1);      strcat(t," ");      strcat(t,string2);      strcat(t,"\n");      char t2[500];      while(fgets(t2,500,fp))  //fgets:从fp定义的文件里,读入一行字符串(允许夹空白字符)直到新行符号(含新行符),若长度超出500字节,则只读500字节,存放到t2里    {          if(strcmp(t2,t)==0)          {              fgets(ppp,500,fp);              fgets(t2,500,fp);              strcat(ppp,t2);              fclose(fp);              return true;          }          else          {              fgets(t2,500,fp);              fgets(t2,500,fp);          }      }      fclose(fp);      return false;  }    /******************************************** *功能描述:文件读存 *参数:c1,c2,string1,string2 *返回值:无 *其他说明:该函数总的调用了文件读写操作 ********************************************/  void ccc() //文件读写保存  {      if(c1==1)      {          printf("请输入起始点和终止点\n");          scanf("%s %s", string1, string2);   //start=? end=? 查找其在vertice_name数组中的位置          if(!PathSaved())          {            str();            int k=find();            if(k)            {                FILE *fp=fopen("line.txt","a");                if(fp==NULL)                {                    fp=fopen("line.txt","w");                }                fprintf(fp,"%s %s\n%s",string1,string2,ppp);                fclose(fp);            }          }          else          {              printf("%s",ppp);          }          printf("\n1.继续查找  2.退出登录\n");          scanf("%d",&c2);          switch(c2)          {          case 1:              ccc();              break;          case 2:              printf("谢谢使用!\n");              break;          }      }      if(c1==2)      {          printf("谢谢使用!\n");      }  }    /******************************************** *功能描述:登录图标 *参数: *返回值:无 *其他说明: ********************************************/  void welcome() //登录图标  {      printf("■■■■■■■■■■■■■■■■■■■■  \n");      printf("■                                    ■  \n");      printf("■  ■■■■■■■■■■■■■■■■  ■  \n");      printf("■  ■欢迎来到烟台大学校园导航系统■  ■  \n");      printf("■  ■■■■■■■■■■■■■■■■  ■  \n");      printf("■                                    ■  \n");      printf("■■■■■■■■■■■■■■■■■■■■  \n");      printf("\n");      for(int i=0;i<500000000;i++){}      printf("请输入您的选择:\n");      printf("1.查询校园路线   2.退出登录\n");      scanf("%d",&c1);  }  
main.cpp
#include "graph.h"  void main()  //主函数,实现功能  {      welcome();      ccc();}

0 0