数据结构课程设计交通咨询系统
数据结构课程设计-全国交通咨询系统
X X 学院计算机系《数据结构》课程设计报告书全国交通咨询模拟系统的设计与实现学生姓名:学号:年级专业及班级:指导老师及职称:讲师专业:计算机科学与技术专业提交日期:2011年6月全国交通咨询模拟系统的设计与实现学生:指导老师:(怀化学院计算机系,怀化 418008)摘要:该课程设计主要实现了对全国火车及飞机信息的修改和查询,其中主要包括:管理员对火车、飞机信息的操作,其中又包含对两种交通方式的增加和删除操作。
旅客用户对两种交通信息的查询,其中飞机信息和火车信息都包含了对两个站点间最短路径方式的查询、最少花费方式的查询以及城市中所有的交通信息的查询。
关键词:全国交通咨询;/ 、八—1前言为了完成数据结构的课程设计,为了巩固自己数据结构的知识,也是为了提高自己的编程能力和逻辑思维能力,我选了这道全国交通咨询模拟系统的设计与实现一题。
在对其需求进行分析之后,按照需求分析,逐步完成其各部分的功能实现。
对于总的方面来讲,管理员功能实现并不难,而难点在于用户功能中的算法及数据结构中的知识以及编程的细微方面,下面将详细介绍本课程设计的内容。
2需求分析2.1范围1.1标识2. 1.2系统概述1 •软件名称:全国交通咨询系统V1.02 •软件功能:主要的功能有:管理员增删和修改城市站点信息、飞机路线信息、火车路线信息。
3•用户:查询最小耗费路线、查询最短时间路线、查询城市所有路线。
4•开发者:2. 1.3文档概述需求分析采用在面向对象的方法,主要使用结构体struct的方法来进行实际的编程,在文档中主要采E-R图和对功能的简单描述的方法来表述系统的需求。
本需求分析的审查者是老师,所以主要是写给老师看的,用来说明我对这个系统的分析情况。
2. 2引用文件无2. 3需求概述2. 3.1系统目标本系统的总体目标是通过使用该系统,管理员可以对飞机或者火车的信息的简单管理,也方便外出旅客在不同的需求下(如:最少的花费和最短的路程),快速浏览到所要的信息。
数据结构课程设计全国交通咨询系统方案
工业应用技术学院课程设计任务书题目全国交通资询系统主要容:设计了一个方便用户查询交通咨询系统。
该系统所做的工作的是模拟全国交通咨询,为旅客提供三种最优决策的交通咨询。
该系统可以进行城市,列车车次和飞机航班的编辑的基本信息输入操作。
程序的输出信息主要是:最快需要多少时间才能到达,或最少需要多少旅费才能到达,或最少需要多少次中转到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。
程序的功能包括:提供对城市信息的编辑,提供列车时刻表和飞机航班表的编辑,提供三种最优决策:最快到达、最省钱到达、最少中转次数到达。
基本要求:1、掌握C语言的变量及函数的灵活使用;2、熟练掌握图的深度、广度优先遍历算法思想及其程序实现;3、掌握C语言中文件的基本操作;4、掌握VC++6.0软件的熟练使用。
主要参考资料:[1] 春葆.数据结构程序设计[M].:清华大学,2002,03[2] 王黎,袁永康战略[M].:清华大学,2002,01[3] 谭浩强.C程序设计第二版[M].:清华大学,2003,03[4] 任哲.MFC Windows程序设计[M].:清华大学,2004,06完成期限:2016.12.05—2017.01.05指导教师签名:课程负责人签名:随着高科技的飞速发展,列车、飞机、动车、高铁的出现极大的减少了人们花在旅途上的时间。
对于城市间错综复杂交通网的管理,是一项庞大而复杂的工作。
在此基础上,如何实现交通网智能化的管理达到帮助乘客选择经济高效的交通工具是目前仍处空白。
尤其乘客交通工具的择优选择是一个令人懊恼的工作,一个原因就是各种交通工具的查询十分分散和繁琐。
即使有互联网的帮忙,但是没有一个统一的归类、没有一个精细的算法、系统的软件帮助,人们仍然无法获得最优方式。
为此开发一个交通择优系统是十分必要的。
采用计算机对城市间的交通工具进行系统录入和管理,进一步提高了交通部门针对城市间客运网络的管理效率,实现交通运营网络的系统化、规化和自动化。
数据结构课程设计报告--交通咨询系统
数据结构设计报告姓名:专业:指导教师:目录摘要 (3)第1章概述 (4)1.1系统实现的目标 (4)1.2系统实现方案 (4)1.3系统实现环境 (4)1.4具体的开发方法 (4)第2章系统设计 (5)2.1系统功能设计 (5)2.2数据设计 (5)2.3界面的设计 (5)第3章系统实现 (9)参考文献 (15)摘要设计、实现一个全国大城市间的交通咨询程序,为旅客提供三种最优决策方案:一是建立交通网络图的存储结构,二实现两个城市间的最短路经问题。
程序所具有的功能特色本程序主要目的是为了给用户提供路径咨询。
实现了帮助用户了解全国各大城市间往来的最短路径问题,第二,可以提供用户查询各大城市的相关信息。
本程序最大的特点是支持用户自己添加城市信息及城市,或添加城市的路径,既就有可扩展性该程序所做的工作的是模拟全国交通咨询,为旅客提供三种最优决策的交通咨询。
此程序规定:(1)在程序中输入城市名称时,需输入10个字母以内的字母串;输入列车或飞机编号时需输入一个整型数据;输入列车或飞机的费用时需输入一个实型数据;输入列车或飞机开始时间和到达时间时均需输入两个整型数据(以hh:mm的形式);在选择功能时,应输入与所选功能对应的一个整型数据。
(2)程序的输出信息主要是:最快需要多少时间才能到达,或最少需要多少旅费才能到达,或最少需要多少次中转到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。
(3)程序的功能包括:提供对城市信息的编辑,提供列车时刻表和飞机航班表的编辑,提供三种最优决策:最快到达、最省钱到达、最少中转次数到达。
第1章概述1.1 系统实现的目标通过进行课程设计,了解并初步掌握设计、实现较大系统的完整过程,包括:系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。
应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。
数据结构课程设计交通咨询系统设计
信息科学与工程学院课程设计任务书题目:交通咨询系统设计学号: 201112220141姓名:年级:专业:计算机应用与技术课程:数据结构指导教师:职称:完成时间:课程设计任务书及成绩评定一、需求分析设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到另一城市顶点之间的最短路径(里程)或最低花费或最少时间等问题。
对于不同的咨询要求,可输入城市间的路程或所需时间或所需费用。
本设计共分三部分,一是建立交通网络图的存储结构;二是解决单源最短路径问题;三是实现任两个城市顶点之间的最短路径问题。
1.1.1建立图的存储结构邻接矩阵是表示图形中顶点之间相邻关系的矩阵。
图的邻接矩阵是定义如下的n 阶方阵:设G=(V ,E )是一个图,结点集为{}n v v v V ,,,21 =。
G 的邻接矩阵,E,,0E,,)(,)(⎪⎩⎪⎨⎧>∉<∞>∈<==⨯⨯j i j i j i j i n n j i ij n n ij v v v v v v v v w a a A )或当(,或)或当(, 当邻接矩阵的行表头、列表头顺序一定时,一个图的邻接矩阵表示是唯一的。
图的邻接矩阵表示,除了需用一个二维数组存储顶点之间的相邻关系的邻接矩阵外,通常还需要使用一个具有n 个元素的一维数组来存储顶点信息,其中下标为i 的元素存储顶点i 的信息。
因此,图的邻接矩阵的存储结构定义如下:1.1.2 单源最短路径最短路径的提法很多。
在这里先讨论单源最短路径问题:即已知有向图(带权),我们希望找出从某个源点S ∈V 到G 中其余各顶点的最短路径。
为了叙述方便,我们把路径上的开始点称为源点,路径的最后一个顶点为终点。
那么,如何求得给定有向图的单源最短路径呢?迪杰斯特拉(Dijkstra )提出按路径长度递增产生诸点的最短路径算法,称之为迪杰斯特拉算法。
迪杰斯特拉算法求最短路径的实现思想是:设G=(V ,E )是一个有向图,结点集为,}v ,,v ,{v V n 21⋯=,cost 是表示G 的邻接矩阵,cost[i][j]表示有向边<i,j>的权。
大数据结构课程设计交通咨询系统设计
设计题目<二>:交通咨询系统设计P160 一、设计要求 1 .问题描述根据不同目的的旅客对交通工具有不同的要求。
例如,因公出差的旅客希望在旅途中的时间尽可能的短,出门旅行的旅客希望旅费尽可能的少,而老年人则要求中转次数少。
模拟一个全国城市之间的咨询交通程序,为旅客提供两种或三种最优的交通路线。
2.需求分析二、概要设计1.主界面设计(图“交通咨询系统”主菜单)2.存储结构设计本系统采用图结构类型存储抽象交通咨询系统的信息typedef struct TrafficNodetmp = k;}printf("%s", AdjList[track[i]].Train[tmp].name);pri ntf("%2d:%2d-%2d:%2d",AdjList[track[i]].Trai n[tmp].StartTime / 60,AdjList[track[i]].Train[tmp].StartTime % 60,AdjList[track[i]].Trai n[tmp].StopTime / 60,AdjList[track[i]].Trai n[tmp].StopTime % 60);else{for (i--; i>0; i--) um;[k++)ghar name[MAX_STRlNG_NUM];jajnN{printf("\n%s:", CityName[track[i]]);end = track[i - 1]; min = 32767;for (k = 0; k<AdjList[track[i]].FlightNum; k++)if (AdjList[track[i]].Train[k].EndCity ==end&&min>AdjList[track[i]].Flight[k].Cost){min = AdjList[track[i]].Flight[k].Cost;tmp = k;}printf("%s",AdjList[track[i]].Flight[tmp].name);printf("%2d:%2d-%2d:%2d",AdjList[track[i]].Flight[tmp].StartTime / 60,AdjList[track[i]].Flight[tmp].StartTime % 60,AdjList[track[i]].Flight[tmp].StopTime / 60,AdjList[track[i]].Flight[tmp].StopTime % 60);}}printf("\n%s: DESTINATION!", CityName[track[0]]);printf("\nMin Cost : %d\n", cost);}void Dijkstra(int matx[Dij_MAXN][Dij_MAXN], int p_start, int p_end, int TravelType){int PreCity[Dij_MAXN]; 添加城市在主菜单下,用户输入 1,添加城市名称(图添加城市)2.删除城市在主菜单下,用户输入2,删除已添加城市名称(图删除城市)3.添加交通路线在主菜单下,用户输入3,已添加城市名称。
数据结构课程设计全国交通咨询系统
.郑州工业应用技术学院课程设计任务书题目全国交通资询系统主要内容:设计了一个方便用户查询交通咨询系统。
该系统所做的工作的是模拟全国交通咨询,为旅客提供三种最优决策的交通咨询。
该系统可以进行城市,列车车次和飞机航班的编辑的基本信息输入操作。
程序的输出信息主要是:最快需要多少时间才能到达,或最少需要多少旅费才能到达,或最少需要多少次中转到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。
程序的功能包括:提供对城市信息的编辑,提供列车时刻表和飞机航班表的编辑,提供三种最优决策:最快到达、最省钱到达、最少中转次数到达。
基本要求:1、掌握C语言的变量及函数的灵活使用;2、熟练掌握图的深度、广度优先遍历算法思想及其程序实现;3、掌握C语言中文件的基本操作;4、掌握VC++6.0软件的熟练使用。
主要参考资料:[1] 李春葆.数据结构程序设计[M].北京:清华大学出版社,2002,03[2] 王黎,袁永康战略[M].北京:清华大学出版社,2002,01[3] 谭浩强.C程序设计第二版[M].北京:清华大学出版社,2003,03[4] 任哲.MFC Windows程序设计[M].北京:清华大学出版社,2004,06完成期限:2016.12.05—2017.01.05指导教师签名:课程负责人签名:随着高科技的飞速发展,列车、飞机、动车、高铁的出现极大的减少了人们花在旅途上的时间。
对于城市间错综复杂交通网的管理,是一项庞大而复杂的工作。
在此基础上,如何实现交通网智能化的管理达到帮助乘客选择经济高效的交通工具是目前仍处空白。
尤其乘客交通工具的择优选择是一个令人懊恼的工作,一个原因就是各种交通工具的查询十分分散和繁琐。
即使有互联网的帮忙,但是没有一个统一的归类、没有一个精细的算法、系统的软件帮助,人们仍然无法获得最优方式。
为此开发一个交通择优系统是十分必要的。
采用计算机对城市间的交通工具进行系统录入和管理,进一步提高了交通部门针对城市间客运网络的管理效率,实现交通运营网络的系统化、规范化和自动化。
数据结构课程设计—城市道路交通咨询系统
数据结构课程设计—城市道路交通咨询系统榆林学院数据结构课程设计报告题目城市交通咨询系统作者杨朝专业信息管理与信息系统学号 1514210121 指导老师张慧答辩时间 2016.12.18目录1.系统需求分析 (1)1.1用户需求分析 (1)1.2功能需求分析 (2)1.3数据需求分析 (2)1.4 小结 (3)2.系统设计 (3)2.1系统设计功能 (3)2.2每个模块的具体功能。
(4)2.2.1采用C语言定义相关数据类型 (4)2.2.2建立邻接矩阵交通网络: (5)2.2.3查询指定城市到其他城市自己建的最短路程: (6)2.2.4查询任意两个城市之间的一条最短路径: (8)2.3主函数的调用关系图 (9)3.系统测试 (11)3.1操作说明 (11)3.2测试数据 (11)3.2.1用户进入界面: (11)3.2.2、具体功能的实现 (12)3.2.3、结束程序 (14)4.总结 (15)5.致谢 (15)6.附录 (16)1.系统需求分析现如今网络非常发达,无论人们出差,旅游或者做其他的出行之时,都会想到道路问题,切不仅仅关心的是交通费用,而且对于里程和所需要的时间等的问题也是同样的关心,在此系统中,完全面向用户,可以用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。
且在图中,顶点表示城市,边表示城市之间的交通关系。
设计一个交通咨询系统,能够让旅客咨询从任一城市顶点到达另外一个城市之间顶点的最短路径问题(最短里程问题)。
对系统分析,主要从以下几个方面进行分析。
1.用户需求分析2.功能需求分析3.数据需求分析1.1用户需求分析现如今网络非常发达,无论人们出差,旅游或者做其他的出行之时,都会想到道路问题,切不仅仅关心的是交通费用,而且对于里程和所需要的时间等的问题也是同样的关心,在此系统中,完全面向用户,可以用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。
且在图中,顶点表示城市,边表示城市之间的交通关系。
数据结构课程设计全国交通咨询系统
数据结构课程设计全国交通咨询系统数据结构课程设计全国交通咨询系统随着交通工具的快速发展,现代人的出行方式更加灵活便捷,交通行业也变得越来越重要。
然而,随之而来的交通拥堵、安全问题和出行效率等问题亟待解决。
因此,交通咨询系统的开发应运而生。
本文介绍一个数据结构课程设计项目——全国交通咨询系统,该系统旨在为用户提供便捷、全面的交通出行信息和服务。
该系统主要包括以下方面的功能:1. 城市选择及路线查询功能用户可选择目的地城市,系统将返回该城市的基本信息,以及从用户当前位置到目的地的交通路线和方案,并提供相应的时间和费用信息。
2. 交通工具查询功能用户可在系统中查询各种交通工具的班次、价格、车次和到达时间等相关信息,以便用户做出最优出行方案。
3. 路况信息查询该系统可实时获取交通状况信息,并展示给用户最新的路况信息。
此外,当用户选择出行方式时,系统可根据实时路况为用户提供最佳出行方案。
4. 预订和购票该系统可为用户提供方便的预订和购票服务。
用户可在线预订和购买机票、火车票和长途汽车票等交通工具,并选择合适的座位和时间。
5. 旅游景点推荐功能该系统可根据用户的出行方案提供适宜的旅游景点推荐。
用户可在系统中了解这些景点的详细信息和交通时间,以便更好地规划自己的行程。
该全国交通咨询系统的实现需要多种数据结构的支持,例如图、树、堆栈、链表、哈希表等。
下面分别讨论每个功能的实现方法和相关数据结构。
1. 城市选择及路线查询功能城市选择及路线查询功能需要通过图的遍历来实现。
图是由顶点和边组成的集合,可以用来表示城市及它们之间的相互关系。
在本系统中,每个城市可以看做一个顶点,每条连接两个城市的路径被视为一条边。
为了实现城市选择及路线查询功能,需要对图进行遍历。
在这个系统中,广度优先搜索算法(BFS)是最佳选择,因为BFS可以给出最近的解决方案。
2. 交通工具查询功能交通工具查询功能需要通过树来实现。
树是由节点和边组成的集合,可以用来表示各种结构化数据。
数据结构--交通咨询系统
数据结构--交通咨询系统数据结构--交通咨询系统一、引言交通咨询系统是为了方便用户获取交通相关信息而设计的一种软件系统。
本文档旨在说明交通咨询系统的设计和实现细节,包括系统的功能需求、系统架构、核心算法以及数据结构的选择等方面内容。
二、功能需求1、用户注册与登录功能a:用户可以通过注册功能创建账户;b:用户可以通过登录功能进行身份验证。
2、交通信息查询功能a:用户可以根据起点和终点查询交通路线;b:用户可以查询公交、地铁、火车、飞机等交通工具的时刻表;c:用户可以查询附近交通站点或机场、车站的详细信息。
3、交通信息推荐功能a:根据用户的历史查询记录和个人偏好,系统可以推荐适合的交通方案;b:根据用户的位置信息,系统可以推荐附近的交通站点或机场、车站。
4、系统设置功能a:用户可以选择系统界面的主题风格;b:用户可以设置提醒功能,以接收相关交通信息的通知。
三、系统架构1、前端设计a:用户界面设计:包括登录、注册、查询、推荐、设置等功能的界面设计;b:用户交互设计:实现用户与系统之间的信息交互。
2、后端实现a:数据库设计:设计用户、交通路线、交通工具、交通站点等相关数据表;b:服务器端设计:负责处理用户请求、数据存储和计算等任务;c:算法设计:设计合适的算法用于交通信息查询和推荐。
四、核心算法1、最短路径算法a:使用Dijkstra算法计算起点到终点的最短路径;b:考虑交通工具的运行时间、换乘时间等因素。
2、推荐算法a:使用协同过滤算法根据用户的历史查询记录和个人偏好进行交通方案推荐;b:使用基于位置的推荐算法根据用户的位置信息推荐附近的交通站点或机场、车站。
五、数据结构选择1、图结构a:使用图结构来表示交通路线和交通站点之间的关系;b:利用图的搜索算法来实现最短路径算法。
2、队列和栈a:使用队列和栈来处理用户的查询请求和系统的任务调度。
六、附件本文档涉及的附件包括系统的界面原型设计图、数据库设计文档、算法设计文档等。
数据结构课程设计--城市交通咨询系统、航班信息的查询与检索
课程设计题目:城市交通咨询系统一、课程设计的原始资料及依据在交通网络非常发达,交通工具和交通方式不断更新的今天,人们的出差、旅游或做其他的出行时,不仅关心节省交通运费问题,而且对里程和所需要时间等问题感兴趣。
可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。
图中顶点表示城市,边表示城市之间的交通关系。
这个交通咨询系统可用回答旅客提出的各种问题。
二、课程设计主要内容及要求1. 建立交通网络图的存储结构。
2. 画出主要的功能结构图和主要模块的流程图。
3. 使用迪杰斯特拉算法:求一个城市到其它所有城市最短路径。
4. 使用弗洛伊德算法:求任意两个城市间最短路径。
三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、数据通路图、微程序流程图、实验接线图、微指令代码表等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
设计小组评语处注明设计组编号、设计组组长、设计组成员,并由设计组组长给出评语。
4.课程设计说明书手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
5.课程设计说明书装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。
四、设计完成后应提交成果的种类、数量、质量等方面的要求1.完成“任务书”中指定的操作功能,运行稳定。
(完整word版)数据结构课程设计_____全国交通咨询系统
数据结构课程设计设计题目:全国交通网络咨询系统陈敏 指导教师:太原 学院级: 计算机科学与技术 号: 132054103 名:刘海静四、五、六、七、八、课程设计题目需求分析测试数据概要设计调用关系图程序代码测试结果心得体会及总结目录1414全国交通网络咨询系统、课程设计题目数据结构课程设计二、需求分析1、实现功能对城市信息(城市名、城市间的里程)进行编辑:具备添加、修改、删除功能; 对城市间的交通工具:火车。
对列车时刻表进行编辑:里程、和列车班次的添加、修改、删除;提供两种最优决策:最快到达或最省钱到达。
全程只考虑一种交通工具,可以不考虑回程;咨询以用户和计算机对话方式进行,要注意人机交互的屏幕界面。
由用户选择最优决策 原则和交通工具,输入起始站、终点站、出发时间,输出信息:最快需要多长时间才能到达 及旅费,或者最少需要多少旅费才能到达及时间, 并详细说明依次于何时何地乘坐哪一趟列 车何时到达何地。
2、设计思路(1)数据存储。
城市信息(城市名、代码)、交通信息(城市间的里程、各航班和列车时刻 ) 存储于磁盘文件。
在实验中本想用文本储存数据, 但操作不熟悉,而是改用图的邻接矩阵 储 存原始信息,而后用数组进行添加删改(2)数据的逻辑结构。
根据设计任务的描述,其城市之间的旅游交通问题是典型的 图结构, 可看作为无向图,图的顶点是城市, 边是城市之间所耗费的时间(要包括中转站的时间)或 旅费。
(3)数据的存储结构。
采用邻接表和邻接矩阵都可作为数据的存储结构, 矩阵作为数据的存储结构。
这里建议采用邻接 删除功能可用菜单方 但要注意人机界面, (4)用不同的功能模块对城市信息和交通信息进行 编辑。
添加、修改、 式或命令提示方式。
只要能方便的对城市信息和交通信息进行管理即可, 具体实现由学生自行设计, 也可参考有关程序(届时在网上提供)。
这些工作有不小的工作量。
(5)最优决策功能模块①读入城市信息和交通信息,用邻接表生成含权网络,表头数组中的元素存放城市名及对 方城市到达该元素所代表城市的所有信息; 所代表的城市有交通联系的城市(代码、 表头数组中的元素所对应的单链表存放与该元素 里程、列车车次)。
数据结构--交通咨询系统
数据结构--交通咨询系统目录1 概述 (2)1.1 问题描述 (2)1.2 实现意义 (2)2 系统分析 (2)2.1 需求分析 (2)2.1.1程序的功能 (2)2.1.2输入输出的要求 (2)2.2 设计思想 (2)2.3 设计要求 (3)3 概要设计 (3)3.1用邻接矩阵建立交通网络模块 (3)3.2 查询任意两个顶点之间的最短路径 (4)3.3 查询一个城市到其他所有城市的最短路径 (5)4 详细设计 (5)4.1 用邻接矩阵构造图结构函数CreateMGraph() (5) 4.2 费洛伊德Floyd() (6)4.3 迪杰斯特拉Dijkstra() (6)4.4 主要函数流程图及其函数调用 (7)4.4.1 主要函数流程图 (7)4.4.2 一个城市到其他城市的路径调用 (8)4.4.3 任意两个城市之间路径调用 (8)5 运行与测试 (8)5.1 有向图存储结构的建立模块的输出 (9)5.2 单源路径迪杰斯特拉算法模块的输出 (10)5.3 费洛伊德算法模块的输出 (10)6 总结与心得 (10)参考文献 (11)附录 (11)1 概述1.1 问题描述在交通网络非常发达,交通工具和交通方式不断更新的今天,人们在出差、旅游或做其它出行时,不仅关心节省费用,而且对里程和所需时间等问题也感兴趣。
对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。
图中顶点表示城市之间的交通关系。
这个交通系统可以回答旅客提出的各种问题。
比如任意一个城市到其他城市的最短路径,任意两个城市之间的最短路径问题。
1.2 实现意义便于人们的日常出行,且更好地满足了用户的出行需求。
这种最短路径问题的计算方法既简单又便于实现,同时大大提高了计算机的运行速率。
2 系统分析2.1 需求分析2.1.1程序的功能(1)用户自己可以建立不同的路径之间的关系网(2)可以查询某个城市到达其余各城市的最短路径。
数据结构--交通咨询系统
数据结构--交通咨询系统正文:1. 介绍本文档是关于交通咨询系统的数据结构设计的文档。
交通咨询系统是一个为用户提供交通信息和路线推荐的系统。
本文档将详细介绍系统的整体架构、数据结构设计,以及每个模块的功能和实现细节。
2. 系统架构交通咨询系统采用三层架构,包括前端界面层、业务逻辑层和数据存储层。
前端界面层负责与用户交互,接收用户输入的咨询请求。
业务逻辑层对用户的咨询请求进行处理,调用相应的算法和数据结构进行路线推荐。
数据存储层用于存储用户和路线的信息。
3. 用户管理模块用户管理模块负责用户的注册、登录和个人信息管理。
用户信息包括用户名、密码等基本信息。
用户个人信息管理包括修改密码、修改个人资料等功能。
4. 路线查询模块路线查询模块实现根据用户的出发地和目的地查询最短路径。
该模块使用图的最短路径算法,如Dijkstra算法或A算法,来计算最短路径。
在查询结果中,系统将显示最短路径的详细信息,包括交通工具、路程时间和费用等。
5. 路线推荐模块路线推荐模块实现根据用户的偏好和实时交通情况推荐路线。
该模块根据用户的出发地和目的地,以及用户的偏好(如最短时间、最少换乘、最少步行等)进行路线推荐。
同时,系统还考虑实时交通情况,如拥堵状况和公共交通工具的运行情况。
6. 数据存储模块数据存储模块负责存储用户和路线的信息。
用户信息包括用户名、密码和个人资料等。
路线信息包括出发地、目的地、交通工具信息、路程时间和费用等。
数据存储模块可以采用关系型数据库或者NoSQL数据库进行实现。
7. 界面设计系统的前端界面设计应简洁明了,方便用户操作和查看信息。
界面应有搜索框用于用户输入出发地和目的地,并且提供选项供用户选择偏好和实时交通情况。
附件:1. 数据库表设计:包括用户表和路线表的字段定义和关系。
2. 界面原型设计:包括系统的前端界面设计和交互流程。
法律名词及注释:1. 用户:使用交通咨询系统的个人或组织。
2. 用户信息:用户在注册和登录时提供的个人信息,包括用户名和密码。
交通咨询系统设计数据结构课程设计
交通咨询系统设计数据结构课程设计一、引言随着城市人口的增加和交通需求的不断增长,交通咨询系统变得越来越重要。
交通咨询系统可以提供准确的交通信息,帮助用户规划最佳的出行路线,减少交通拥堵和时间浪费。
本文将介绍一个交通咨询系统的设计,重点关注其数据结构的设计与实现。
二、系统需求分析在设计交通咨询系统的数据结构之前,首先需要对系统的需求进行分析。
用户使用该系统可以进行以下几个方面的咨询:1. 路线规划:根据用户提供的起点和终点,系统可以返回最佳的路线规划方案。
2. 实时交通信息:系统可以提供实时的交通信息,包括道路拥堵情况、车流量、事故等。
3. 公交查询:用户可以查询公交车的实时位置、到站时间等信息。
4. 地点搜索:用户可以根据关键词搜索附近的地点,如餐厅、加油站等。
三、数据结构设计基于以上需求,我们可以设计以下数据结构来实现交通咨询系统:1. 地点信息表:包含地点的名称、经度、纬度等信息。
可以使用哈希表或者树结构来存储地点信息,以便快速查询。
2. 道路网络图:采用图的数据结构来表示道路网络,每个路口和道路分别表示图的顶点和边。
可以使用邻接矩阵或者邻接表来实现图。
3. 路线规划表:记录用户查询的起点和终点,以及最佳路线的详细信息。
可以使用链表或者数组来实现路线规划表。
4. 交通信息表:记录道路的实时交通信息,包括车流量、拥堵情况等。
可以使用哈希表或者树结构来存储交通信息。
5. 公交车信息表:记录公交车的实时位置、到站时间等信息。
可以使用链表或者数组来实现公交车信息表。
四、系统实现在设计完数据结构之后,需要实现相应的算法来支持系统的功能。
以下是几个重要的算法:1. 路线规划算法:可以使用Dijkstra算法或者A*算法来实现最短路径的计算。
2. 地点搜索算法:可以使用字符串匹配算法或者正则表达式来实现关键词搜索。
3. 实时交通信息更新算法:可以使用定时任务或者事件驱动的方式来更新交通信息。
4. 公交车位置更新算法:可以使用定时任务或者事件驱动的方式来更新公交车位置信息。
数据结构课程设计:交通资讯系统
目录一、实验目的: (2)二、实验要求: (2)三、总体设计: (2)四、详细设计: (3)五、程序代码: (4)六、测试 (16)七、总结: (22)参考文献 (22)交通咨询系统一、实验目的:1、充分了解并掌握最短路径问题及其应用。
学习迪杰斯特拉算法和弗洛伊德算法。
2、根据有向图的存储结构解决实际问题。
3、了解程序模块化的过程。
4、给用户提供路径咨询。
实现了帮助用户了解全国各大城市间往来的最短路径问题。
5、可以提供用户查询各大城市的相关信息。
二、实验要求:设计一个交通咨询系统,能让旅客在任一个城市顶点到另一个城市顶点之间的最短路径(里程)或最低花费或最少时间等问题。
(城市名称用数字代替)。
本程序可以在TC2.0和VC6.0中运行。
三、总体设计:本程序页面清晰,功能明确,主要分为两个部分,即交通查询部分和管理员管理部分。
交通查询部分又分为城市信息、城市路径、最短路径查询3个模块,而其中最短路径查询系统又分为2个城市之间的最短路径和1个城市到其它各城市之间路径的查询。
而管理员管理的部分则包括交通查询里面的功能以及添加城市、添加城市间的路径、删除城市以及删除两个城市之间的路径等部分。
四、详细设计:详细设计全国交通信息咨询系统的存储结构:struct city_info /*城市信息结构*/{ char name[20];char info[100];}cities[SIZE_city];struct way_info /*路径信息结构*/{ int start_id;int end_id;int dist;}ways[SIZE_way];struct path_info /*路径查询结构*/{ int count;int path[SIZE_city];};typedef struct Graph{ char vexs[SIZE_city];/*顶点*/ int arcs[SIZE_city][SIZE_c ity];/*邻接矩阵*/ int vexnum;/*顶点数*/ int arcnum; /*弧数*/ }Graph;划分本程序采用自顶向下的编程模式,分为7个主模块,即考虑到7种算法的实现:1、显示全国各地城市相关信息的算法;void ShowCity();初始条件:void ReadCitiesFile();void ReadW aysFile();读取数据成功,操作结果:根据用户查询城市的名字,输出城市的特色;2、添加城市及城市相关信息的算法;void AddView();初始条件:构造了结构体数组views[VIEW_SIZE];操作结果:添加一个城市顶点到views数组中,并将数据输出到VIE WS文件中保存。
数据结构课程设计-应用java实现全国交通咨询系统
6.用户使用说明双击打开界面,在起始站和终点站所在文本框输入对应名称,选择最优决策和交通工具,点击查询,若起始站或终点站有一个不存在,都会跳出对应的提示信息,若起始站和终点站都存在,点击查询按钮就会显示对应的信息。
也可以点击帮助,就会弹出帮助信息的对话框。
如果想删除或添加火车列表或飞机航班表,点击编辑按钮,选中要操作的选项,点击开始编辑。
若是选择删除,就在弹出的对话框中输入对应起始站和终点站名,点击删除即可,然后便会弹出提示信息。
若是添加,就在对应的文本域按照规则添加信息,点击添加即可,也可以点击添加帮助按钮查看细节。
编辑完重启即可查询刚编辑完的信息。
7.测试结果1.测试数据本次测试所用测试数据如下:火车列表:G005--->北京--->上海--->8:00--->12:00--->400D002--->北京--->广州--->8:00--->15:30--->1100G309--->沈阳--->北京--->5:00--->12:00--->300T001--->兰州--->北京--->8:00--->13:00--->500G002--->沈阳--->上海--->12:00--->15:30--->800G329--->广州--->桂林--->5:00--->12:00--->400T001--->桂林--->成都--->8:00--->13:00--->500Z509--->上海--->广州--->16:00--->17:30--->520飞机列表:P004--->上海--->北京--->10:00--->15:00--->600P005--->厦门--->广州--->9:00--->12:00--->300P005--->北京--->厦门--->9:00--->12:00--->163P001--->兰州--->北京--->8:00--->13:00--->500P005--->广州--->武汉--->9:00--->12:00--->560P101--->上海--->厦门--->13:00--->16:30--->830由此可列出火车图和飞机图如下:2.测试查询截图:(1)双击打开界面(2)输入起始站和终点站,选择最快捷火车(3)点击查询(4)选择最省钱(5)更换终点站(6)跟换最优决策(7)多中转站(8)终点站不存在(9)起始站不存在(10)起始站终点站都不存在(11)交通工具选用飞机最优选择:最快捷(12)最优选择改为:最省钱(13)多中转站3.编辑信息(1)点击编辑信息按钮(2)下拉框一览(3)选中删除飞机航班表,点击开始编辑,弹出对话框如下(4)查看未删除前的文档(5)输入起始站终点站(6)点击删除,弹出对话框(7)查看文档,对应的信息不见了(8)重新输入查询(9)点击编辑信息选中添加(10)点击开始编辑,弹出对话框(11)查看未添加前的火车列表(12)点击添加帮助(13)输入信息(14)点击添加(15)关闭添加界面后稍等片刻,查看火车列表文档,输入的信息已经写入到文档中(16)回到主界面查询输入的信息3.帮助按钮4.分析经过分析,以上输出的信息基本正确,基本功能也可以实现,但是还存在个别问题尚未解决,由于编者能力有限,至今仍未解决。
数据结构课程设计—城市道路交通咨询系统
欢迎阅读榆林学院数据结构课程设计报告题目城市交通咨询系统1 .1.11.21.31.4 小结2.2.12.22.2.12.2.22.2.32.2.42.33.系统测试 (9)3.1操作说明 (9)3.2测试数据 (10)3.2.1用户进入界面: (10)3.2.2、具体功能的实现 (11)3.2.3、结束程序 (12)4.总结 (13)5.致谢 (13)6.附录 (14)1.系统需求分析现如今网络非常发达,无论人们出差,旅游或者做其他的出行之时,都会想到道路问题,切不仅仅关心的是交通费用,而且对于里程和所需要的时间等的问题也是同样的关心,在此系统中,完全面向用户,可以用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。
且在图中,顶点表示城市,边表示城市之间的交通关系。
设计一个交通咨询系统,能够让旅客咨询从任一城市顶点到达另外一个城市之间顶点的最短路径问题(最短里程问题)。
(2)用户根据自己设置的城市个数和路径数,具体输入每个路径的起始点以及每条路径的长度。
(3)进入菜单选择界面(4)选择2,系统为用户进行提供任意城市的交通查询,即查询任意两个城市之间的一条最短路径。
(5)选择1,系统为用户提供指定城市的交通查询,即查询指定城市到其他城市之间的最短路径。
如若输入顶点超出范围显示错误,系统回到菜单重新选择(6)选择0,系统推出程序。
1.2功能需求分析城市交通咨询系统总体的设计目标:用《数据结构》中的邻接矩阵作数据结构,并结合数据结构有向图的最短路径计算方法,结合相应的数据算法以及c采用邻接矩阵表示法构造有向图G,n、e表示图的当前顶点数和边数∙用弗洛伊德算法求任意一对顶点的最短路径用函数 void Floyd(MGraph *G,int n) 来定义。
利用费洛伊德算法,求出最短路径。
1.4 小结从各种需求方面下手改编代码,并不断调试,让界面更加友好。
不断地尝试上,在各种问题上不断突破,慢慢的完善代码,等最大限度的满足用户需求。
3-交通咨询系统设计-数据结构-课程设计任务书
交通资讯系统1.系统需求分析1.1问题描述在交通网络非常发达的今天,人们出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也很感兴趣。
对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。
图中顶点表示城市,边表示城市之间的交通关系。
设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到达另外一个城市顶点之间的最短路径(里程)的问题。
1.2功能要求1.交通资讯系统提供用户三种决策方案:一是建立交通网络图的存储结构。
二是某个城市到达其余各城市的最短路径。
三是实现两个城市之间最短路径的问题。
主要目的是给用户提供路径咨询。
2.本系统规定:(1)在程序中输入城市名称时,需输入0到5的城市代号(2)在选择功能是,应输入与所选功能对应的一个整形数据。
(3)程序的输出信息主要是:城市代号,某城市到达其余各城市的最短路径,两城市之间最短路径2.概要设计2.1系统总体设计图2.1系统总体设计2.2各模块的功能void main() 主函数void Dijkstr() 采用狄克斯特拉算法求从顶点v到其余个顶点的最短路径void DisPath() 由path计算最短路径void Ppath() 输出各条最短路径void Floyd() 采用弗洛伊德算法求所有顶点之间的最短路径void DisPath2() 由path计算最短路径void Ppath2() 输出各条最短路径2.3相关数据结构设计1.数据结构typedef int InfoType; typedef struct {char cityname; int no; InfoType info; }VertexType; typedef struct { int edges[MAXV][MAXV]; int n,e;VertexType vxs[MAXV];}MGraph;2.数据库结构:下表构成该系统的基本数据库3.详细设计3.1采用c 语言定义相关的数据结构本系统定义了整形int,字符型char,还有结构体定义,建立图的存储结构首先定义交通图的存储结构,邻接矩阵是表示图形中顶点之间相邻关系的矩阵.设G=(V ,E )是具有n(n>0)个顶点的图,则邻接矩阵具有如下定义的n 阶方阵 Wij 若vi ≠vj 且<vi,vj>∈E(G)A[i][j]=∞ 其他一个图的邻接矩阵表示是唯一的,除了许用一个二维数组存储顶点之间相邻关系的邻接矩阵外,通常还需要使用一个具有n 个元素的一维数组来存储顶点信息3.2函数调用关系图3.2.1主函数void main(){int i,j,z,x;MGraph g;int A[][MAXV]={{INF,5,INF,7,INF,INF},{INF,INF,4,INF,INF,INF}, {8,INF,INF,INF,INF,9},{INF,INF,5,INF,INF,6},{INF,INF,INF,5,INF,INF},{3,INF,INF,INF,1,INF}};g.n=6;g.e=10;for(i=0;i<g.n;i++)for(j=0;j<g.n;j++)g.edges[i][j]=A[i][j];printf("******************* 交通咨询系统**********************\n");printf("************* 1-查看系统中的城市代号**********\n");printf("************* 2-一个城市到所有城市的最短路径**********\n");printf("************* 3-任意的两个城市之间的最短路径**********\n");printf("************* 0-退出**********\n");printf("\n");printf("请选择:");scanf("%d",&z);while(z!=0){switch(z){case 1:printf("0——北京,1——天津,2——上海,3——广州,4——南京,5——厦门\n");printf("\n");main();scanf("%d",&z);break;case 2:printf("请输入城市代号:");scanf("%d",&x);switch(x){case 0:printf("以下是最短路径:\n");Dijkstra(g,x);break;case 1:printf("以下是最短路径:\n");Dijkstra(g,x);break;case 2:printf("以下是最短路径:\n");Dijkstra(g,x);break;case 3:printf("以下是最短路径:\n");Dijkstra(g,x);break;case 4:printf("以下是最短路径:\n");Dijkstra(g,x);break;case 5:printf("以下是最短路径:\n");Dijkstra(g,x);break;default :printf("输入有误,请重新输入\n");printf("\n");main();}printf("\n");main();scanf("%d",&z);break;case 3:Floyd(g);printf("请选择:");printf("\n");main();scanf("%d",&z);break;case 0:exit(-1);break;default:printf("输入有误,请重新输入\n");printf("\n");main();}}}3.2.2狄克斯特拉函数初始化距离和路径,将s[]置为空。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程名称数据结构课程设计课题名称交通咨询系统专业通信工程班级通信1001班学号姓名指导教师田娟秀胡瑛曹燚2012年7 月 6 日湖南工程学院课程设计任务书课程名称数据结构课题交通咨询系统专业班级通信1001班学生姓名学号指导老师田娟秀胡瑛曹燚审批田娟秀任务书下达日期2012 年7 月 1 日任务完成日期2012 年7 月 6 日1.1任务书课题六:交通咨询系统:在交通网络非常发达的今天,人们出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也很感兴趣。
对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。
图中顶点表示城市,边表示城市之间的交通关系。
设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到达另外一个城市顶点之间的最短路径(里程)的问题。
要求完成以下功能:(a) 以图中顶点表示湖南省各市(至少包括8个以上的城市),存放城市名称、代号、简介等信息,以边表示路径,存放路径长度等有关信息,先建立交通网络图的存储结构;(b) 为用户提供图中任何城市有关信息的查询;(c) 为用户提供任意城市的交通查询,即查询任意两个城市之间的一条最短路径。
(d) 为用户提供指定城市的交通查询,即查询指定城市到其他城市之间的最短路径。
选做内容:(1)提供图的编辑功能:增、删城市;增删路径;修改已有信息等;(2)交通图的仿真界面。
1.2 选题方案:所选题目根据学号确定,学号模6加1,即(学号%6+1)。
如你的学号为9,则所选题目号为:9%6+1=(题目4)。
注意,所有的课题都要求用图形方式演示步骤和结果。
同学们可以自己针对数据结构课程中所讲算法来设计一个演示过程的算法。
1.3设计要求:1.3.1 课程设计报告规范(1)需求分析a.程序的功能。
b.输入输出的要求。
(2)概要设计a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。
b.课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
(3)详细设计a.采用C语言定义相关的数据类型。
b.写出各模块的类C码算法。
c.画出各函数的调用关系图、主要函数的流程图。
(4)调试分析以及设计体会a.测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。
b.程序调试中遇到的问题以及解决问题的方法。
c.课程设计过程经验教训、心得体会。
(5)使用说明用户使用手册:说明如何使用你编写的程序,详细列出每一步的操作步骤。
(6)书写格式a.设计报告要求用A4纸打印成册:b.一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
(7)附录源程序清单(带注释)1.3.2 考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。
具体考核标准包含以下几个部分:(1)平时出勤(占10%)(2)系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%)(3)程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%)(4)设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。
(5)独立完成情况(占10%)。
1.3.3 课程验收要求(1)运行所设计的系统。
(2)回答有关问题。
(3)提交课程设计报告。
(4)提交软盘(源程序、设计报告文档)。
(5)依内容的创新程度,完善程序情况及对程序讲解情况打分。
2 进度安排第 20 周:星期一 8:00——12:00 上课星期一 14:30——18:30 上机星期二 14:30——18:30 上机星期三 8:00——12:00 上机附:课程设计报告装订顺序:封面、任务书、目录、正文、评分表、附件(A4大小的图纸及程序清单)。
正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
目录一.需求分析 (7)1.1程序的功能 (7)1.2输入输出的要求 (7)二.概要设计 (7)2.1程序的模块组成 (7)2.2每个模块的功能 (8)2.3存储数据及其关系 (10)三.详细设计 (10)3.1采用C语言定义相关类型 (10)3.2写出各模块的类C码算法 (11)3.3调用关系图 (13)四.调试分析以及心得体会 (15)4.1测试数据 (15)4.2心得体会 (17)五.使用说明 (18)六.附录 (19)七.评分表 (24)一.需求分析1.1 程序的功能在交通网络非常发达的今天,人们出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也很感兴趣。
对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。
图中顶点表示城市,边表示城市之间的交通关系。
设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到达另外一个城市顶点之间的最短路径(里程)的问题。
要求完成以下功能(a) 以图中顶点表示湖南省各市(至少包括8个以上的城市),存放城市名称、代号、简介等信息,以边表示路径,存放路径长度等有关信息,先建立交通网络图的存储结构;(b) 为用户提供图中任何城市有关信息的查询;(c) 为用户提供任意城市的交通查询,即查询任意两个城市之间的一条最短路径。
(d) 为用户提供指定城市的交通查询,即查询指定城市到其他城市之间的最短路径。
选做内容:(1)提供图的编辑功能:增、删城市;增删路径;修改已有信息等;(2)交通图的仿真界面。
1.2 输入输出的要求在用户刚进入主界面后,系统就会提示输入建立交通网络的储存结构,输入顶点个数和和边数,随后会有系统进行提示输入顶点信息以及他们的权值,即I,j和w,依次根据边的信息个数进行输入。
随之进行的是查询页面,输入选择按钮进行功能查询选择。
如,选择1:表示的是查询任意两个城市之间的一条最短路径,选择2:表示的是查询指定城市到其他城市之间的最短路径,选择0:表示你将要退出程序查询系统。
二.概要设计2.1 程序的模块组成本程序主要有三个模块组成,他们分别是:邻接矩阵建立有向图,查询任意两个城市之间的一条最短路径,查询指定城市到其他城市之间的最短路径。
三个模块的概图:图 2.12.2 每个模块的功能邻接矩阵建立交通网络Y任意两个城市的 最短距离查询 两个指定城市的 最短距离查询用户进入系统交通网络构建结果,退出系统开始输入n,e 输入i,j,wk<=e,k+++结束N图 2.2.1查询指定城市到其他城市之间的最短路径开始输入顶点v狄克斯特拉算法输出路径,距离结束图 2.2.2查询任意两个城市之间的一条最短路径:开始输出路径,距离输入起点v,终点w结束调用弗洛伊德算法图2.2.32.3 存储数据及其关系比如下列五个数据之间的存储及其关系1 25 34图 2.3上图说明:上图各个节点之间会有一条或者两条边,当输入他们的信息时根据他们的方向进行有向图的存储。
并且每两个顶点之间(单向)都会有一个值w,即权值。
如顶点1和2之间可以设置他的权值是2,顶点2到顶点5的权值可以是3,顶点5到顶点2的权值可以是4,等等。
三.详细设计3.1 采用C语言定义相关类型1.定义一个,用来存储顶点信息。
typedef struct{VertexType vexs[MAX];Adjmatrix arcs[MAX][MAX];}MGraph;.. 2.定义一个Dijkstra函数void Dijkstra(MGraph *G,int v,int n);2.定义一个Floyd函数void Floyd(MGraph *G,int n);3.2 写出各模块的类C码算法邻接矩阵构造图结构函数数据类型定义:typedef struct{VertexType vexs[MAX];Adjmatrix arcs[MAX][MAX];}MGraph;void CreateMGraph(MGraph *G,int n,int e)//邻接矩阵构成有向图{int i,j,k,w;for(i=1;i<=n;i++)G->vexs[i]=(char)i;for(i=1;i<=n;i++)for(j=1;j<=n;j++)G->arcs[i][j]=IDF;printf("输入%d条边的i,j及w: \n",e);for(k=1;k<=e;k++){scanf("%d,%d,%d",&i,&j,&w);G->arcs[i][j]=w;}printf("有向图的存储结构建立完毕!\n");其中vexs[MAX]保存顶点信息,arcs[MAX][MAX]用于保存边与边之间的信息。
在构建时通过输入的边数i,j作为矩阵的行、列确定顶点的出度和入度。
用邻接矩阵方法存储图。
Dijkstra算法;基本思想:设G(V,E)是一个带权有向图,把图中的顶点集合V分成两组,第一组为已经求出的最短路径的顶点集合(用S表示,初始时S中只有一个原点,以后每求得一条最短路径就加入的集合S 中,知道全部顶点都加入到集合中),第二组,为其余未确定最短路径的顶点集合(用U 表示),按最短路径长度的递增次序依次把第二组的顶点就如S 中。
如果两个顶点之间有权值,并且各个路径的权值不同,就把最小的作为顶点与顶点的最短距离。
y x z 图 3.3.1如图所示 若x+y<z ,则最短的路径就是v=>k=>u 。
同理若x+y<z ,则最短的路径就是v=>u ,D [v1]=0;S[v1]=1; //原点编号放入s 中 for(i=2;i<n;i++) { min=IDF;for(w=1;w<=n;w++) if(!S[w]&&D [w]<min) { v=w;min=D [w];}S[v]=1; //修改顶点u 放入s 中 for(w=1;w<=n;w++) if(!S[w]&&(D [v]+G->arcs[v][w]<D [w])) { D [w]=D [v]+G->arcs[v][w]; P [w]=v;}}弗洛伊德算法:用邻接矩阵保存图存储后,另外需要存一个二维数组A 存放当前顶点之间的最短路径长度。