数据结构报告-校园导航问题_第1页
数据结构报告-校园导航问题_第2页
数据结构报告-校园导航问题_第3页
数据结构报告-校园导航问题_第4页
数据结构报告-校园导航问题_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

首先,需求分析1.操作环境:Microsoft Visual C 6.02.程序实现的功能:设计一个校园导游方案,为来访客人提供各种信息查询服务。为游客提供图中任何景点的相关信息查询。为游客提供图中任何景点的相关信息查询。3.程序输入和数据格式及描述,包括输入:用户只需根据页面提示输入要操作的序列号,然后按回车键确认即可。4.程序的输出格式和描述:当用户输入要查询的地点的序列号并返回时,屏幕自动生成查询路径的最短路线和距离。5.测试数据:当用户进入最短距离查询界面时,输入起始位置1号(江苏大学大门),结束位置5号(药学院)。屏幕上自动生成两条路径最短距离519米和最短路径江苏大学大门图书馆药学院。当用户输入起始位置号7(三江大厦)和结束位置号13(女性区域1)时,屏幕自动生成两条路径之间的最短距离1305米,最短路径为三江大厦三山大厦东山游乐场女性区域1。二。设计说明(1)。主要数据结构设计说明:结构定义:typedef结构VertexType 整数;char * sight顶点类型;typedef结构顶点类型:凸数;数字数字;int vexnum MGraph常数的定义:#定义最大值32767#定义NUM 1每个功能的定义:Void CreateMGraph(int v) /创建图形的函数,其中v表示图形中的顶点数虚空地图()/地图显示功能,用于输出西安科技大学的示意图字符菜单()/主菜单显示在操作界面上空信息()/数据导入功能,用于用户选择查询位置信息时输出位置信息Void Dijkstra(int num) /dijkstra函数无效显示(intsight 1,int sight 2)/地图显示功能Void main() /主函数定义(2)。程序的主要流程图最短路径算法流程图;(3)各功能调用工作的主要功能(4)。主要功能描述:#定义最大值32767 /最大值表示此时两点之间无法直接达到重量#define NUM 15 /17学校的位置被选择并存储在一个数组中,其中数组的第一个元素不存储位置以便于操作。typedef结构VertexType 整数;char * sight顶点类型;/定义顶点的结构类型,数字代表顶点编号,字符数组代表顶点的名称。typedef结构顶点类型:凸数;数字数字;int vexnum MGraph/定义图形的结构类型,凸NUM数组存储顶点,arcspNUMNUM矩阵存储边的权重,vexnum表示顶点的数量图G;生成g来表示结构变量mggraph国家队国家队;/定义全局变量数数的存储点之间的最短路径长整数数值;/定义全局变量D数值的存储点之间的最短路径的权重空迪克斯特拉(int num) /通过迪克斯特拉算法找到从num到休息点的最短路径,并将最短路径保存在数组PNUMNUM中,并将最短路径的权重保存在数组DNUM中int v,w,I,t;国际决赛数值;int min对于(v=1;v%s ,G.vexb。视线);/通过数值数值确定从视点1到视点2的最短路径q=Q1;ab=0;d=b。if(q % 8=0)printf( n );Void main() /主函数int v0,v1;char e;char ck创建图形(NUM);Do /使用do while循环确保循环至少发生一次。系统(cls);/用系统(cls)清除屏幕,使屏幕变得简单。ck=菜单();开关(ck) /使用开关语句确定用户选择功能案例1:Gate :/gate函数将程序返回到gate位置系统(cls);地图();做PRINTF( n n t t t请选择出发号码(1 14):);scanf(“% d”,v0);if(v01|v017)printf( n n t t t t类型错误! n );同时(v01 | | v 017);做PRINTF( t t t请选择目标序列号(1 14):);scanf(“% d”,v1);if(v11|v114|v1=v0)printf( n n t t t t类型错误! n );同时(v11 | | v 114 | | v1=v0);Dijkstra(v0);显示(v0,v1)。printf( n n t t t t请按任意键继续,按e返回主页 n );getchar();scanf(“% c”,e);If(e=e)标识符e等于e时的跳转语句休息;goto gate案例2:系统(cls);信息();printf( n n t t t t按enter返回主页. n );getchar();getchar();休息;同时(ck!=e);/当标识符ck不等于e时继续循环三。计算机操作的结果和经验1.测试结果:(如图所示)打开程序显示的界面。我们选择服务1来搜索位置之间的最短路径。选择1并输入如果我们选择的起点是艺术学院,终点是东山游乐场,输入3个回车,输入11个回车。然后最短路径显示在屏幕上我们选择江苏大学景点介绍服务,然后输入2进入屏幕的最后是对景点的简要介绍,如图所示。2.时间复杂性分析(1)无效创建图(整数v)一个循环用于顶点分配,两个循环用于邻接矩阵分配,并且彼此嵌套,因此时间复杂度为o()(2)无效Dijkstra(整数)两个for循环用于清空初始值并相互嵌套,四个for循环用于更新路径长度并相互嵌套,因此时间复杂度为o()(3)空白显示(国际视野1,国际视野2)输出最短路径使用两个for循环,并且相互嵌套,因此时间复杂度为o()3.调试中的问题(1)。顶点类型结构最初定义为typedef结构VertexType 整数;迷人20;顶点类型;但是,在分配初始值时没有使用strcpy()函数,结构后来改为typedef结构VertexType 整数;char * sight顶点类型;可以直接将字符串赋给视觉变量。(2)。开始时,没有对应的错误输入提示。后来,一个相应的错误处理机制被添加到main()函数中(3)。源程序没有使用系统(“CLS”),屏幕看起来混乱而不简洁,下面的程序在相应的地方添加了系统(“CLS”)(4)语法逻辑错误。在执行过程中,有时会出现死循环,有时屏幕上会出现空代码和随机代码。主要原因有:数据初始值设置不一致,for语句编写错误。每个模块中对应的for语句应该写成I;j被写成j;或者j被写成j,j被写成j。子程序语句中定义的数值范围没有达到最初设置的大小;例如,#定义NUM 14,最初NUM是14,但是当我写一世的时候。sight= ,该语句中没有十条语句,因此系统默认为null语句,因此屏幕上输出null。(5)。变量名的定义是错误的,导致调用时出错,但最好更改它。(6)算法编写不完整,部分句子被省略。例如,在调试过程中,发现DijkStra算法没有完全编写好,导致输出结果不正确。当我开始寻找它的时候,我不知道错误在哪里,但是在检查了书中的算法之后,我找到了问题的根源。4.描述程序中可以改进的地方虽然程序已经设计好了,但由于以下两个原因,它通常不是很好:1.糟糕的功能设计。菜单功能太简单了2.缺乏界面美化。因此,今后应更加努力优化该方案。5.收获与体验随着计算机软硬件的不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论