当前位置:首页 » 数据仓库 » 公交查询系统数据库设计
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

公交查询系统数据库设计

发布时间: 2022-06-24 21:50:30

A. 公交车来回路线不一致,该如何设计数据库

三张表,1..保存所有站点信息的表,2.线路表,即哪条线,起点和终点分别在哪里 3.线路经过站资料表,保存哪条线路所经过的站点信息 表1:站点基表 uBusRoot,基本结构如下: fId 序号 fName 站点名称 表2:线路表 uBusLine,基本结构如下: fId 序号 fName 线路名称 fBegin 起始站编号 fEnd 终点站编号 其中fBegin,fEnd 均为 uBusRoot 表里fId值,即表示为哪个站点; 表3:线路经过表 uBusLinePass,基本结构如下: fId 序号 lId 线路编号 rId 站点编号 fType 站点类型(0-起始站,1-终点站,2-经过站) (fType 可以不要,这样建立视图时,把起始站和终点也加上即可。) 再需要建立两张视图来辅助我们查询: 线路视图:vBusLine SELECT uBusLine.fId AS 序号, uBusLine.fName AS 线路名称, (SELECT uBusRoot.fName FROM uBusRoot WHERE uBusRoot.fId= uBusLine.fBegin) AS 起始站, (SELECT uBusRoot.fName FROM uBusRoot WHERE uBusRoot.fId= uBusLine.fEnd) AS 终点站 FROM uBusLine; 线路经过视图:vBusLinePass SELECT uBusLinePass.fId AS 序号, uBusLine.fName AS 线路名称, uBusRoot.fName AS 经过站, uBusLinePass.fType AS 类型 FROM (uBusLinePass INNER JOIN uBusLine ON uBusLinePass.lId = uBusLine.fId) INNER JOIN uBusRoot ON uBusLinePass.rId = uBusRoot.fId; 基本表结构大概可以像上面这样子,其中表uBusLine和uBusLinePass,是一对多的关系,即一条线路有多个经过站,这样的话,想查经过站是不难的,当然你也可以把线路经过站的表设计的复杂一些,如:加上时间字段,表明到这个站需要多长时间等等。 我们根据以上结构来模拟一些数据: uBusRoot 1 城东站 2 城南站 3 城西站 4 城北站 5 解放路站 6 人民路站 7 汽车总站 8 汽车二站 9 城市广场 uBusLine 1 一号线路 1 4 2 二号线路 2 7 3 三号线路 3 8 uBusLinePass 1 1 1 0 2 1 4 1 3 1 5 2 4 1 6 2 5 2 2 0 6 2 7 1 7 2 5 2 8 2 9 2 9 3 3 0 10 3 8 1 11 3 4 2 12 3 6 2 那么现在我们要查询的话,就很方便了,如,我们要查一下“一号线路”线路的信息,我们可以用语句: SELECT * FROM vBusLinePass WHERE 线路名称='一号线路' 那么结果就是: 序号 线路名称 经过站 类型 1 一号线路 城东站 0 2 一号线路 城北站 1 4 一号线路 人民路站 2 3 一号线路 解放路站 2

B. 公交路线查询系统的数据库设计

至少有三个字段
字段一:线路号
字段二:车站顺序号
字段三:车站名(本字段记得用模糊查询)

公交路线两个发车站A和B
若A到B的行车方向为上行,则B到A的行车方向就是下行
数字化的解释,正序和倒序的关系
按照本方案,查找时判断两个车站之间的序号大小关系,则可以判断出上行或下行

C. 城市公交查询设计关于数据库方面

最少两个表
第一个:公交车表(所含字段:路数id 此为主键,公交车名 如某某路,发车时间,停车时间,线路长度,等其他属性都录到这里)

第二个表:站名表(所含字段,站名id 此为主键,站名称,所属公交线路)
简单这样就可以,但是不知道你的票价是怎么定义的?是上车就1块钱?还是坐的站数不同,钱数也不同?如果是后者的话,可能仅仅这两个还不够

D. 公交查询系统的数据库设计

字段
1路车 第一站+第二站
1路车 第二站+第三站
这样我只要查有第二站这个名字的字段
就知道我是要从第一站去第三站
一个范围的问题

2路车 第三站+第五站站
只要查第三站 这样我可以看到前面的字段是几路车
这样是否就可以查到 这站可以转那趟车

这只是我自己的简单思路
LZ 有更好的办法 可以一起讨论哈

E. 你好你好,我是学生,现在要做公交车查询系统的毕业设计,我是想请问你下,用什么样的数据库比较好

