其他分享
首页 > 其他分享> > 公交线路查询

公交线路查询

作者:互联网

公交线路查询

1. 设计内容与要求

  1. 公交新线路的创建(站点的录入)、删除、修改、查询(显示该线路的全部站点);

  2. 公交站点的添加、删除、修改、查询(显示该站点的全部线路);

  3. 两个公交站点之间线路查询(显示经过的全部站点,包含转车站点的提示)。

  4. 以上功能中应该包含一个线路双向线路站点不同或仅单向运行的的情况。

  5. 以西安市公交为例,公交线路参照微信公众号:西安交通大发布,至少录入10条以上的线路并涵盖03、04的情况。

2. 实验环境

  1. 硬件环境:Window10系统
  2. 软件环境:VC++6.0

3. 系统分析与设计

​ 该系统主要涉及到公交线路的操作,通过以下分析采用线性表的数据结构,对线性表进行增删查改,围绕线性表扩展其它功能。一条链存储一条线路,线路号存入链表所对应的线路号数组。事先将公交线路数据存入文件,链表更改后保存进文件。

  1. 文件录入数据:

​ 在文件中每一条公交线路最后添加此条公交线路停止读取标志"停",在文件最后添加停止读取文件信息"结束",每申请一个链表新结点,就从文件中读取一个站点名字,将值赋予此链表结点的数据域,遇到"停"标志则进行下一条公交线路的读取,直到碰到"结束"标志,停止读取文件。

  1. 数据存储进文件:

​ 查询每一条链表,若该链表头结点的指针域不为空,则该链表有信息,需要将其输入文件,将链表结点指针域值转换成中文输出到文件中,直到链表最后再输出一个结束标志"停",所有链表信息输入完成后,在文件后面添加一个"结束"标志,方便文件下一次的读取。

  1. 模糊查询:

​ 根据string函数库内容,编写字符串包含函数。然后应用该函数得到相关数组,最后对相关数组进行操作。

  1. 菜单设计

​ 作为交通系统,首先应当让用户使用查询功能,但不可对线路和站点进行修改等操作,因此需要设置管理员系统,只有相关人员才可对公交系统进行操作。因此,建立管理员系统,并设置密码,若输入三次以上,则不可进入管理员系统。

​ 设置好初始密码,利用逻辑关系,及循环语句建立主菜单。

  1. 公交线路的查询

​ 查询线路时并不一定会输入完整数据,所以应该支持模糊查找。查询某条线路,得到结果应为该条线路所有站点的有序序列。通过模糊查找得到线路名,然后遍历所有线路链表得到被查找链打印屏幕。

  1. 公交站点的查询

    ​ 同线路查询支持模糊搜索,通过输入站点能得到所有通过该站点的线路。遍历所有线路链表,遇到被查询站点,屏幕输出该条链即可。

  2. 站点的增加删除修改

​ 站点的增加删除修改,对象是已经存在的线路。采用链表可以更方便的进行站点的增加删除修改,对应链表增删改。理论上如果硬件允许一条线路可以一直增加站点。修改时直接替换链表中某一结点数据即可。

  1. 线路的增加删除和修改

​ 线路的增加,由于程序采用的是链式存储结构,故增加线路时只需要new一条新链表,然后依次向链表中输入站点信息即可完成线路的添加。删除线路时只需要删除改线路所在的链表即可完成对线路的删除操作。如需修改线路名称,只需修改对应的线路数组的数据即可。

  1. 零次换乘

​ 零次换乘即不换乘。即一条线路中搜索起点与终点给出中间所经过的站点。在所有链表中找到同时存有被查询的起点与终点的线路,然后将其打印屏幕即可。

  1. 换乘设计

​ 理念:一次换乘调用直达函数,多次换乘调用一次换乘,形成递归(暂未实现)。

​ A. 一次换乘操作:寻找含有起始站点的所有线路-----线路1,寻找含有结束站点的所有线路----线路2。最后找到可以连通线路1和线路2上的站点的新线路,实现起始站点和终止站点的连通,以实现一次换乘。

​ B. 流程图

image-20210313125637588

4. 运行结果

image-20210313125659901

image-20210313125706433

image-20210313125712435

image-20210313125720504

image-20210313125727516 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H4ABD4Mh-1616241152784)(C:\Users\Star_King\AppData\Roaming\Typora\typora-user-images\image-20210313125736235.png)]

image-20210313125827790

image-20210313125833859

image-20210313125841508

5.课程设计支撑的毕业要求指标点

​ 数据结构课程设计支撑以下四项毕业要求指标点:

​ 指标点2-4:能够从工程科学的角度,结合文献查阅及研究,对计算机领域复杂工程问题进行系统分析,并获得有效结论。

​ 指标点7-1:知晓和理解环境保护和可持续发展的理念和内涵,正确认识计算机科学技术的发展与环境和可持续发展的关系。

​ 指标点9-3:能够理解个人在团队中的角色划分,且胜任相应的角色职责。

​ 指标点12-1:能在社会发展的大背景下,理解终身学习的必要性,具有自主学习和终身学习的意识。

6. 心得

​ 2-4 设计公交线路系统参考了百度地图等相关地图的线路查询功能,其换乘算法的实现。了解到自己实力远远不及这些大公司,结合学习科目数据结构,进行了符合自己能力的功能设计。

​ 7-1 本设计中采取链式存储结构相对于顺序存储更加节省内存空间。在数据的录入上,是一些单调的重复输入,通过程序实现节省了人力,若以后出现线路更改仍可写入文件持续使用。在公交换乘上,不需要自己去算,程序自动规划简化了出行的流程。

​ 9-3 团队找到了一些各有所长的人,大家互相帮助。在任务的分配上,先一起分析了功能,然后将程序模块化,分配任务,互相协作完成程序。个人需要听从于团队的指挥而又不能盲目的跟从团队,遇到问题应多思考,讨论并提出更好的设计模式。

​ 12-1设计中的换乘问题并不直接能从教材中得来,人不可能什么都会,通过搜索资料,认真理解才得到了算法的主要思想。并且遇到不会内容应主动查找相关内容,与他人交流也是较为不错的自学方式。

标签:链表,查询,线路,公交线路,换乘,站点
来源: https://blog.csdn.net/weixin_42547791/article/details/115033545