石家庄地铁路线安排网站的设计
日期:2019.4.3
博客期:055
星期三
小伙伴儿的博客地址:点我进入
代码终于可以在我和我的合作伙伴的电脑上都运行这个网站了!要知道想要应用我的 javabean 的 jar 包,可并不容易啊!
我们参考的原图是这样的:
先说一下我们的数据库设计——根据网站的信息需求我找到了2个属性—— id 、name, 再然后了解到这些站点其实就相当于一个组里的结点,每一个节点都有它是在几号线,而这线路是有顺序的,所以再给予他们一个线路编号(线路上站号)!于是我就想通过一个表来实现操作,只需要在后边多加入一个 line2 和 seat2 就好了,不是交叉口的站就写 0 !这样组成了subway数据库里的 line 表。
再秀一下图:
上边是我的截图,网站需要的基本功能已经实现了,就是求线路上的不同权值分配的最优路径!
之后我回去想办法在网站上添加地图服务,只是在下之前没有经验,所以很 low !我学东西学的很慢,而且一点儿都不会关于地图导入方面的知识!
换乘方法:
function Return(start_code,end_code);//返回在同一条线路上的从start到end的站点集合
function isInSameWay(start_code,end_code);//判断是否在同一条线上
function ReBuild(LinePoint linepoint [ ] , LinePoint linepoint2 [ ]); //拼接并去掉相邻重复的站点
LinePoint crossPoint [ ];//交叉节点集合
(1)不换乘(start 和 end 在一条线上)
Return(sart,end);
(2)换乘 1 次
寻找长度最小的数组ReBuild( , )长度,当 i 分别和start、end在一条线上时,(i为交叉点集合crossPoint中的元素)ReBuild( , ) 取 ReBuild( Return( start,i ),Return(i,end) )。
(3)换乘 n 次
寻找长度最小的数组ReBuild( , )长度,当 i1 分别和start、i2在一条线上且i2 分别和i3、i4在一条线上... ... 且i(n-1) 分别和i(n-2)、in在一条线上且in分别和i(n-1)和end在同一直线时(i(k)为交叉点集合crossPoint中的元素)ReBuild( , ) 取 ReBuild( start , i1 ~ in , end )。
再下边就是这次的制作的 P2P 图: