校园导游课程设计Word下载.docx

上传人:b****3 文档编号:7790155 上传时间:2023-05-09 格式:DOCX 页数:21 大小:53.52KB
下载 相关 举报
校园导游课程设计Word下载.docx_第1页
第1页 / 共21页
校园导游课程设计Word下载.docx_第2页
第2页 / 共21页
校园导游课程设计Word下载.docx_第3页
第3页 / 共21页
校园导游课程设计Word下载.docx_第4页
第4页 / 共21页
校园导游课程设计Word下载.docx_第5页
第5页 / 共21页
校园导游课程设计Word下载.docx_第6页
第6页 / 共21页
校园导游课程设计Word下载.docx_第7页
第7页 / 共21页
校园导游课程设计Word下载.docx_第8页
第8页 / 共21页
校园导游课程设计Word下载.docx_第9页
第9页 / 共21页
校园导游课程设计Word下载.docx_第10页
第10页 / 共21页
校园导游课程设计Word下载.docx_第11页
第11页 / 共21页
校园导游课程设计Word下载.docx_第12页
第12页 / 共21页
校园导游课程设计Word下载.docx_第13页
第13页 / 共21页
校园导游课程设计Word下载.docx_第14页
第14页 / 共21页
校园导游课程设计Word下载.docx_第15页
第15页 / 共21页
校园导游课程设计Word下载.docx_第16页
第16页 / 共21页
校园导游课程设计Word下载.docx_第17页
第17页 / 共21页
校园导游课程设计Word下载.docx_第18页
第18页 / 共21页
校园导游课程设计Word下载.docx_第19页
第19页 / 共21页
校园导游课程设计Word下载.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

校园导游课程设计Word下载.docx

《校园导游课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《校园导游课程设计Word下载.docx(21页珍藏版)》请在冰点文库上搜索。

校园导游课程设计Word下载.docx

{6,"

工程实习中心,金工实习\n"

},{7,"

仰仪楼,机电计测分院\n"

},{8,"

体育馆,旁边有篮球场`足球场`还有网球场\n"

},{9,"

一号教学楼,主要以阶梯教室为主\n"

},{10,"

二号教学楼,小教室为多\n"

}};

/*景点名称和简介*/

操作:

/*给景点之间的路径赋最大值*/

/*最短路径的C语言函数*/

/*输出最短路径和最短距离函数*/

/*输入景点代码查景点名称和简介*/

/*输入景点代码查到其它景点的最短距离*/

四、需求分析:

现在大多数学校由于不断扩张,造成学校面积大而造成人们人出游困难的问题,人们如果不熟悉该地点。

找到一个地方就会很困难,然而如果有一个校园导游系统,人们出行就会方便很多。

五、概要设计:

用图的算法进行构造,用链表建立无向图,然后再用深度优先遍历进行搜索,查找所需的路径。

再用弗洛伊德算法求出两个景点之间的最短路径。

系统结构图:

六、详细设计:

浏览学校全景:

用数组存放这个学校的全部景点,再通过遍历数组打印出学校的所有景点及其信息。

寻找最短路径:

利用佛洛伊德算法,在两个节点之间设置节点通过对比权值大小,找出权值最小的路径,即为所求路径。

增加项目:

在链表中增加一个元素,调整元素指针指向该元素,将该元素的指针指向后一个元素。

删除项目:

在链表中删除一个元素,将该元素前面的元素指针断开指向该元素后的元素,再将该元素的指针断开。

七、程序源代码:

#include<

stdio.h>

iostream>

stdlib.h>

string.h>

#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,"

锦绣"

);

date.number,"

1"

date.introduce,"

又称一教,是学校主要教学楼之一,位于春华路与校园西路交叉口西北150米(来自高德地图),是同学们上课的主要场所之一"

next=q->

next;

q->

next=p;

q=p;

num=2;

丹青"

2"

又称二教,是学校主要教学楼之一,位于哈尔滨市香坊区和兴路26号(来自高德地图),是同学们上课的主要场所之一"

num=3;

俭德园"

3"

位于学校9A公寓东北方150M处,是学生们经常去的地方,适合平民消费,价格实惠。

