校园导游咨询课程设计

校园导游咨询课程设计
校园导游咨询课程设计

《应用程序设计

课程设计》报告

校园导游系统

班级:计Z1002班

学号:2010001419

姓名:张龙

指导教师:王华孟亮杨永强

成绩评定:

太原理工大学校园导游咨询

目录

一、设计方案简介 (01)

二、设计题目实现 (01)

1)需求分析 (01)

2)概要设计 (01)

3)详细设计 (02)

4)测试分析 (04)

5)使用说明 (06)

6)测试结果 (06)

三、设计附录部分 (08)

1)参考资料 (08)

2)源程序 (08)

2012年01 月

一、设计方案简介:

值此太原理工大学110周年校庆之际,做一个为来访游客介绍校园参观的小应用程序。不仅能方便游客,熟悉校园环境,更快的了解我们学校。还能检验一下我们所学理论,将所学的知识运用于实际生活。一举两得之余,也是一段知识的升华之路。

该导游系统能为来访者提供包括景点介绍、景点查询、仿真地图、最短路径之类的快捷指导。所谓系统,也不尽然,只是一个小小的信息提示。其中主要运用到的程序、算法也较简单。

二、设计题目实现:

1)需求分析

①从太原理工大学迎西校区的平面图中选取16个有代表性的景点,抽象成一个无向

带权图,以图中顶点表示景点,边上的权表示两地的之间的距离。

②本程序的目的是为用户提供路径查询。根据用户指定的始点和终点输出相应路径,

或者根据用户指定的景点输出景点的信息。

③程序中用到的校园平面图可以用制表符绘制出来,虽然过程繁琐,但在DOS环境

中显示的效果还是不错的,故用之可行。

④测试数据:(附后)。

2)概要设计

1.抽象数据类型图的定义如下:

ADT Graph{

数据对象View:View是具有相同特性的数据元素的集合,称为顶点集。

数据关系MGr:

MGr.View[]

MGr.length={(i,j)|i,j∈View,(i,j)表示i和j之间存在路径。}

基本操作:

2012年01 月

此程序不涉及诸如创建图、销毁图等;

2.主程序:

int main()

{

初始化;

while()

{

接受命令;

处理命令;

退出;

3.程序模块:

3)详细设计

1. 顶点、边、和图类型:

#define MaxViewNum 50 //景点个数最大值

#define MaxRoad 1000 //定义路径无穷大

#define N 16 //目前景点个数

typedef struct

{

char name; //景点名称

char number; //景点代号

char introduce; //景点介绍

}Elemtype;

2012年01 月

typedef struct

{

int num; //景点编号

Elemtype date; //景点信息

}View; //定义景点

typedef struct

{

View view[MaxViewNum];//

unsigned int length[MaxViewNum][MaxViewNum];//

int m,n;

}MGraph;

2. 基本操作:

void init(GraphType &MGr.view,int i j)

//景点信息函数,初始化各个景点信息数据;

void introduce(GraphType &MGraph.view,int m)

//查询景点介绍函数,若m存在,则返回景点编号所在信息,并返回TRUE //否则返回FALSE;

void floyd(GraphType &MGr.view,int i,j,k)

//弗洛伊德算法,求两景点最短距离;

void display(GraphType &MGr.view,int a b)

//输出两景点路径及最短路径;

int shortdistance(GraphType &MGr.view,int i j)

//计算两景点最短路径函数;

void map(GraphType &MGr.view)

//景点平面图函数;

4.函数调用模块:

2012年01 月

4)测试分析

①本程序参考西安邮电学院校园导游咨询系统编写而成,其中的景点编号设计,弗洛伊德算法部分,平面图绘制均亲自完成。期间或自我摸索,或查找资料,或请教同学,最终实现了该系统的DOS环境实现。编程过程不断出现各种BUG,均能设法将其化解,算是在实践中学得编译运行调试指法。

以下是编写过程中出现过的几个较大漏洞,直接导致程序的BUG,在此记录下来作为之后自省。

a.scanf中缺少“取地址符”,输入不起作用;

b.在命令2完成之后,显示多出来主函数中“选择命令”。自己试图更正无果之后

询问同学,建议添加fflush(stdin)语句,终于显示无错;

c.源程序所给的“求最短路径”算法错误,参照课本弗洛伊德算法之后写出本程序

所用的算法,值得肯定;

d.调用display函数时错误,经过同学指点,删掉五句冗余代码,程序成功运行。

②书上介绍的迪杰斯特拉算法时间复杂度要比弗洛伊德算法低,但每求一次最短路径都必须重新搜索一遍,频繁查找时会导致效率降低。而弗洛伊德算法只需计算一次,即可求得每一对顶点之间的最短效率,虽然时间复杂度为O(n3),但以后每次查询只要查表即可,极大提高了效率。

③本次程序设计是对全学期数据结构课程学习的一次实践,通过亲自编写编译调试程序,逐步掌握了编程方法。也说明了一个深刻道理,知识只有在实践中才能充分理解并运用。从传统的被动接受变为主动探索,起初不是很适应,什么也不懂,茫然无措。渐渐地开始自己编写时候,发现了其中之乐趣。我相信,这样的学习坚持到底,必将有所成就。

2012年01 月

设计过程需要查找各种资料,在百度等搜索工具的帮助下,找到想要的资源。但并非原版照抄,在自己理解的基础上参照方法写出属于自己的程序。虽然过程中出现多次程序报错,在同学的指导和帮助下顺利完成,值得为之欣喜。

其中编程过程中显露出来的问题也必须引起高度重视,在今后的学习中必当万分注意绝不再犯。比如细心问题,有次的一个小小的“取地址符”没有添加,导致整个程序无法运行,检查了好久才发现。所以说,编程是个细活,只有严谨的态度,细心的思路以及良好的学习习惯,最终才能收获成功的喜悦。

最后感谢在编程过程中给予充分帮助的老师和同学们,这又使我认识到团队力量的强大作用。加强团队协作也是今后程序设计道路上的必备能力。

5)使用说明

1.本程序的运行环境为DOS操作环境,执行文件为:schoolguide.exe;

2.进入演示程序之后如下图所示:

3.之后可选择按键1、2、3选择各项目,分别进入景点介绍、路径查询、全景地图等项目。

6)测试结果

1. 操作命令“1”,进入“景点信息查询”模块,任意选择1-16各景点编号输入。

此处选择景点9作为测试对象,其结果如下图所示:

2012年01 月

2. 操作命令“2”,进入“景点最短路径查询”模块,任意选择1-16中两个景点编

号输入。此处选择景点7-9作为测试对象,其输出如下图所示:

3. 操作命令“3”,输出校园中各景点的平面图,如下:

4. 选择命令“4”,输出如图:

2012年01 月

附录一:参考资料

1.太原理工大学卓越专业应用程序课程设计指导书;

2.百度文库《校园导游设计算法应用》;

3.道客巴巴《西安邮电学院导游设计》源代码;

4.数据结构题集实习报告示例《

5.5:校园导游咨询》;

5.数据结构(C语言版)课本《佛洛依德算法》;

附录二:源程序

#include

#include

#include

#define MaxViewNum 50 /*景点个数最大50*/

#define MaxRoad 1000 /*定义路径为无穷大*/

#define N 16 /*目前景点个数*/

typedef struct

{

char name[30]; /*景点名称*/

char number[10]; /*景点代号*/

char introduce[200]; /*景点介绍*/

}Elemtype;

typedef struct

{

int num; /*景点编号*/

Elemtype date; /*景点信息*/

}View; /*定义景点*/

typedef struct

{

View view[MaxViewNum]; /*存放顶点的一维数组,数组第零单元没有用上*/ unsigned int length[MaxViewNum][MaxViewNum]; /*存放路径长度*/

int m,n;

}MGraph;

