数据结构 交通模拟Word文件下载.docx

上传人:b****5 文档编号:21378820 上传时间:2023-01-30 格式:DOCX 页数:86 大小:492.93KB
下载 相关 举报
数据结构 交通模拟Word文件下载.docx_第1页
第1页 / 共86页
数据结构 交通模拟Word文件下载.docx_第2页
第2页 / 共86页
数据结构 交通模拟Word文件下载.docx_第3页
第3页 / 共86页
数据结构 交通模拟Word文件下载.docx_第4页
第4页 / 共86页
数据结构 交通模拟Word文件下载.docx_第5页
第5页 / 共86页
点击查看更多>>
下载资源
资源描述

数据结构 交通模拟Word文件下载.docx

《数据结构 交通模拟Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构 交通模拟Word文件下载.docx(86页珍藏版)》请在冰豆网上搜索。

数据结构 交通模拟Word文件下载.docx

4.2.1初始化交通系统10

4.2.2城市编辑11

4.2.3飞机航班编辑12

4.2.4列车航班编辑13

4.3用户咨询14

4.3.1用户咨询界面14

4.3.2查询最小费用14

4.3.3最小时间15

4.3.4最少中转次数15

4.4显示交通系统16

4.4.1显示系统界面16

4.4.2.显示城市信息17

4.4.3显示飞机航班17

4.4.3显示列车车次18

第5章总结19

参考文献20

附录21

设计总说明

爱旅行交通咨询系统是人们出外旅行的一个好帮手。

旅客由于出行目的的不同对交通工具的要求也有不同。

例如,因公事出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省,而老年旅客则要求中转次数最少。

为了能满足广大旅客的需求,方便旅客出行,就此编制一个全国城市间的交通咨询程序,为旅客提供两种或者三种最优决策的交通咨询。

爱旅行交通咨询系统主要提供交通路线的添加、查询、删除,经过分析,我们使用VC++6.0开发工具,我们通过实现城市的输入、删除及路线的增加删除等功能,进一步了解和学习数据结构的思想和理念;

而且该系统操作简单,简单易懂,避免了不熟悉计算机的人不会操作系统的麻烦。

通过该系统的演示,能够在今后的学习中更深入的了解图、树和队列的功能,在解决实际问题时灵活运用它们。

本设计可以对旅行航线进行查询,游客可按照自己的需求选择最少时间,最少费用及最少中转次数,方便自己出行。

关键词:

数据结构;

旅行路线最优选择;

全国交通咨询模拟系统

第1章绪论

1.1选题的背景

当今社会,旅行已经成为时尚。

不论你是走亲访友还是旅游,都离不开交通工具。

由于交通工具可选的种类很多,而且路线很多。

对于旅客来说,如何选择路线及车次就是一个至关重要的问题。

例如,因公事出差的旅客希望在旅途中的时间尽可能短,就不会对费用及中转次数有太大要求;

出门旅游的游客则希望旅费尽可能省,对时间及中转次数就没有太大要求。

而老年旅客则要求中转次数最少,方便省事。

在当今的社会,可以说是信息技术的发展时代,在社会的方方面面无不涉及到各种决策的选择。

决策是人们对各种情况的选择。

随着各种交通工具的出现及发展,如何决策是一个最重要的问题。

同时该系统利用计算机解决现实问题。

将现实问题用计算机编程解决。

计算机的使用辅助人们完成了那些烦琐的体力劳动和脑力劳动,使人们从劳动中解脱出来,我们所设计的《爱旅行交通咨询系统》就是可以给人提供决策,帮助人们选择最佳出行路线。

1.2目的和意义

目前人们对于出行有很多要求,如最少时间,最少花费,最少中转次数等。

因此对于每个人来说,因其不同需求,需要设计一个操作方便,功能实用,简单明了的交通咨询管理系统。

通过该题目的设计过程,可以加深理解图、树、队列、功能模块化、用户交互界面,掌握创造图等基本功能的实现,进一步理解和熟练掌握课本中所学的数据结构,学会如何把学到的知识用于解决实际问题,利于人们使用。

第2章系统总体设计

2.1题目要求

(1)提供对城市信息进行编辑(如:

添加或删除)的功能。

