数据结构课程设计校园导航报告Word下载.docx

上传人:b****6 文档编号:20169817 上传时间:2023-01-17 格式:DOCX 页数:17 大小:118.53KB
下载 相关 举报
数据结构课程设计校园导航报告Word下载.docx_第1页
第1页 / 共17页
数据结构课程设计校园导航报告Word下载.docx_第2页
第2页 / 共17页
数据结构课程设计校园导航报告Word下载.docx_第3页
第3页 / 共17页
数据结构课程设计校园导航报告Word下载.docx_第4页
第4页 / 共17页
数据结构课程设计校园导航报告Word下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数据结构课程设计校园导航报告Word下载.docx

《数据结构课程设计校园导航报告Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计校园导航报告Word下载.docx(17页珍藏版)》请在冰豆网上搜索。

数据结构课程设计校园导航报告Word下载.docx

搭建程序框架图,其图如下所示:

选择相应数字

回车返

回主菜选择屏幕所设菜单

单进入子菜单

退出系统

三、算法说明

(一)设计功能的实现

接下来根据以上搭建的程序框架完成各个模块的算法

1、首先是抽象数据类型的定义:

图的抽象数据类型的定义:

ADTMgragh{

数据对象V:

V是具有相同特征的数据元素的集合,称为定点集

数据关系R={VR}

VR={<

V,W>

|V,W∈V,<

V,W>

表示从V到W的边

}

2、基本操作:

CreateUDN(&

G,V,VR);

//创建图

初始条件:

V是图的顶点集,VR是图中边的集合。

操作结果:

按V和VR的定义构造图G。

(二)主要算法设计及相关算法补充

先创建图存储学校各个景点或场所,以图的顶点表示景点或场所,以边表示路径,再利用迪杰斯特拉(DijkStra)算法求出校园各个地方的最短路径,然后根据需要进行补充相关算法。

四、全部源程序清单

#include"

stdio.h"

#include"

iostream.h"

malloc.h"

conio.h"

stdlib.h"

#defineNum11//最多顶点个数

#defineuplimit100000//定义一个无穷大的值

structintt{

intvalue;

};

inttEdge[Num][Num];

//Edge为带权邻接矩阵

inttdist[Num];

//dist为最短路程

inttpath[Num];

//path为最短路径上该顶点的前一顶点的顶点号

inttS[Num];

//S为已求得的在最短路径上的顶点号

inttD[Num];

/**

*生成地图,输入地图的基本信息

*

**/

voidBuildMap(){

inti,j;

/*初始化平面图矩阵*/

for(i=0;

i<

11;

i++){

for(j=0;

j<

j++){

Edge[0][0].value=0,Edge[0][1].value=25,Edge[0][2].value=25;

Edge[0][3].value=90,Edge[0][4].value=uplimit,Edge[0][5].value=uplimit;

Edge[0][6].value=10,Edge[0][7].value=uplimit,Edge[0][8].value=uplimit;

Edge[0][9].value=uplimit,Edge[0][10].value=uplimit;

Edge[1][0].value=25,Edge[1][1].value=0,Edge[1][2].value=10;

Edge[1][3].value=32,Edge[1][4].value=uplimit,Edge[1][5].value=uplimit;

Edge[1][6].value=10,Edge[1][7].value=uplimit,Edge[1][8].value=21;

Edge[1][9].value=16,Edge[1][10].value=uplimit;

Edge[2][0].value=25,Edge[2][1].value=10,Edge[2][2].value=0;

Edge[2][3].value=uplimit,Edge[2][4].value=uplimit,Edge[2][5].value=uplimit;

Edge[2][6].value=uplimit,Edge[2][7].value=uplimit,Edge[2][8].value=uplimit;

Edge[2][9].value=uplimit,Edge[2][10].value=uplimit;

Edge[3][0].value=90,Edge[3][1].value=32,Edge[3][2].value=uplimit;

Edge[3][3].value=0,Edge[3][4].value=uplimit,Edge[3][5].value=uplimit;

Edge[3][6].value=uplimit,Edge[3][7].value=uplimit,Edge[3][8].value=26;

Edge[3][9].value=uplimit,Edge[3][10].value=uplimit;

Edge[4][0].value=uplimit,Edge[4][1].value=uplimit,Edge[4][2].value=uplimit;

Edge[4][3].value=uplimit,Edge[4][4].value=0,Edge[4][5].value=9;

Edge[4][6].value=uplimit,Edge[4][7].value=uplimit,Edge[4][8].value=uplimit;

Edge[4][9].value=uplimit,Edge[4][10].value=60;

Edge[5][0].value=uplimit,Edge[5][1].value=uplimit,Edge[5][2].value=uplimit;

Edge[5][3].value=uplimit,Edge[5][4].value=9,Edge[5][5].value=0;

Edge[5][6].value=uplimit,Edge[5][7].value=15,Edge[5][8].value=50;

Edge[5][9].value=14,Edge[5][10].value=uplimit;

Edge[6][0].value=10,Edge[6][1].value=10,Edge[6][2].value=uplimit;

Edge[6][3].value=uplimit,Edge[6][4].value=uplimit,Edge[6][5].value=uplimit;

Edge[6][6].value=0,Edge[6][7].value=35,Edge[6][8].value=uplimit;

Edge[6][9].value=30,Edge[6][10].value=uplimit;

Edge[7][0].value=uplimit,Edge[7][1].value=uplimit,Edge[7][2].value=uplimit;

Edge[7][3].value=uplimit,Edge[7][4].value=uplimit,Edge[7][5].value=15;

Edge[7][6].value=35,Edge[7][7].value=0,Edge[7][8].value=uplimit;

Edge[7][9].value=13,Edge[7][10].value=uplimit;

Edge[8][0].value=uplimit,Edge[8][1].value=21,Edge[8][2].value=uplimit;

Edge[8][3].value=26,Edge[8][4].value=uplimit;

Edge[8][5].value=50;

Edge[8][6].value=uplimit,Edge[8][7].value=uplimit,Edge[8][8].value=0;

Edge[8][9].value=22,Edge[8][10].value=10;

Edge[9][0].value=uplimit,Edge[9][1].value=16,Edge[9][2].value=uplimit;

Edge[9][3].value=uplimit,Edge[9][4].value=uplimit,Edge[9][5].value=14;

Edge[9][6].value=30,Edge[9][7].value=13,Edge[9][8].value=22;

Edge[9][9].value=0,Edge[9][10].value=uplimit;

Edge[10][0].value=uplimit,Edge[10][1].value=uplimit,Edge[10][2].value=uplimit;

Edge[10][3].value=uplimit,Edge[10][4].value=60;

Edge[10][5].value=uplimit;

Edge[10][6].value=uplimit,Edge[10][7].value=uplimit,Edge[10][8].value=10;

Edge[10][9].value=uplimit,Edge[10][10].value=0;

}

/*找出场所间的最短距离--迪杰斯特拉算法*/

voidShortestDist(ints){

for(inti=0;

i++){//dist和path数组初始化

dist[i].value=Edge[s][i].value;

//邻接矩阵第s行元素赋值到dist中

S[i].value=0;

//已求出最短路径的顶点集合初始化

if(i!

=s&

&

dist[i].value<

uplimit){

path[i].value=s;

elsepath[i].value=-1;

//路径存放数组初始化

S[s].value=1;

//顶点s加入顶点集合

dist[s].value=0;

/*循环计算该场所与邻接场所之间的最短距离*/

for(i=0;

11-1;

i++){//从顶点s确定n-1条路径

floatmin=uplimit;

intu=s;

for(intj=0;

j++){//选择当前不在集合S中具有最短路径的顶点u

/*如果有路径比目前的最小值还小,则替换这个最小值*/

if(!

S[j].value&

dist[j].value<

min){

u=j;

min=dist[j].value;

}

S[u].value=1;

//将顶点u加入集合S,表示它已在最短路径上

for(intw=0;

w<

w++){//修改

S[w].value&

Edge[u][w].value<

uplimit&

dist[u].value+Edge[u][w].value<

dist[w].value){

dist[w].value=dist[u].value+Edge[u][w].value;

path[w].value=u;

voidbh()//显示场所名称

{

cout<

<

"

\t0.女生公寓1.图书馆2.体育馆"

endl;

\t3.校东门4.一教学楼5.教师公寓"

\t6.食堂7.体育场8.校南门"

\t9.大学生活动中心10.实验楼"

/*将顶点序列号转换成场所名称*/

voidOutpath(intc)

{switch(c)

{

case0:

女生公寓"

;

break;

case1:

"

图书馆"

case2:

体育馆"

case3:

校东门"

case4:

一教学楼"

case5:

教师公寓"

case6:

食堂"

case7:

体育场"

case8:

校南门"

case9:

大学生活动中心"

case10:

cout<

实验楼"

/*输出两个场所之间的最短距离,和最短路径*/

voidgetdata(ints,inte){

D[0].value=e;

intk;

for(k=0;

D[k].value!

=s;

k++){

D[k+1].value=path[D[k].value].value;

if(S[e].value){

\n\t场所"

s<

"

e<

之间的最短距离是:

dist[e].value<

之间的最短路径是:

for(;

k!

=-1;

k--){

Outpath(D[k].value);

if(k!

=0){

-->

else

到场所"

之间没有路径!

voidBegin(){

intflag=1;

ints,e;

while(flag){

bh();

\n\t请输入起始场所号与目的场所号:

cin>

>

s>

e;

if(s<

11&

s>

=0&

e<

e>

flag=0;

\n场所号非法,请重新输入!

ShortestDist(s);

getdata(s,e);

/*显示场所的具体信息*/

voidinfo(intc)//c为场所对应的数字号

{

switch(c)

cout<

\t▲女生公寓,具体指桂园七栋,住宿条件较好。

break;

\t▲图书馆,内部藏有丰富的书籍,供同学们学习参考,也可以自习。

\t▲体育馆,供同学们进行体育活动以及上体育课。

\t▲校东门,吉林大学珠海学院的正门。

\t▲一教学楼,供同学们上课和自习使用。

\t▲教师公寓,提供给单身的老师们居住。

\t▲食堂,有两层楼,是同学们用餐的地方。

\t▲体育场,是同学们开运动会和进行体育赛事的地方。

\t▲校南门,这是同学,老师比较集中的地方。

晚上的时候这里最热闹。

\t另一边是小店的集中地,相当于一个小型商业街。

\t▲大学生活动中心,这栋楼是办公楼也是活动中心,主要供各系的同学办活动使用

cout<

\t这栋楼的后面就是高尔夫球场,主要供旅游系的同学上课使用。

\t▲实验楼,是同学们计算机上机,各系做实验的地方。

case11:

system("

cls"

);

break;

default:

\t输入不合法,请重新输入!

voidnum(){

\t\t****************************************"

\t\t*****校园导航系统*****"

\t\t0.女生公寓"

\t\t1.图书馆"

\t\t2.体育馆"

\t\t3.校东门"

\t\t4.一教学楼"

\t\t5.教师公寓"

\t\t6.食堂"

\t\t7.体育场"

\t\t8.校南门"

\t\t9.大学生活动中心"

\t\t10.实验楼"

voidmain(){

intc;

charoption='

0'

\t----------------------------------------------------"

\t*********************"

\t**************"

\t********************"

\t**************"

\t************************"

\t-----------------------------------------------------"

\t*****************************************************"

\t\t\t欢迎光临吉林大学珠海学院"

endl

<

\t———————————————————————————"

\t\t\t1.显示场所的编号"

\t\t\t2.查看场所的具体信息"

\t\t\t3.找出最短路径及计算路径长度"

\t\t\t4.退出"

endl<

\n\tWhatdoyouwanttodo?

请输入选择:

option;

while(option!

='

){

switch(option)

case'

1'

:

num();

\t\t***************************************"

\n\tWhatdoyouwanttodo?

请输入选择:

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1