"

num=4;

行政楼"

4"

位于学校操场西行200M处,是学生,老师日常处理教学事务的地点,也是学校的行政地点。

num=5;

图书馆"

5"

位于篮球场西行200M处,是同学们日常,考研的学习地点,同时有大量的图书可供借阅,是黑龙江高校中藏书量最多的地点。

num=6;

成栋"

6"

位于学校新食堂颐丰园西北方400米处,是各个学院事务的主要办公地点。

num=7;

主楼"

7"

位于哈尔滨市香坊区农林七道街与和兴路交叉口南150米(来自高德地图)是学校众多行政,组织部门的主要办公地点。

num=8;

颐丰园"

8"

位于成栋东南方400M处,是学校在15年新开放的食堂,环境优美怡人,但是物价偏高,味道一般。

num=9;

9A"

9"

位于学校俭德园西南方行150M处,是信息学院男生的主要休息场所,现在在该公寓楼居住的601寝室的人将会在二十年后成为男神。

inti,j;

//定义服务间的距离

for(i=1;

i<

=N;

i++)

for(j=1;

j<

j++)

MGr.legs[i][j]=Road;

}

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;

shortest[i][j]=MGr.legs[i][j];

path[i][j]=0;

for(k=1;

k<

k++)

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<

j)

a;

while(path[i][j]!

=0)

->

path[i][j];

j=path[i][j];

else

i=path[j][i];

b<

endl;

您所查找的"

a<

两个服务之间的最短距离为:

shortest[a][b]<

米。

两个服务之间的最短路径是:

米。

intshortdistance(Place*head)//查找两服务之间最短路径

Place*t=head->

next,*q=head->

请输入要查询的两个服务的位置序号:

cin>

>

i>

j;

while(t)

if(t->

num==i)break;

elset=t->

while(q)

if(q->

num==j)break;

elseq=q->

if(q==NULL||t==NULL)

抱歉,没有通向的路径!

folyd();

display(i,j);

return1;

voidadd(Place*&

head)//增加服务

Place*p,*t=head->

inta;

intb;

intx;

inty;

inti;

请输入添加的服务位置(需输入大于9的整数)。

num;

num==p->

num)

此位置已被其它服务占用,请重新输入其它空白的位置。

continue;

if(t==NULL)

服务编号:

date.number;

服务名字:

date.name;

服务简介:

date.introduce;

x=p->

请输入路径条数、相关服务的位置y、路径长度"

=a;

y;

b;

MGr.legs[x][y]=MGr.legs[y][x]=b;

服务位置:

num<

date.number<

服务名称:

date.name<

date.introduce<

Place*q=head->

while(q->

next)

q=q->

Num++;

voiddeleted(Place*&

head)//删除服务

inttext=0;

charcnum[10];

Place*p=head;

输入删除的服务编号:

cnum;

while(p->

if(strcmp(p->

next->

date.number,cnum)==0)

恭喜您,您已成功将服务"

关闭!

next=p->

Num--;

break;

if(p->

next==NULL)

该服务不存在!

p=p->

voidfind(Place*&

head)//查询服务

intn;

输入查询的服务位置序号:

n;

num==n)

elsep=p->

voidreplace(Place*&

head)//修改服务

charname1[20];

charnumber1[10],number2[10];

charintroduce1[100];

输入要修改的的服务编号:

number1;

date.number,number1)==0)

请输入新的服务名称:

name1;

请输入新的服务编号:

number2;

请输入新的服务简介:

introduce1;

date.name,name1);

date.number,number2);

date.introduce,introduce1);

voidmenu()//主菜单

{cout<

1查询服务请按1键;

2修改服务请按2键;

3增加服务请按3键;

4删除服务请按4键"

5路径搜索请按5键"

6退出系统请按6键;

intmain()//主函数

欢迎使用东北林业大学校园导游查询系统"

init(p);

while

(1)

当前存在的服务个数为:

Num<

menu();

x;

switch(x)

case1:

find(p);

break;

case2:

replace(p);

case3:

add(p);

case4:

deleted(p);

case5:

shortdistance(p);

case6:

恭喜您,成功退出系统!

exit(0);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2