关于地铁查询系统的总结

  地铁查询系统的开发已经告一段落了,我想在这里总结一下关于开发地铁查询系统的总过程。

  1、数据库部分

    数据库中存在两张表,一张是站点表(line),属性包括站点编号(StopID),站点名称(StopName),站点所属线路(Line)。第二张表是线路交点表(changestop),属性包括第一条线路(ID1),第二条线路(ID2),站点名称(ChangeStopName)。

  2、状况模拟

    查询分为三种情况。第一种,在同一条线路上的站点,其中包括起始站或终点站都是转乘点的情况;第二种,分布在两条线上的起始站和终点站,且起始站和终点站所在的线路存在交点;第三种情况,起始站和终点站在不同的两条线路上,且两点之间不存在交点,即需要第三条线作为中转。

  3、算法设计

    第一种情况中,得到查询输入的起始站和终点站,查询line表,在二者的Line属性相同的情况下,得到二者StopID差值的绝对值即可得到站数,然后输出其中的StopName。

    第二种情况中,得到查询输入的起始站和终点站,查询line表,得到二者的Line属性,然后查询changestop表,将得到的Line属性作为条件查询得到

ChangeStopName属性的值,然后再回到第一张表line中,以起始站Line属性和ChangeStopName属性定位与起始站线路相同的中转站,然后求出起始站到中转站的StopName,再以终点站Line属性和ChangeStopName属性定位与终点站线路相同的中转站,求出中转站到终点站的StopName,最后合并到同一个list中即可。

    第三种情况中,得到查询输入的起始站和终点站,查询line表,得到二者的Line属性,然后查询changestop表,将得到的Line属性作为条件查询,得到的值应当为空。在这种情况下,我们应该再次查询changestop表,将得到的起始站Line属性作为第一条记录的ID1,将得到的终点站Line属性作为第二条记录的ID2,求满足第一条记录ID2等于第二条记录ID1的线路ID并记录1。然后依旧在本张表中,以起始站Line属性作为ID1,将ID作为ID2,查询ChangeStopName,得到第一个中转点;然后以ID作为ID1,将终点站的Line属性作为ID2,查询ChangeStopName,得到第二个中转点。然后在line表中,查询起始站到第一个中转站的中间站名;之后查询第一个中转站到第二个中转站的中间站名;最后查新第二个中转站到终点站的站名。最后将三部分放入同一个list中。

  4、完成状态

    按照以上规划,地铁查询系统基本完成,但依旧存在许多可以修改的地方,比如代码重复的问题在我写第三种情况的时候非常严重,有几十行代码几乎一模一样。再比如事实上我对数据库部分的设计并不满意,一开始我设计了7个表,6个存放各个站点,但由于多表查询过于复杂(事实上我上网查询相关内容时并没有2张表以上的联合查询,也几乎没有对多张无关联表的查询),所以我只好将所有的内容放入一张表中。总之,这次合作开发并不算成功,同样也暴露出我的许多问题。

  5、代码实现

    https://github.com/Evilleon/sjzsubway

注:1、可能这里我描述会有些不明白,是这样的,假设我已经查询出两条数据,第一条数据的ID1是起始站,第二条数据的ID2是终点站,然后第一条数据的ID2=第二条数据的ID1——我要找的就是这样的两条数据。

原文地址:https://www.cnblogs.com/YXSZ/p/10712560.html

时间: 2024-10-07 21:54:24

关于地铁查询系统的总结的相关文章

石家庄地铁线路查询系统

石家庄地铁线路查询系统开发: 合作人:李玉超 数据库的设计为:建立了一张表,有line_id(路线号).stop_id(站号).stop_name(站名).change(某站可换乘的线号)这几列. stop_id所显示的序号首位也可代表line_id,后两位为该站在其所在线路上的一个顺序排序序号,可以体现其位置. 设计思想: 将所有的站点可分为两类:一种是只在一条线路上(普通点),一种是可在两条线路上,即为两条线路交点(换乘点). 所以可以分为3种情况: ①:起始点:普通点   终点:普通点 ②

北京地铁换乘系统