2012年01 月

MGraph MGr; /*全局变量,定义MGr为MGraph类型*/

int shortest[MaxViewNum][MaxViewNum]; /*定义全局变量存贮最小路径*/

int path[MaxViewNum][MaxViewNum]; /*定义存贮路径*/

void init()

{

int i,j;

MGr.view[1].num=1;

strcpy(MGr.view[1]https://www.360docs.net/doc/9d8623943.html,,"学校正门");

strcpy(MGr.view[1].date.number,"001");

strcpy(MGr.view[1].date.introduce,"毗邻迎泽大街,交通便利。");

MGr.view[2].num=2;

strcpy(MGr.view[2]https://www.360docs.net/doc/9d8623943.html,,"行政楼");

strcpy(MGr.view[2].date.number,"002");

strcpy(MGr.view[2].date.introduce,"学校领导,办公主楼。");

MGr.view[3].num=3;

strcpy(MGr.view[3]https://www.360docs.net/doc/9d8623943.html,,"东配楼");

strcpy(MGr.view[3].date.number,"003");

strcpy(MGr.view[3].date.introduce,"化工学院");

MGr.view[4].num=4;

strcpy(MGr.view[4]https://www.360docs.net/doc/9d8623943.html,,"科学楼");

strcpy(MGr.view[4].date.number,"004");

strcpy(MGr.view[4].date.introduce,"科技创新,教育专线,网络节点中心。");

MGr.view[5].num=5;

strcpy(MGr.view[5]https://www.360docs.net/doc/9d8623943.html,,"电气馆");

strcpy(MGr.view[5].date.number,"005");

strcpy(MGr.view[5].date.introduce,"电气学院,百年建筑。");

MGr.view[6].num=6;

strcpy(MGr.view[6]https://www.360docs.net/doc/9d8623943.html,,"多学科喽");

strcpy(MGr.view[6].date.number,"006");

strcpy(MGr.view[6].date.introduce,"综合教学楼,土木、计算机、采矿,985、211标志性建筑。");

MGr.view[7].num=7;

strcpy(MGr.view[7]https://www.360docs.net/doc/9d8623943.html,,"迎西苑");

strcpy(MGr.view[7].date.number,"007");

2012年01 月

strcpy(MGr.view[7].date.introduce,"学生宿舍区,本科、研究生,以及教师公寓。");

MGr.view[8].num=8;

strcpy(MGr.view[8]https://www.360docs.net/doc/9d8623943.html,,"餐厅");

strcpy(MGr.view[8].date.number,"008");

strcpy(MGr.view[8].date.introduce,"清泽、智林、风味三大餐厅,周边开水房等服务场所。");

MGr.view[9].num=9;

strcpy(MGr.view[9]https://www.360docs.net/doc/9d8623943.html,,"图书馆");

strcpy(MGr.view[9].date.number,"009");

strcpy(MGr.view[9].date.introduce,"历史悠久,文化积淀。清泽园毗邻,厚重人文氛围。");

MGr.view[10].num=10;

strcpy(MGr.view[10]https://www.360docs.net/doc/9d8623943.html,,"体育馆");

strcpy(MGr.view[10].date.number,"010");

strcpy(MGr.view[10].date.introduce,"绿茵地、活动中心。篮球场、足球场、网球场依次,丰富课余生活。");

MGr.view[11].num=11;

strcpy(MGr.view[11]https://www.360docs.net/doc/9d8623943.html,,"国际交流中心");

strcpy(MGr.view[11].date.number,"011");

strcpy(MGr.view[11].date.introduce,"外国留学生、外籍教师上课活动场所。");

MGr.view[12].num=12;

strcpy(MGr.view[12]https://www.360docs.net/doc/9d8623943.html,,"教学楼");

strcpy(MGr.view[12].date.number,"012");

strcpy(MGr.view[12].date.introduce,"一号主楼、八号楼,上课、自习,教学专属。");

MGr.view[13].num=13;

strcpy(MGr.view[13]https://www.360docs.net/doc/9d8623943.html,,"中西广场");

strcpy(MGr.view[13].date.number,"013");

strcpy(MGr.view[13].date.introduce,"日晷、智林长廊,历史回忆之所");

MGr.view[14].num=14;

strcpy(MGr.view[14]https://www.360docs.net/doc/9d8623943.html,,"机械馆");

strcpy(MGr.view[14].date.number,"014");

strcpy(MGr.view[14].date.introduce,"机械工程学院,历史遗迹,文物保护单位。");

MGr.view[15].num=15;

2012年01 月

strcpy(MGr.view[15]https://www.360docs.net/doc/9d8623943.html,,"附属小学");

strcpy(MGr.view[15].date.number,"015");

strcpy(MGr.view[15].date.introduce,"太原理工子弟小学。");

MGr.view[16].num=16;

strcpy(MGr.view[16]https://www.360docs.net/doc/9d8623943.html,,"西配楼");

strcpy(MGr.view[16].date.number,"016");

strcpy(MGr.view[16].date.introduce,"材料学院。");

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

{

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

{

MGr.length[i][j]=MaxRoad;

}

}

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

{

shortest[i][j]=0;

}

MGr.length[1][2]=MGr.length[2][1]=30;

MGr.length[2][3]=MGr.length[3][2]=50;

MGr.length[3][4]=MGr.length[4][3]=60;

MGr.length[3][5]=MGr.length[5][3]=120;

MGr.length[5][6]=MGr.length[6][5]=20;

MGr.length[6][7]=MGr.length[7][6]=230;

MGr.length[6][9]=MGr.length[9][6]=50;

MGr.length[7][8]=MGr.length[8][7]=50;

MGr.length[8][9]=MGr.length[9][8]=230;

MGr.length[8][10]=MGr.length[10][8]=50;

MGr.length[9][11]=MGr.length[11][9]=50;

MGr.length[10][11]=MGr.length[11][10]=230;

MGr.length[11][12]=MGr.length[12][11]=60;

MGr.length[12][13]=MGr.length[13][12]=60;

MGr.length[13][14]=MGr.length[14][13]=60;

MGr.length[11][14]=MGr.length[14][11]=60;

MGr.length[16][14]=MGr.length[14][16]=80;

MGr.length[13][15]=MGr.length[15][13]=80;

MGr.length[2][16]=MGr.length[16][2]=50;

MGr.length[1][1]=MGr.length[2][2]=MGr.length[3][3]=MGr.length[4][4]=0; MGr.length[5][5]=MGr.length[6][6]=MGr.length[7][7]=MGr.length[8][8]=0;

2012年01 月

MGr.length[9][9]=MGr.length[10][10]=MGr.length[11][11]=MGr.length[12][12]=0;

MGr.length[13][13]=MGr.length[14][14]=MGr.length[15][15]=MGr.length[16][16]=0; }

void introduce()

{

int m;

printf("请输入查询景点编号:\n");

scanf("%d",&m); fflush(stdin);

switch(m)

{

case 1:

printf("景点编号:%s\t",MGr.view[1].date.number);

printf("景点名称:%s\n",MGr.view[1]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[1].date.introduce);

break;

case 2:

printf("景点编号:%s\t",MGr.view[2].date.number);

printf("景点名称:%s\n",MGr.view[2]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[2].date.introduce);

break;

case 3:

printf("景点编号:%s\t",MGr.view[3].date.number);

printf("景点名称:%s\n",MGr.view[3]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[3].date.introduce);

break;

case 4:

printf("景点编号:%s\t",MGr.view[4].date.number);

printf("景点名称:%s\n",MGr.view[4]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[4].date.introduce);

break;

case 5:

printf("景点编号:%s\t",MGr.view[5].date.number);

printf("景点名称:%s\n",MGr.view[5]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[5].date.introduce);

break;

case 6:

printf("景点编号:%s\t",MGr.view[6].date.number);

printf("景点名称:%s\n",MGr.view[6]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[6].date.introduce);

break;

2012年01 月

case 7:

printf("景点编号:%s\t",MGr.view[7].date.number);

printf("景点名称:%s\n",MGr.view[7]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[7].date.introduce);

break;

case 8:

printf("景点编号:%s\t",MGr.view[8].date.number);

printf("景点名称:%s\n",MGr.view[8]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[8].date.introduce);

break;

case 9:

printf("景点编号:%s\t",MGr.view[9].date.number);

printf("景点名称:%s\n",MGr.view[9]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[9].date.introduce);

break;

case 10:

printf("景点编号:%s\t",MGr.view[10].date.number);

printf("景点名称:%s\n",MGr.view[10]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[10].date.introduce);

break;

case 11:

printf("景点编号:%s\t",MGr.view[11].date.number);

printf("景点名称:%s\n",MGr.view[11]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[11].date.introduce);

break;

case 12:

printf("景点编号:%s\t",MGr.view[12].date.number);

printf("景点名称:%s\n",MGr.view[12]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[12].date.introduce);

break;

case 13:

printf("景点编号:%s\t",MGr.view[13].date.number);

printf("景点名称:%s\n",MGr.view[13]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[13].date.introduce);

break;

case 14:

printf("景点编号:%s\t",MGr.view[14].date.number);

printf("景点名称:%s\n",MGr.view[14]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[14].date.introduce);

break;

case 15:

2012年01 月

printf("景点编号:%s\t",MGr.view[15].date.number);

printf("景点名称:%s\n",MGr.view[15]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[15].date.introduce);

break;

case 16:

printf("景点编号:%s\t",MGr.view[16].date.number);

printf("景点名称:%s\n",MGr.view[16]https://www.360docs.net/doc/9d8623943.html,);

printf("景点简介:%s\n",MGr.view[16].date.introduce);

break;

default:

printf("输入序号错误。\n");

break;

}

printf("\n");

}

void floyd() /*佛洛依德算法*/

{

int i,j,k;

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

{

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

{

shortest[i][j]=MGr.length[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]))

{

shortest[i][j]=shortest[i][k]+shortest[k][j];

path[i][j]=k;

path[j][i]=k; /*记录经过的路径*/

}//end_if

}

}//end_for

2012年01 月

}

}

void display(int i,int j)

{ /*打印两个景点的路径及最短路径*/

int a,b;

a=i;

b=j;

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

fflush(stdin);

if(i

{

printf("%d",b);

while(path[i][j]!=0)

{

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

if(i

j=path[i][j];

else

i=path[j][i];

}

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

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\n\n",b);

printf("%d->%d的最短路径是:%d 米。\n\n",a,b,shortest[a][b]);

}

}/*display*/

int shortdistance()

2012年01 月

{ /*要查找的两景点的最短路径*/

int i,j;

printf("请输入要查询的两个景点的数字编号(1->16)中间用空格间隔开。\n");

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

if(i>N||i<0||j>N||j<0)

{

printf("输入信息错误!\n\n");

printf("请输入要查询的两个景点的数字编号(1->16)中间用空格间隔开。\n");

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

}

else

{

floyd();

display(i,j);

}

return 1;

fflush(stdin);

}/*shortestdistance*/

void map()

{

printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");

printf("┃FDK's 手办┃\n");

printf("┃10╳━━━━━━━━━━╳⑧━━━━━━━━━╳⑦┃\n");

printf("┃┃┃┃┃\n");

printf("┃┏━┓┃┃┃┏━┓┃\n");

printf("┃┏━━━┓┃文┃┃┃┃┃迎┃┃\n");

printf("┃┃体育馆┃┃体┃┃┏━━━┓┃┃西┃┃\n");

printf("┃┗━━━┛┃中┃┃┃餐厅┃┃┃苑┃┃\n");

printf("┃┃心┃┃┗━━━┛┃┗━┛┃\n");

printf("┃┗━┛┃┃┏━┓┃┃\n");

printf("┃┃┃┃智┃┃┃\n");

printf("┃┃┃┃林┃┃┃\n");

printf("┃┃┏━━━┓┃┃广┃┃┃\n");

printf("┃┏━━━┓┃┃篮球场┃┃┃场┃┃┏━┓┃\n");

printf("┃┃教学楼┃┃┗━━━┛┃┗━┛┃┃多┃┃\n");

printf("┃┗━━━┛11╳━━━━━━━━━━╳⑨━━━━━━━━⑥╳┃学┃┃\n");

printf("┃12╳━━━━━━━━━┫┏━━━━━┓┃┃科┃┃\n");

printf("┃┃┃┃图书馆┃┃┃楼┃┃\n");

printf("┃┃┃┗━━━━━┛┃┗━┛┃\n");

printf("┃┃┃┃┃\n");

2012年01 月

printf("┃┃┃┃┃\n");

printf("┃┃┃┃┏━┓┃\n");

printf("┃┏━┓┃┏━┓┃┃┃电┃┃\n");

printf("┃┃中┃┃┃机┃14╳┏━━━━━━━━━┓⑤╳┃气┃┃\n");

printf("┃┃西┃╳13━━━━┫械┣━┫┃清泽圆┃┃┃馆┃┃\n");

printf("┃┃广┃┃┃馆┃┃┗━━━━━━━━━┛┃┗━┛┃\n");

printf("┃┃场┃┃┗━┛┃┃┃\n");

printf("┃┗━┛┃┃┃┃\n");

printf("┃┃┃┃┃\n");

printf("┃┃┃┃┃\n");

printf("┣━━━━┫┏━┓┃┏━━━━━┓┃┏━┓┃\n");

printf("┃智林长廊┃┃西┃┃┃行政楼┃┃┃东┃┃\n");

printf("┣━━━━┫┃配┃╳16 ┗━━━━━┛③╳┃配┃┃\n");

printf("┃┃┃楼┃┣━━━━━━━━━②╳━━━━━━━━━━┫┃楼┃┃\n");

printf("┃15╳┗━┛┃┏━━━━━┓┃┗━┛┃\n");

printf("┃┏━━━┓┗━━━━━━━┫学校正门┣━━━━━━━┻━╳④┃\n");

printf("┃┃附小┃┗━━━━━┛┏━━━┫\n");

printf("┃┗━━━┛①┃科学楼┃\n");

printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━┛\n");

printf("\n");

fflush(stdin);

}/*map*/

int main()

{

char k;

init();

printf("**********************************************************************\n");

printf("* *\n");

printf("* *\n");

printf("* 欢迎使用校园导游咨询*\n");

printf("* *\n");

printf("* *\n");

printf("**********************************************************************\n");

printf("\n");

while(1)

{

printf("1.景点信息查询请按“1”键;\n");

printf("2.景点最短路径查询请按“2”键;\n");

printf("3.校内景点地图查询请按“3”键;\n");

printf("4.退出系统请按“4”键;\n");

2012年01 月

printf("请选择:");

scanf("%c",&k);

switch(k)

{

case '1':printf("景点介绍查询(请输入1-16)。\n");

introduce();break;

case '2':printf("景点最短路径查询。");

shortdistance();break;

case '3':printf("景点地图。\n");

map();break;

case '4':exit(0);

}

}

system("pause");

}

2012年01 月

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

1、需求分析 设计一个校园导游系统程序,为来访的客人提供各种服务的信息查询。 (1).设计工商学院校园无向图,所含的景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2).为来访客人提供图中任意景点相关信息的查询。 (3).为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 2、设计思路 校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。用图的结点代表景点,用图的边代表景点之间的路径。所以首先应设计一个图类。结点值代表景点信息,边的权值代表景点间的距离。结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度和最短路线时可用弗洛伊德(Floyd)算法实现。最后用switch选择语句选择执行浏览景点信息或查询最短路径。

3 算法设计 3.1 概要设计 3.1.1程序中包含的模块 (1)主程序模块 主函数:void main(void) void cmd(void) cmd修改显示框大小,字体背景颜色,初始化景点,景点信息打印菜单, MGraph InitGraph(void); //初始化图。 MGraph * CreatUDN(MGraph *G);//初始化图形接受用户输入 void Menu(void);//菜单函数 void Browser(MGraph *G);//浏览函数 void ShortestPath_DIJ(MGraph *G); void Floyd(MGraph *G);//查询图中任意两个景点间的所有路径 void Search(MGraph *G);//查找函数 int LocateVex(MGraph *G,char*v); // 迪杰斯特拉算法计算起点各顶点间短路径, void print(MGraph *G);//输出函数 (2)查询模块 景点信息查询:void introduce() 最短路径查询:要查找的两景点的最短距离:用floyd算法求两

导游实训总结(最新)

实训地点: 实训目的: 一、将书本上的理论知识运用到实际中去,更好的发现自己的不足。 二、提高作为导游所必需的语言表达能力,在游客面前讲解时,不会因为外界的因素而影响到自己的讲解,努力将自己的知识传授给游客。 三、培养在外带团时导游的独立工作能力、组织协调能力,随机应变能力和人际交往能力。导游人员在带团时,她是一个独立的个体,任何事情都可能发生,因此需要提高综合能力。 实训准备: 一、将同学们分成若干组,每组选出一名组长,由组长统一负责和布置组员的任务,每到一处景点时,要有同学出来讲解。 二、准备蓝天学院、八一起义纪念馆、滕王阁三地的资料,搜集多方面的导游词,将这些书面导游词变成自己的知识。 三、提前进行对景点的了解和询问,设计出最合理的线路,以最少的路程看最多有特色的景点。 实训内容: 一、蓝天学院的讲解,线路为:正大门——升旗台——景观大道(教学区)——临水广场、求真湖、蓝天阁——图书馆——学术报告厅——沙龙舞台——蓝海大剧场——体育馆——生活区——生态园——行政楼。 二、八一起义纪念馆的讲解,线路为先进陈列大楼,接着是江西大旅社,即八一起义总指挥部旧址。 三、滕王阁的讲解,即逐层讲解。 实训结果: 一、初步掌握导游讲解时所必须的语言技巧和处理突发事情的应变能力,游客在询问相关问题时能够很好的回答他们。

二、顺利完成三次户外导游培训,将平常老师上课时传授的理论知识同实际相结合。 三、其中还存在着不足,有些景点同学们不敢出来讲解,对景点资料的掌握不齐全,没有将书面上的知识变为自己的知识。 实训心得: 导游是学问,也是艺术。在我们的这次户外实训课上,我们学到了很多,首先,我认识到理论知识与实际能力是非常重要的,因为在导游过程中,会有许多技巧性的东西存在,比如如何与游客沟通就是最难学会的,但确是最重要的技巧;再次导游讲解是导游工作的一项重要内容,在旅游过程中,现场讲解效果如何,在一定程度上反映了一个导游的素质和水平,同时也在很打程度上反映了我们导游队伍的建设,也会影响游客对整个旅游的印象。 下面,我具体地对这次户外实训谈下心得体会,我们这次的导游实训景点分为三个: 第一个景点,在校园讲解的这一块上,同学们的表现都比较好,主要是对自己的学校比较了解,准备的也比较充分,但是我们都有着共同的缺点,就是在讲解时语速在不断的加快,语速在加快,但大脑思维一时还跟不上,就会出现口头禅,这将影响到讲解的效果,你对游客的吸引力也将会降低;其次,老师也在此次校园导游中,以蓝天阁,生态园为例,讲解了园林和古建筑方面的知识,这让我们更好地结合具体事物掌握知识。 第二个景点是八一起义纪念馆,在此次的讲解中,我饿母女首先是听定点导游讲解,结束之后再分组讲解,听完导游的讲解,发现了我们之间的差距,还存在着很多不足,八一起义纪念馆是一个红色旅游区,是一个有着很重要的历史景点,也是我们革命最光荣,最值得几年的地方,但由于我们对历史背景了解不是很多,以致于在导游词的准备反方面不是很充分,再讲解时不能流利的表达出来。在这个环节中没有预想的效果,这也说明了我们更应该认真地去学习,多掌握些历史知识,对我们今后的导游讲解时会有很大的作用。 第三个景点是滕王阁,滕王阁是因为王勃写的一篇文章而名扬天下,这首先就给我们下了一个要求,就要对《滕王阁序》这篇文章要有个初步的了解,,在这次的实训中,我们同样的是请这里的点点导游给我们先讲解,虽然同学们都大概知道这些知识,但还是很认真地听她的讲解,这次的实训,汇集了多方面的知识,有历史、人物、山水等等,这就要求我们要有丰富的知识面,对景物的了解也要更深层次,我们吸取了上次在八一起义纪念馆的教训,认真地准备好了导游词,对有些地方进行了现场模拟,可以说,这次的课,效果很不错。 通过这次的导游户外实训,我的确获益匪浅,作为一名导游,当你看到游客投来赞许的目光时,感到多么高兴和自豪,但是同样有着许多酸甜苦辣。

校园导航系统---算法与分析课程设计

算法设计与分析课程设计 题目:校园导航问题 文档: 物联网工程学院物联网工程专业 学号 学生姓名 班级物联网1101 二〇一三年十二月

设计要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路(最短路径)。 本系统为用户提供以下功能: (一)、查询了解学校概况,为导游参观者提供关于学校的相关信息。 (二)、查询校园各个场所和景点信息; (三)、为导游者或外来人员参观人员提供校园交通信息,方便用户走访学校。完成需要操作时,退出系统 校园导航查询系统的开发方法总结如下: (1) 需求分析,了解学校各个场所与场所或者是各个景点与景点之间的信息,路径和距离,考虑该如何设计才能满足用户需求。 (2) 概要设计,对调查得到的数据进行分析,根据其要求实现的功能分析系统结构和界面将实现的基本功能。 (3) 详细设计,设计系统界面并编辑实现其各个功能的代码。 (4) 调试分析,在设计完成后,调试系统运行的状况,修改完善系统,然后进行测试。 一、需求分析 1学校以及各景点介绍模块 采用一维数组将学校景点依次排放好编号G.vex[i].number=i 在选择校园介绍的时候,弹出G.vex[0]校园简介。在选择各景点信息的时候,可按编号查询2查询最短路径(主要) 查出出发地到想要到达的景点的最短路径,初步构想采用最经典的迪杰斯特拉算法最短路径函数 3查询各点距离 将所有景点的距离显示出来。 4主菜单页面显示 提供使用者选择功能界面,按照提示进行操作。 5退出 完成需要操作时,退出系统

校园导航系统模式图 二、概要设计 2.1算法设计说明 校园导航模型是由各个景点和景点以及场所和场所之间的路径组成的,所 以这完全可以用数据结构中的图来模拟。用图的结点代表景点或场所,用图的边 代表景点或场所之间的路径。所以首先应创建图的存储结构。结点值代表景点信 息,边的权值代表景点间的距离。结点值及边的权值采用图存储。本系统需要查 询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所 以给每个景点一个代码,用结构体类型实现。计算路径长度,最短路线和最佳路 径时可分别用迪杰斯特拉(Dijkastra )算法和哈密而顿回路算法实现。最后switch 选择语句选择执行浏览景点信息或查询最短路径和距离。 2.1.1学校以及各景点介绍模块 采用了图的邻接矩阵存储结构,首先初始化每一个景点名称(一维数组) fo r(i=1;i

数据结构课程设计报告(校园导游系统)附有源代码

课程论文(设计)2011-2012学年第2学期 课程名称:数据结构课程设计 课程性质:实践课 专业班级: 考核方式:考查 学生姓名: 学号: 学时:1周 教师姓名:

目录 1. 作业内容 (1) 2. 基本思路 (1) 2.1 本校10个景点 (1) 2.2 图的初始化 (2) 2.3 图的遍历 (2) 2.4 求最短路径 (3) 3.系统流程 (4) 3.1 系统的简单说明 (4) 3.2 系统流程图 (5) 4. 系统运行效果图 (5) 4.1 校园导游界面 (5) 4.2 华农校园地图 (6) 4.3 景点的相关信息查询 (6) 4.4 任意两个景点间的最短路径 (7) 4.5 退出校园导游系统 (8) 5.总结 (9) 6.参考文献 (10)

1. 作业内容 设计一个校园导游程序,为来访客人提供各种信息查询任务。基本要求: (1)设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介信息,以边表示路权,存放路径长度等相关信息。 (2)为来访客人提供图中任意景点相关信息的查询 (3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 2. 基本思路 要完成对整个导游图系统的功能实现,需要对的每一项功能都有清楚的设想和认识,了解并明确每一项功能的实现需要解决的问题,选择正确并且高效的算法把问题逐个解决,最终实现程序的正确调试运行。有以下设计思路: (1).结合本校的实际情况,选出10个景点; (2).人为手工为选出的10个景点赋上相关信息(名称、代号、简介信息、以及路权等等); (3).根据选出来的10个景点用邻接矩阵存储校园图。 (4).依照景点的相关信息创建校园图。 (5).把纸质上的内容,利用C++编程语言编写查找景点相关信息的程序。 (6).根据人为赋值的路权,迪杰斯特拉算法计算任意两点之间的最短路径。 (7).综上所诉,用一个主函数把这些板块合成,生产一个菜单界面呈现在用户面前。 为此,可把系统分为以下几个核心:图的初始化、图的遍历、求最佳路线。 2.1 选出本校10个景点 结合华南农业大学实际情况,我选出以下10个景点,从1到10编号:

数据结构课程设计-校园导航

数据结构课程设计-校 园导航 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

课程设计报告 课程名称数据结构课程设计题目校园导航 指导教师 设计起始日期 5.9~5.16 学院计算机学院 系别计算机科学与工程 学生姓名 班级/学号 成绩

一、需求分析 本次实验设计的任务是实现一个简易的北京信息科技大学的校园导航平面图。设计要包括下列要求: 设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。 本课题实现校园多个场所(至少10个)的最短路径求解。 (1)输入的形式和输入值的范围:本系统主要数据类型为字符型char及整形int,char型主要包括单位编号,单位名称,单位简介,功能编号;输入功能编号与单位编号进行操作。 (2 ) 输出的形式:输出则通过已有的信息数据,通过相关的操作输出相应信息。 (3) 程序所能达到的功能:本程序可供任何人使用,主要功能1.浏览各单位及简介;2.查看所有游览路线;3.选择出发点和目的地求出最佳路径;4.查看某一单位信息。 (4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。 a.首先看到的是校园导航系统的菜单: b.查看浏览路线等待输入起始景点: C.选择出发点与目的地等待输入起始景点与目的地编号: d.参看景点信息等待输入景点编号:

二、概要设计 本系统包含一个文件。设计分有菜单,显示信息,弗洛伊德算法,迪杰斯特拉算法,查找景点信息等程序段。主程序为整系统的入口处,菜单主要实现显示系统功能,显示信息主要实现显示景点信息,弗洛伊德算法主要实现求两景点之间最短路径,迪杰斯特拉算法实现求两景点之间最短路径,查找景点信息主要实现显示某一景点信息。 系统首先通过主程序调用void main( );进入系统主菜单函数,根据用户的选择可分别进入:1.浏览各景点及简介;2.查看所有游览路线;3.选择出发点和目的地求出最佳路径;4.查看景点信息;5.退出系统。 选择“浏览各景点及简介”项,显示十个景点的有关信息,包括景点编号,景点名称,景点简介。 选择“查看所有游览路线”项,会进入输入起始景点编号的界面,输入正确编号后会显示起始景点到其余九个景点的最短路线的方案。 选择“选择出发点和目的地”项,会进入输入起始景点与目的景点的界面,输入起始景 点与目的景点,并有空格隔开就得到两景点之间的最佳路径。 选择“查看景点信息”项,会进入输入要查看的景点的界面,如入后会显示该景点的有关信息。 选择“退出系统”项,就会退出程序。 三、详细设计 (1)十三个单位的图

校园导游系统设计与实现

校园导游系统设计与实现

目录 1.设计要求 2.1需求分析 2.2概要设计 2.3各个模块名称和功能 2.4 系统导游主界面 2.4.1前台系统 2.4.2后台系统 2.4.3退出系统 3实验总结 参考文献 附件

1.设计要求 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 2.1需求分析 ⑴设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图(无向网),所含景点不少于30 个。以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。 ⑵存放景点代号、名称、简介等信息供用户查询。 ⑶为来访客人提供图中任意景点相关信息的查询。 ⑷为来访客人提供图中任意景点之间的问路查询。 ⑸可以为校园平面图增加或删除景点或边,修改边上的权值等。 景点距离图 2.2概要设计

校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。用图的结点代表景点,用图的边代表景点之间的路径。所以首先应设计一个图类。结点值代表景点信息,边的权值代表景点间的距离。结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度和最短路线时可用迪杰斯特拉(Dijkastra)算法实现。最后用switch 选择语句选择执行浏览景点信息或查询最短路径。 1、主界面设计 为了实现校园导游系统各功能的管理,首先设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。 2、存储结构设计 本系统采用图结构类型(mgraph)存储抽象校园图的信息。其中,各景点间的邻接关系用图邻接矩阵类型(adjmatrix)存储;景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的条数由分量vexnum、arcnum 表示,它们是整型数据。 3、系统功能设计 本系统除了要完成图的初始化功能外还设置了9个子功能。图的初始化由initgraph()函数实现。依据读入的图的顶点个数和边的条数,分别初始化图结构中图的顶点数组和图的邻接矩阵。9个子功能的设计描述如下。 ⑴景点信息查询 景点信息查询由函数seeabout()实现。该功能根据用户输入的景点编号输出该景点的相关信息。如景点编号、名称等。 ⑵学校景点介绍 学校景点介绍由函数browsecampus()实现。当用户选择该功能,系统即能输出学校全部景点的信息:包括景点编号、景点名称及景点介绍。 ⑶相邻的景点及其距离 为使游客能够知道其周围的景点和路径,方便他们迅速知道其所在位置和周围信息 ⑷查看浏览线路 查看浏览线路由函数shortestpath_dij()实现。该功能采用迪杰斯特拉(Dijkstra)算法实现。当用户选择该功能,系统能根据用户输入的起始景点编号,求出从该景点到其他景点的最短路径线路及距离。当用户选择该功能,系统能根据用户输入的起始景点及目的景点编号,查询任意两个景点之间的最短路径线路及距离。 ⑸更改图信息 修改一个已有景点的相关信息、删除一个景点及其相关信息、删除一条路径、加一条路径、修改路径长度、添加一个景点 ⑹数据安全防范 设置密码,能保证数据不会被随便更改,由pass()判定密码是否正确,可由changepw()函数修改密码,初始密码为gdufsx ⑺写入文件并保存修改 打开该软件,若没有graph.txt,则会由系统初始化生成一个graph.txt,若已存在该文档会由该文档中的内容初始化系统。 ⑻恢复初始状态 若数据已经显得很杂乱并很难修理,就可以启用这个功能

数据结构课程设计校园导游咨询

9、校园导游咨询 问题描述: 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 基本要求: ⑴设计华东交通大学的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点, ⑵存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 ⑶为来访客人提供图中任意景点相关信息的查询。 ⑷为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 #include #define MAXV 100 //最大顶点个数 #define INF 32767 //用32767表示∞ #include //调用函数system改变字体颜色的头文件 typedef int InfoType; #define MAXV 100 //最大顶点个数 //以下定义邻接矩阵类型 typedef struct { int no; //顶点编号 InfoType info; //顶点其他信息 } VertexType; //顶点类型 typedef struct //图的定义 { int edges[MAXV][MAXV]; //邻接矩阵 int vexnum,arcnum; //顶点数,弧数 VertexType vexs[MAXV]; //存放顶点信息 } MGraph; void ecjtumap()//建立华东交通大学地图 { printf("\t|-------------------------------------------------------------|\n"); printf("\t| |\n"); printf("\t| |\n"); printf("\t| ---------- |\n"); printf("\t| ==============================| 国防生宿舍| |\n"); printf("\t| 。---------- |\n"); printf("\t| 。。。|\n"); printf("\t| 。。。|\n"); printf("\t| 。。。|\n"); printf("\t| 。。。|\n"); printf("\t| 。。。|\n"); printf("\t| |南区四食堂| ---------- |\n"); printf("\t| 。。|南区礼堂| |\n"); printf("\t| 。。---------- |\n");

导游业务实训报告

导游业务实训报告 实训目的 通过到具体的实地环境去培训,将所学的导游业务知识运用到实际中去,以达到理论与实践相结合,学以制用的目的。实训内容 1、全班同学分为6组进行。 2、在校园导游培训中,每组的介绍对象均为校园,要求从主题到选景,从拍摄到PPT的后期制作,从导游词的编写到导游的讲解,最终呈现出来的是一个非常完整的成品。 3、在南滨路广阳岛的导游培训中,各组的介绍对象均不相同,有全陪,有地陪,有南滨路的定点讲解,有广阳岛的景点介绍,这就避免了在上一次校园导游的培训中,景点撞车的弊端,可以更好的发挥同学们的组织、协调、分工协作和导游讲解的能力。 实训地点 重庆工商大学江北校区;南滨路和广阳岛。 实训纪录 任务1:校园导游 这一次的实训,对于我们而言,可以说是成功的,为什么这么说呢?原因有三。 首先,我们把这一次校园导游实训定位为新生接待游,这

就把整个实训的主题明确了,那么我们在接下来的准备工作的安排上也有了一个统领全局的战略方向,为我们后来的工作疏理清楚了细节。其次是我们在PPT的后期制作中融入了大量的大家耳熟能详的古文篇章,不仅为我们的成品添姿加彩,形成了一种不同于其他组的一条很有特色的新路子,而且它也恰如其分地呼应了我们这次实训——“校园新生接待游”的主题,使新生们在导游讲解中能有一种很熟悉,很亲近的感觉,消除了他们对新环境的一种本能的抵触情绪。第三呢?我认为是我们采取了“一个校园,一个导游”的这种方式,保持了整个导游讲解的完整性。其实之前我们也有每位同学都导游的想法,但是鉴于每位同学的性格特点的不同,说话风格的不同,对各个景点的侧重点入手角度的不同,对各个景点讲解驾驭能力的不同,可能会影响整个导游讲解工作的完整性,给人一种参差不及的感觉。本来导游就是一种非常完整,非常严谨的服务。所以经过一番思量,最终我们还是决定采用“一个校园,一个导游”的这种方式。虽然苦点、累点,但是可以把的呈现给大家,我们认了! 在这一次实训中虽然闪光点很多,但也不乏瑕疵的存在。在整个导游过程中,由于我的严重紧张,致使导游词讲解连贯性较差,给大家听讲解造成了一些不便。还有就是我在讲解的过程中,没有注意到态势语言,有时会手舞足蹈,没有导游的样子,而且拿那个话筒的时候,也有把嘴形遮到。有

数据结构课程设计-校园导航

课程设计报告 课程名称数据结构课程设计题目校园导航 指导教师 设计起始日期 5.9~5.16 学院计算机学院 系别计算机科学与工程 学生姓名 班级/学号 成绩

一、需求分析 本次实验设计的任务是实现一个简易的北京信息科技大学的校园导航平面图。设计要包括下列要求: 设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路, 且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。 本课题实现校园多个场所(至少10个)的最短路径求解。 (1)输入的形式和输入值的范围:本系统主要数据类型为字符型char及整形int,char 型主要包括单位编号,单位名称,单位简介,功能编号;输入功能编号与单位编号进行操作。 (2 ) 输出的形式:输出则通过已有的信息数据,通过相关的操作输出相应信息。 (3) 程序所能达到的功能:本程序可供任何人使用,主要功能1.浏览各单位及简介; 2.查看所有游览路线; 3.选择出发点和目的地求出最佳路径; 4.查看某一单位信息。 (4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。 a.首先看到的是校园导航系统的菜单: b.查看浏览路线等待输入起始景点: C.选择出发点与目的地等待输入起始景点与目的地编号: d.参看景点信息等待输入景点编号: 二、概要设计 本系统包含一个文件。设计分有菜单,显示信息,弗洛伊德算法,迪杰斯特拉算法,查找景点信息等程序段。主程序为整系统的入口处,菜单主要实现显示系统功能,显示信息主要实现显示景点信息,弗洛伊德算法主要实现求两景点之间最短路径,迪杰斯特拉算法实现求两景点之间最短路径,查找景点信息主要实现显示某一景点信息。

校园导游系统

课程设计说明书 课程名称:数据结构与算法 设计题目:校园导游系统 院系:计算机科学与信息工程学院 学生姓名: 学号: 专业班级:计算机科学与技术信息技术方向11-1 指导教师: 2013年6月21日

课程设计任务书 校园导游系统

摘要: 随着社会经济的发展,人们接近自然的机会就越多,因此外出旅游现在被越来越多的都市人所看中,所以如何快速方便的找到我们想要的旅游景点的信息和最短路径,如何简单的修改相关的信息,就成了很重要的问题。 本设计基于图的结构,用数组表示法创建一个无向图,针对游客的实际需求,将安阳工学院的景点编号、名称、介绍等信息放入到图的顶点当中,将路径长度的信息存放在弧当中。利用弗洛伊德算法求出两个景点之间的最短路径,利用迪杰斯特拉算法来求从一个景点到其他剩余的所有景点的最短距离;用相应的函数来查找景点,并显示出它的编号,信息,简介。并进行一定的界面美化,更贴近用户,相应的提示使用户操作起来更容易。 关键词:最短路径、查找景点信息、无向图 目录

1. 设计背景 (3) 1.1程序设计内容 (4) 1.2程序设计要求 (4) 2.设计方案 (4) 2.1 校园景点图 (5) 2.2 程序模块图 (5) 2.3 主函数设计简要 (6) 2.4 各函数模块的功能 (6) 3. 方案实施 (7) 3.1 程序执行流程图 (7) 3.2 主函数设计思想 (7) 4. 结果测试 (9) 4.1 主函数功能模块测试 (9) 4.2 主函数功能测试 (9) 4.3 各功能所执行的操作 (12) 5. 结论 (12) 6. 收获与致谢 (13) 7. 参考文献 (14) 8. 附件 (14) 1. 设计背景

综合实验十二 校园导游咨询

综合实验十二校园导游咨询 一、实验目的 (1)熟练掌握图的创建及遍历基本操作算法。 (2)熟练掌握最短路径算法。 (3)利用图的遍历和最短路径求解技术,设计一个校园导游程序,为来访的客人提供各种信息查询服务。 二、实验内容 【问题描述】 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 【基本要求】 (1)设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2)为来访客人提供图中任意景点相关信息的查询。 (3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一个最短的简单路径。 【测试数据】 由读者根据实际情况指定。 【实现提示】 一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。顶点和边均含有相关信息。 【选作内容】 (1)求校园图的关节点。 (2)提供图中任意景点问路查询,即求任意两个景点之间的所有路径。 (3)提供校园图中多个景点的最佳访问路线查询,即求途经这多个景点的最佳(短)路径。 (4)校园导游图的景点和道路的修改扩充功能。 (5)扩充道路信息,如道路类别(车道、人行道等)、沿途景色等级,以至可按客人所需分别查询人行路径或车行路径或观景路径等。 (6)扩充每个景点的邻接景点的方向等信息,使得路径查询结果能提供详尽的导向信息。 (7) 实现校园导游图的仿真界面。 程序代码及结果: #include #include using namespace std; const int MaxSize=18; const int INFINITY=65535;//最大值无穷 class direction; template class MGraph;

校园导航课程设计

数据结构课程设计

蚌埠学院计算机科学与技术系课程设计任务书

目录 1 引言 (4) 1.1 问题的提出 (4) 1.2任务与功能简介 (4) 1.2.1任务 (4) 1.2.2功能简介 (4) 2 程序运行平台 (5) 3 总体设计与模块分析 (6) 3.1抽象数据类型定义 (6) 3.2主程序模块的整体流程 (6) 3.3各模块调用和函数关系如下 (6) 4 程序的主要功能实现 (8) 4.1 main()——主函数 (8) 4.2赋值init函数 (8) 4.3输出蚌埠学院校园导航平面图的map函数 (10) 4.4菜单menu函数 (11) 4.5输出地点信息的information函数 (12) 4.7输出路径way函数 (13) 4.8调用floyd和way的最短路径shortestpath算法 (14) 5系统测试 (15) 5.1系统运行后主界面 (15) 5.2查询最短路径 (16) 5.3查询地点信息 (17) 致谢 (19) 参考文献 (20) 附录 (21)

1 引言 为了加深对《数据结构》这一课程所学内容的进一步理解与巩固,我们这一组按课程设计要求完成了校园导航系统的设计。 1.1 问题的提出 我们这次基于对导航这个热门问题的研究设计了简易校园导航系统,我们的导航平面图中至少包括8个以上校园的场所,每两个场所间可以有不同的路,且路长也可能不同,给出校园各主要建筑的名称信息及有线路联通的建筑之间的距离,利用校园导航系统计算出给定的起点到终点之间的最近距离及线路。本导航系统能够很好的向同学们提供距离与地点的详细信息。 1.2任务与功能简介 1.2.1任务 (1)本次作业的核心是利用弗洛伊德算法计算给定有向网中两点最短距离;给出有向网中所要求点的信息。在调试过程中,除了简单语法错误外,就是对弗洛伊德算法的理解和实现,以及菜单的设置,这是我以前没有实现过的。出于简单化,并没有对有向图中各个点进行输入,而是在程序中直接赋值。 (2)在对各个功能操作的实现上,由于有弗洛伊德算法时间复杂度大多数是O(n3),空间上增加了二维数组,空间复杂度为O(n+s)。 1.2.2功能简介 程序所能达到的功能: (1) map——输出蚌埠学院导航平面图。 (2) init()——按相应编号输入各个节点内容,对相应路径赋值的函数。 (3) menu()——菜单函数 (4) information()——输出简介的函数 (5) way()——最短路径的输出函数 (6) shortestpath()——调用弗洛伊德和最短路径输出的函数 (7) main()——主函数

数据结构 校园导游系统课程设计

滨江学院 《数据结构》课程设计题目校园导游咨询程序设计 学号 学生姓名 院系 专业 指导教师 二O一二年月日

1、题目的内容及要求 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 2、需求分析 (1)设计你的学校的校园平面图,所含景点不少于10个。以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。 (3)为来访客人提供图中任意景点相关信息的查询。 3、概要设计 1.功能模块图; void CreateUDN();//创建无向网 void Search();//查询景点信息 void Shortestpath(int i);//计算最短路径 void Output(int sight1,int sight2);//输出函数

2.各个模块详细的功能描述。 CreateUDN();//创建无向网、主要用来保存各景点信息Search();//查询景点信息、景点的名称及介绍Shortestpath(int i);//计算两景点间最短路径 Output(int sight1,int sight2);//输出两景点最短路径及信息3.模块图

4、详细设计 一、图的储存结构 #define Max 30000 #define NUM 10 typedef struct ArcCell { int adj; /*相邻接的景点之间的路程*/ }ArcCell;/*定义边的类型*/ typedef struct VertexType { int number; /*景点编号*/ char *sight; /*景点名称*/

校园导游咨询程序设计报告

数据结构课程设计 设计题目:校园导游咨询 学院:信息学院 班级:计算机1008班 姓名: 学号: 20101221180 日期: 2012 年 3 月

校园导航问题 [问题描述] 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 [基本要求] (1)设计所在学校的校园平面图,所含景点不少于十个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等信息。 (2)为来访客人提供图中任意景点相关信息的查询。 (3)为来访客人提供图中任意景点的问路查询,即查询任意两个顶点之间的一条最短的简单路径。 (4)校园导游图的景点和道路的修改扩充功能。 (5)扩充道路信息,如道路类别(车道、人行道),以致可按客人所需分别查询人行路径或车行路径。 (6)扩充每个景点的林洁景点的方向等信息,使得路径查询结果能提供详尽的导向信息。 (7)实现校园导游的仿真界面。

校园导航问题 (2) 一、概要设计 (4) 二、详细设计 (6) 三、调试分析 (12) 四、调用关系 (12) 五、用户操作指南 (13)

[测试数据] 一、概要设计 1. 数据类型 #define V_MAX 20 #define E_MAX 200 typedef struct { char name[10];//名字 //char code[10];//代码 char info[20];//信息,简介 int x,y;//坐标 }VType;//顶点类型 typedef struct { int live;//标记是否存在,如果被删除则为0,存在为1 char name[10];// 路名 int length;//路的长度

《校园导航系统》课程设计报告

《校园导航系统》课程设计报告 姓名: 学号: 班级:网络 专业:网络工程 指导教师: 时间:2

目录 摘要 (1) 1.题目 (1) 2.概要设计 (1) 3.调试分析 (15) 4.参考文献 (15)

1.题目 校园导航系统 设计一个校园导游程序,后台操作: 1、操作员信息管理如修改密码等 2、能根据学校的规模进行添加景点信息、修改景点信息等功能, 3、若临时有交通管制,能进行交通管制的设置和撤销(如某某时间段那条路进行那个方向的交通管制等) 前台为来访的客人提供各种信息查询服务: 1、设计学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名 称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 2、为来访客人提供图中任意景点相关信息的查询。 3、提供途中任意景点问路查询,即求任意两个景点间的一条最短的简单路径。 1.1 需求分析 设计一个校园导航系统,导航系统又分为游客和管理员。要进行管理操作还是游客操作由用户自己选择 管理员的操作:修改景点信息、增加景点信息、交通管制等。 游客的操作:查看景点信息和查最短路径。 2.概要设计 景点的信息由一维数组存放,景点关系由二维数据来存放 景点的信息和关系从文件读取,进而初始化 typedef struct //保存单个景点信息的结构体 { char code[10]; //存放景点代码 char name[20]; //存放景点名称 char instruction[100]; //存放景点简介 }ViewPoint; typedef struct //存放景点关系的二维数组 { int edges[MAXV][MAXV]; //两景点间的距离 int number; //景点的数量 ViewPoint V[MAXV]; //保存景点信息的结构体数组 }MGraph;

校园导游系统实验报告

竭诚为您提供优质文档/双击可除校园导游系统实验报告 篇一:校园导游图系统数据结构实验报告 一.设计目的 通过布置具有一定难度的实际程序设计项目,使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法;使学生掌握分析问题,求解问题的方法并提高学生设计编程实现的能力。 二.设计内容 用无向网表示学校的校园景点平面图,图中顶点表示主要景点, 存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。游客通过终端可询问:(1)从某一景点到另一景点的最短路径。(2)游客从公园进入,选取一条最佳路线。 (3)使游客可以不重复地浏览各景点,最后回到出口

(出口就在入口旁边)。[基本要求] (1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路, 边上的权值表示距离.为此图选择适当的数据结构。 (2)把各种路径都显示给游客,由游客自己选择浏览路线。(3)画出景点分布图于屏幕上。[实现提示] (1)构造一个无向图g并用邻接矩阵来存储。 (2)利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][]来记录, 最短路径长度就用一维数组d[i]存放;i的范围:0~20。 (3)一维数组have[]是用来记录最短路径出现顶点的顺序。(4)根据起点和终点输出最短路径和路径长度。 三.概要设计 1.功能模块图; 2.各个模块详细的功能描述。 1.浏览校园全景:采用深度遍历遍历图进行所有景点浏览,将遍历景点信息输出 2.查看所有游览路线:用户输入一个景点,采用迪杰斯特拉算法将从该景点起所有路径查出并输出在屏幕上 3.选择出发点和目的地:用户输入一个出发点和一个目的地编号,采用弗洛伊德算法求出发点到目的地的最短路径

数据结构校园导游咨询系统课程设计报告及课程总结

姓名: 班级: 学号: 指导教师: 2012年12月

目录 1、需求分析 (1) 1.1 系统简介 (1) 1.2 系统功能模块介绍 (1) 2、概要设计 (2) 2.1 系统功能结构图 (2) 2.2 系统流程图 (2) 2.3 主要函数概要设计 (3) 2.3.1 主函数概要设计 (3) 2.3.2 初始化图函数InitGraph() (4) 2.3.4 查询景点信息函数设计SearchGraph() (4) 2.3.5 显示图中信息函数设计ShowGraph() (4) 2.3.6 弗洛伊德算法函数设计Floyd() (5) 3、详细设计 (5) 3.1 主函数详细设计 (5) 3.2初始化图函数详细设计InitGraph() (6) 3.3查询景点信息函数详细设计SearchGraph() (7) 3.4 弗洛伊德算法函数详细设计Floyd() (8) 4、调试分析 (9) 4.1 显示主界面函数测试 (9) 4.2 查找两景点间最短路径测试 (10) 4.3 查看景点信息测试 (11) 5.课程设计总结 (12) 6、附录 (13)

1、需求分析 1.1 系统简介 随着现代社会生活节奏的加快,人们外出旅行以寻求放松的时间越来越多。考虑到游客不可能对所有景点都有所了解,因此可能无法找到游玩景点最省时,最高效的路径,而人工导游成本又过高,故使用C语言,基于《数据结构》中图的相关算法开发了“江西农业大学校园咨询系统”。 开发本系统目的在于为来访我校的游客提供一条最短游览路径,本系统从实际出发,通过对校园平面图的分析,将其转化为数据并保存在系统中,因此系统提供的路径具有较大的可信性。 本系统界面友好,提示信息充分,在实际使用过程中运行良好。 1.2 系统功能模块介绍 本系统主要分为以下三大功能模块: 1、查询两景点最短路径:用户在选择此功能模块后,按照屏幕上方提示的景点名称及其对应的编号,要求用户输入起点和终点的编号,系统将在已存储的景点中进行匹配,若未找到所需查询的景点编号,系统将提示错误并要求用户再次输入。若输入信息合法,则回车后系统将给出最短路径,显示于屏幕上方; 2、查询景点信息:用户在选择此功能模块后,按照屏幕上方提示的景点名称及其对应的编号,要求用户输入想要查询的景点的编

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

题目石铁大校园导航系统 学院信息科学与技术学院 专业计算机科学与技术 学号 20112840 学生姓名刘铸辉 指导教师姓名陈娜 日期:2013-8-31

一.题目与要求 实习一 校园导游程序 [ 问题描述] 用无向网表示学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景 点介绍、游览路径等问题。游客通过终端可询问: (1 )从某一景点到另一景点的最短路径。 (2 )游客从公园进入,选取一条最佳路线。 (3 )使游客可以不重复地浏览各景点,最后回到出口(出口就在入口旁边)。 [ 基本要求] (1 )将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离.为此图选择适当的数据结构。 (2 )把各种路径都显示给游客,由游客自己选择浏览路线。 (3 )画出景点分布图于屏幕上。 [ 实现提示] (1 )构造一个无向图G 并用邻接矩阵来存储。 (2 )利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][] 来记录,最短路径长度就用一维数组d[i] 存放;i 的范围:0 ~20 。 (3 )一维数组have[] 是用来记录最短路径出现顶点的顺序。 (4 )根据起点和终点输出最短路径和路径长度。 二.需求分析 本校园导航系统由C语言编写,主要掌握最短路径的实现方法,以及构造无向图G并用邻接矩阵来存储,掌握迪杰斯特拉算法来算最短路径。 1.输入的形式和输出的范围: 2.输出的形式: 3.程序所能到达的功能: A.图中任意景点的相关信息查询 B.任意两个景点间的最短路径 C.任意两个景点间的所有路径 D.增加有关景点和道路的信息 E.删除更新有关景点和道路的信息 F.更新有关景点和道路的信息 G.显示全景 H.退出该系统

导游业务实训标准

《导游业务》实训课程标准 实验(实习)周数:30学时 适用专业:旅游管理 一、实验(实习)的目的与任务: 导游工作是一项集知识与技能为一体的服务工作,在导游服务人员的培养过程,理论学习与实践训练具有同等重要的地位。作为《导游业务》的实训环节,《模拟导游》一课程旨在以行业导游服务规范或标准为依据,培养学生口语表达能力、应变能力、人际交往能力、团队组织协调能力、事故处理能力,突出《导游业务》的实用性、综合性、岗位性、技能性。 二、实验(实习)教学的基本要求 本课程要求学生认识、理解导游工作的特点、导游工作的主要内容及导游工作人员应具备的能力。能够独立写作导游欢迎辞、欢迎送辞与景区景点讲解辞,掌握导游服务程序与规范,熟悉导游带团技能,导游讲解能力得到一定提高,并在导游带团过程中特殊问题的处理能力和应变能力方面得到培养。 三、实验(实习)内容 实训一欢迎辞与欢迎辞模拟训练 1、实训地点:教室、导游实训中心或校园内 2、实训内容:以某一旅游团队到达和离开某城市为情景,模拟向该团队致欢迎辞和欢送辞,学生自导自演。 3、时间安排:8课时: 4、实训形式及方法:演示与讲解、小组合作 实训二校园模拟导游 1、实训地点:本校校园 2、实训内容:以校园为旅游区,以宿舍楼区为宾馆,以食堂为旅游餐厅,以校车为旅游巴士,以校园超市为购物点,以其他教学区,操场为景点,设计一次旅游团队活动,模拟从接团至送团的全部流程,并设计其间的活动,安排导游讲解,规划旅游路线,体现团队合作,与个性创意。 3、时间安排:由学生准备2课时,实训6课时: 4、实训形式及方法:组织、演示与讲解、小组合作 实训三模拟情境 1、实训地点:教室或导游实训中心 2、实训内容:以旅游团队中突发事件及团队成员个别要求为情境,模拟事件发生经过,学生自导自演,互相观摩。 3、时间安排:6课时 4、实训形式及方法:演示与讲解、小组合作 实训四模拟导游证口试 1、实训地点:武侯祠(或其他旅游景点)(条件受限时,可在教室或导游实训中心进行) 2、实训内容:以武侯祠(或其他旅游景点)或其中某一景点对讲解对象,学生独立撰写导

相关文档
最新文档