校园导航实验报告.docx

上传人:b****8 文档编号:9878984 上传时间:2023-02-07 格式:DOCX 页数:11 大小:58.54KB
下载 相关 举报
校园导航实验报告.docx_第1页
第1页 / 共11页
校园导航实验报告.docx_第2页
第2页 / 共11页
校园导航实验报告.docx_第3页
第3页 / 共11页
校园导航实验报告.docx_第4页
第4页 / 共11页
校园导航实验报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

校园导航实验报告.docx

《校园导航实验报告.docx》由会员分享,可在线阅读,更多相关《校园导航实验报告.docx(11页珍藏版)》请在冰豆网上搜索。

校园导航实验报告.docx

校园导航实验报告

计算机工程学院

课程设计报告

课程名称:

数据结构课程设计

 

设计题目:

校园导航问题

院系:

计算机工程学院

专业:

计算机科学与技术

组别:

学生姓名:

学号:

起止日期:

2011年12月26日~2012年1月3日

指导教师:

目录

1需求分析1

2.1课程设计(实践周)题目1

2.2课程设计(实践周)任务及要求1

2.3课程设计(实践周)思想1

2.4软硬件运行环境开发工具1

2概要设计1

2.1本课题设计所用数据结构1

2.2本课题主要设计思想2

3代码设计2

4调试与操作说明8

5总结8

6致谢8

7参考文献8

8指导老师评语9

1需求分析

1.1课程设计(实践周)题目

设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同。

找出从任意场所到达另一场所的最佳路径(最短路径)。

本课题实现校园多个场所(至少10个)的最短路径的求解。

1.2课程设计(实践周)任务及要求

设计要求:

主要的功能有:

1)景点显示(显示景点的编号、名称以及简介)

2)最短路径求解(求一点到所有点之间的路径及长短,求始终两点之间的路径及长短)。

3)景点查找(有选择的查找你所想了解的景点)

1.3课程设计(实践周)思想

按照题目要求,将代码分为三个结构体和三个主要函数

1.4运行环境以及开发工具

Windows2000以上操作系统

VisualC++6.0以上编译环境

2概要设计

2.1本课题设计所用数据结构

本课题主要用到的是struct类以及图论里面的迪杰斯特拉算法和弗洛伊德算法

2.2本课题主要设计思想

1)淮阴工学院景点省略图

2)结构图

3代码设计

迪杰斯特拉算法:

voidShortestPath_DIJ(MGraph*G)

{

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

intfinal[40],D[40],p[40][40];

cout<<"┏━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓"<

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

for(v=0;v<10;v++)

{

cout<<"┃"<view[v].num<view[v].name<view[v].instruction<

}

for(v=10;vvexnum;v++)

{

cout<<"┃"<view[v].num<view[v].name<view[v].instruction<

}

cout<<"┗━━┻━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━┛"<

while(flag==1)

{

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

";

cin>>v0;

if(v0<0||v0>G->vexnum)

{

cout<<"景点编号不存在!

请重新输入景点编号:

";

cin>>v0;

}

if(v0>=0&&v0vexnum)

{

flag=0;

}

}

for(v=0;vvexnum;v++){

final[v]=0;

D[v]=G->l[v0][v].d;

for(w=0;wvexnum;w++)

{

p[v][w]=0;

}

if(D[v]

{

p[v][v0]=1;p[v][v]=1;

}

}

D[v0]=0;final[v0]=1;

for(i=1;ivexnum;i++)

{

min=INFINITY;

for(w=0;wvexnum;w++)

{

if(!

final[w])

{

if(D[w]

v=w;

min=D[w];

}

}

}

final[v]=1;

}

for(w=0;wvexnum;w++)

{

if(final[w]!

=0&&(min+G->l[v][w].d

{

D[w]=min+G->l[v][w].d;

for(x=0;xvexnum;x++)

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

p[w][w]=1;

}

}

for(v=0;vvexnum;v++)

{

if(v0!

=v)

{

cout<view[v0].name;

}

for(w=0;wvexnum;w++)

{

if(p[v][w]==1&&w!

=v0)

{

cout<<"-->"<view[w].name;

}

t++;

}

if(t>G->vexnum-1&&v0!

=v)

{

cout<<"总路线长"<

}

}

}

弗洛伊德算法:

voidFloyd(MGraph*G)

{

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

cout<<"┏━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓"<

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

for(v=0;v<10;v++)

cout<<"┃"<view[v].num<view[v].name<view[v].instruction<

for(v=10;vvexnum;v++)

cout<<"┃"<view[v].num<view[v].name<view[v].instruction<

cout<<"┗━━┻━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━┛"<

for(v=0;vvexnum;v++)

{

for(w=0;wvexnum;w++)

{

D[v][w]=G->l[v][w].d;

for(u=0;uvexnum;u++)

{

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

}

if(D[v][w]

{

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

}

}

}

for(u=0;uvexnum;u++)

{

for(v=0;vvexnum;v++)

{

for(w=0;wvexnum;w++)

{

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

{

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

for(i=0;ivexnum;i++)

{

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

}

}

}

}

}

while(flag==1)

{

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

";

cin>>k>>j;

if(k<0||k>G->vexnum)

{

cout<<"景点编号不存在!

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

";

cin>>k>>j;

}

if(k>=0&&kvexnum)

flag=0;

}

cout<view[k].name;

for(u=0;uvexnum;u++)

{

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

=u&&j!

=u)

{

cout<<"-->"<view[u].name;

}

}

cout<<"-->"<view[j].name;

cout<<"总路线长"<

}

4调试与操作说明

调试过程中不存在问题。

操作包括如下几个步骤:

程序刚运行时跳出的功能主菜单;

输入选项1后,会跳出所有景点的序列号,名称以及简介并循环主菜单功能图

输入选项2后,会跳出查询所有路线功能的起始界面,会让你输入你所在的起点所能到达的所有地方

输入选项3后,会跳出让你选择起始点和出发点的功能的起始界面,让你输入起始点和出发点

输入选项4后,会跳出景点的名称与序号对应列表,并让你输入你所想了解的景点信息

总结

这次课程设计的成功,不单单是解决的课程设计这问题,更多的是掌握了许多宝贵的实践经验,这才是学习最重要的一部分。

致谢

谢谢所有在这次课程设计中帮助过我、协助过我的老师和朋友,谢谢。

参考文献

1、吴乃陵,况迎辉《C++程序设计(第2版)》高等教育出版社2006

2、BruceEckel《C++编程思想》机械工业出版社2000

指导教师评语:

 

指导教师签名:

年月日

成绩评定

项目

权重

成绩

1、设计过程中出勤、学习态度等方面

0.2

2、课程设计(实践周)质量与答辩

0.5

3、设计报告书写及图纸规范程度

0.3

总成绩

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

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

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

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