资源简介

[主要内容]   用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。 [基本要求] (1) 查询各景点的相关信息;   (2) 查询图中任意两个景点间的最短路径。   (3) 查询图中任意两个景点间的所有路径。   (4) 增加、删除、更新有关景点和道路的信息。 [选作内容]   (1) 求多个景点的最佳(最短)游览路径。   (2) 区分机动车道和人行道。   (3) 实现导游图的仿真界面。

资源截图

代码片段和文件信息


#include “test.h“
#include “conio.h“
int p[MAX_VERTEX_NUM];
bool visited[MAX_VERTEX_NUM];
void search(mgraph gint vint lastvexint cost);


void lookingforway(mgraph gint firstvexint lastvex)//罗列两个景点的所有路径
{
p[0]=1;

for(int v=1;v<=g.vexnum;v++)
{
for (int i=1;i<=g.vexnum; i++)
visited[i]=false;
visited[firstvex]=true;
if(g.distance[firstvex][v].dis {
visited[v]=true;
printf(“%s->“g.vexs[firstvex].name);
search(gvlastvexg.distance[firstvex][v].dis);
}
}
}

void search(mgraph g int vint lastvexint cost)//深度优先遍历搜索所有路径
{
visited[v]=true;

if(v==lastvex)
{
visited[lastvex]=false;
for(int i=1;i {
printf(“%s->“g.vexs[locatevex(gp[i])].name);

printf(“%s “g.vexs[lastvex].name);
printf(“路径总长:%d\n“cost);
return;
}
p[p[0]++] = v;
for(int w=1;w<=g.vexnum;w++)
if(g.distance[v][w].dis {
cost+=g.distance[v][w].dis;
search(gwlastvexcost);
p[0]--;//去掉j
cost-=g.distance[v][w].dis;//恢复

}



void main()
{

mgraph info;
int choice;
int temp1temp2temp3temp4;
sqlist pathx[MAX_VERTEX_NUM];
initinfo(info);
do
{
printf(“*****************欢迎使用学校导游系统******************\n“);
printf(“\n  1.添加景点及路径信息       2.查询景点信息\n“);
printf(“\n  3.获取两景点最佳路径       4.查询景点所有最佳路径\n“);
printf(“\n  5.更新景点及路径信息       6.删除景点及路径信息\n“);
printf(“\n  7.清除所有景点及路径信息   8.所有信息初始化\n“);
printf(“\n  9.查询两景点所有路径       0.退出系统\n“);
printf(“\n  10.输出所有路径信息        11.所有景点信息\n“);
printf(“********************************************************\n“);
printf(“\n请选择操作!\n“);
scanf(“%d“&choice);
switch(choice)
{
case 1:{
addinfo(info);
break;
   }
case 2:{
printvexinfo(info);
break;
   }
case 3:{
printf(“请输入要查询的两景点(编号)\n“);
printf(“景点1  景点2:\n“);
scanf(“%d%d“&temp1&temp2);
twoshortpath(infotemp1temp2);
break;
   }
case 4:{
int v0j;
printf(“请输入要查询景点\n“);
scanf(“%d“&temp1);
v0=locatevex(infotemp1);
shortestpath(infotemp1pathx);
for(int i=1;i<=info.vexnum;i++)//存放从v1到其他点的所有最短路径
if(pathx[i].length>1)
{
int distance=0;
int temp;
for (int m=0;m {

j=locatevex(infopathx[i].elem[m]);
if(m>0&&info.distance[temp][j].dis {
distance+=info.distance[temp][j].dis;
}
temp=j;
printf(“%s  “info.vexs[j].name);
}
printf(“路径长度为:%d\n“distance);
printf(“\n“);
}
break;
   }
case 5:{
changeinfo(info);
break;
   }
case 6:{
printf(“请输入要删除的景点编号“);
scanf(“%d“&temp2);
deleinfo(infotemp2);
printf(“删除景点成功“);
break;

   }
case 7:{
system(“del vexinfo arcinfo“);
printf(“是否重新录入景点信息?(1.是 2.否)“);
scanf(“%d“&temp2);
if(temp2==1)
initinfo(info);
else
choice=0;
break;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        869  2009-06-04 21:47  校园导游系统\sqlist.h

     文件       4380  2009-06-04 22:18  校园导游系统\test.dsp

     文件        531  2009-06-04 21:38  校园导游系统\test.dsw

     文件      58368  2009-06-05 12:36  校园导游系统\test.ncb

     文件        839  2009-06-05 09:43  校园导游系统\test.plg

     文件     217158  2009-06-05 09:43  校园导游系统\Debug\test.exe

     文件     574464  2009-06-05 09:43  校园导游系统\Debug\test.pdb

     文件      50176  2009-06-05 09:43  校园导游系统\Debug\vc60.idb

     文件      53248  2009-06-05 09:43  校园导游系统\Debug\vc60.pdb

     文件     247800  2009-06-05 08:03  校园导游系统\Debug\test.pch

     文件      39944  2009-06-05 09:43  校园导游系统\Debug\test.obj

     文件     241164  2009-06-05 09:43  校园导游系统\Debug\test.ilk

     文件       7868  2009-06-05 08:03  校园导游系统\test.h

     文件         98  2009-06-05 09:38  校园导游系统\vexinfo

     文件        213  2009-06-05 09:38  校园导游系统\arcinfo

     文件       3916  2009-06-05 09:43  校园导游系统\test.cpp

     文件      48640  2009-06-05 12:36  校园导游系统\test.opt

     文件        201  2009-06-08 21:53  校园导游系统\说明.txt

     目录          0  2009-06-04 22:18  校园导游系统\Debug

     目录          0  2009-06-04 22:18  校园导游系统

----------- ---------  ---------- -----  ----

              1549877                    20


评论

共有 条评论