如果是学习的话,那么你没必要去考虑其他的问题,我建议重点考虑Oracle,毕竟你是学JAVA的,其次是Mysql
LS有说Oracle大,耗资源,这个不假,小项目是不适合。但是你现在是学习阶段,你现在还不是项目经理,你还不是真正的设计项目,你不需要去考虑项目的成本。懂吗?JAVA和Oracle永远是最好的搭档,记住。然后MySQL也挺不错的。
mssqlserver的话,既然你是做JAVA,那么以后工作中接触到的机会就会恨少。但是,mssqlserver也是做得非常强大的。

F. 如何设计公交路线查询数据库

需要三张表:

1、站点,字段为:SID,NAME

2、路线,字段为:PID,NAME

3、路线-站点表,字段为:PID,SID,INDEX;
其中INDEX是站点在该路线中的序号,例如第一个站点的
INDEX为1,第二个站点的为2,依此类推

编程时可以采用十字链表来存储线路信息,其中一维为站点,
另一维为路线。

算法采用广度优先搜索,从起点出发,由近及远,直到找到
目标站点,这样找到的路径经历的站点最少;也可对它稍做
调整,寻找换乘次数最少的乘车方式。

祝你好运!

G. 关于公交查询系统数据库的设计

最少两个表
第一个:公交车表(所含字段:路数id 此为主键,公交车名 如某某路,发车时间,停车时间,线路长度,等其他属性都录到这里)

第二个表:站名表(所含字段,站名id 此为主键,站名称,所属公交线路)
简单这样就可以,但是不知道你的票价是怎么定义的?是上车就1块钱?还是坐的站数不同,钱数也不同?如果是后者的话,可能仅仅这两个还不够,不明白就HI吧,晚8点后在线,现在下班咯

H. 公交查询数据库设计

3.1一般换乘算法
设 ,(i =1,2,…,m;t=1,2,…,m;m为正整数)为第t次循环时所对应的经过当前起点Start的线路集。 ,(j =1,2,…,n;n为正整数)为第t次循环时所对应的经过当前终点End的线路集。 ,( u = 1,2,…,p;p为正整数)为第t次循环时所对应的经过当前起点的线路i上的后续站点中的拓扑站点(即可能的转乘点)集,包括当前起始点。 ,( v =1,2,…,q;q为正整数)为第t次循环时所对应的经过当前终点的线路i上的前继站点中的拓扑站点集,包括当前终点。D为搜索最近公交站点时的半径。
实现 n次换乘的算法如下:
(1)获取出发地a和目的地b;
(2)根据给定半径 D,搜索得到出发地与目的地邻近区域的公交站点,并以离其最近的公交站点作为起始站点A及目的站点B,并将A、B作为当前的起点Start和终点End;
(3)求经过当前起点的线路集 及经过当前终点的线路集 ;
(4)判断是否 ?如果是,则实现第 次转乘,输出结果,结束运算。 时满足此条件的线路 ,也就是 为起始站点 到目的站点 的直达线路; 时,得到换乘 次的乘车方案为: 。如果不是,则进行下一步。
(5)求经过当前起点的所有线路上的后续站点中的拓扑站点集 及当前终点的所有线路上的前继站点中的拓扑站点集 ;
(6)判断是否存在相同站点,即是否有 ?若有,则实现第 次转乘,输出结果,结束运算。计算各种k次换乘方法的乘车线路上沿途经过站点数,得到站点数最少的方案,再求转车地点及其沿途站点。由此得到的站点、线路序列: 。(可能不止一种)即为需换乘 次的乘车方案;如果没有,则进行下一步。
(7)顺序将拓扑站点集 和 中的站点作为当前的起点和终点;
(8)转至步骤(3)。
3.2换乘矩阵算法
(1)初始矩阵 :首先输入所有站点,对于任何两站点 、 之间,如果可以直达,则 ;否则, ,计算出初始矩阵 。
(2)一次换乘矩阵 :在 中,如果 ,则 ;如果 ,并且存在点 ,使得 、 ,则 ,表示从站点 到 需经过1次换乘;否则, ,如此计算得1次换乘矩阵 。
(3)二次换乘矩阵 :在 中,如果 =1或2,则 ;如果 ,存在点 ,使得 、 ,则 ,表示从站点 到 需经过两次换乘;否则, 。
(4)同样的方法得到n次换乘矩阵 。
(5)如果 中没有0元素,则表示所有的站点都可以互通,停止计算;否则,继续重复上面的方法计算更多次的换乘矩阵。
3.3 基于Dijkstra算法的最优路径算法[ ]
将与起点 邻接的所有顶点的 初始化为 ,这个初始化用于记录当前可用的最好信息。也就是说,从 到顶点 的最短路径,即是由 到它自身那条路径再扩充一条边得到。当找到更短的路径时, ( 给出从 到达 的路径中顶点 前面的那个顶点)值将被更新。若产生了下一条最短路径,需要根据路径的扩充边来更新 的值。步骤如下:
(1)初始化 ,对于邻接于 的所有顶点 ,置 ,对于其余的顶点置 ;对于 的所有顶点建立 表。
(2)若 为空,终止,否则转至(3)。
(3)从 中删除 值最小的顶点。
(4) 对于与 邻接的所有还未到达的顶点,更新 值为 ;若 发生了变化且 还未在 中,则置 ,并将 加入 ,转至(2)。

I. 公交车查询的数据库设计

create table station
(busno varchar2(20),--车号
st1 varchar2(20),--站1
st2 varchar2(20),--站2
sttime number,--相距时间
stdis number,--相距距离
ststart varchar2(20),--该车号起始站
stend varchar2(20), --该车号终点站
stcost number, --该车号花费钱
)

测试数据
insert into station values ('k1','a1','b1',10,10,'a1','a10',1.2);
insert into station values ('k1','b1','a2',12,12,'a1','a10',1.2);
insert into station values ('k1','a2','b2',8,10,'a1','a10',1.2);
insert into station values ('k1','b2','a3',11,11,'a1','a10',1.2);
insert into station values ('k1','a3','b3',5,15,'a1','a10',1.2);
insert into station values ('k1','b3','a10',3,16,'a1','a10',1.2);
insert into station values ('k2','b1','b2',2,18,'b1','a5',1.3);
insert into station values ('k2','b2','a3',10,12,'b1','a5',1.3);
insert into station values ('k2','a3','b4',5,10,'b1','a5',1.3);
insert into station values ('k2','b4','a4',10,10,'b1','a5',1.3);
insert into station values ('k2','a4','c1',5,10,'b1','a5',1.3);
insert into station values ('k2','c1','a5',10,10,'b1','a5',1.3);
insert into station values ('k3','a1','c1',10,10,'a1','c2',1.1);
insert into station values ('k3','c1','b2',10,10,'a1','c2',1.1);
insert into station values ('k3','b2','a3',10,10,'a1','c2',1.1);
insert into station values ('k3','a3','c2',10,11,'a1','c2',1.1);
insert into station values ('k4','c1','b1',10,10,'c1','c3',1.4);
insert into station values ('k4','b1','c2',20,10,'c1','c3',1.4);
insert into station values ('k4','c2','b2',10,11,'c1','c3',1.4);
insert into station values ('k4','b2','a1',10,10,'c1','c3',1.4);
insert into station values ('k4','a1','c3',10,10,'c1','c3',1.4);
insert into station values ('k5','a1','b1',7,10,'a1','a10',1.2);
insert into station values ('k5','b1','a2',10,12,'a1','a10',1.2);
insert into station values ('k5','a2','b2',10,10,'a1','a10',1.2);
insert into station values ('k5','b2','a3',10,13,'a1','a10',1.2);
insert into station values ('k5','a3','b3',6,10,'a1','a10',1.2);
insert into station values ('k5','b3','c1',10,14,'a1','a10',1.2);
insert into station values ('k5','c1','c2',10,10,'a1','a10',1.2);
insert into station values ('k5','c2','c3',10,15,'a1','a10',1.2);
insert into station values ('k5','c3','a10',10,10,'a1','a10',1.2);
insert into station values ('k6','a1','b1',9,10,'a1','c4',1.5);
insert into station values ('k6','b1','c1',10,10,'a1','c4',1.5);
insert into station values ('k6','c1','d1',10,10,'a1','c4',1.5);
insert into station values ('k6','d1','a2',8,10,'a1','c4',1.5);
insert into station values ('k6','a2','b3',10,10,'a1','c4',1.5);
insert into station values ('k6','b3','c3',3,5,'a1','c4',1.5);
insert into station values ('k6','c3','d2',2,6,'a1','c4',1.5);
insert into station values ('k6','d2','c4',20,10,'a1','c4',1.5);

查询车次K1的路线
select st1,st2,busno,sys_connect_by_path(st1,'->')||'->'||st2 路线
from (
select * from station
where st2<>'a10' and busno = 'k1')
start with st1 = 'a1'
connect by nocycle prior st2 = st1
/

SQL> col 路线 format a30
SQL> /

