主题:  火车时间查询如何实现

书同人

职务:普通成员
等级:1
金币:0.0
发贴:179
注册:2002/5/26 9:57:33
#12005/2/15 19:21:21
请问火车时刻表查询系统是怎样做成的,数据库要怎样设计呢?
我将每条线路的各个站,始发时间,到达时间,票价,全部以数组的方法分别保存于相应的字段中,如果要实现两站查询,只需用一条语句查询线路字段中是否包含两站的名称,但是如果要实现那种中途转车的情况,那应该如何去查询呢?



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#22005/2/15 20:11:43
这个系统比较复杂,你需要考虑到方方面面,并且要考虑系统的升级问题和扩展性。
因没对需求十分清楚,只建议你暂时把有中转站的线路,分成几个子线路,子线路的做法就有好多做法了。
如果想进一步讨论,请先把你的需要和考虑再详细分析一下,否则本帖当废帖处理了。

编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2005-02-15 20:18:57)]

非常大鱼

书同人

职务:普通成员
等级:1
金币:0.0
发贴:179
注册:2002/5/26 9:57:33
#32005/2/16 8:59:51
数据库主要字段如下:
ID,车次,站名,公里数,票价(硬座,软座)

每趟车都是管理员后台输入的,点击某个按钮即添加一个新的站名,票价,距上一站的公里数及票价,同时可以对已经输入的数据进行修改,删除,及添加,但是不可能从中间插入新的数据。
故其的结构是这样的:
id——自动编号
车次——管理员输入,例:(1548次)
站名——A,B,C,D,E,F,G,H,I,
公里数——同站名
票价——同站名
所以前台要进行两站之间查询时,选择/输入起点及终点的站名,即到数据库里查询,
select 车次 from table where 站名 like '起点' and 站名 like '终点'
如果有结果的话,就说明有直达的记录,但是如果没有的话就得要转车了,问题是如何实现转车这一步呢,而且还要指出在哪个站转车呀。

不知道表达清楚了没有,请大家帮忙想个办法。



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#42005/2/16 15:44:10
最好能参考一下成功的案例,因列车系统本人没有接触过,所以想法可能会与已有的有较大区别。因这种系统除考虑自己想法外,更注重与原系统的兼容,因数据源都是从那里来的。
如果是新建系统,并且没有考虑其它系统,我会把一个班次作为一个表,如北京--上海作为一个班次。另建一表是站点与站点的行程表,并用一个班次号与班次表表示关联,行程是班次的子线路。如上海--苏州可以是一子线路,苏州--无锡又是一子线路,上海--无锡又是子线路,但它们的班次都是相同的。这种方法缺点是输入比较复杂,要输入每两个站的数据。但考虑列车的价格可能并不是以公里算的,并且有价格折扣等因数,虽然麻烦,但价格都是正确的。
这种系统的设计,还需知道一些运营策略上一些东西,一个数据库的设计不能单考虑一方面的。另外,我想要避免价格运算是简单的两个站点相加这样简单的算法,很多时候整个班次价格都不是各站点相加这样简单,这与运营价格策略有关。


非常大鱼