(2)城市之间有两种交通工具:

火车和飞机。

提供对列车时刻表和飞机航班进行编辑(增设或删除)的功能。

(3)提供两种最优决策:

最快到达和最省钱到达。

全程只考虑一种交通工具。

(4)旅途中耗费的总时间应该包括中转站的等候时间。

(5)咨询以用户和计算机的对话方式进行。

由用户输入起始站、终点站、最优决策原则和交通工具,输出信息:

最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。

2.2系统功能结构图

图2.1系统功能结构

2.3功能需求分析

2.3.1管理员

管理员界面有5个选项:

初始化交通系统、城市编辑、飞机航班编辑、列车车次编辑、返回上一级菜单。

城市编辑、列车车次编辑和飞机航班编辑可对各个城市之间的飞机航线,火车航线增加或删除。

在城市编辑中只需输入城市名即可增加该城市,在飞机航班编辑、列车车次编辑中添加或删除交通路线需要输入起始站城市名、终点站城市名、选择交通工具、火车(飞机)编号、起飞时间、到达时间和票价。

返回上一级菜单是返回主界面。

输入的信息会分别写入city.txt,train.txt,plane.txt中,用户查询路线时可以从显示交通系统中查看。

2.3.2用户

用户界面有4个选项:

咨询最少旅行费用、咨询最少旅行时间、查询最少旅行中转次数、返回上一级菜单。

咨询最少旅行费用和咨询最少旅行时间是一个图的最短路径问题,因此用Dijkstra算法按路径长度递增的顺序逐步产生最短路径的方法。

2.3.3显示交通系统

查询城市所有路线需要输入所要查询的城市名和选择交通工具,可显示该城市中所选交通工具的所有路线及路线的起始到达时间、地点及费用。

第3章系统详细设计

3.1抽象数据类型

本程序运用了关于图这种数据结构。

ADTGraph{

数据对象V:

V是具有相同特性的数据元素的集合,称为顶点集。

数据关系R:

R={VR}

VR={<

v,w>

|v,w∈V且P(v,w),<

表示从v到w的弧。

谓词P(v,w)定义了弧<

的意义或信息}

基本操作P:

CreateGraph(&

G,V,VR);

初始条件:

V是图的顶点集,VR是图中弧的集合。

操作结果:

按V和VR的定义构造图G。

DestroyGraph(&

G);

图G存在。

销毁图G。

LocateVet(G,u);

图G存在,u和G中顶点有相同的特征。

若G中存在顶点u,则返回该顶点在图中的位置,

否则返回其他信息。

GetVex(G,v);

图G存在,v是G中某个顶点。

返回v的值。

PutVex(&

G,v,value);

对v赋值value。

FirstAdjVex(G,v);

返回v的第一个邻接顶点。

若顶点在G中没有邻接

顶点,则返回“空”。

NextAdjVex(G,v,w);

图G存在,v是G中某个顶点,w是v的邻接顶点,

返回v的(相对于w的)下一个邻接顶点。

若w是v

的最后一个邻接点,则返回“空”。

InsertVex(&

G,v);

图G存在,v和图中顶点有相同特征。

在图G中添加新顶点v。

DeleteVex(&

删除G中顶点v及相关弧。

InsertArc(&

G,v,w);

图G存在,v和w是G中两个顶点。

在G中增添弧<

,若G是无向的则还增加对称弧

<

w,w>

DeleteArc(&

在G中删除弧<

,若G是无向的,则还删除对称

弧<

w,v>

DFSTraverse(G,Visit());

图G存在,Visit是顶点的应用函数。

对图进行深度优先遍历。

在遍历过程中对每个顶点调用函

数Visit一次且仅一次。

一旦visit()失败,则操作失败。

BFSTraverse(G,Visit());

对图进行广度优先遍历。

}ADTGraph

3.2结构体定义

typedefstruct

{intnumber;

floatexpenditure;

intbegintime[2];

intarrivetime[2];

}Vehide;

{Vehidestata[MAX_ROUTE_NUM];

intlast;

}infolist;

typedefstructArcNode

{intadjvex;

structArcNode*nextarc;

infolistinfo;

}ArcNode;

typedefstructVNode

{charcityname[10];

ArcNode*planefirstarc,*trainfirstarc;

}VNode,AdjList[MAX_VERTEX_NUM];

{AdjListvertices;

intvexnum,planearcnum,trainarcnum;

}ALGraph;

typedefstructNode

introute;

structNode*next;

}Node;

typedefstructQNode

structQNode*next;

}QNode;

