校园导游系统课程设计报告.docx

上传人:b****2 文档编号:2202559 上传时间:2022-10-27 格式:DOCX 页数:13 大小:126.93KB
下载 相关 举报
校园导游系统课程设计报告.docx_第1页
第1页 / 共13页
校园导游系统课程设计报告.docx_第2页
第2页 / 共13页
校园导游系统课程设计报告.docx_第3页
第3页 / 共13页
校园导游系统课程设计报告.docx_第4页
第4页 / 共13页
校园导游系统课程设计报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

校园导游系统课程设计报告.docx

《校园导游系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《校园导游系统课程设计报告.docx(13页珍藏版)》请在冰豆网上搜索。

校园导游系统课程设计报告.docx

校园导游系统课程设计报告

1、需求分析

设计一个校园导游系统程序,为来访的客人提供各种服务的信息查询。

(1).设计潍坊学院校园平面图,所含的景点不少于10个。

以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

(2).为来访客人提供图中任意景点相关信息的查询。

(3).为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。

2、算法设计

2.1概要设计

2.1.1函数定义的变量

/*定义符号常量*/

#defineINT_MAX10000

#definen10

/*定义全局变量*/

intcost[n][n];/*边的值*/

intshortest[n][n];/*两点间的最短距离*/

intpath[n][n];/*经过的景点*/

2.1.2程序中包含的模块

(1)主程序模块

voidmain()/*主函数*/

打印菜单,景点,景点信息

定义景点之间的权值

(2)查询模块

景点信息查询:

voidintroduce()/*景点介绍*/

最短路径查询:

intshortestdistance()/*要查找的两景点的最短距离*/

voidfloyed()/*用floyed算法求两个景点的最短路径*/

(3)打印模块

打印最短路径:

voiddisplay(inti,intj)/*打印两个景点的路径及最短距离*/

2.1.3模块间的调用关系

2.2详细设计

#include

#include

/*定义符号常量*/

#defineINT_MAX10000

#definen10

/*定义全局变量*/

intcost[n][n];/*边的值*/

intshortest[n][n];/*两点间的最短距离*/

intpath[n][n];/*经过的景点*/

/*自定义函数说明*/

voidintroduce();

intshortestdistance();

voidfloyed();

voiddisplay(inti,intj);

voidmain()

