用asp.ent(c#)做了个深圳公交查询的网站,大家来提点意见和建议吧(300分)

  • 主题发起人 主题发起人 Derlin
  • 开始时间 开始时间
D

Derlin

Unregistered / Unconfirmed
GUEST, unregistred user!
深圳公交查询
http://www.sz84.com
现在站站查询没有问题,但是公交换乘(也就是需要转车的)查询问题还没能解决,哪位大虾能给个思路?这个问题可以再开贴给分。
大家可以针对网站提各方面的意见和建议,多谢!
[:)]后台数据的处理是用 delphi7 做的,谁让咱 delphi 用得顺手呢。[:)]
 
如果可以提供部分源代码……
呵呵开玩笑的
 
挺好的,但是没有背景喔,背景好看会更好:)
 
还可以。
 
很好的,给个代码共享多好啊。
 
后台数据的处理是用 delphi7 做的 有没有代码啊。。我想感受以下它。。
换乘有做过的,就是JAVA做的。
当然可以取数据库的交集。。。我感觉最好的思路是通过图象解决。
数据库取交集,两次倒车还成,三次郁闷了。
要么指针图。
比如你建立一个庞大的指针链表,你从地点A树型(200路,201路,203路等都经过),
每个路又有许多的地点节点,
目的B树型(1000,111等路)还有地点指针。看多少A地点到B地点的的遍历的方法。
 
正好深圳现在的公交改革时期。一定有个好价格[:D]。
 
既然做公共信息类的网站, 从技术层面上讲我比较建议你用webservice实现数据层的查询.
这样做有几大好处:
一、有利于网站推广(可以开放接口供其它网站共享数据);
二、数据的安全性大大提高;
三、便于数据网站日后的维护工作;
。。。
<现在站站查询没有问题,但是公交换乘(也就是需要转车的)查询问题还没能解决>
数据库的设计是非常重,设计的不好。对数据调用很不利。做公交车路线搜索你还是用地图的形式做比较好。然后用搜索算法(如广度或深度优先算法)来实现并返回结果。
 
偶做了一个Delphi7.0+Access 2003的程序,可以实现换乘,可惜是单机版的,现在没时间改成B/S的,有需要可提供方案。QQ:240742007
 
电子地图是如何实现的,可否共享原码
 
我有个想法,深圳的公交车大都是分段收费的,那么分段的那个站也就是换乘
比较优选的站,这样不但是省时,而且省钱,再者线路多,赶不上这个赶那个。
 
//来自:lmxcyx, 时间:2006-7-12 16:30:01, ID:3503806
//电子地图是如何实现的,可否共享原码
网站上的电子地图是借用别人的,感兴趣的请访问这个地址 www.mapbased.com
to kukujaky:
已加了你的QQ,等待通过验证中。。。。。。
谢谢所有提出建议的朋友!
 
最好是做个地图,把每个站点划分出来,用箭头表示经过站点
这样会直观很多
 
不错,不过我的ASP。NET还刚入门。
 
一次转乘也可以查询到了,我觉得还有需要改善的地方,大家先看一下效果.
从 &quot;科技园&quot;
到 &quot;上步南&quot;
http://www.sz84.com/change.aspx?stop_id=22&stop_id2=275
从 &quot;上沙村&quot;
到 &quot;洪湖公园&quot;
http://www.sz84.com/change.aspx?stop_id=65&stop_id2=1205
从 &quot;南航公司&quot;
到 &quot;火车站&quot;
http://www.sz84.com/change.aspx?stop_id=172&stop_id2=1
从 &quot;南头&quot;
到 &quot;市政府&quot;
http://www.sz84.com/change.aspx?stop_id=167&stop_id2=5
从 &quot;火车站&quot;
到 &quot;石岩镇&quot;
http://www.sz84.com/change.aspx?stop_id=1&stop_id2=818
查询时输入站点名,站点与站点之间用空格格开,点搜索即可.
 
简单说一下我是怎么实现转乘的搜索的吧.
表结构如下(为方便大家看,我简化了一下,只把主要的字段列出来)
--公交线路表
CREATE TABLE [bus] (
[bus_id] [int] IDENTITY (1, 1) NOT NULL ,
[bus_name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
)
--公交站表
CREATE TABLE [bus_stop] (
[stop_id] [int] IDENTITY (1, 1) NOT NULL ,
[stop_name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
)
--公交线路与公交站的对应表
CREATE TABLE [bus_stops] (
[stops_id] [int] IDENTITY (1, 1) NOT NULL ,
[bus_id] [int] NOT NULL ,
[stop_id] [int] NOT NULL ,
[stop_order] [int] NULL ,
) ON [PRIMARY]
GO
定义了一个函数 dbo.getStopCount() 来取得某线路的两个站间隔的站点数.
站点1 站点2
先找到经过站点1的所有线路与这些线路经过的所有站点,再找到经过站点2的所有线路
与这些线路经过的所有站点,转乘站肯定要在这些站点中产生了.然后计算这些站点作为
转乘站时与站点1,站点2间隔的站点数的和,然后按小到大排序.
declare @stop_id int
declare @stop_id2 int
select @stop_id = 1
select @stop_id2 = 100
select a.bus_id,a.StopCount as stop_count1,a.stop_id,b.bus_id as bus_id2,
b.stopcount as stop_count2,a.StopCount + b.StopCount as stop_count
from
(select bus_id,stop_id,dbo.getStopCount(bus_id,stop_id,@stop_id) as StopCount from bus_stops
where bus_id in (select bus_id from bus_stops where stop_id = @stop_id))
and stop_id in (select stop_id from bus_stops where bus_id in
(select bus_id from bus_stops where stop_id = @stop_id2))) a
inner join
(select bus_id,stop_id,dbo.getStopCount(bus_id,stop_id,@stop_id2) as StopCount from bus_stops
where bus_id in (select bus_id from bus_stops where stop_id = @stop_id2)
and stop_id in (select stop_id from bus_stops where bus_id in
(select bus_id from bus_stops where stop_id = @stop_id))) b
on a.stop_id = b.stop_id
order by stop_count
 
深圳的中小巴都已经取消了,大巴车上人满为患,市民出行都要跑更远的路,浪费更长的时间,花更多的钱。。。。。。
 
如果要换成两趟或以上怎么解决啊。应该也是个2叉树巴,数据结构好的哥们帮忙看看~
 
看了一下:从 &quot;南航公司&quot;
到 &quot;火车站&quot;
发现有些是重复的,建议弄个动态数组,如:把105+1存进去,下次再看到105+1就跳过,这样就不会出现相同的转乘方案,
另外再加个方向,要不然等个坐错方向了^_^
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部