{QNode*front;

QNode*rear;

}LinkQueue;

typedefstructTimeNode

structTimeNode*child[MAX_ROUTE_NUM];

}TimeNode,*TimeTree;

structarc

{intco;

charvt[10];

charvh[10];

intbt[2];

intat[2];

floatmo;

}a[MAX_ARC_SIZE];

3.3函数声明

voidAdminister(ALGraph*G);

voidcityedit(ALGraph*G);

voidCopyTimeTree(TimeTreep,TimeTreeq);

voidcreatecityfile();

voidCreateGraph(ALGraph*G);

voidcreateplanefile();

voidCreateTimeTree(TimeTreep,inti,intj,LinkQueue*Q,infolist(*arcs)[MAX_VERTEX_NUM]);

voidcreatetrainfile();

intDeleteplaneArc(ALGraph*G);

voidDeleteQueue(LinkQueue*Q,int*x);

intDeletetrainArc(ALGraph*G);

voidDeleteVertex(ALGraph*G);

voidDemandDispose(intn,ALGraphG);

voidDestoryTimeTree(TimeTreep);

voidEnterplaneArc(ALGraph*G);

voidEnterQueue(LinkQueue*Q,intx);

voidEntertrainArc(ALGraph*G);

voidEnterVertex(ALGraph*G);

voidExpenditureDispose(intk,infolist(*arcs)[MAX_VERTEX_NUM],ALGraphG,intv0,intv1,float*M,int*final);

voidflightedit(ALGraph*G);

voidinitgraph(ALGraph*G);

voidInitQueue(LinkQueue*Q);

intIsEmpty(LinkQueue*Q);

intLocateVertex(ALGraph*G,char*v);

voidMinExpenditure(infolistarcs,float*expenditure,int*route);

voidMinTime(infolistarcs,int*time,int*route);

voidPrintGraph(ALGraph*G);

intsave(ALGraph*G);

voidTimeDispose(intk,infolist(*arcs)[MAX_VERTEX_NUM],ALGraphG,intv0,intv1,int(*T)[2],int*final);

voidTimeTreeDispose(Node*head,infolist(*arcs)[MAX_VERTEX_NUM]);

voidtrainedit(ALGraph*G);

voidTransferDispose(intk,infolist(*arcs)[MAX_VERTEX_NUM],ALGraphG,intv0,intv1);

voidUserDemand(ALGraphG);

voidVisitTimeTree(TimeTreep);

第4章编码和测试

4.1主界面

图4.1为主界面,按任意键即可进入下一界面。

图4.1主界面

图4.2为选择界面。

登录者可选择相应序号进入到自己所需的界面。

图4.2选择界面

4.2管理界面

图4.3为管理界面。

图4.3管理项目界面

4.2.1初始化交通系统

初始化交通系统示例如下。

图4.4初始化界面

4.2.2城市编辑

图4.5为城市编辑界面及增加城市操作。

图4.5城市编辑界面

加入“广州”和“哈尔滨”前:

图4.6加入前城市界面

加入后:

图4.7加入后城市界面

删除操作:

图4.8删除界面

删除“广州”后的结果:

图4.9删除后城市界面

4.2.3飞机航班编辑

图4.10为增加哈尔滨到上海的飞机航班操作。

图4.10飞机航班增加界面

图4.11飞机航班增加后界面

删除北京到上海的飞机航班操作:

图4.12飞机航班删除界面

删除前:

图4.13飞机航班删除前界面

删除后:

图4.14航班删除后界面

4.2.4列车航班编辑

图4.15为增加上海到哈尔滨的列车车次操作。

图4.15增加列车车次界面

增加前:

图4.16车次增加前界面

增加后:

图4.17车次增加后界面

删除北京到深圳的列车车次操作:

图4.18车次删除界面

图4.19车次删除前

图4.20车次删除后

