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

上传人:b****1 文档编号:4689634 上传时间:2023-05-03 格式:DOCX 页数:21 大小:135.39KB
下载 相关 举报
数据结构课程设计校园导航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

选择“浏览各景点及简介”项,显示十个景点的有关信息,包括景点编号,景点名称,景点简介。

选择“查看所有游览路线”项,会进入输入起始景点编号的界面,输入正确编号后会显示起始景点到其余九个景点的最短路线的方案。

选择“选择出发点和目的地”项,会进入输入起始景点与目的景点的界面,输入起始景

点与目的景点,并有空格隔开就得到两景点之间的最佳路径。

选择“查看景点信息”项,会进入输入要查看的景点的界面,如入后会显示该景点的有关信息。

选择“退出系统”项,就会退出程序。

三、详细设计

(1)十三个单位的图

0:

前门

1:

图书馆

2:

教二楼

3:

实验楼

4:

操场

5:

教一楼

6:

食堂

7:

水房

8:

学一公寓

9:

学二公寓

10:

学三公寓

11:

学四公寓

12:

后门

(2)主程序流程图:

(3)弗洛伊德的算法:

voidFloyd(MGraph*G)

{

intv,u,i,w,k,j,flag=1,p[10][10][10],D[10][10];

//定义参数

for(v=0;

v<

G->

vexnum;

v++)

for(w=0;

w<

w++)

{

D[v][w]=G->

arcs[v][w].adj;

for(u=0;

u<

u++)

p[v][w][u]=0;

if(D[v][w]<

INFINITY)

p[v][w][v]=1;

p[v][w][w]=1;

}

for(v=0;

if(D[v][u]+D[u][w]<

D[v][w])

D[v][w]=D[v][u]+D[u][w];

for(i=0;

i<

i++)

p[v][w][i]=p[v][u][i]||p[u][w][i];

while(flag)

cout<

<

"

请输入出发点和目的地的编号(用空格隔开):

;

cin>

>

k>

j;

if(k<

0||k>

vexnum||j<

0||j>

vexnum)//判断输入的景点编号正确与否

景点编号不存在!

请重新输入出发点和目的地的编号:

if(k>

=0&

&

k<

vexnum&

j>

j<

vexnum)

flag=0;

cout<

vexs[k].name;

//输出景点名称

if(p[k][j][u]&

k!

=u&

j!

=u)//输出路线

-->

vexs[u].name;

vexs[j].name;

总路线长"

D[k][j]<

endl;

//输出总路线长度

}

四、调试分析

(1)在程序设计中遇到了输出景点信息的表不整齐,用setw()解决了;

默认的界面太小,不能完整的看到输出信息,用了system("

modecon:

cols=100lines=40"

)命令语句设置了行数和列数。

(2)经验和体会

经过一段时间来的努力,终于初步实现系统功能,但肯定还存在不少漏洞。

这是我们第三次做课程设计,也是第三次编写一个比较完整和具有一定功能的的系统代码,第二次几个人合作制作系统,制作过程中存在储多的不足,遇到过许多的困难,曾经灰心丧气过,但是最终还是坚持了下来,虽然做得不怎么样,但我们已经努力地去做了,由于基础也不怎么扎实,所以困难会比其它组更多更艰巨。

刚开始做系统缺乏全局观念,分工也不是很合理,做得很零碎,所以在组合的时候也出现了很多问题。

五、使用说明和测试结果

打开系统,首先会进入系统的主菜单:

1.浏览各景点及简介

2.查看所有游览路线

3.选择出发点和目的地

4.查看景点信息

5.退出系统

用户可以进行如下操作:

1、如果你想浏览各景点及简介的话,请输入“1”,并回车。

此时界面上将显示出各景点的编号、名称及其简介。

2、如果你想查看某一景点的所有游览路线,可选择2操作。

输入“2”,并回车。

此时,系统会提示你输入某景点的编号。

输入编号后,回车,便可以看到该景点的所有游览路线。

若输入的景点编号错误就会有提示重新输入。

3、如果你想查看两个景点之间的最短路线的,可选择3操作。

输入“3”,并回车。

此时,系统会提示你要输入起始景点与终点的编号。

输入编号后,回车,此时,便可以见到这两个景点之间的最短路径。

4、如果你想查看具体某些景点的简介及信息,可以选择4操作。

输入“4”,并回车。

此时,系统会提示全部景点的对应的编号,选择你要查看的景点信息,输入其编号,回车,此时,屏幕上将会显示出该景点的各种信息。

5、在主菜单键入“5”,退出程序。

测试结果

1、菜单界面

2、进入“浏览各景点及简介”后,输出景点信息的界面。

3、进入“查看所有游览路线”,显示输出景点编号为0的景点到其余九个景点的最佳路线。

4、进入“选择出发点和目的地”,输入出发点1和目的点9后输出的的最佳路线的界面。

5、进入“查看景点信息”,输入要查看的景点编号,输出景点信息的界面。

6、输入要查询的景点编号错误,提示重新输入。

7、退出程序界面。

六、心得体会

做一个系统之前还应该做好全面的安排,对一个系统的整个流程及功能实现有一个很好的统筹,几个人合作的功能可拆才拆,不可则由一个人主要负责,其它人帮忙思考,出意见,做系统之前几个人必须先做对系统做一次较详细的探讨研究,然后才开始分工,一个阶段后组员应互相交流情况,以达到一致。

另在遇到困难时组员不能解决,应查资料或问其它懂的同学,参考一下意见,再结合自己的想法,最后实现自己想实现的功能。

七、附录

#defineINFINITY10000/*无穷大*/

#defineMAX_VERTEX_NUM40

#defineMAX40

#include<

stdlib.h>

string.h>

iostream>

usingnamespacestd;

iomanip>

typedefstructArCell

intadj;

//路径长度

}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedefstruct//图中顶点表示主要景点,存放景点的编号、名称、简介等信息,