北京市地铁图 GIthu地址:https://github.com/wuzufeng/beijingsubway 一.设计分析 在北京地铁换乘系统中,我将整个系统主要分成了3个主要模块,分别为:主控模块,IO模块,算法模块.而我认为在这3个模块中最复杂,也是最棘手的模块就是IO模块,因为在本次实验前我对Java的IO操作没有什么了解,所以我首先查询了关于Java的IO方面的资料和代码,对其有了一定的了解后,在按需求设计完成主模块后,我先设计了系统的读入文件模块. 主模块 package main

依云工资查询系统升级至6.0

作品介绍:依云工资查询系统,一款企业员工工资查询软件,管理员只需录入员工信息.添加工资模板.上传员工工资,员工即可网上查询工资.查询工资更加方便,实现无纸化工资查询,大大节省打印裁剪工资条时间.1.设有3种不同的角色:系统管理员.部门管理员.普通用户.系统管理员可以录入部门管理员.添加工资模板.上传员工工资,部门管理员可以编辑对应部门的员工与工资,员工可以查看自己工资.2.支持Excel表格模板上传员工信息,使员工信息录入更加方便.3.支持Excel表格模板上传员工工资,使员工工资上传更加快捷.

Oracle EBS-SQL (SYS-11):查询系统已打的PATCH.sql

select a.patch_name,         b.DRIVER_FILE_NAME,         c.language,         b.creation_datefrom apps.ad_applied_patches    a,        apps.ad_patch_drivers      b,        apps.ad_patch_driver_langs c where a.applied_patch_id = b.applied_patch_id     

开房记录查询系统

开房记录查询系统★★扣扣187.5969★★查全国开房记录,微信聊天记录,手机通话短信清单,全家户籍,身份证轨迹,手机定位,婚姻调查等 推乐趣 在数字世界中,只需点击一下即可获得王国的钥匙. 你知道鱼叉钓鱼是历史上最大的数据泄露背后的唯一秘密武器吗? 这是真的,因为雅虎的一个员工成为一个简单的网络钓鱼攻击的受害者,点击了一个错误的链接,让黑客在公司的内部网络立足. 您可能熟悉网络钓鱼攻击 - 企图窃取用户凭据或财务数据 - 而钓鱼网络钓鱼是一种有针对性的网络钓鱼形式,攻击者欺骗员工或供应商提供远

Ajax + PHP实现域名查询系统

运行环境:WAMP/XAMPP搭建的本地服务器. 预备知识:HTML + PHP的用户交互和表单,变量传递:上篇简介的Javascript类对象和Ajax技术. 由于生成的页面太丑,自行搜索了点CSS知识.稍微美化了一丢丢丢,前端只上代码不注释. <style type="text/css"> body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6,pre, form, fieldset, input, texta

【云图】如何制作全国KTV查询系统?

摘要:本文以[唱吧]531麦霸音乐节为案例,详细解读了如何导入自有数据到高德云图,并进行检索和展示.最后,调起高德mobile地图来进行路线规划和周边查询. 本案例可以应用在微信开发平台,支付宝公众服务上,适合餐饮商家,汽车4S店,银行,停车场等业务. 由于使用高德云图+URI API的方式实现,开发者无需进行繁琐的数据库操作,即可实现自有数据的存储与检索. -------------------------------------------------------------- 一.数据准备

《结对-自然语言进行数据库查询系统-设计文档》

二〇一七年九月十四日十点一刻少两分钟 关于结对编程的设计文档: 题目:自然语言进行数据库查询系统 编程语言:C# 数据库:MySql ,其他逐渐扩展 软件所要实现的功能: 用户打开软件之后可以连接到数据库,并且通过自然语言进行数据库的查询,例如我想知道小明的学号,如果在数据库中查询需要输入 select ID from 学生表 where name = "小明"才能实现,我们要做的是,输入查询小明的学号,软件就可以将自然语言转换成sql语句进行数据库的查询. 所要实现的功能: 1.进行

《结对-自然语言进行数据库查询系统-开发环境搭建过程》

二〇一七年九月十四日晚上十点半多了一分钟 题目:自然语言进行数据库查询系统 编程语言:C# 数据库:MySql ,其他逐渐扩展 环境理论支持windows的所有版本(如果现在仍然有95,98,2000这样的系统那我也没办法了,没实际测试过...) 编译器使用:Visual Studio 2015 数据库使用:MySql数据库(计划未来支持更多) 环境搭建过程:因为环境较为特殊不需要特别搭建哈....