4.3用户咨询

4.3.1用户咨询界面

图4.21为用户咨询界面,用户可从中查找最少旅行费用、时间及中转次数。

图4.21用户咨询界面

4.3.2查询最小费用

图4.22为北京到深圳的最少费用,最少费用为700元。

图4.22最小费用路线

4.3.3最小时间

图4.23为北京到天津的最少旅行时间,最少时间为30分钟。

图4.23最少旅行时间路线

4.3.4最少中转次数

图4.24为北京到天津的飞机航班中转次数最少的路线:

北京——上海,上海——天津。

图4.24最少中转次数

4.4显示交通系统

4.4.1显示系统界面

图4.25为显示系统界面,用户可从中查出系统中的城市、飞机航班、列车车次信息。

图4.25显示交通路线界面

4.4.2.显示城市信息

图4.26显示系统中的城市信息。

图4.26城市信息

4.4.3显示飞机航班

图4.27显示系统中的航班信息。

图4.27飞机航班信息

4.4.3显示列车车次

图4.28显示系统列车车次信息。

图4.28列车车次信息

第5章总结

在此次为期一周的课程设计中,我们的课题名称是交通咨询模拟系统。

我们完成了对各个城市交通路线的管理和用户咨询的功能设计。

用户可进入系统查询最少旅行时间,最少旅行费用及最少中转次数来选择最佳决策。

通过此次课程设计大大加深了我们对数据结构这门课程的理解,尤其对图、树、队列这章的理解,可以说有一个很大的进步,学习能力也大大提高。

通过此次课设也为我以后的道路奠定了一定的基础,认识到了基础的重要。

本次课程设计所使用的是较为复杂的抽象数据类型——图,而且在弧的基础上增加了许多信息,如添加了时间,费用等等,这无疑给编程加大了难度,同时也是相当的具有挑战性。

而且最短路径的算法也用了不少时间才有了更深的理解。

但功夫不负有心人,查阅了有关书籍后我们最终顺利得解决了困难。

在编程的过程中,我用到了全局数组,我将数组放在工程的头文件里面,编译的时候报错,说是多重定义。

最终放弃了创建工程,而选择了单个文件进行编译和运行,结果顺利通过。

同时,在文件操作方面我也曾遇到问题,就是在程序对文件进行读取的时候报错,无法读取文件,最后查询有关C的工具书,原来是文件路径问题,借助工具书最终解决了文件操作方面的问题。

此外,本次课设与以往不同的是以小组形式进行。

通过团队合作,我们认识到了团队的重要性。

在课设中,我们三人分工合作,遇到问题相互讨论,积极提出自己的观点及看法,尽力使我们的系统功能更完善。

总之,这次课程设计是对这一个学期以来对数据结构学习成果的一个验证,同时也是理论与实践很好的结合,既对学过的数据结构进行了巩固,也对我的编程能力奠定了坚实的基础。

任何困难我们相信都可以克服与攻坚。

参考文献

[1]谭浩强等.C程序设计.北京:

清华大学出版社,2005

[2]朱战立.数据结构—使用c语言.北京:

电子工业出版社出版社,2011

[3]李春葆.数据结构程序设计题典.北京:

清华大学出版社,2002

[4]徐孝凯.数据结构课程实验.北京:

附录

intmain()

{

ALGraphG;

system("

color9F"

);

inti;

printf("

\n\n\n\n\n\n\n"

**********************************************************************\n"

*****************欢迎来到******************\n"

*****************爱旅行交通咨询系统********************\n"

Welcome……"

getchar();

cls"

\n\n\n\n\n\n\n请选择程序功能\n"

*************************************\n"

**1=管理员管理**\n"

**2=用户咨询**\n"

**3=显示交通系统**\n"

**4=退出**\n"

选择"

scanf("

%d"

&

i);

while(i!

=4)

{

switch(i){

case1:

Administer(&

break;

case2:

UserDemand(G);

case3:

PrintGraph(&

}

\n\n\n\n\n\n\n\n请选择程序功能:

\n"

return1;

}

voidAdminister(ALGraph*G)

\n\n\n\n\n\n\n\n请选择管理项目\n"

**1=初始化交通系统**\n"

**

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1