charname[30];

intnum;

charintroduction[100];

//简介

}infotype;

typedefstruct

infotypevexs[MAX_VERTEX_NUM];

AdjMatrixarcs;

intvexnum,arcnum;

MGraph;

MGraphb;

MGraphInitGraph(void);

voidMenu(void);

voidBrowser(MGraph*G);

voidShortestPath_DIJ(MGraph*G);

voidFloyd(MGraph*G);

voidSearch(MGraph*G);

/***********************主函数*******************************/

voidmain(void)

system("

color1f"

);

inti;

b=InitGraph();

Menu();

i;

while(i!

=5)

switch(i)

case1:

system("

cls"

Browser(&

b);

Menu();

break;

case2:

ShortestPath_DIJ(&

case3:

Floyd(&

case4:

Search(&

case5:

exit

(1);

default:

/*************************************************************/

/*************************定义景点编号,名称及简介************/

MGraphInitGraph(void)

MGraphG;

inti,j;

G.vexnum=10;

//十个景点

G.arcnum=14;

//邻接矩阵

for(i=0;

G.vexnum;

G.vexs[i].num=i;

//各景点的代码,名称及简介

strcpy(G.vexs[0].name,"

前门"

strcpy(G.vexs[0].introduction,"

面南.对面为北京外国专家大厦"

strcpy(G.vexs[1].name,"

图书馆"

strcpy(G.vexs[1].introduction,"

藏书几十万册,设施良好,一二楼均有阅览室"

strcpy(G.vexs[2].name,"

教二楼"

strcpy(G.vexs[2].introduction,"

学校的主要教学楼,共六层,有多个专业实验"

strcpy(G.vexs[3].name,"

实验楼"

strcpy(G.vexs[3].introduction,"

紧邻教二楼,共七层,主要为公共实验室,六层有通宵自习室"

strcpy(G.vexs[4].name,"

操场"

strcpy(G.vexs[4].introduction,"

全新塑胶跑道,中间为人工草皮足球场,排球场和篮球场"

strcpy(G.vexs[5].name,"

教一楼"

strcpy(G.vexs[5].introduction,"

学校各机关单位办公楼和双语教室"

strcpy(G.vexs[6].name,"

食堂"

strcpy(G.vexs[6].introduction,"

标准食堂,两层,清洁卫生"

strcpy(G.vexs[7].name,"

水房"

strcpy(G.vexs[7].introduction,"

配备自动刷卡系统"

strcpy(G.vexs[8].name,"

学一公寓"

strcpy(G.vexs[8].introduction,"

光电通信学院男生公寓"

strcpy(G.vexs[9].name,"

学二公寓"

strcpy(G.vexs[9].introduction,"

女生公寓"

strcpy(G.vexs[10].name,"

学三公寓"

strcpy(G.vexs[10].introduction,"

计算机学院男生公寓"

strcpy(G.vexs[11].name,"

学四公寓"

strcpy(G.vexs[11].introduction,"

大一新生公寓"

strcpy(G.vexs[12].name,"

后门"

strcpy(G.vexs[12].introduction,"

面北,对面有便利的小超市"

for(j=0;

j++)

G.arcs[i][j].adj=INFINITY;

//各景点之间的距离,没有的均为无穷大

G.arcs[0][1].adj=50;

G.arcs[0][2].adj=100;

G.arcs[1][5].adj=20;

G.arcs[1][6].adj=75;

G.arcs[2][3].adj=10;

G.arcs[2][5].adj=60;

G.arcs[3][4].adj=20;

G.arcs[4][11].adj=30;

G.arcs[5][6].adj=30;

G.arcs[6][7].adj=10;

G.arcs[7][8].adj=20;

G.arcs[8][9].adj=10;

G.arcs[9][10].adj=20;

G.arcs[10][12].adj=120;

G.arcs[11][12].adj=150;

G.arcs[j][i].adj=G.arcs[i][j].adj;

returnG;

/*******************************************************************************************/

/********************************主菜单(显示输入提示)****************************************/

voidMenu()

{

北京信息科技大学大学导游图"

┏━━━━━━━━━━━━━━━━━━━━┓"

┃1.浏览各景点及简介┃"

┃2.查看所有游览路线┃"

┃3.选择出发点和目的地┃"

┃4.查看景点信息┃"

┃5.退出系统┃"

┗━━━━━━━━━━━━━━━━━━━━┛"

Option-:

/************************************显示景点编号、名称、简介****************************************/

voidBrowser(MGraph*G)

intv;

┏━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"

┃编号┃景点名称┃简介┃"

┃"

vexs[v].num<

setw(5)<

vexs[v].name<

setw(10)<

vexs[v].introduction<

setw(3)<

┗━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"

/********************迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点***********************/

voidShortestPath_DIJ(MGraph*G)

intv,w,i,min,t=0,x,flag=1,v0;

intfinal[20],D[20],p[20][20];

while(flag)

请输入一个起始景点编号:

v0;

if(v0<

0||v0>

请重新输入景点编号:

if(v0>

v0<

final[v]=0;

D[v]=G->

arcs[v0][v].adj;

for(w=0;

p[v][w]=0;

if(D[v]<

p[v][v0]=1;

p[v][v]=1;

D[v0]=0;

final[v0]=1;

for(i=1;

min=INFINITY;

if(!

final[w])

if(D[w]<

min){v=w;

min=D[w];

final[v]=1;

final[w]&

(min+G->

arcs[v][w].adj<

D[w]))

D[w]=min+G->

for(x=0;

x<

x++)

p[w][x]=p[v][x];

p[w][w]=1;

if(v0!

=v)cout<

vexs[v0].name;

if(p[v][w]&

w!

=v0)cout<

vexs[w].name;

t++;

if(t>

vexnum-1&

v0!

D[v]<

/*********************************Floyd函数***************************************/

intv,u,i,w,k,j,flag=1,p[10][10][10],D[10][10];

for(u=0;

if(D[v][w]<

if(D[v][u]+D[u][w]<

if(k<

if(k>

if(p[k][j][u]&

=u)

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

当前位置:首页 > 外语学习 > 韩语学习

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

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