{

inti,j;

chark;

for(i=0;i<=n;i++)

for(j=0;j<=n;j++)

cost[i][j]=INT_MAX;

cost[1][7]=cost[7][1]=200;

cost[1][4]=cost[4][1]=200;

cost[4][7]=cost[7][4]=300;

cost[2][7]=cost[7][2]=400;

cost[4][10]=cost[10][4]=100;

cost[4][9]=cost[9][4]=150;

cost[4][8]=cost[8][4]=200;

cost[10][5]=cost[5][10]=50;

cost[10][9]=cost[9][10]=150;

cost[2][8]=cost[8][2]=50;

cost[2][3]=cost[3][2]=100;

cost[6][5]=cost[5][6]=150;

cost[5][9]=cost[9][5]=150;

cost[9][8]=cost[8][9]=50;

cost[8][3]=cost[3][8]=150;

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("‖〓〓〓〓〓〓〓★欢迎使用潍坊学院导游系统!

★〓〓〓〓〓〓〓‖");

printf("‖‖");

printf("‖1.景点信息查询———————请按〖introduc〗键‖");printf("‖‖");

printf("‖2.景点最短路径查询—————请按s〖shortestdistance〗键‖");printf("‖‖");

printf("‖3.退出系统—————————请按e〖exit〗键‖");printf("‖‖");

printf("‖学校景点列表:

‖");printf("‖‖");

printf("‖1:

学校南门2:

操场3:

体育馆4:

行政楼5:

一号宿舍‖");printf("‖‖");printf("‖6:

二号餐厅7:

天一教学楼8:

洪德湖9:

图书馆10:

一号餐厅‖");printf("‖‖");

printf("‖〓〓〓〓〓〓★欢迎使用潍坊学院导游系统!

★〓〓〓〓〓〓〓‖\n");

printf("\n【请选择服务】:

");

scanf("\n%c",&k);

switch(k)

{

case'i':

printf("进入景点信息查询:

");

introduce();

break;

case's':

printf("进入最短路径查询:

");

shortestdistance();

break;

case'e':

exit(0);

default:

printf("输入信息错误!

\n请输入字母i或s或e.\n");

break;

}

}

}

voidintroduce()/*景点介绍*/

{

inta;

printf("请输入您想查询的景点的编号:

");

scanf("%d",&a);

getchar();

printf("\n");

switch(a)

{

case1:

printf("1:

学校南门\n  学校的正门,坐落于东风街上,气势庄严,宏伟。

\n\n");break;

case2:

printf("2:

操场\n  学生上体育课及运动的场地,设有田径场、足球场、篮球场等。

\n\n");break;

case3:

printf("3:

体育馆\n  曾作为全运会的比赛场地,气势宏伟。

\n\n");break;

case4:

printf("4:

行政楼\n  学校的行政办公楼,位于学校中心位置。

\n\n");break;

case5:

printf("5:

一号宿舍\n  条件最好的学生宿舍,冬凉夏暖,绝对通风,漏光。

\n\n");break;

case6:

printf("6:

二号餐厅\n  学校最大的餐厅。

\n\n");break;

case7:

printf("7:

天一教学楼\n  学校主要教学楼之一。

\n\n");break;

case8:

printf("8:

洪德湖\n  学校的花园,设有喷泉,假山。

\n\n");break;

case9:

printf("9:

图书馆\n  学校信息资源中心,内设大量的自习室。

\n\n");break;

case10:

printf("10:

一号餐厅\n  学校第二大餐厅。

\n\n");break;

default:

printf("景点编号输入错误!

请输入1->10的数字编号!

\n\n");break;

}

}/*introduce*/

intshortestdistance()/*要查找的两景点的最短距离*/

{

inti,j;

printf("请输入要查询的两个景点的编号(1->10的数字编号并用','间隔):

");

scanf("%d,%d",&i,&j);

if(i>n||i<=0||j>n||j<0)

{

printf("输入信息错误!

\n\n");

printf("  请输入要查询的两个景点的编号(1->10的数字编号并用','间隔):

\n");

scanf("%d,%d",&i,&j);

}

else

{

floyed();

display(i,j);

}

return1;

}/*shortestdistance*/

voidfloyed()/*用floyed算法求两个景点的最短路径*/

{

inti,j,k;

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{

shortest[i][j]=cost[i][j];

path[i][j]=0;

}

for(k=1;k<=n;k++)

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

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;

}

}/*floyed*/

voiddisplay(inti,intj)/*打印两个景点的路径及最短距离*/

{

inta,b;

a=i;

b=j;

printf("您要查询的两景点间最短路径是:

\n\n");

if(shortest[i][j]!

=INT_MAX)

{

if(i

{

printf("%d",b);

while(path[i][j]!

=0)

{/*把i到j的路径上所有经过的景点按逆序打印出来*/

printf("<-%d",path[i][j]);

if(i

j=path[i][j];

else

i=path[j][i];

}

printf("<-%d",a);

printf("\n\n");

printf("(%d->%d)最短距离是:

%d米\n\n",a,b,shortest[a][b]);

}

else

{

printf("%d",a);

while(path[i][j]!

=0)

{/*把i到j的路径上所有经过的景点按顺序打印出来*/

printf("->%d",path[i][j]);

if(i

j=path[i][j];

else

i=path[j][i];

}

printf("->%d",b);

printf("\n\n");

printf("(%d->%d)最短距离是:

%5d米\n\n",a,b,shortest[a][b]);

}

}

else

printf("输入错误!

不存在此路!

\n\n");

printf("\n");

}/*display*/

 

3测试结果

3.1主程序界面

根据图中提示选择要执行的操作

图1主界面

3.2输入错误

输入i,s,e来完成相应的操作,如果输入有误,系统将显示错误信息,请重新输入。

3.3景点信息的查询

输入你要查询的景点名称:

通过调用函数voidintroduce()来查询景点信息。

如果输入的景点不存在,系统会提示你输入错误,请重新输入。

图2信息查询界面

输入编号存在,则系统显示要查询的景点信息。

 

3.4最短路径查询

输入你所在的景

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

当前位置:首页 > 总结汇报 > 实习总结

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

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