数据结构公园导游图
- 格式:doc
- 大小:56.50 KB
- 文档页数:8
郵電學院数据结构实验报告题目:校园导游系统院系名称:计算机学院专业名称:计算机科学与技术班级:1006学生:****学号(8位):*****指导教师:******设计起止时间:2011年12月12日~2011年12月16日一.题目要求1、设计学校的校园平面图,地点(地点名称、地点介绍)不少于10个。
2、提供图中任意地点相关信息的查询。
3、提供图中任意地点的问路查询:1)任意两个地点之间的一条最短(中转最少)的简单路径;2)任意两个景点的最佳访问路线(带权)查询;3)任意两个地点之间的所有路径。
4、地点和道路的扩充以及撤销;地点基本信息的文件存储。
(附加:加分题)二.概要设计1.功能模块的调用关系图2.各个模块详细的功能描述。
1.首先,main()函数调用loge()函数,输出欢迎界面,然后调用showmenu()函数来选择用户所要进行的操作。
其中showmenu()函数就是一个菜单供使用者来选择他所要进行的相关操作,比如信息的查询,最短路径查询之类。
2.browser()函数,用于输出校园平面图,给用户提供校园的景点分布状况,方便用户选择景点参观。
3.Search()函数,用于查询用户所选的景点信息,用户需要输入要查询的景点编号,函数会对编号进行判断,如果是合法输入,则在屏幕上输出该景点的相关信息,包括景点名字,景点的相关介绍,否则返回重新输入。
4.SearchAllpath()函数,用于查询用户所选的任意两个景点间的所有路径,用户需要输入要查询的起始景点编号,函数会对编号进行判断,如果是合法输入,用户需要输入要查询的终点景点编号,函数会对编号进行判断,如果是合法输入,则在屏幕上输出输查询的两个景点间的所有路径,否则返回重新输入。
函数使用深度遍历DeepFirstSeach()查找路径。
5.Wellway()函数,用于查询用户所选的任意两个景点间的最短路径,用户需要输入要查询的起始景点编号,函数会对编号进行判断,如果是合法输入,用户需要输入要查询的终点景点编号,函数会对编号进行判断,如果是合法输入,则在屏幕上输出输查询的两个景点间的最短路径,否则返回重新输入。
西安郵電學院数据结构实验报告题目:校园导游系统院系名称:计算机学院专业名称:计算机科学与技术班级:1006学生姓名: ****学号(8位):*****指导教师:******设计起止时间:2011年12月12日~2011年12月16日一. 题目要求1、设计学校的校园平面图,地点(地点名称、地点介绍)不少于10个。
2、提供图中任意地点相关信息的查询。
3、提供图中任意地点的问路查询:1)任意两个地点之间的一条最短(中转最少)的简单路径;2)任意两个景点的最佳访问路线(带权)查询;3)任意两个地点之间的所有路径。
4、地点和道路的扩充以及撤销;地点基本信息的文件存储。
(附加:加分题)二.概要设计1.功能模块的调用关系图2.各个模块详细的功能描述。
1.首先,main()函数调用loge()函数,输出欢迎界面,然后调用showmenu()函数来选择用户所要进行的操作。
其中showmenu()函数就是一个菜单供使用者来选择他所要进行的相关操作,比如信息的查询,最短路径查询之类。
2.browser()函数,用于输出校园平面图,给用户提供校园的景点分布状况,方便用户选择景点参观。
3.Search()函数,用于查询用户所选的景点信息,用户需要输入要查询的景点编号,函数会对编号进行判断,如果是合法输入,则在屏幕上输出该景点的相关信息,包括景点名字,景点的相关介绍,否则返回重新输入。
4.SearchAllpath()函数,用于查询用户所选的任意两个景点间的所有路径,用户需要输入要查询的起始景点编号,函数会对编号进行判断,如果是合法输入,用户需要输入要查询的终点景点编号,函数会对编号进行判断,如果是合法输入,则在屏幕上输出输查询的两个景点间的所有路径,否则返回重新输入。
函数使用深度遍历DeepFirstSeach()查找路径。
5.Wellway()函数,用于查询用户所选的任意两个景点间的最短路径,用户需要输入要查询的起始景点编号,函数会对编号进行判断,如果是合法输入,用户需要输入要查询的终点景点编号,函数会对编号进行判断,如果是合法输入,则在屏幕上输出输查询的两个景点间的最短路径,否则返回重新输入。
课程设计论文(附有代码!)题目:校园导游咨询学院:计算机科学与工程学院专业:计算机科学与技术姓名:学号:指导教师:2014年9月22日摘要桂林众山环绕,风景优美,加之近年来校园环境也得到不断地改善,来访校园的游客逐渐增加,为了方便众多游客对校园景点的参观,需要给来访人士提供校园导游咨询服务,利用计算机建立一个便利的咨询系统可以很好地解决这个问题。
在本设计实验中,我所采用的是邻接矩阵作为数据的存储结构,用不同的功能模块对两地距离和校园道路信息进行编辑。
当游客来访时,系统能根据用户输入的景点代号查询景点信息,提供任意两个景点间的最短路径查询,并能查询校园内的交通信息,方便游客访问。
工作人员还可以为校园更新景点以及路径信息。
本文将简单介绍该系统的开发背景,详细介绍系统的主要设计思路,函数的建立和使用过程,该系统功能的实现方式和实现结果,以及对所遇到问题的分析解决,最后对该系统进行总结描述。
关键词:校园导游咨询;C++;数据结构;最短路径;查询;目录引言 (1)1系统概述 (1)2需求分析 (1)2.1 系统需求 (1)2.2 开发环境 (2)3详细设计 (3)3.1 系统结构 (3)3.2 数据结构设计以及数据的初始化 (4)3.2.1 图结构设计 (4)3.2.2 数据的初始化 (4)3.3 查询模块的详细设计 (5)3.3.1 查询模块功能子函数设计 (5)3.4 更新功能模块详细设计 (7)3.4.1 更新模块功能子函数设计 (8)4所遇到的问题和分析解决 (10)5系统特色及关键 (11)6结论 (12)参考文献 (13)引言随着计算机科学技术的不断提高,计算机依靠其强大的功能已经成为人们生活中不可缺少的一部分,计算机能解决人类生活中的大部分问题,为人类文明和社会进步做出了巨大贡献。
桂林是一个全世界著名的旅游城市,近几年来旅游业得到了飞速的发展,来自各个国家各个城市的游客给城市带来了巨大的经济效益。
计算机信息工程学院《数据结构》课程设计报告题目:公园导游系统专业:计算机科学与技术(软件方向)班级:学号:姓名:指导教师:完成日期:目录一、概要设计 (4)1.题目的内容与要求 (4)1.1程序模块 (4)1.2系统涉及的数据结构......................错误!未定义书签。
1.2.1 程序数据结构 (5)1.2.2 具体数据类型定义 (6)二、详细设计 (8)2.1创建图(F PRINT-L INK) (8)2.2寻找最佳路径(DFST RAVERSE) (8)2.3最短路径(S HORT P ATH) (9)2.4遍历出某一起点到终点的所有路径(S EARCH A LL P ATH) (11)2.5导入新文件(L OADNEWMAP) (12)三、测试分析 (12)3.1可行性分析 (12)3.1.1技术可行性 (13)3.1.2 工具可行性 (13)3.1.3 经济可行性 (13)3.1.4 操作可行性 (14)3.2需求分析 (14)3.2.1 功能需求 (14)3.2.2 输入输出的要求 (14)四、使用说明与执行结果 (14)4.1主界面 (14)4.2游客界面 (15)4.3系统用户界面 (15)附录(程序清单) (1)一、概要设计1.题目的内容与要求1.1课题的研究背景、要求和意义现代公园范围的广阔,内容不断的增加,使得公园整个系统变得复杂。
使用电脑对游客进行导游成为发展的趋势,以达到更好的为游客服务的目的。
对于公园的游客来说,他们要求:能够浏览整个公园的信息、查询每一个景点的信息、从任意景点遍历全部的景点、能够查找最短路径。
对于系统用户来说,他们要求:删除地点、添加地点、添加路径、删除路径、保存修改、导入文件数据。
采用图这么一种数据结构,采用邻接表的存储方式,用一个二维数组来记录所有的边,为了实现地图的随时更新,采用了静态链表实现对图的接点的添加,删除。
应用文件的读写来进行文件操作。
武汉长江工商学院计算机科学与技术系项目名称:校园导游程序学生姓名:朱捷学号: 1203090120 班级: 12801 指导教师:刘莹2013年12月9日目录1.课程设计的目的与意义 (1)1.1课程设计的目的 (1)1.2课程设计的意义 (1)2.系统功能描述及设计 (1)3.系统存储结构及描述 (3)4.系统功能实现及算法描述 (5)4.1校园景点信息的录入 (5)4.2查询图中任意两个景点间的最短路径 (6)4.3查询图中任意一个景点到其他景点的所有路径 (7)4.4查询任意两景点间的所有路径 (8)5. 系统性能测试 (9)5.1 主界面 (9)5.2浏览校园全景 (9)5.3查询图中任意两个景点间的最短路径 (10)5.4查询图中任意一点到其他景点间的所有路径 (10)5.5查询任意两个景点间的所有路径 (11)6.设计小结 (11)参考文献 (11)源代码清单 (12)1.课程设计的目的与意义1.1课程设计的目的随着社会的发展,人们对生活的也要求越来越高,从以前的一切都用手用笔的时代到了一切都可以用机器代替的时代。
现在的大学校园越来越大了,对于对新学校不熟悉和对于外来着更好的参观和游览学校,特做了这个校园导游图,它能输出所有校园景点的简介供用户参考,并且能找到两个景点间最短路径,让用户少走弯路和冤枉路,而且还可以找到一个景点到其他景点的最短路径,可以提供使用者最好的游览路径。
更多的功能将会在后续继续加入。
1.2课程设计的意义巩固和加深学生对数据结构的基本知识的理解和掌握,掌握C语言编程和程序调试的基本技能。
利用数据结构进行基本的软件设计,掌握书写程序设计说明文档的能力,提高运用数据结构解决实际问题的能力。
培养我们综合运用所学知识的能力和锻炼实践的能力,能够做到善于发现,提出,分析和解决实际问题。
同时,进一步加深、巩固我们所学专业课程(《数据结构实用教程》)的基本理论知识,如语句嵌套和循环,分支等结运用,理论联系实际,进一步培养学生综合分析问题和解决问题的能力。
数据结构课程设计——校园导游咨询系统在当今数字化的时代,信息的高效获取和处理变得至关重要。
对于一个大型校园来说,拥有一个便捷的导游咨询系统能够极大地提升访客和新生的体验。
本次数据结构课程设计的目标就是创建一个实用的校园导游咨询系统。
一、系统需求分析首先,我们需要明确这个校园导游咨询系统的主要功能和用户需求。
对于访客和新生来说,他们可能希望了解校园内各个景点的位置、简介,以及如何从当前位置到达目标景点的最优路径。
系统应该能够提供清晰准确的地图信息、景点介绍和导航指引。
从学校管理的角度出发,系统需要易于更新和维护,能够及时添加新的景点或者修改已有景点的信息。
同时,为了保证系统的稳定性和安全性,需要有一定的权限管理机制,防止未经授权的修改和访问。
二、数据结构选择为了实现上述功能,我们需要选择合适的数据结构来存储和管理校园的相关信息。
对于校园地图的表示,可以使用图(Graph)这种数据结构。
将校园中的各个景点看作图中的节点,景点之间的道路看作边,边的权重可以表示道路的长度或者行走所需的时间。
为了存储景点的详细信息,如名称、简介等,可以使用结构体或者类。
每个景点的结构体或类成员包含景点的标识符、名称、简介等属性。
对于路径搜索和导航,我们可以选择迪杰斯特拉(Dijkstra)算法或者 A算法来计算最短路径。
三、系统功能模块设计1、地图显示模块能够以直观的方式展示校园的地图,包括各个景点的位置和连接关系。
支持缩放、平移等操作,方便用户查看不同区域的细节。
2、景点信息查询模块用户可以输入景点名称或关键词,系统能够快速检索并显示相应景点的详细信息。
3、路径规划模块根据用户输入的起始景点和目标景点,计算并显示最优的行走路径。
能够提供多种路径选择,如最短路径、最少转弯路径等。
4、周边设施查询模块用户可以查询某个景点周边的餐厅、商店、卫生间等设施的位置。
5、用户管理模块只有授权的管理员能够对校园景点信息和地图进行修改和更新。
数据结构-校园导游程序(附源码)简介本文档旨在介绍一个校园导游程序的设计与实现。
该程序使用数据结构来管理校园地点信息,并提供导游功能,供用户查找并导航到目标地点。
文档将依次介绍相关的背景知识、程序设计原理、算法实现以及使用方法。
目录1.背景知识1.校园导游需求2.数据结构概述2.程序设计原理1.数据结构设计2.地点信息管理3.导航算法设计3.算法实现1.数据结构定义2.地点信息管理算法3.导航算法4.使用方法1.程序安装2.数据录入3.导游功能使用5.附录1.附件1:源码文件2.附件2:数据样例1.背景知识1.1 校园导游需求校园导游程序是为了帮助使用者在校园中快速找到目标地点,并提供导航功能,方便出行和参观。
该程序需要管理校园地点的信息,包括名称、位置和介绍等。
使用者可以通过程序查找地点、导航到目标地点。
1.2 数据结构概述数据结构是计算机中用来组织和存储数据的方式。
在校园导游程序中,我们需要选择适合的数据结构来存储和管理地点信息。
常用的数据结构有数组、链表、树、图等。
根据需求分析,我们可以使用图这一数据结构来表示校园地点之间的关系,方便进行导航。
2.程序设计原理2.1 数据结构设计在校园导游程序中,我们使用图这一数据结构来表示校园地点之间的关系。
每个地点可以看作图的一个节点,节点之间的边表示地点之间的连接关系。
通过构建图数据结构,我们可以方便地管理地点信息并进行导航。
2.2 地点信息管理地点信息管理是校园导游程序的核心功能之一。
我们需要设计适合的数据结构来存储地点的信息,包括名称、位置和介绍等。
通过合理的数据结构设计,可以快速地查找和修改地点信息。
2.3 导航算法设计导航算法是实现导游功能的关键。
我们需要设计算法来计算出从起点到目标地点的最短路径,并提供导航指引。
常用的导航算法有Dijkstra算法、A算法等,我们根据需求选择合适的算法进行实现。
3.算法实现3.1 数据结构定义我们使用图这一数据结构来表示校园地点之间的连接关系。
该程序共有5个函数。
分别是Introduce,shortestdistance,floyed,display 及main。
其功能分别是:Introduce:地点介绍函数。
Shortestdistance:计算两地的最短距离。
Floyed:floyed算法求两地的最短距离。
Display:打印两个地点的路径及最短距离至屏幕。
Main:总体控制各函数并提供原始数据。
简单的导游程序-----------------------------------------以下是程序源码-------------------------------------------#include<stdio.h>#include<process.h>/*定义符号常量*/#define INT_MAX 10000#define n 12/*---------------------------------------------------------------------*//*定义全局变量*/int cost[n][n];/* 边的值*/int shortest[n][n];/* 两点间的最短距离*/int path[n][n];/* 经过的地点*//*---------------------------------------------------------------------*//*自定义函数原型说明*/void introduce();int shortestdistance();void floyed();void display(int i,int j);/*---------------------------------------------------------------------*/void main(){/*主函数*/int i,j;char k;for(i=0;i<=n;i++)for(j=0;j<=n;j++)cost[i][j]=INT_MAX;cost[1][2]=cost[2][1]=339;cost[1][3]=cost[3][1]=28;cost[1][4]=cost[4][1]=69;cost[1][5]=cost[5][1]=127;cost[1][7]=cost[7][1]=342;cost[1][10]=cost[10][1]=107;cost[2][7]=cost[7][2]=283;cost[3][6]=cost[6][3]=165;cost[7][11]=cost[11][7]=218;cost[8][12]=cost[12][8]=313;cost[8][10]=cost[10][8]=90;cost[12][9]=cost[9][12]=211;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){clrscr();printf("-----------Welcome to the trunk highway system in Shaanxi Province!-----------\n");printf("1.Location Information\n");printf("2.The shortest path query\n");printf("0.exit\n");printf("locations:\n");printf("1:Xi'an");printf("2:AnKang");printf("3:XianYang");printf("4:WeiNan");printf("5:ShangLuo");printf("6:BaoJi\n");printf("7:HanZhong");printf("8:YanAn");printf("9:YuLin");printf("10:TongChuan");printf("11:GuangYuan");printf("12:SuiDe\n");printf("------------------------------------------------------------------------------\n");printf("Please select the services you need:");scanf("\n%c",&k);switch(k){case '1':printf("Into the place of information:\n");introduce();break;case '2':printf("Inquiries into the shortest path:");shortestdistance();break;case '0':exit(0);default:printf("Error!\nPlease input1,2or0.\n");break;}}}/*main*//*---------------------------------------------------------------------*/void introduce(){/*地点介绍*/int a;printf("Inquiries as to which site you would like moreinformation?\nPlease enter the location code:");scanf("%d",&a);printf("\n");switch(a){case 1:printf("1:Xi'an\n\n Shaanxi Province's political center.\n\n");break; case 2:printf("2:AnKang \n\n Is located in Xi'an, Wuhan, Chongqing Economic Area, the three geometric center.");break;case 3:printf("3:XianYang\n\n International Airport.\n\n");break;case 4:printf("4:WeiNan\n\n Is next to the Huashan.\n\n");break;case 5:printf("5:ShangLuo\n\n There are a result of mountain, named after Waterinfo.\n\n");break;case 6:printf("6:BaoJi\n\n Another Gu Cheng, China is the ancestor of Yan Emperor's hometown.\n\n");break;case 7:printf("7:HanZhong\n\n is a beautiful and richly endowed in the central Hanzhong Basi.n\n\n");break;case 8:printf("8:YanAn\n\n The old revolutionary base areas.\n\n");break; case 9:printf("9: YuLin\n\n Shaanxi Province is now the focus of development.\n\n"); break;case 10:printf("10: TongChuan\n\n Leading to the tomb and the humanities Chuzu revolutionary Yan'an of the Holy Land must pass through to.\n\n");break; case 11:printf("11:GuangYuan\n\n Earthquake hit\n\n\n");break;case 12:printf("12: SuiDe\n\n My hometown!\n\n");break;default:printf("Error!Please input1->10!\n\n"); break;}getch();}/*introduce*//*---------------------------------------------------------------------*/int shortestdistance(){/*要查找的两地点的最短距离*/int i,j;printf("Please input two location code (1->12 devided by ','):"); scanf("%d,%d",&i,&j);if(i>n||i<=0||j>n||j<0){printf("Error!\n\n");printf(" Please input two location code (1->12 devided by ','):\n"); scanf("%d,%d",&i,&j);}else{floyed();display(i,j);}return 1;}/*shortestdistance*//*---------------------------------------------------------------------*/void floyed(){/*用floyed算法求两个地点的最短路径*/int i,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*//*---------------------------------------------------------------------*/void display(int i,int j){/* 打印两个地点的路径及最短距离 */int a,b;a=i;b=j;printf("Which is theshortest path between two locations do you required:\n\n");if(shortest[i][j]!=INT_MAX){if(i<j){printf("%d",b);while(path[i][j]!=0){/* 把i到j的路径上所有经过的地点按逆序打印出来*/printf("<-%d",path[i][j]);if(i<j)j=path[i][j];elsei=path[j][i];}printf("<-%d",a);printf("\n\n");printf("(%d->%d)The shorest path is:%dkm\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)j=path[i][j];elsei=path[j][i];}printf("->%d",b);printf("\n\n");printf("(%d->%d)The shorest path is:%dkm\n\n",a,b,shortest[a][b]); }}elseprintf("Error!This path is not exsist!\n\n");printf("\n");getch();}/*display*/。
课程设计说明书课程名称数据结构课程设计设计课题校园导游程序专业计算机科学与技术班级学号姓名完成日期课程设计任务书设计题目:校园导游程序设计容与要求:[问题描述]用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
[基本要求](1)查询各景点的相关信息;(2)查询图中任意两个景点间的最短路径。
(3)查询图中任意两个景点间的所有路径。
(4)增加、删除、更新有关景点和道路的信息。
指导教师:2016年12月20日课程设计评语成绩:指导教师:_______________年月日目录一、问题描述1二、基本要求1三、测试数据2四、算法思想3五、模块划分45.1应用函数45.2.1主函数65.2.2查询景点信息函数75.2.3查询两景点之间最短路径函数85.2.4查询两景点之间所有路径函数85.2.6删除已有的顶点和路径95.2.7修改已有的顶点和路径11六、数据结构13七、测试14八、心得26九、源程序28一、问题描述用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
二、基本要求(1)查询各景点的相关信息;(2)查询图中任意两个景点间的最短路径。
(3)查询图中任意两个景点间的所有路径。
(4)增加、删除、更新有关景点和道路的信息。
三、测试数据菜单函数:依次输入:1,2,3,4,5,6,0分别对应景点信息查询,最短路径查询,所有路径查询,添加景点及路径信息,删除景点及路径信息,修改景点及路径信息,退出。
查询景点信息:输入:1,2分别对应按编号查询,按景点名称查询按编号查询:输入编号:1按景点名称查询:输入名称:大明桥最短路径查询:输入起始景点和终点景点编号:1,7所有路径查询:输入起始景点和终点景点编号:2,8添加景点及路径信息:输入新景点序号:9输入新景点名称:南门输入新景点相关信息:充满古韵的门,适合拍照输入到其余各景点的距离:50,100,20…删除景点及路径信息:输入:1,2分别对应按编号查询,按景点名称查询按编号查询:输入需要删除的景点编号:8修改景点及路径信息:输入:1,2分别对应修改景点信息,修改道路信息修改景点信息:输入1,2分别对应修改景点名称,修改景点描述修改景点信息:输入修改序号:1输入修改后的名称:图书馆123四、算法思想先利用CreateUDN 创建初始无向网,通过main主函数调用显示,操作功能的选择通过Menu函数输出,根据游客需求选择景点信息查询、景点之间最短路径查询、景点之间所有路径查询、添加景点信息、删除景点信息或者修改信息。
校园导游实验报告——数据结构校园导游实验报告——数据结构⒈引言本实验旨在通过设计和实现一个校园导游系统,运用数据结构的相关知识,解决校园导游中的路径规划和信息查询等问题。
通过该实验,掌握数据结构在实际问题中的应用,并提高对数据结构的理解和运用能力。
⒉实验目的⑴理解和掌握树结构的概念和基本操作。
⑵掌握图的存储结构和常用算法。
⑶学习使用数据结构解决实际问题。
⑷提高编程能力和团队合作能力。
⒊实验任务⑴设计一个数据结构,用于表示校园地图的各个景点和路径关系。
⑵实现校园导游系统,包括路径规划和信息查询功能。
⑶对系统进行测试和性能优化。
⒋实验步骤⑴根据校园地图,设计合适的数据结构,包括景点、路径和导游系统等。
⒋⑴景点:定义景点的属性,包括名称、位置、介绍等。
⒋⑵路径:定义路径的属性,包括起始点、终点、距离等。
⒋⑶导游系统:定义导游系统的功能,包括路径规划和景点信息查询等。
⑵实现校园导游系统的核心功能。
⒋⑴路径规划:根据用户输入的起始点和终点,使用图的遍历算法,寻找最短路径。
⒋⑵景点信息查询:根据用户输入的景点名称,查询并展示景点的详细信息。
⑶对导游系统进行完整性测试和性能优化。
⒋⑴测试导游系统的各个功能模块,确保无误。
⒋⑵针对导游系统的性能瓶颈,进行分析和优化,提高系统响应速度和稳定性。
⒌实验结果与分析⑴校园导游系统实现了路径规划和景点信息查询的功能。
⑵经过完整性测试,系统的各个功能模块均正常运行,没有明显的错误。
⑶对导游系统的性能进行优化后,系统响应速度明显提升,用户体验更加良好。
⒍实验总结通过本次实验,我们深入理解了数据结构的应用,并成功设计和实现了一个校园导游系统。
在实验过程中,我们不仅提高了编程能力,还增强了团队合作意识。
通过测试和优化,我们不断完善系统,使其达到了预期目标。
附件:⒈校园地图⒉系统设计文档⒊测试报告法律名词及注释:⒈数据结构:指描述数据元素之间相关关系的一种方式,包括逻辑结构和物理结构。
#include #include #define INT_MAX 10000 #define n 10 int cost[n][n];/* 边的值*/ int shortest[n][n];/* 两点间的最短距离*/ int path[n][n];/* 经过的景点*/ void welcome() {
printf("\n 欢迎光临\n"); printf("\n 凝香公园 \n\n\n\n\n"); printf("\n 给您最纯净的享受\n"); printf("\n Pure as the south polar snow \n\n"); printf("\n "); system("pause"); }
void Menu()//函数的主显示界面 { system("cls"); system("color 70"); printf(" ┏━━━━━━━━━━━━━━━━━┓ \n"); printf(" ┃ 凝香公园导游系统 ┃ \n"); printf(" ┗━━━━━━━━━━━━━━━━━┛ \n"); printf(" \n"); printf(" ┏━━━━━━━━━━━━━━━━━━━━━┓\n"); printf(" ┃ ┃\n"); printf(" ┃ 1:浏览公园全景 ┃\n"); printf(" ┃ ┃\n"); printf(" ┃ 2:最佳游览路线 ┃\n"); printf(" 主┃ ┃\n"); printf(" ┃ 3:查看单个景点 ┃\n"); printf(" 菜┃ ┃\n"); printf(" ┃ 4:游览线路查询 ┃\n"); printf(" 单┃ ┃\n"); printf(" ┃ 5:凝香公园简介 ┃\n"); printf(" ┃ ┃\n"); printf(" ┃ 6:退出导游系统 ┃\n"); printf(" ┃ ┃\n"); printf(" ┗━━━━━━━━━━━━━━━━━━━━━┛\n"); printf(" \n"); printf(" \n"); printf(" \n"); printf("\n\n >>>请按键选择:"); } void Browser() { printf("\n ● 公园全景图 ● \n"); printf("————————————————————————————————\n"); printf(" ━━━━━━━━━ \n"); printf(" ━━━━┳━━━━ 紫金大道 \n"); printf(" ┃ ↑北 \n"); printf(" ┃ \n"); printf(" 1沁园━━━━━ 2公园大门━━━━━━━━┓ \n"); printf(" ┃ ┃ ┃ \n"); printf(" ┃ ┃ ┃ \n"); printf(" 3梨园━━━━━━━4春 园━━━━━━━10夏园 \n"); printf(" ┃ ┃ ┃ ┃ \n"); printf(" ┃ ┃ ┃ ┃ \n"); printf(" 5鼎湖 ┃ 8秋园━━━━━━9冬园 \n"); printf(" ┃ ┃ ┃ \n"); printf(" ┃ ┃ ┃ \n"); printf(" ┃ ┃ ┃ \n"); printf(" 6聚缘阁━━━━━━7凝香园 \n"); printf(" \n"); printf(" \n"); printf(" 2012年7月4日\n"); printf("————————————————————————————————\n");
} void place() { char z; printf("\n\n\n━━━━━━━━━━━━【公园简介】━━━━━━━━━━━━━━━━━━\n"); printf("\n \n 凝香园也称“正春园”,位于菏泽城东岳程办事处岳楼行政村。\n\n"); printf(" 始建于元末明初,原为袁姓所有,称“袁家堂”花园。\n\n"); printf(" 凝香园是我国古代北方八大名园之一,俗称“何家花园”,距今有近1000余年的历史。\n\n"); printf(" 园中有百多年的刺柏、几百年的腊梅、紫丁香,千年翠兰松和一块假山石。\n\n"); printf(" “凝香园”附近的何应瑞墓地古柏成林,苍郁参天。\n\n"); printf("\n ●注:本公园和真正的“凝香园”是同名,而非真实园林!\n"); printf("\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"); printf("\n\n\n >>>>请输入任意字符【返回主菜单】\n"); z=getchar();z=getchar(); } void go() {
printf("\n\n\n\n\n\n ┏━━━━━━━━━━━━━感谢使用━━━━━━━━━━━━━━━━┓\n"); printf(" ┃ ┃\n"); printf(" ┃ ┃\n"); printf(" ┃ ┃\n"); printf(" ┃ 请按任意键退出! ┃\n"); printf(" ┃ ┃\n"); printf(" ┃ ┃\n"); printf(" ┃ 程序制作:陈明 ┃\n"); printf(" ┃ 学号:3100931036┃\n"); printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n\n\n\n\n\n"); exit(0);
} void way() { char z; printf("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"); printf(" ●本公园的最佳全景游览路线为:\n\n"); printf(" 2公园大门→ 1沁园→ 3梨园→ 5鼎湖→ 6聚缘阁→ 7凝香园→ 4春园→ 8秋园→ 9冬园→ 10夏园→ 2公园大门\n"); printf(" ●全程所需行程:276米!\n\n"); printf(" ●如需其他路线请返回主菜单进入【浏览路线查询】\n"); printf("\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"); printf("\n\n\n >>>>请输入任意字符【返回主菜单】\n"); z=getchar(); z=getchar(); } void introduce() {/*景点介绍*/ int a; char z; printf(">>>请输入您想查询的景点编号:"); scanf("%d",&a); getchar(); printf("\n\n━━━━━━━━━━━━【 查询结果:】━━━━━━━━━━━━━━\n\n"); switch(a) { case 1: printf(" 1:沁园\n\n ●一首《沁园春.雪》让您对眼前的梅花感慨万千。\n");break; case 2: printf(" 2:公园大门\n\n ●仿古的气势宏伟建筑仿佛置身于100年前。\n");break; case 3: printf(" 3:梨园\n\n ●丛林间嬉戏的小鸟不禁让你回头倾听。\n");break; case 4: printf(" 4:春园\n\n ●广阔的草地伴着阵阵花香,躺在上面可以仰望南天。\n");break; case 5: printf(" 5:鼎湖\n\n ●圆滑的湖面仿佛一面大鼎将湖水撑起来。\n");break; case 6: printf(" 6:聚缘阁\n\n ●来自大江南北的古玩古画齐聚一堂。\n");break; case 7: printf(" 7:凝香园\n\n ●神奇的南方小筑隐匿在桂花林中。聚香也。\n");break; case 8: printf(" 8:秋园\n\n ●当你独自一人行走在大片阔叶林里,才能感受自然的气息。\n");break; case 9: printf(" 9:冬园\n\n ●冬日恋歌在这里尽情唱响,High起来吧!\n");break; case 10: printf(" 10:夏园\n\n ●荷花池中一抹红,荷塘月色任你赏!\n");break; default: printf(" ●Error:景点编号输入错误!请输入1~10的数字编号!\n\n");break; } printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n");
} void floyed() {/*用floyed算法求两个景点的最短路径*/ int i,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(j=1;j<=n;j++) for(i=1;i<=n;i++) 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; } } void display(int i,int j)
{/* 打印两个景点的路径及最短距离 */ int a,b; a=i; b=j; printf("\n━━━━━━━━━━━━【 查询结果:】━━━━━━━━━━━━━━\n\n"); printf(" ●路径: "); if(shortest[i][j]!=INT_MAX) { if(i{ printf(" %d",b); while(path[i][j]!=0) {/* 把i到j的路径上所有经过的景点按逆序打印出来*/ printf(" ← %d",path[i][j]); if(ielse i=path[j][i]; } printf(" ← %d",a); printf("\n\n"); printf(" ●距离:您需要步行 %dm才能到达目的地!",shortest[a][b]);
} else { printf("%d",a); while(path[i][j]!=0) {/* 把i到j的路径上所有经过的景点按顺序打印出来*/ printf("→ %d",path[i][j]); if(i