校园导游系统程序课程设计 报告Word文档下载推荐.docx
- 文档编号:8584182
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:12
- 大小:93.41KB
校园导游系统程序课程设计 报告Word文档下载推荐.docx
《校园导游系统程序课程设计 报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《校园导游系统程序课程设计 报告Word文档下载推荐.docx(12页珍藏版)》请在冰点文库上搜索。
计算路径长度和最短路线时可用弗洛伊德(Floyd)算法实现。
最后用switch选择语句选择执行浏览景点信息或查询最短路径。
3算法设计
3.1概要设计
3.1.1程序中包含的模块
(1)主程序模块
主函数:
voidmain()
打印菜单,景点,景点信息
(2)查询模块
景点信息查询:
voidintroduce()
最短路径查询:
要查找的两景点的最短距离:
intshortestdistance()
用floyd算法求两个景点的最短路径:
voidfloyd()
(3)打印模块
打印两个景点的路径及最短距离:
voiddisplay(inti,intj)
3.1.2模块间的调用关系
主函数main()调用:
voidintroduce()/*景点介绍*/
intshortestdistance()/*要查找的两景点的最短距离*/
shorestdistance()调用:
voidfloyd()/*用floyd算法求两个景点的最短路径*/
voiddisplay(inti,intj)/*打印两个景点的路径及最短距离*/
3.2详细设计
/*定义符号变量/*
#defineINT_MAX10000
#definen10
/*定义全局变量*/
intcost[n][n];
/*边的值*/
intshortest[n][n];
/*两点间的最短距离*/
intpath[n][n];
/*经过的景点*/
stringM[100];
/*景点名称*/
stringJ[100];
/*景点介绍*/
/*自定义函数原型说明*/
voidintroduce();
intshortestdistance();
voidfloyd();
voiddisplay(inti,intj);
定义各顶点之间的距离:
for(i=0;
i<
=n;
i++)
for(j=0;
j<
j++)
cost[i][j]=INT_MAX;
cost[1][2]=cost[2][1]=3;
cost[2][3]=cost[3][2]=1;
cost[3][4]=cost[4][3]=2;
cost[4][5]=cost[5][4]=1;
cost[5][6]=cost[6][5]=1;
cost[3][6]=cost[6][3]=2;
cost[1][4]=cost[4][1]=5;
cost[1][7]=cost[7][1]=7;
cost[4][7]=cost[7][4]=1;
cost[7][5]=cost[5][7]=1;
cost[7][8]=cost[8][7]=2;
cost[8][9]=cost[9][8]=1;
cost[5][9]=cost[9][5]=2;
cost[8][5]=cost[5][8]=2;
cost[8][10]=cost[10][8]=1;
cost[1][1]=cost[2][2]=cost[3][3]=cost[4][4]=cost[5][5]=0;
cost[6][6]=cost[7][7]=cost[8][8]=cost[9][9]=cost[10][10]=0;
界面菜单设计:
while
(1)
{
printf("
-------------------欢迎使用校园导游系统!
-------------------\n"
);
printf("
欢迎来到潍坊学院!
祝您旅途愉快!
\n"
菜单选择\n"
1.景点信息查询\n"
2.景点最短路径查询\n"
3.退出系统\n\n"
学校景点列表(以下是您可能要去的地方):
\n"
1:
潍坊学院大门"
2:
行政楼"
3:
餐厅"
4:
实验楼"
5:
图书馆\n"
6:
商业区"
7:
教学楼"
8:
篮球场"
9:
体育馆"
10:
弘德湖\n"
-----------------------------------------------------------\n"
请选择服务:
"
scanf("
\n%c"
&
k);
switch(k)
case'
1'
:
进入景点信息查询:
introduce();
break;
2'
进入最短路径查询:
shortestdistance();
3'
谢谢使用本系统!
exit(0);
default:
输入信息错误!
\n请输入字母1或2或3.\n"
}
}
介绍景点:
{
inta;
您想查询哪个景点的详细信息?
\n请输入景点编号:
%d"
a);
getchar();
switch(a)
{
case1:
学校大门\n\n 学校的正门,气势宏伟。
\n\n"
break;
case2:
行政楼\n\n 学校的行政中心。
case3:
餐厅\n\n 很贵,很难吃,很不实惠。
case4:
实验楼\n\n 计算机机房及各种实验设施。
case5:
图书馆\n\n 学校信息资源中心。
case6:
商业区\n\n 生活必需品,学习用品的天地。
case7:
教学楼\n\n 全校学生公共教学楼。
case8:
篮球场\n\n 篮球健儿的摇篮。
case9:
体育馆\n\n 为全运会而建,平时不让进。
\n\n\n"
case10:
弘德湖\n\n 美丽校园的缩影,游校园必去之地。
景点编号输入错误!
\n请输入1->
10的数字编号!
}
要查找的两个景点的最短距离:
inti,j;
请输入要查询的两个景点的编号(1->
10的数字编号并用'
'
间隔):
%d,%d"
i,&
j);
if(i>
n||i<
=0||j>
n||j<
0)
请输入要查询的两个景点的编号(1->
floyd();
display(i,j);
else
return1;
inti,j,k;
for(i=1;
i++)
for(j=1;
j++)
shortest[i][j]=cost[i][j];
path[i][j]=0;
for(k=1;
k<
k++)
if(shortest[i][j]>
(shortest[i][k]+shortest[k][j]))
/*用path[][]记录从i到j的最短路径上点j的前驱景点的序号*/
shortest[i][j]=shortest[i][k]+shortest[k][j];
path[i][j]=k;
path[j][i]=k;
/*打印两个景点的路径及最短距离*/
inta,b;
a=i;
b=j;
您要查询的两景点间最短路径是:
if(shortest[i][j]!
=INT_MAX)
if(i<
j)
b);
while(path[i][j]!
=0)
/*把i到j的路径上所有经过的景点按逆序打印出来*/
<
-%d"
path[i][j]);
j=path[i][j];
else
i=path[j][i];
a);
(%d->
%d)最短距离是:
%d百米\n\n"
a,b,shortest[a][b]);
/*把i到j的路径上所有经过的景点按顺序打印出来*/
->
输入错误!
不存在此路!
4测试分析
4.1主程序界面
图1.主程序界面
4.2景点信息的查询
图2.景点信息的查询
4.3最短路径查询
图3.景点最短路径查询
5总结
经过近两周的课程设计,总的来说收获还是很大的!
首先代码能力明显提高,有了想法基本都能顺利表达出来;
再者就是数据结构的选择使用能力也有了很大的提高!
虽说平时的试验课我们也有用各种数据做题,但那些都是很明确的知道该做什么操作,存什么,我们的发挥空间不大一般照做就行,然而这次实习我们却在自主的选择判断,这本身就是一个很大的提高!
还有就是算法方面的学习有了初步进阶,如最短路径,这样比较简单的图论算法能比较熟练的写出来。
但是还是有很多的只是不了解!
收获真的很多,但是最大的收获可能就是对编程的兴趣吧,在一次次的改错,一次次的完成想要的效果后,越写越有感觉!
当然还收获了无知,更确切的说是自知,原来我们现在什么也不算,还有很多有用的只是等着我们去学习!
6参考文献
【1】蔡明志,《数据结构---用C语言描述》,中国水利水电出版社
【2】李春葆,喻丹丹,《数据结构习题与解析》,清华大学出版社
【3】邓文华,戴大蒙,《数据结构试验与实训教程》,清华大学出版社
7附录
文件名清单:
liuhaijiang.cpp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 校园导游系统程序 课程设计 报告 校园 导游 系统 程序
![提示](https://static.bingdoc.com/images/bang_tan.gif)