数据结构课程设计交通咨询系统设计-参考模板
- 格式:doc
- 大小:148.00 KB
- 文档页数:36
交通资讯系统1.系统需求分析1.1问题描述在交通网络非常发达的今天,人们出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也很感兴趣。
对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。
图中顶点表示城市,边表示城市之间的交通关系。
设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到达另外一个城市顶点之间的最短路径(里程)的问题。
1.2功能要求1.交通资讯系统提供用户三种决策方案:一是建立交通网络图的存储结构。
二是某个城市到达其余各城市的最短路径。
三是实现两个城市之间最短路径的问题。
主要目的是给用户提供路径咨询。
2.本系统规定:(1)在程序中输入城市名称时,需输入0到5的城市代号(2)在选择功能是,应输入与所选功能对应的一个整形数据。
(3)程序的输出信息主要是:城市代号,某城市到达其余各城市的最短路径,两城市之间最短路径2.概要设计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。
}VertexTypeo typedef struct {int edges[MAXV][MAXV]。
int n,e。
VertexType vxs[MAXV]。
}MGraph o2.数据库结构:下表构成该系统的基本数据库3,详细设计1.1采用c语言定义相关的数据结构本系统定义了整形int,字符型char,还有结构体定义,建立图的存储结构首先定义交通图的存储结构,邻接矩阵是表示图形中顶点之间相邻关系的矩阵.设 G=(V ,E)是具有n(n>0)个顶点的图,则邻接矩阵具有如下定义的n 阶方阵Wij 若 vi/vj 且<vi,vj>£E(G)A[i][j]= y8 其他一个图的邻接矩阵表示是唯一的,除了许用一个二维数组存储顶点之间相邻关系的 邻接矩阵外,通常还需要使用一个具有n 个元素的一维数组来存储顶点信息3.2函数调用关系图3.2.1主函数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}}。
数据结构设计报告姓名:专业:指导教师:目录摘要 (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,已添加城市名称。
X X 学院计算机系《数据结构》课程设计报告书全国交通咨询模拟系统的设计与实现学生姓名:学号:年级专业及班级:指导老师及职称:讲师专业:计算机科学与技术专业提交日期:2011年6月全国交通咨询模拟系统的设计与实现学生:指导老师:(怀化学院计算机系,怀化418008)摘要:该课程设计主要实现了对全国火车及飞机信息的修改和查询,其中主要包括:管理员对火车、飞机信息的操作,其中又包含对两种交通方式的增加和删除操作.旅客用户对两种交通信息的查询,其中飞机信息和火车信息都包含了对两个站点间最短路径方式的查询、最少花费方式的查询以及城市中所有的交通信息的查询.关键词:全国交通咨询;1前言为了完成数据结构的课程设计,为了巩固自己数据结构的知识,也是为了提高自己的编程能力和逻辑思维能力,我选了这道全国交通咨询模拟系统的设计与实现一题。
在对其需求进行分析之后,按照需求分析,逐步完成其各部分的功能实现.对于总的方面来讲,管理员功能实现并不难,而难点在于用户功能中的算法及数据结构中的知识以及编程的细微方面,下面将详细介绍本课程设计的内容.2需求分析2.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指导教师签名:课程负责人签名:随着高科技的飞速发展,列车、飞机、动车、高铁的出现极大的减少了人们花在旅途上的时间。
对于城市间错综复杂交通网的管理,是一项庞大而复杂的工作。
在此基础上,如何实现交通网智能化的管理达到帮助乘客选择经济高效的交通工具是目前仍处空白。
尤其乘客交通工具的择优选择是一个令人懊恼的工作,一个原因就是各种交通工具的查询十分分散和繁琐。
即使有互联网的帮忙,但是没有一个统一的归类、没有一个精细的算法、系统的软件帮助,人们仍然无法获得最优方式。
为此开发一个交通择优系统是十分必要的。
采用计算机对城市间的交通工具进行系统录入和管理,进一步提高了交通部门针对城市间客运网络的管理效率,实现交通运营网络的系统化、规范化和自动化。
数据结构课程设计全国交通咨询系统数据结构课程设计全国交通咨询系统随着交通工具的快速发展,现代人的出行方式更加灵活便捷,交通行业也变得越来越重要。
然而,随之而来的交通拥堵、安全问题和出行效率等问题亟待解决。
因此,交通咨询系统的开发应运而生。
本文介绍一个数据结构课程设计项目——全国交通咨询系统,该系统旨在为用户提供便捷、全面的交通出行信息和服务。
该系统主要包括以下方面的功能: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:使用队列和栈来处理用户的查询请求和系统的任务调度。
六、附件本文档涉及的附件包括系统的界面原型设计图、数据库设计文档、算法设计文档等。
数据结构课程设计设计题目:全国交通网络咨询系统陈敏 指导教师:太原 学院级: 计算机科学与技术 号: 132054103 名:刘海静四、五、六、七、八、课程设计题目需求分析测试数据概要设计调用关系图程序代码测试结果心得体会及总结目录1414全国交通网络咨询系统、课程设计题目数据结构课程设计二、需求分析1、实现功能对城市信息(城市名、城市间的里程)进行编辑:具备添加、修改、删除功能; 对城市间的交通工具:火车。
对列车时刻表进行编辑:里程、和列车班次的添加、修改、删除;提供两种最优决策:最快到达或最省钱到达。
全程只考虑一种交通工具,可以不考虑回程;咨询以用户和计算机对话方式进行,要注意人机交互的屏幕界面。
由用户选择最优决策 原则和交通工具,输入起始站、终点站、出发时间,输出信息:最快需要多长时间才能到达 及旅费,或者最少需要多少旅费才能到达及时间, 并详细说明依次于何时何地乘坐哪一趟列 车何时到达何地。
2、设计思路(1)数据存储。
城市信息(城市名、代码)、交通信息(城市间的里程、各航班和列车时刻 ) 存储于磁盘文件。
在实验中本想用文本储存数据, 但操作不熟悉,而是改用图的邻接矩阵 储 存原始信息,而后用数组进行添加删改(2)数据的逻辑结构。
根据设计任务的描述,其城市之间的旅游交通问题是典型的 图结构, 可看作为无向图,图的顶点是城市, 边是城市之间所耗费的时间(要包括中转站的时间)或 旅费。
(3)数据的存储结构。
采用邻接表和邻接矩阵都可作为数据的存储结构, 矩阵作为数据的存储结构。
这里建议采用邻接 删除功能可用菜单方 但要注意人机界面, (4)用不同的功能模块对城市信息和交通信息进行 编辑。
添加、修改、 式或命令提示方式。
只要能方便的对城市信息和交通信息进行管理即可, 具体实现由学生自行设计, 也可参考有关程序(届时在网上提供)。
这些工作有不小的工作量。
(5)最优决策功能模块①读入城市信息和交通信息,用邻接表生成含权网络,表头数组中的元素存放城市名及对 方城市到达该元素所代表城市的所有信息; 所代表的城市有交通联系的城市(代码、 表头数组中的元素所对应的单链表存放与该元素 里程、列车车次)。
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.分析经过分析,以上输出的信息基本正确,基本功能也可以实现,但是还存在个别问题尚未解决,由于编者能力有限,至今仍未解决。
目录一、实验目的: (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文件中保存。
数据结构--交通咨询系统正文:1. 介绍本文档是关于交通咨询系统的数据结构设计的文档。
交通咨询系统是一个为用户提供交通信息和路线推荐的系统。
本文档将详细介绍系统的整体架构、数据结构设计,以及每个模块的功能和实现细节。
2. 系统架构交通咨询系统采用三层架构,包括前端界面层、业务逻辑层和数据存储层。
前端界面层负责与用户交互,接收用户输入的咨询请求。
业务逻辑层对用户的咨询请求进行处理,调用相应的算法和数据结构进行路线推荐。
数据存储层用于存储用户和路线的信息。
3. 用户管理模块用户管理模块负责用户的注册、登录和个人信息管理。
用户信息包括用户名、密码等基本信息。
用户个人信息管理包括修改密码、修改个人资料等功能。
4. 路线查询模块路线查询模块实现根据用户的出发地和目的地查询最短路径。
该模块使用图的最短路径算法,如Dijkstra算法或A算法,来计算最短路径。
在查询结果中,系统将显示最短路径的详细信息,包括交通工具、路程时间和费用等。
5. 路线推荐模块路线推荐模块实现根据用户的偏好和实时交通情况推荐路线。
该模块根据用户的出发地和目的地,以及用户的偏好(如最短时间、最少换乘、最少步行等)进行路线推荐。
同时,系统还考虑实时交通情况,如拥堵状况和公共交通工具的运行情况。
6. 数据存储模块数据存储模块负责存储用户和路线的信息。
用户信息包括用户名、密码和个人资料等。
路线信息包括出发地、目的地、交通工具信息、路程时间和费用等。
数据存储模块可以采用关系型数据库或者NoSQL数据库进行实现。
7. 界面设计系统的前端界面设计应简洁明了,方便用户操作和查看信息。
界面应有搜索框用于用户输入出发地和目的地,并且提供选项供用户选择偏好和实时交通情况。
附件:1. 数据库表设计:包括用户表和路线表的字段定义和关系。
2. 界面原型设计:包括系统的前端界面设计和交互流程。
法律名词及注释:1. 用户:使用交通咨询系统的个人或组织。
2. 用户信息:用户在注册和登录时提供的个人信息,包括用户名和密码。
郑州工业应用技术学院课程设计任务书题目全国交通资询系统主要内容:设计了一个方便用户查询交通咨询系统。
该系统所做的工作的是模拟全国交通咨询,为旅客提供三种最优决策的交通咨询。
该系统可以进行城市,列车车次和飞机航班的编辑的基本信息输入操作。
程序的输出信息主要是:最快需要多少时间才能到达,或最少需要多少旅费才能到达,或最少需要多少次中转到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。
程序的功能包括:提供对城市信息的编辑,提供列车时刻表和飞机航班表的编辑,提供三种最优决策:最快到达、最省钱到达、最少中转次数到达。
基本要求: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指导教师签名:课程负责人签名:随着高科技的飞速发展,列车、飞机、动车、高铁的出现极大的减少了人们花在旅途上的时间。
对于城市间错综复杂交通网的管理,是一项庞大而复杂的工作。
在此基础上,如何实现交通网智能化的管理达到帮助乘客选择经济高效的交通工具是目前仍处空白。
尤其乘客交通工具的择优选择是一个令人懊恼的工作,一个原因就是各种交通工具的查询十分分散和繁琐。
即使有互联网的帮忙,但是没有一个统一的归类、没有一个精细的算法、系统的软件帮助,人们仍然无法获得最优方式。
为此开发一个交通择优系统是十分必要的。
采用计算机对城市间的交通工具进行系统录入和管理,进一步提高了交通部门针对城市间客运网络的管理效率,实现交通运营网络的系统化、规范化和自动化。
交通咨询系统设计数据结构课程设计一、引言随着城市人口的增加和交通需求的不断增长,交通咨询系统变得越来越重要。
交通咨询系统可以提供准确的交通信息,帮助用户规划最佳的出行路线,减少交通拥堵和时间浪费。
本文将介绍一个交通咨询系统的设计,重点关注其数据结构的设计与实现。
二、系统需求分析在设计交通咨询系统的数据结构之前,首先需要对系统的需求进行分析。
用户使用该系统可以进行以下几个方面的咨询:1. 路线规划:根据用户提供的起点和终点,系统可以返回最佳的路线规划方案。
2. 实时交通信息:系统可以提供实时的交通信息,包括道路拥堵情况、车流量、事故等。
3. 公交查询:用户可以查询公交车的实时位置、到站时间等信息。
4. 地点搜索:用户可以根据关键词搜索附近的地点,如餐厅、加油站等。
三、数据结构设计基于以上需求,我们可以设计以下数据结构来实现交通咨询系统:1. 地点信息表:包含地点的名称、经度、纬度等信息。
可以使用哈希表或者树结构来存储地点信息,以便快速查询。
2. 道路网络图:采用图的数据结构来表示道路网络,每个路口和道路分别表示图的顶点和边。
可以使用邻接矩阵或者邻接表来实现图。
3. 路线规划表:记录用户查询的起点和终点,以及最佳路线的详细信息。
可以使用链表或者数组来实现路线规划表。
4. 交通信息表:记录道路的实时交通信息,包括车流量、拥堵情况等。
可以使用哈希表或者树结构来存储交通信息。
5. 公交车信息表:记录公交车的实时位置、到站时间等信息。
可以使用链表或者数组来实现公交车信息表。
四、系统实现在设计完数据结构之后,需要实现相应的算法来支持系统的功能。
以下是几个重要的算法:1. 路线规划算法:可以使用Dijkstra算法或者A*算法来实现最短路径的计算。
2. 地点搜索算法:可以使用字符串匹配算法或者正则表达式来实现关键词搜索。
3. 实时交通信息更新算法:可以使用定时任务或者事件驱动的方式来更新交通信息。
4. 公交车位置更新算法:可以使用定时任务或者事件驱动的方式来更新公交车位置信息。
设计题目<二>:7.3.4交通咨询系统设计P160一、设计要求1.问题描述根据不同目的的旅客对交通工具有不同的要求。
例如,因公出差的旅客希望在旅途中的时间尽可能的短,出门旅行的旅客希望旅费尽可能的少,而老年人则要求中转次数少。
模拟一个全国城市之间的咨询交通程序,为旅客提供两种或三种最优的交通路线。
2.需求分析二、概要设计1.主界面设计(图2.1“交通咨询系统”主菜单)2.存储结构设计本系统采用图结构类型存储抽象交通咨询系统的信息。
typedef struct TrafficNode{char name[MAX_STRING_NUM]; //班次//MAX_STRING_NUM最为10 int StartTime, StopTime; //起止时间int EndCity; //该有向边指向的顶点在数组中的位置,即该城市编号int Cost; //票价} TrafficNodeDat;typedef struct VNode{CityType city;int TrainNum, FlightNum; //标记下面Train数组和Flight数组里元素个数TrafficNodeDat Train[MAX_TRAFFIC_NUM]; //数组成员为结构体,记录了到达城市、起止时间、票价和班次TrafficNodeDat Flight[MAX_TRAFFIC_NUM];// int Cost; //遍历时到达该城市的耗费(时间或者费用)} VNodeDat;typedef struct PNode{int City;int TraNo;} PNodeDat;3.系统功能设计(1)添加城市。
添加一个城市的名称(2)删除城市。
输入一个城市名称,删除该城市。
(3)添加交通路线。
输入起始城市、终点城市、航班或火车、车次、起始时间、终点时间和票价(4)删除交通路线。
输入火车或飞机的班次删除该交通路线。
(5)查询最小费用路线。
输入起始城市、终点城市、航班或火车、车次、起始时间、终点时间查询最小费用路线。
三、模块设计1.模块设计(图2.2 模块调用示意图)2.系统子程序及功能设计(1)int ShowMenu()//主菜单(2)void CopyRight()(3)int SeekCity(char *name) //寻找城市(4)int InsertCity(char *Name) //添加城市(5)int SaveSysInfo() //向程序输入数据(6)int DelCity(char *Name) //删除城市(7)int InsertTrain(char *train, char *StartCity, char *EndCity, int StartTime, int EndTime, int cost)//添加火车路线(8)int InsertFlight(char *flight, char *StartCity, char *EndCity, int StartTime, int EndTime, int cost)//添加飞机航线(9)int DelPath(char *name)//删除路线(10)void Dijkstra(int matx[Dij_MAXN][Dij_MAXN], int p_start, int p_end, int TravelType)(11)int InitSysData()//存储数据(12)int SearchMinTime(CityType City, CityType EndCity, int CurTime, int curPathNo, int TravelType)//查询最短时间(13)int CalcMinTime(int StartCity, int EndCity, int TravelType) //显示最短时间(14)int CalcMinCost(int StartCity, int EndCity, int TravelType)//最少花费(15)int main()//主函数3.函数主要调用关系图(图2.3函数主要调用关系图)四、详细设计1.数据类型定义(1)全局变量的定义typedef short int CityType;//CityType 定义短整形的变量typedef struct TrafficNode{char name[MAX_STRING_NUM]; //班次//MAX_STRING_NUM最为10 int StartTime, StopTime; //起止时间int EndCity; //该有向边指向的顶点在数组中的位置,即该城市编号int Cost; //票价} TrafficNodeDat;typedef struct VNode{CityType city;int TrainNum, FlightNum; //标记下面Train数组和Flight数组里元素个数TrafficNodeDat Train[MAX_TRAFFIC_NUM]; //数组成员为结构体,记录了到达城市、起止时间、票价和班次TrafficNodeDat Flight[MAX_TRAFFIC_NUM];// int Cost; //遍历时到达该城市的耗费(时间或者费用)} VNodeDat;typedef struct PNode{int City;int TraNo;} PNodeDat;2.系统主要子程序详细设计(1)用户工作区模块的设计int ShowMenu(){printf("\n|******************欢迎使用交通咨询系统*******|\n");printf("\n|------------------1: 添加城市----------------|");printf("\n|------------------2: 删除城市----------------|");printf("\n|------------------3: 添加交通路线------------|");printf("\n|------------------4: 删除交通路线------------|");printf("\n|------------------5: 查询最小费用路线--------|");printf("\n|------------------6: 查询最快路线------------|");printf("\n|------------------7: 清除屏幕----------------|");printf("\n|------------------0: 退出--------------------|\n");printf("\n|***********o(∩_∩)o o(∩_∩)o **************|\n");printf("\n请输入你的选择:");return 1;}(2)用Dijkstra算法求两段路程的最短距离void Dijkstra_Output(int matx[Dij_MAXN][Dij_MAXN], intPreCity[Dij_MAXN], int p_end, int TravelType){int track[Dij_MAXN];int i = 0, j, k, min, tmp, end, cost = 0;j = p_end; track[i++] = j;while (PreCity[j] >= 0){cost += matx[PreCity[j]][j];track[i++] = j = PreCity[j];}printf("\nTrack Way:");if (!TravelType){for (i--; i>0; i--){printf("\n%s:", CityName[track[i]]);end = track[i - 1]; min = 32767;for (k = 0; k<AdjList[track[i]].TrainNum; k++)if (AdjList[track[i]].Train[k].EndCity ==end&&min>AdjList[track[i]].Train[k].Cost){min = AdjList[track[i]].Train[k].Cost;tmp = k;}printf("%s", AdjList[track[i]].Train[tmp].name);printf("%2d:%2d-%2d:%2d",AdjList[track[i]].Train[tmp].StartTime / 60,AdjList[track[i]].Train[tmp].StartTime % 60,AdjList[track[i]].Train[tmp].StopTime / 60,AdjList[track[i]].Train[tmp].StopTime % 60);}}else{for (i--; i>0; i--){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]; //PreCity[i]==-1,never used;//PreCity>0,the precity of City iint i, j, min, pre, pos;for (i = 0; i<CityNum; i++){PreCity[i] = -1;}PreCity[p_start] = -2;while (PreCity[p_end] == -1){min = -1;for (i = 0; i<CityNum; i++)if (PreCity[i] != -1){for (j = 0; j<CityNum; j++)if (PreCity[j] == -1 && matx[i][j]>0 && (min<0 || matx[i][j]<min)){pre = i; pos = j; min = matx[i][j];}}PreCity[pos] = pre;}Dijkstra_Output(matx, PreCity, p_end, TravelType);}五、测试分析1. 添加城市在主菜单下,用户输入1,添加城市名称。