校园导游课程设计.docx
- 文档编号:5947437
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:21
- 大小:53.52KB
校园导游课程设计.docx
《校园导游课程设计.docx》由会员分享,可在线阅读,更多相关《校园导游课程设计.docx(21页珍藏版)》请在冰点文库上搜索。
校园导游课程设计
校园导游课程设计
一、问题描述:
用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
二、实验内容:
基本要求:
查询各景点的相关信息;查询图中任意两个景点间的最短路径;查询图中任意两个景点间的所有路径;增加、删除、更新有关景点和道路的信息。
选作内容:
求多个景点的最佳(最短)游览路径。
区分机动车道和人行道。
实现导游图的仿真界面。
三、数据结构:
typedefstructmessage
{
intnum;//景点代码
charname[100];//景点名称
charpro[500];//简介
}Ciceroni;
Ciceronischool[10]={{1,"行政楼\n"},{2,"食堂\n"},{3,"赛博楼,信息分院办公室所在地\n"},{4,"求是楼,实验楼计算机中心\n"},{5,"格致楼,法学管理学院"},
{6,"工程实习中心,金工实习\n"},{7,"仰仪楼,机电计测分院\n"},{8,"体育馆,旁边有篮球场`足球场`还有网球场\n"},{9,"一号教学楼,主要以阶梯教室为主\n"},{10,"二号教学楼,小教室为多\n"}};/*景点名称和简介*/
操作:
/*给景点之间的路径赋最大值*/
/*最短路径的C语言函数*/
/*输出最短路径和最短距离函数*/
/*输入景点代码查景点名称和简介*/
/*输入景点代码查到其它景点的最短距离*/
四、需求分析:
现在大多数学校由于不断扩张,造成学校面积大而造成人们人出游困难的问题,人们如果不熟悉该地点。
找到一个地方就会很困难,然而如果有一个校园导游系统,人们出行就会方便很多。
五、概要设计:
用图的算法进行构造,用链表建立无向图,然后再用深度优先遍历进行搜索,查找所需的路径。
再用弗洛伊德算法求出两个景点之间的最短路径。
系统结构图:
六、详细设计:
浏览学校全景:
用数组存放这个学校的全部景点,再通过遍历数组打印出学校的所有景点及其信息。
寻找最短路径:
利用佛洛伊德算法,在两个节点之间设置节点通过对比权值大小,找出权值最小的路径,即为所求路径。
增加项目:
在链表中增加一个元素,调整元素指针指向该元素,将该元素的指针指向后一个元素。
删除项目:
在链表中删除一个元素,将该元素前面的元素指针断开指向该元素后的元素,再将该元素的指针断开。
七、程序源代码:
#include
#include
#include
#include
#defineN100//服务个数最大100
#defineRoad1000//定义路径为1000
intNum=9;//目前服务个数
usingnamespacestd;
typedefstructElemtype
{
charname[30];
charnumber[10];
charintroduce[200];
}Elemtype;
typedefstructPlace
{
intnum;//位置序号
Place*next;
Elemtypedate;//服务信息
}Place;//定义服务
typedefstructMGraph
{
Placeplace;
intlegs[N][N];//存放路径长
}MGraph;
MGraphMGr;//全局变量,定义MGr为MGraph类型
intshortest[N][N];//定义全局变量存贮最小路径
intpath[N][N];//定义存贮路径
Place*p;
voidinit(Place*&head)//定义服务位置
{
Place*p,*q;
head=(Place*)malloc(sizeof(Place));
head->next=NULL;
q=head;
p=(Place*)malloc(sizeof(Place));
p->num=1;
strcpy(p->date.name,"锦绣");
strcpy(p->date.number,"1");
strcpy(p->date.introduce,"又称一教,是学校主要教学楼之一,位于春华路与校园西路交叉口西北150米(来自高德地图),是同学们上课的主要场所之一");
p->next=q->next;
q->next=p;
q=p;
p=(Place*)malloc(sizeof(Place));
p->num=2;
strcpy(p->date.name,"丹青");
strcpy(p->date.number,"2");
strcpy(p->date.introduce,"又称二教,是学校主要教学楼之一,位于哈尔滨市香坊区和兴路26号(来自高德地图),是同学们上课的主要场所之一");
p->next=q->next;
q->next=p;
q=p;
p=(Place*)malloc(sizeof(Place));
p->num=3;
strcpy(p->date.name,"俭德园");
strcpy(p->date.number,"3");
strcpy(p->date.introduce,"位于学校9A公寓东北方150M处,是学生们经常去的地方,适合平民消费,价格实惠。
");
p->next=q->next;
q->next=p;
q=p;
p=(Place*)malloc(sizeof(Place));
p->num=4;
strcpy(p->date.name,"行政楼");
strcpy(p->date.number,"4");
strcpy(p->date.introduce,"位于学校操场西行200M处,是学生,老师日常处理教学事务的地点,也是学校的行政地点。
");
p->next=q->next;
q->next=p;
q=p;
p=(Place*)malloc(sizeof(Place));
p->num=5;
strcpy(p->date.name,"图书馆");
strcpy(p->date.number,"5");
strcpy(p->date.introduce,"位于篮球场西行200M处,是同学们日常,考研的学习地点,同时有大量的图书可供借阅,是黑龙江高校中藏书量最多的地点。
");
p->next=q->next;
q->next=p;
q=p;
p=(Place*)malloc(sizeof(Place));
p->num=6;
strcpy(p->date.name,"成栋");
strcpy(p->date.number,"6");
strcpy(p->date.introduce,"位于学校新食堂颐丰园西北方400米处,是各个学院事务的主要办公地点。
");
p->next=q->next;
q->next=p;
q=p;
p=(Place*)malloc(sizeof(Place));
p->num=7;
strcpy(p->date.name,"主楼");
strcpy(p->date.number,"7");
strcpy(p->date.introduce,"位于哈尔滨市香坊区农林七道街与和兴路交叉口南150米(来自高德地图)是学校众多行政,组织部门的主要办公地点。
");
p->next=q->next;
q->next=p;
q=p;
p=(Place*)malloc(sizeof(Place));
p->num=8;
strcpy(p->date.name,"颐丰园");
strcpy(p->date.number,"8");
strcpy(p->date.introduce,"位于成栋东南方400M处,是学校在15年新开放的食堂,环境优美怡人,但是物价偏高,味道一般。
");
p->next=q->next;
q->next=p;
q=p;
p=(Place*)malloc(sizeof(Place));
p->num=9;
strcpy(p->date.name,"9A");
strcpy(p->date.number,"9");
strcpy(p->date.introduce,"位于学校俭德园西南方行150M处,是信息学院男生的主要休息场所,现在在该公寓楼居住的601寝室的人将会在二十年后成为男神。
");
p->next=q->next;
q->next=p;
q=p;
inti,j;//定义服务间的距离
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
{
MGr.legs[i][j]=Road;
}
}
for(i=1;i<=N;i++)
shortest[i][j]=0;
MGr.legs[0][1]=MGr.legs[1][0]=200;
MGr.legs[0][2]=MGr.legs[2][0]=500;
MGr.legs[1][3]=MGr.legs[3][1]=150;
MGr.legs[3][4]=MGr.legs[4][3]=50;
MGr.legs[3][5]=MGr.legs[5][3]=800;
MGr.legs[4][5]=MGr.legs[5][4]=850;
MGr.legs[1][2]=MGr.legs[2][1]=550;
MGr.legs[2][7]=MGr.legs[7][2]=1000;
MGr.legs[8][7]=MGr.legs[7][8]=950;
MGr.legs[7][9]=MGr.legs[9][7]=26;
}
voidfolyd()//佛洛依德算法
{
inti,j,k;
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
{
shortest[i][j]=MGr.legs[i][j];
path[i][j]=0;
}
}
for(k=1;k<=N;k++)
{
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
{
if(shortest[i][j]>(shortest[i][k]+shortest[k][j]))
{
shortest[i][j]=shortest[i][k]+shortest[k][j];
path[i][j]=k;
path[j][i]=k;//记录经过的路径
}
}
}
}
}
voiddisplay(inti,intj)//输出两个服务的路径及最短路径
{
inta,b;
a=i;
b=j;
cout<<"我们向您推荐的最短路径是:
";
if(i { cout< while(path[i][j]! =0) { cout<<"->"< if(i j=path[i][j]; else i=path[j][i]; } cout<<"->"< cout<<""<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 校园 导游 课程设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)