ST1 ST2 BUSN 路线
---- ---- ---- ------------------------------
a1 b1 k1 ->a1->b1
b1 a2 k1 ->a1->b1->a2
a2 b2 k1 ->a1->b1->a2->b2
b2 a3 k1 ->a1->b1->a2->b2->a3
a3 b3 k1 ->a1->b1->a2->b2->a3->b3

起点站a1,到站c3,转车4次以内的转站顺序和乘车顺序
1 SELECT distinct st2,sys_connect_by_path(st1,'->')||'->'||st2 转站,
2 sys_connect_by_path(busno,'->')||'->'||busno 乘车,level
3 from (
4 select * from station
5 where st2<>'a1') aa
6 where level < 5 and st2 = 'c3'
7 start with st1 = 'a1'
8* connect by nocycle prior st2 = st1
SQL> /

ST2 转站 乘车 LEVEL
---------- -------------------- -------------------- -----
c3 ->a1->b1->c2->c3 ||->k1->k4->k5->k5 3
c3 ->a1->b1->a2->b3->c3|| ->k5->k5->k6->k6->k6 4
c3 ->a1->b1->c1->c2->c3|| ->k6->k6->k5->k5->k5 4
c3 ->a1->b1->a2->b3->c3 ||->k1->k1->k6->k6->k6 4
c3 ->a1->b1->c1->c2->c3 ||->k5->k6->k5->k5->k5 4
c3 ->a1->c1->b1->c2->c3 ||->k3->k4->k4->k5->k5 4
c3 ->a1->c3 ||->k4->k4 1
c3 ->a1->b1->a2->b3->c3|| ->k6->k1->k6->k6->k6 4
c3 ->a1->b1->a2->b3->c3 ||->k1->k5->k6->k6->k6 4
c3 ->a1->c1->c2->c3 ||->k3->k5->k5->k5 3
c3 ->a1->b1->c2->c3|| ->k5->k4->k5->k5 3

ST2 转站 乘车 LEVEL
---------- -------------------- -------------------- -----
c3 ->a1->b1->c1->c2->c3 ||->k1->k6->k5->k5->k5 4
c3 ->a1->b1->a2->b3->c3|| ->k5->k1->k6->k6->k6 4
c3 ->a1->b1->a2->b3->c3|| ->k6->k5->k6->k6->k6 4
c3 ->a1->b1->c2->c3 ||->k6->k4->k5->k5 3

已选择15行。

再来一例
起点站a2,到站a3,转车4次以内的转站顺序和乘车顺序,按转车次数升序
1 SELECT distinct st2,sys_connect_by_path(st1,'->')||'->'||st2 转站,
2 sys_connect_by_path(busno,'->')||'->'||busno 乘车,level
3 from (
4 select * from station
5 where st2<>'a2') aa
6 where level < 5 and st2 = 'a3'
7 start with st1 = 'a2'
8 connect by nocycle prior st2 = st1
9* order by level
SQL> /

ST2 转站 乘车 LEVEL
---------- -------------------- -------------------- -----
a3 ->a2->b2->a3|| ->k1->k1->k1 2
a3 ->a2->b2->a3|| ->k1->k2->k2 2
a3 ->a2->b2->a3|| ->k1->k3->k3 2
a3 ->a2->b2->a3|| ->k1->k5->k5 2
a3 ->a2->b2->a3|| ->k5->k1->k1 2
a3 ->a2->b2->a3|| ->k5->k2->k2 2
a3 ->a2->b2->a3|| ->k5->k3->k3 2
a3 ->a2->b2->a3|| ->k5->k5->k5 2
a3 ->a2->b3->c1->b2->a3|| ->k6->k5->k3->k1->k1 4
a3 ->a2->b3->c1->b2->a3|| ->k6->k5->k3->k2->k2 4
a3 ->a2->b3->c1->b2->a3|| ->k6->k5->k3->k3->k3 4

ST2 转站 乘车 LEVEL
---------- -------------------- -------------------- -----
a3 ->a2->b3->c1->b2->a3|| ->k6->k5->k3->k5->k5 4

已选择12行。

设计表的时候加入了站站之间的时间和站站之间的距离,当然还可以加个字段每个车次花费的钱,这样的话再加条件可以取最短时间,最短距离,最短花费钱,时间不够了。。先去办离职手续。。。
有看官闲的话,可以把最短时间,最短距离,最短花费钱的查询设计出来哈!

J. 公交查询系统的数据库怎么设计,包含线路,站点(一个地名不止一个站点,往返位置不同)字段,可以查询换...

参考现有的公交查询系统:http://down.chinaz.com/soft/29620.htm