大数据结构课程设计交通咨询系统设计
数据结构课程设计-全国交通咨询系统
![数据结构课程设计-全国交通咨询系统](https://img.taocdn.com/s3/m/84d9cf64b9f3f90f77c61b8f.png)
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系统目标本系统的总体目标是通过使用该系统,管理员可以对飞机或者火车的信息的简单管理,也方便外出旅客在不同的需求下(如:最少的花费和最短的路程),快速浏览到所要的信息。
数据结构课程设计_____全国交通咨询系统
![数据结构课程设计_____全国交通咨询系统](https://img.taocdn.com/s3/m/4f892de9f705cc175527096b.png)
太原工业学院计算机工程系数据结构课程设计设计题目:全国交通网络咨询系统1班级:计算机科学与技术学号:**********名:**指导教师:***年月日目录一、课程设计题目 (1)二、需求分析 (1)三、测试数据 (2)四、概要设计 (2)五、调用关系图 (3)六、程序代码 (3)七、测试结果 (14)八、心得体会及总结 (14)数据结构课程设计一、课程设计题目全国交通网络咨询系统二、需求分析1、实现功能对城市信息(城市名、城市间的里程)进行编辑:具备添加、修改、删除功能;对城市间的交通工具:火车。
对列车时刻表进行编辑:里程、和列车班次的添加、修改、删除;提供两种最优决策:最快到达或最省钱到达。
全程只考虑一种交通工具,可以不考虑回程;咨询以用户和计算机对话方式进行,要注意人机交互的屏幕界面。
由用户选择最优决策原则和交通工具,输入起始站、终点站、出发时间,输出信息:最快需要多长时间才能到达及旅费,或者最少需要多少旅费才能到达及时间,并详细说明依次于何时何地乘坐哪一趟列车何时到达何地。
2、设计思路(1) 数据存储。
城市信息(城市名、代码)、交通信息(城市间的里程、各航班和列车时刻)存储于磁盘文件。
在实验中本想用文本储存数据,但操作不熟悉,而是改用图的邻接矩阵储存原始信息,而后用数组进行添加删改(2) 数据的逻辑结构。
根据设计任务的描述,其城市之间的旅游交通问题是典型的图结构,可看作为无向图,图的顶点是城市,边是城市之间所耗费的时间(要包括中转站的时间)或旅费。
(3) 数据的存储结构。
采用邻接表和邻接矩阵都可作为数据的存储结构,这里建议采用邻接矩阵作为数据的存储结构。
(4) 用不同的功能模块对城市信息和交通信息进行编辑。
添加、修改、删除功能可用菜单方式或命令提示方式。
只要能方便的对城市信息和交通信息进行管理即可,但要注意人机界面,具体实现由学生自行设计,也可参考有关程序(届时在网上提供)。
这些工作有不小的工作量。
数据结构课程设计全国交通咨询系统方案
![数据结构课程设计全国交通咨询系统方案](https://img.taocdn.com/s3/m/10f9014476eeaeaad1f33099.png)
工业应用技术学院课程设计任务书题目全国交通资询系统主要容:设计了一个方便用户查询交通咨询系统。
该系统所做的工作的是模拟全国交通咨询,为旅客提供三种最优决策的交通咨询。
该系统可以进行城市,列车车次和飞机航班的编辑的基本信息输入操作。
程序的输出信息主要是:最快需要多少时间才能到达,或最少需要多少旅费才能到达,或最少需要多少次中转到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。
程序的功能包括:提供对城市信息的编辑,提供列车时刻表和飞机航班表的编辑,提供三种最优决策:最快到达、最省钱到达、最少中转次数到达。
基本要求: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指导教师签名:课程负责人签名:随着高科技的飞速发展,列车、飞机、动车、高铁的出现极大的减少了人们花在旅途上的时间。
对于城市间错综复杂交通网的管理,是一项庞大而复杂的工作。
在此基础上,如何实现交通网智能化的管理达到帮助乘客选择经济高效的交通工具是目前仍处空白。
尤其乘客交通工具的择优选择是一个令人懊恼的工作,一个原因就是各种交通工具的查询十分分散和繁琐。
即使有互联网的帮忙,但是没有一个统一的归类、没有一个精细的算法、系统的软件帮助,人们仍然无法获得最优方式。
为此开发一个交通择优系统是十分必要的。
采用计算机对城市间的交通工具进行系统录入和管理,进一步提高了交通部门针对城市间客运网络的管理效率,实现交通运营网络的系统化、规化和自动化。
数据结构课程设计交通咨询系统设计
![数据结构课程设计交通咨询系统设计](https://img.taocdn.com/s3/m/24c7337e844769eae009ed83.png)
信息科学与工程学院课程设计任务书题目:交通咨询系统设计学号: 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>的权。
交通咨询模拟数据结构课程设计
![交通咨询模拟数据结构课程设计](https://img.taocdn.com/s3/m/d5220f8a49649b6649d74704.png)
数据结构课程设计报告题目:全国交通咨询模拟一.需求分析1.程序设计任务:从中国地图平面图中选取部分城市,抽象为程序所需要图的结点,并以城市间的列车路线和飞机路线,作为图结点中的弧信息,设计一个全国交通咨询模拟系统。
利用该系统实现两种最优决策:最快到达或最省钱到达。
2. 明确规定:(1)输入形式和输入值的范围:每条飞机弧或者火车弧涉及的信息量很多,包括:起始城市、目的城市、出发时间、到达时间、班次以及费用。
作为管理员要输入的信息包括以上信息,而作为用户或者客户,要输入的信息有起始城市和目的城市,并选择何种最优决策。
(2)输出形式:按用户提供的最优决策的不同而输出不同的信息,其中输出的所搭飞机或火车的班次及其起始地点和终点、起始时间和出发时间还有相关的最优信息,比如最快经多少时间到达、最省钱多少钱到达和最少经多少中转站到达。
(3)程序所能达到的功能a.该系统有供用户选择的菜单和交互性。
可以对城市、列车车次和飞机航班进行编辑,添加或删除。
b.建立一个全国交通咨询系统,该系统具备自动查找任意两城市间铁路、飞机交通的最短路径和最少花费及中转次数最少等功能。
c.初始化交通系统有两种方式,键盘和文档。
二.设计概要1. 算法设计(1)、总体设计(1) 数据存储:城市信息(城市名、代码)、交通信息(城市间的里程、各航班和列车时刻)存储于磁盘文件。
建议把城市信息存于文件前面,交通信息存于文件的后面,用fread和fwrite函数操作。
(2) 数据的逻辑结构:根据设计任务的描述,其城市之间的旅游交通问题是典型的图结构,可看作为有向图,图的顶点是城市,边是城市之间所耗费的时间(要包括中转站的等候时间)或旅费。
(3) 数据的存储结构:采用邻接表和邻接矩阵都可作为数据的存储结构,但当邻接边不多时,宜采用邻接表,以提高空间的存储效率。
这里采用邻接表作为数据的存储结构。
(4) 用不同的功能模块对城市信息和交通信息进行编辑。
添加、修改、删除功能可用菜单方式或命令提示方式。
3-交通咨询系统设计-数据结构-课程设计任务书
![3-交通咨询系统设计-数据结构-课程设计任务书](https://img.taocdn.com/s3/m/77bb1f7ac850ad02de80414f.png)
交通资讯系统1.系统需求分析1.1问题描述在交通网络非常发达的今天,人们出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也很感兴趣。
对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。
图中顶点表示城市,边表示城市之间的交通关系。
设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到达另外一个城市顶点之间的最短路径(里程)的问题。
1.2功能要求For personal use only in study and research; not for commercial use1.交通资讯系统提供用户三种决策方案:一是建立交通网络图的存储结构。
二是某个城市到达其余各城市的最短路径。
三是实现两个城市之间最短路径的问题。
主要目的是给用户提供路径咨询。
2.本系统规定:(1)在程序中输入城市名称时,需输入0到5的城市代号For personal use only in study and research; not for commercial use(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.数据库结构:下表构成该系统的基本数据库城市代号邻接矩阵边数城市个数路径城市名称组int int int int char3.详细设计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函数调用关系图void main(){ int i,j,z,x; MGraph g;intA[][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++)main 函数z=1 查看系统中的城市代号z=2;调用Dijkstra 函数求v 到其余各顶点的最短路径 调用DisPath 函数计算最短路径调用ppath 函数 输出各条最短路径 z=3;调用Floyd 函数求所有定点之间的最短路径调用ppath2函数 输出各条最短路径调用DisPath2函数 计算最短路径z=0 退出程序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();}}}初始化距离和路径,将s[]置为空。
数据结构课程设计—城市道路交通咨询系统
![数据结构课程设计—城市道路交通咨询系统](https://img.taocdn.com/s3/m/a0480393b14e852458fb57e4.png)
数据结构课程设计—城市道路交通咨询系统榆林学院数据结构课程设计报告题目城市交通咨询系统作者杨朝专业信息管理与信息系统学号 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用户需求分析现如今网络非常发达,无论人们出差,旅游或者做其他的出行之时,都会想到道路问题,切不仅仅关心的是交通费用,而且对于里程和所需要的时间等的问题也是同样的关心,在此系统中,完全面向用户,可以用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。
且在图中,顶点表示城市,边表示城市之间的交通关系。
数据结构课程设计全国交通咨询系统
![数据结构课程设计全国交通咨询系统](https://img.taocdn.com/s3/m/971ca681fc0a79563c1ec5da50e2524de418d048.png)
数据结构课程设计全国交通咨询系统数据结构课程设计全国交通咨询系统随着交通工具的快速发展,现代人的出行方式更加灵活便捷,交通行业也变得越来越重要。
然而,随之而来的交通拥堵、安全问题和出行效率等问题亟待解决。
因此,交通咨询系统的开发应运而生。
本文介绍一个数据结构课程设计项目——全国交通咨询系统,该系统旨在为用户提供便捷、全面的交通出行信息和服务。
该系统主要包括以下方面的功能:1. 城市选择及路线查询功能用户可选择目的地城市,系统将返回该城市的基本信息,以及从用户当前位置到目的地的交通路线和方案,并提供相应的时间和费用信息。
2. 交通工具查询功能用户可在系统中查询各种交通工具的班次、价格、车次和到达时间等相关信息,以便用户做出最优出行方案。
3. 路况信息查询该系统可实时获取交通状况信息,并展示给用户最新的路况信息。
此外,当用户选择出行方式时,系统可根据实时路况为用户提供最佳出行方案。
4. 预订和购票该系统可为用户提供方便的预订和购票服务。
用户可在线预订和购买机票、火车票和长途汽车票等交通工具,并选择合适的座位和时间。
5. 旅游景点推荐功能该系统可根据用户的出行方案提供适宜的旅游景点推荐。
用户可在系统中了解这些景点的详细信息和交通时间,以便更好地规划自己的行程。
该全国交通咨询系统的实现需要多种数据结构的支持,例如图、树、堆栈、链表、哈希表等。
下面分别讨论每个功能的实现方法和相关数据结构。
1. 城市选择及路线查询功能城市选择及路线查询功能需要通过图的遍历来实现。
图是由顶点和边组成的集合,可以用来表示城市及它们之间的相互关系。
在本系统中,每个城市可以看做一个顶点,每条连接两个城市的路径被视为一条边。
为了实现城市选择及路线查询功能,需要对图进行遍历。
在这个系统中,广度优先搜索算法(BFS)是最佳选择,因为BFS可以给出最近的解决方案。
2. 交通工具查询功能交通工具查询功能需要通过树来实现。
树是由节点和边组成的集合,可以用来表示各种结构化数据。
大数据结构课程设计交通咨询系统设计
![大数据结构课程设计交通咨询系统设计](https://img.taocdn.com/s3/m/89367a73bceb19e8b9f6bad0.png)
一线一一 一一 一一线线曩一 •帀币通杲釐一 瑶交容翼屏一 如除加篇询塞添删添罂專退设计题目V 二>:7.3.4交通咨询系统设计 P160 一、 设计要求 1 .问题描述根据不同目的的旅客对交通工具有不同的要求。
例如,因公出差的旅客 希望在旅途中的时间尽可能的短,出门旅行的旅客希望旅费尽可能的少, 而老年 人则要求中转次数少。
模拟一个全国城市之间的咨询交通程序,为旅客提供两种 或三种最优的交通路线。
2. 需求分析 二、 概要设计 1. 主界面设计***欢迎使用交通咎询系统I PCXNWiX 科苗科 WT I >Q g < | ] __[ [ >O 啊 M M : X H K i W青输入你的选择;(图2.1 “交通咨询系统”主菜单)2. 存储结构设计本系统采用图结构类型存储抽象交通咨询系统的信息。
typedef struct TrafficNode {char name[MAX_STRING_NUM]; // 班次 〃MAX_STRING_NUM 最为 10 intStartTime, StopTime; 〃起止时间int En dCity; //该有向边指向的顶点在数组中的位置,即该城市编号int Cost; 〃票价} TrafficNodeDat;typedef struct VNode{CityType city;int TrainNum, FlightNum; //标记下面Train数组和Flight数组里元素个数TrafficNodeDat Train[MAX_TRAFFIC_NUM]; // 数组成员为结构体,记录了到达城市、起止时间、票价和班次TrafficNodeDat Flight[MAX_TRAFFIC_NUM];//in t Cost; 〃遍历时到达该城市的耗费(时间或者费用)} VNodeDat;typedef struct PNode{int City;int TraNo;} PNodeDat;3.系统功能设计(1)添加城市。
数据结构课程设计--城市交通咨询系统、航班信息的查询与检索
![数据结构课程设计--城市交通咨询系统、航班信息的查询与检索](https://img.taocdn.com/s3/m/b51e3eb8960590c69ec3763c.png)
课程设计题目:城市交通咨询系统一、课程设计的原始资料及依据在交通网络非常发达,交通工具和交通方式不断更新的今天,人们的出差、旅游或做其他的出行时,不仅关心节省交通运费问题,而且对里程和所需要时间等问题感兴趣。
可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。
图中顶点表示城市,边表示城市之间的交通关系。
这个交通咨询系统可用回答旅客提出的各种问题。
二、课程设计主要内容及要求1. 建立交通网络图的存储结构。
2. 画出主要的功能结构图和主要模块的流程图。
3. 使用迪杰斯特拉算法:求一个城市到其它所有城市最短路径。
4. 使用弗洛伊德算法:求任意两个城市间最短路径。
三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、数据通路图、微程序流程图、实验接线图、微指令代码表等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
设计小组评语处注明设计组编号、设计组组长、设计组成员,并由设计组组长给出评语。
4.课程设计说明书手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
5.课程设计说明书装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。
四、设计完成后应提交成果的种类、数量、质量等方面的要求1.完成“任务书”中指定的操作功能,运行稳定。
(完整word版)数据结构课程设计_____全国交通咨询系统
![(完整word版)数据结构课程设计_____全国交通咨询系统](https://img.taocdn.com/s3/m/2c6bd432998fcc22bdd10d24.png)
数据结构课程设计设计题目:全国交通网络咨询系统陈敏 指导教师:太原 学院级: 计算机科学与技术 号: 132054103 名:刘海静四、五、六、七、八、课程设计题目需求分析测试数据概要设计调用关系图程序代码测试结果心得体会及总结目录1414全国交通网络咨询系统、课程设计题目数据结构课程设计二、需求分析1、实现功能对城市信息(城市名、城市间的里程)进行编辑:具备添加、修改、删除功能; 对城市间的交通工具:火车。
对列车时刻表进行编辑:里程、和列车班次的添加、修改、删除;提供两种最优决策:最快到达或最省钱到达。
全程只考虑一种交通工具,可以不考虑回程;咨询以用户和计算机对话方式进行,要注意人机交互的屏幕界面。
由用户选择最优决策 原则和交通工具,输入起始站、终点站、出发时间,输出信息:最快需要多长时间才能到达 及旅费,或者最少需要多少旅费才能到达及时间, 并详细说明依次于何时何地乘坐哪一趟列 车何时到达何地。
2、设计思路(1)数据存储。
城市信息(城市名、代码)、交通信息(城市间的里程、各航班和列车时刻 ) 存储于磁盘文件。
在实验中本想用文本储存数据, 但操作不熟悉,而是改用图的邻接矩阵 储 存原始信息,而后用数组进行添加删改(2)数据的逻辑结构。
根据设计任务的描述,其城市之间的旅游交通问题是典型的 图结构, 可看作为无向图,图的顶点是城市, 边是城市之间所耗费的时间(要包括中转站的时间)或 旅费。
(3)数据的存储结构。
采用邻接表和邻接矩阵都可作为数据的存储结构, 矩阵作为数据的存储结构。
这里建议采用邻接 删除功能可用菜单方 但要注意人机界面, (4)用不同的功能模块对城市信息和交通信息进行 编辑。
添加、修改、 式或命令提示方式。
只要能方便的对城市信息和交通信息进行管理即可, 具体实现由学生自行设计, 也可参考有关程序(届时在网上提供)。
这些工作有不小的工作量。
(5)最优决策功能模块①读入城市信息和交通信息,用邻接表生成含权网络,表头数组中的元素存放城市名及对 方城市到达该元素所代表城市的所有信息; 所代表的城市有交通联系的城市(代码、 表头数组中的元素所对应的单链表存放与该元素 里程、列车车次)。
数据结构--交通咨询系统
![数据结构--交通咨询系统](https://img.taocdn.com/s3/m/21055484f021dd36a32d7375a417866fb84ac00c.png)
数据结构--交通咨询系统正文:1. 介绍本文档是关于交通咨询系统的数据结构设计的文档。
交通咨询系统是一个为用户提供交通信息和路线推荐的系统。
本文档将详细介绍系统的整体架构、数据结构设计,以及每个模块的功能和实现细节。
2. 系统架构交通咨询系统采用三层架构,包括前端界面层、业务逻辑层和数据存储层。
前端界面层负责与用户交互,接收用户输入的咨询请求。
业务逻辑层对用户的咨询请求进行处理,调用相应的算法和数据结构进行路线推荐。
数据存储层用于存储用户和路线的信息。
3. 用户管理模块用户管理模块负责用户的注册、登录和个人信息管理。
用户信息包括用户名、密码等基本信息。
用户个人信息管理包括修改密码、修改个人资料等功能。
4. 路线查询模块路线查询模块实现根据用户的出发地和目的地查询最短路径。
该模块使用图的最短路径算法,如Dijkstra算法或A算法,来计算最短路径。
在查询结果中,系统将显示最短路径的详细信息,包括交通工具、路程时间和费用等。
5. 路线推荐模块路线推荐模块实现根据用户的偏好和实时交通情况推荐路线。
该模块根据用户的出发地和目的地,以及用户的偏好(如最短时间、最少换乘、最少步行等)进行路线推荐。
同时,系统还考虑实时交通情况,如拥堵状况和公共交通工具的运行情况。
6. 数据存储模块数据存储模块负责存储用户和路线的信息。
用户信息包括用户名、密码和个人资料等。
路线信息包括出发地、目的地、交通工具信息、路程时间和费用等。
数据存储模块可以采用关系型数据库或者NoSQL数据库进行实现。
7. 界面设计系统的前端界面设计应简洁明了,方便用户操作和查看信息。
界面应有搜索框用于用户输入出发地和目的地,并且提供选项供用户选择偏好和实时交通情况。
附件:1. 数据库表设计:包括用户表和路线表的字段定义和关系。
2. 界面原型设计:包括系统的前端界面设计和交互流程。
法律名词及注释:1. 用户:使用交通咨询系统的个人或组织。
2. 用户信息:用户在注册和登录时提供的个人信息,包括用户名和密码。
交通咨询系统设计数据结构课程设计
![交通咨询系统设计数据结构课程设计](https://img.taocdn.com/s3/m/13eb9fd218e8b8f67c1cfad6195f312b3169ebf7.png)
交通咨询系统设计数据结构课程设计一、引言随着城市人口的增加和交通需求的不断增长,交通咨询系统变得越来越重要。
交通咨询系统可以提供准确的交通信息,帮助用户规划最佳的出行路线,减少交通拥堵和时间浪费。
本文将介绍一个交通咨询系统的设计,重点关注其数据结构的设计与实现。
二、系统需求分析在设计交通咨询系统的数据结构之前,首先需要对系统的需求进行分析。
用户使用该系统可以进行以下几个方面的咨询:1. 路线规划:根据用户提供的起点和终点,系统可以返回最佳的路线规划方案。
2. 实时交通信息:系统可以提供实时的交通信息,包括道路拥堵情况、车流量、事故等。
3. 公交查询:用户可以查询公交车的实时位置、到站时间等信息。
4. 地点搜索:用户可以根据关键词搜索附近的地点,如餐厅、加油站等。
三、数据结构设计基于以上需求,我们可以设计以下数据结构来实现交通咨询系统:1. 地点信息表:包含地点的名称、经度、纬度等信息。
可以使用哈希表或者树结构来存储地点信息,以便快速查询。
2. 道路网络图:采用图的数据结构来表示道路网络,每个路口和道路分别表示图的顶点和边。
可以使用邻接矩阵或者邻接表来实现图。
3. 路线规划表:记录用户查询的起点和终点,以及最佳路线的详细信息。
可以使用链表或者数组来实现路线规划表。
4. 交通信息表:记录道路的实时交通信息,包括车流量、拥堵情况等。
可以使用哈希表或者树结构来存储交通信息。
5. 公交车信息表:记录公交车的实时位置、到站时间等信息。
可以使用链表或者数组来实现公交车信息表。
四、系统实现在设计完数据结构之后,需要实现相应的算法来支持系统的功能。
以下是几个重要的算法:1. 路线规划算法:可以使用Dijkstra算法或者A*算法来实现最短路径的计算。
2. 地点搜索算法:可以使用字符串匹配算法或者正则表达式来实现关键词搜索。
3. 实时交通信息更新算法:可以使用定时任务或者事件驱动的方式来更新交通信息。
4. 公交车位置更新算法:可以使用定时任务或者事件驱动的方式来更新公交车位置信息。
数据结构课程设计:交通资讯系统
![数据结构课程设计:交通资讯系统](https://img.taocdn.com/s3/m/7f881bda31126edb6e1a106d.png)
目录一、实验目的: (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实现全国交通咨询系统
![数据结构课程设计-应用java实现全国交通咨询系统](https://img.taocdn.com/s3/m/12f8319b102de2bd97058841.png)
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.分析经过分析,以上输出的信息基本正确,基本功能也可以实现,但是还存在个别问题尚未解决,由于编者能力有限,至今仍未解决。
(完整word版)数据结构课程设计交通咨询系统
![(完整word版)数据结构课程设计交通咨询系统](https://img.taocdn.com/s3/m/b40983f0b52acfc788ebc9bb.png)
目录第1章概述 (1)1.1 性能需求 (1)1.2 功能需求 (2)第2章概要设计 (3)2。
1功能模块设计 (3)2.2算法分析与设计 (3)第3章详细设计 (5)3.1 管理员功能模块设计 (5)3。
2计算最少费用功能模块设计 (11)第4章调试分析与测试结果 (18)4。
1调试分析 (18)4。
2测试结果 (19)第5章总结 (21)参考文献 (22)附录 (23)第1章概述数据结构作为一门学科主要研究数据的各种逻辑结构和存储结构,以及对数据的各种操作。
因此,主要有三个方面的内容:数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。
通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构.数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。
在当今信息时代,信息技术己成为当代知识经济的核心技术。
我们时刻都在和数据打交道。
比如人们在外出工作时找最短路径,在银行查询存款、通过互联网查新闻、以及远程教育报名等,所有这些都在与数据发生关系。
实际上,现实世界中的实体经过抽象以后,就可以成为计算机上所处理的数据。
数据结构课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。
数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。
通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。
通过此次课程设计主要达到以下目的:1。
了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2。
初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计题目<二>:交通咨询系统设计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,已添加城市名称。
添加起始城市、终点城市名称、乘车类型、乘车班次、起始时刻、终点时刻、和票价。
(图添加交通路线)4.删除交通路线输入班次号,删除交通路线(图删除交通路线)5.查询最小费用交通路线(图查询最小费用交通路线)6.查询最快交通路线(图查询最快交通路线)7.清除屏幕 8退出六、用户手册使用本系统时,用户需先向程序添加城市后,在已有城市基础上添加已有城市的路线和使用各项功能。
七、调试报告程序运行无错误,但当系统输入其他无储存内容时程序会意外中断,代码需要优化。
八、程序清单#include "" #include <>#include <>#include <>#define ERR 0#define OK 1#define Dij_MAXN 100#define MAX_VERTEX_NUM 100#define MAX_STRING_NUM 100#define MAX_TRAFFIC_NUM 100 const char CityFile[] = "";const char TrainFile[] = "";const char FlightFile[] = "" typedef short int CityType;rainNum;}fprintf(fp, "%d\n", total); rainNum; j++) rain[j].name,CityName[i],CityName[AdjList[i].Train[j].EndCity]); fprintf(fp, "%2d:%2d %2d:%2d %d\n",AdjList[i].Train[j].StartTime / 60, rain[j].StartTime % 60,AdjList[i].Train[j].StopTime / 60,AdjList[i].Train[j].StopTime % 60,AdjList[i].Train[j].Cost);}}fclose(fp); total = 0;fp = fopen(FlightFile, "w");for (i = 0; i<CityNum; i++)total += AdjList[i].FlightNum;}fprintf(fp, "%d\n", total);for (i = 0; i<CityNum; i++){for (j = 0; j<AdjList[i].FlightNum; j++){fprintf(fp, "%s %s %s ", AdjList[i].Flight[j].name, CityName[i],CityName[AdjList[i].Flight[j].EndCity]);fprintf(fp, "%2d:%2d %2d:%2d %d\n",AdjList[i].Flight[j].StartTime / 60,AdjList[i].Flight[j].StartTime % 60,AdjList[i].Flight[j].StopTime / 60,AdjList[i].Flight[j].StopTime % 60,AdjList[i].Flight[j].Cost);}}fclose(fp); return 1;}int InsertCity(char *Name) ity = CityNum;AdjList[CityNum].FlightNum = 0;AdjList[CityNum].TrainNum = 0;CityNum++;return 1;}int DelCity(char *Name) lightNum = AdjList[i + 1].FlightNum;AdjList[i].TrainNum = AdjList[i + 1].TrainNum;for (j = 0; j < AdjList[i].FlightNum; j++)light[j].Cost = AdjList[i + 1].Flight[j].Cost;AdjList[i].Flight[j].EndCity = AdjList[i +1].Flight[j].EndCity;strcpy(AdjList[i].Flight[j].name, AdjList[i + 1].Flight[j].name);AdjList[i].Flight[j].StartTime = AdjList[i + 1].Flight[j].StartTime;AdjList[i].Flight[j].StopTime = AdjList[i + 1].Flight[j].StopTime;}}CityNum--;}return 1;int InsertTrain(char *train, char *StartCity, char *EndCity, int StartTime, int EndTime, int cost){int i, j; rain[AdjList[i].TrainNum].Cost = cost;AdjList[i].Train[AdjList[i].TrainNum].EndCity = j;AdjList[i].Train[AdjList[i].TrainNum].StartTime =StartTime;AdjList[i].Train[AdjList[i].TrainNum].StopTime =EndTime;strcpy(AdjList[i].Train[AdjList[i].TrainNum].name, train);AdjList[i].TrainNum++; light[AdjList[i].FlightNum].Cost cost;AdjList[i].Flight[AdjList[i].FlightNum].EndCity = j;AdjList[i].Flight[AdjList[i].FlightNum].StartTime = StartTime;AdjList[i].Flight[AdjList[i].FlightNum].StopTime =EndTime;strcpy(AdjList[i].Train[AdjList[i].FlightNum].name,flight);AdjList[i].FlightNum++;return 1;}int DelPath(char *name){int i, j, flag = 0;for (i = 0; i<CityNum; i++){for (j = 0; j<AdjList[i].FlightNum;j++) light[j].name, name) == 0)flag = 1; break;}if (flag){for (; j<AdjList[i].FlightNum - 1; j++) light[j].Cost = AdjList[i].Flight[j + 1].Cost;AdjList[i].Flight[j].EndCity =AdjList[i].Flight[j + 1].EndCity;strcpy(AdjList[i].Flight[j].name,AdjList[i].Flight[j + 1].name);AdjList[i].Flight[j].StartTime =AdjList[i].Flight[j + 1].StartTime;AdjList[i].Flight[j].StopTime =AdjList[i].Flight[j + 1].StopTime;}AdjList[i].FlightNum--; break;for (j = 0; j<AdjList[i].TrainNum; j++) if(strcmp(AdjList[i].Train[j].name, name) == 0){flag = 1; break;}if (flag){for (; j<AdjList[i].TrainNum - 1; j++) rain[j].Cost= AdjList[i].Train[j + 1].Cost;AdjList[i].Train[j].EndCity = AdjList[i].Train[j + 1].EndCity;strcpy(AdjList[i].Train[j].name, AdjList[i].Train[j + 1].name);AdjList[i].Train[j].StartTime =AdjList[i].Train[j + 1].StartTime;AdjList[i].Train[j].StopTime =AdjList[i].Train[j + 1].StopTime;AdjList[i].TrainNum--; break;}}return 1;}rainNum; 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]; .\n");return -1;}fscanf(fp, "%d", &CityNum);for (i = 0; i<CityNum; i++){fscanf(fp, "%s", &CityName[i]);AdjList[i].city = i;AdjList[i].TrainNum = 0;AdjList[i].FlightNum = 0;}fclose(fp);fp = fopen(TrainFile, "r");if (!fp)printf("\nError:Cannot Open Train File...\n");return -1;}fscanf(fp, "%d", &num);for (i = 0; i<num; i++){fscanf(fp, "%s", &stmp1);rain[AdjList[j].TrainNum].EndCity = SeekCity(stmp3);rain[AdjList[j].TrainNum].name, stmp1);fscanf(fp, "%d:%d", &hour, &minute);AdjList[j].Train[AdjList[j].TrainNum].StartTime= hour * 60 + minute;fscanf(fp, "%d:%d", &hour, &minute);AdjList[j].Train[AdjList[j].TrainNum].StopTime = hour* 60 + minute;fscanf(fp, "%d", &cost);AdjList[j].Train[AdjList[j].TrainNum].Cost = cost;AdjList[j].TrainNum++;}fclose(fp);fp = fopen(FlightFile, "r");if (!fp){printf("\nError:Cannot Open Flight File...\n");return -1;}fscanf(fp, "%d", &num);for (i = 0; i<num; i++){fscanf(fp, "%s", &stmp1);light[AdjList[j].FlightNum].EndCity = SeekCity(stmp3);strcpy(AdjList[j].Flight[AdjList[j].FlightNum].name,stmp1);fscanf(fp, "%d:%d", &hour, &minute);AdjList[j].Flight[AdjList[j].FlightNum].StartTime = hour * 60 + minute;fscanf(fp, "%d:%d", &hour, &minute);AdjList[j].Flight[AdjList[j].FlightNum].StopTime = hour * 60 + minute;fscanf(fp, "%d", &cost);AdjList[j].Flight[AdjList[j].FlightNum].Cost = cost;AdjList[j].FlightNum++;}fclose(fp); return 1;}int SearchMinTime(CityType City, CityType EndCity, int intCurTime, curPathNo, int TravelType){ ity = Path[i].City;MinPath[i].TraNo = Path[i].TraNo; curPath = curPathNo;}MinTime = CurTime - StartTime;}}else{curPathNo++;Path[curPathNo].City = City;if (!TravelType){for (i = 0; i<AdjList[City].TrainNum; i++) if((AdjList[City].Train[i].StartTime >= (CurTime % 1440)) && (AdjList[City].Train[i].StopTime + (CurTime / 1440) * 1440 - StartTime<MinTime)){Path[curPathNo].TraNo = i;SearchMinTime(AdjList[City].Train[i].EndCity,EndCity, AdjList[City].Train[i].StopTime + (CurTime / 1440) 1440, curPathNo, TravelType);if ((AdjList[City].Train[i].StartTime<(CurTime % 1440)) && (AdjList[City].Train[i].StopTime + (CurTime / 1440) * 1440 - StartTime<MinTime)){Path[curPathNo].TraNo = i;SearchMinTime(AdjList[City].Train[i].EndCity, EndCity, AdjList[City].Train[i].StopTime + (CurTime / 1440 + 1) * 1440, curPathNo, TravelType);}}else{for (i = 0; i<AdjList[City].FlightNum; i++){if ((AdjList[City].Flight[i].StartTime >=CurTime) && (AdjList[City].Flight[i].StopTime + (CurTime / 1440) * 1440 - StartTime<MinTime)){Path[curPathNo].TraNo = i;SearchMinTime(AdjList[City].Flight[i].EndCity, EndCity,AdjList[City].Flight[i].StopTime + (CurTime / 1440) * 1440, curPathNo, TravelType);if ((AdjList[City].Flight[i].StartTime<CurTime)&&(AdjList[City].Flight[i].StopTime + (CurTime / 1440) * 1440 - StartTime<MinTime)){Path[curPathNo].TraNo = i;SearchMinTime(AdjList[City].Flight[i].EndCity, EndCity,AdjList[City].Flight[i].StopTime + (CurTime / 1440 + 1) * 1440,curPathNo, TravelType);}}}}return 1;int CalcMinTime(int StartCity, int EndCity, int TravelType) {int i;MinTime = 32767; curPath = 0;Path[0].City = StartCity;if (!TravelType){for (i = 0; i<AdjList[StartCity].TrainNum; i++){Path[0].TraNo = i;StartTime = AdjList[StartCity].Train[i].StartTime;SearchMinTime(AdjList[StartCity].Train[i].EndCity, EndCity, AdjList[StartCity].Train[i].StopTime, 0, TravelType);else{for (i = 0; i<AdjList[StartCity].FlightNum; i++){Path[0].TraNo = i;StartTime = AdjList[StartCity].Flight[i].StartTime;SearchMinTime(AdjList[StartCity].Flight[i].EndCity, EndCity, AdjList[StartCity].Flight[i].StopTime, 0, TravelType);}}if (MinTime == 32767)printf("\nNo access to that destination!");return 0;}rain[MinPath[0].TraNo].StartTime;light[MinPath[0].TraNo].StartTime;printf("\nPath:\n");for (i = 0; i <= curPath; i++){if (!TravelType)printf("%s : %s", CityName[MinPath[i].City], AdjList[MinPath[i].City].Train[MinPath[i].TraNo].name);elseprintf("%s : %s", CityName[MinPath[i].City], AdjList[MinPath[i].City].Flight[MinPath[i].TraNo].name);printf(" %2d:%2d-%2d:%2d\n",AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StartTime / 60,AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StartTime % 60,AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StopTime / 60,AdjList[MinPath[i].City].Train[MinPath[i].TraNo].StopTime % 60);}printf("%s: DESTINATION!", CityName[EndCity]);printf("\nTime Cost: %2d:%2d", MinTime / 60, MinTime %60);return 1;}int CalcMinCost(int StartCity, int EndCity, int TravelType) { int ma[Dij_MAXN][Dij_MAXN];int i, j, min, end;for (i = 0; i<CityNum; i++)for (j = 0; j<CityNum; j++)ma[i][j] = -1;if (TravelType == 0){for (i = 0; i<CityNum; i++){min = 32767; j = 0;while (j<AdjList[i].TrainNum){min = 32767;end = AdjList[i].Train[j].EndCity;while (end ==AdjList[i].Train[j].EndCity&&j<AdjList[i].TrainNum){if (AdjList[i].Train[j].Cost<min){min = AdjList[i].Train[j].Cost;}j++;}ma[i][end] = min;}}}else{for (i = 0; i<CityNum; i++){min = 32767; j = 0;while (j<AdjList[i].FlightNum){min = 32767;end = AdjList[i].Flight[j].EndCity;while (end ==AdjList[i].Flight[j].EndCity&&j<AdjList[i].FlightNum){if (AdjList[i].Flight[j].Cost<min){min = AdjList[i].Flight[j].Cost;}j++;}ma[i][end] = min;}}}Dijkstra(ma, StartCity, EndCity, TravelType);OU&UJ 茎一 Tu 」n a)(L)①壬M a)4n £L U —①匚 noil —①a)4n £L U I S 匚n Ollis 4£ 0)d A 4a)>e」4.Mopu①・A 4O 七2S 4£CopyRight();// 版权信息ShowMenu(); // 主菜单scanf("%d", &Command);// 输入选择switch (Command) // 对菜单的内容进行选择{case 0: // 退出return 0;case 1: // 添加城市InitSysData(); // 读出文档中已存的信息printf("\n 输入城市名 :");scanf("%s", &name); // 输入城市名InsertCity(name); // 将城市插入到数组中SaveSysInfo(); // 把城市的信息写入文档中printf("System Info Save OK!\n");break;case 2: // 删除城市InitSysData(); // 读出文档中已有的信息printf("\n 输入城市名 :");scanf("%s", &name);DelCity(name); // 将城市删除SaveSysInfo(); // 将处理过的信息写入文档中printf("System Info Save OK!\n");break;case 3: // 添加路线InitSysData();printf(" 起始站城市名 :");scanf("%s", &s_city); // 起始站printf(" 终点站城市名 :");终点站scanf("%s", &e_city);//printf(" 类型(列车 0,航班 1):"); scanf("%d",&traveltype);printf(" 输入列车 / 飞机班次 :");scanf("%s", &name);printf(" 起始时刻 (00:00 ,24小时制 ):");scanf("%2d:%2d", &s_hour, &s_minute);printf(" 到达时刻 (00:00 ,24小时制 ):");scanf("%2d:%2d", &e_hour, &e_minute);printf(" 票价 :");scanf("%d", &cost);if (traveltype){InsertFlight(name, s_city, e_city, s_hour * 60 +s_minute, e_hour * 60 + e_minute, cost);}else{InsertTrain(name, s_city, e_city, s_hour * 60 + s_minute, e_hour * 60 + e_minute, cost);}SaveSysInfo();printf("System Info Save OK!\n");break;case 4: // 删除路线InitSysData();printf(" 输入班次 :");scanf("%s", &name);DelPath(name); // 将路线进行删除SaveSysInfo();printf("System Info Save OK!\n");break;case 5: // 最小耗费InitSysData();printf("\n 起始城市 :");scanf("%s", &name);startcity = SeekCity(name);if (startcity<0){printf("Error City Name:No such city!\n");break;}printf(" 终点城市 :");scanf("%s", &name);endcity = SeekCity(name);if (endcity<0)printf("Error City Name:No such city!\n");break;}printf(" 类型(列车 0,航班 1) :");scanf("%d", &traveltype);if (traveltype != 0 && traveltype != 1){printf("Error Input!");break;}CalcMinCost(startcity, endcity, traveltype);计算//最少的花费printf("\n");break;case 6: // 最短时间路线InitSysData();printf("\n 起始城市 :");scanf("%s", &name);startcity = SeekCity(name);if (startcity<0){printf("Error City Name:No such city!\n");break;}printf(" 终点城市 :");scanf("%s", &name);endcity = SeekCity(name);if (endcity<0){printf("Error City Name:No such city!\n");break;}printf(" 类型(列车 0,航班 1) :");scanf("%d", &traveltype);if (traveltype != 0 && traveltype != 1){printf("Error Input!");break;}CalcMinTime(startcity, endcity, traveltype);计算//最少的时间printf("\n");break;case 7:system("cls");// 清除屏幕}}。