首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

公交查询系统源码拾掇版

2012-10-28 
公交查询系统源码整理版这里只是实现公交一次换乘的算法,如果有热心的网友提供二次换乘算法,非常感谢之共

公交查询系统源码整理版

这里只是实现公交一次换乘的算法,如果有热心的网友提供二次换乘算法,非常感谢之共享,这里是我整理出的main可运行的类

package com.common.bus;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;public class SimpleBusArith {public static final String BUS_NO1="bus1";public static final String BUS_N02="bus2";public static final String BUS_CROSS_SITE="crosssite";private static boolean contain(String site, String[] sites) {for (int i = 0; i < sites.length; i++) {if (site.equals(sites[i]))return true;}return false;}public static Set<String> getSiteChange(Set<String> buses, List<Bus> sites) {Set<String> list = new HashSet();List<Bus> busList = change2BusList(buses, sites);for (int k = 0; k < busList.size(); k++) {Bus b = busList.get(k);String[] sx = b.getSx();for (int i = 0; i < sx.length; i++) {Set<String> bb = getSite(sx[i], sites);if (bb != null) {for (int j = 0; j < bb.size(); j++) {list.addAll(bb);}}}}return list;}public static Bus getBus(String siteno, List<Bus> sites) {for (int i = 0; i < sites.size(); i++) {if (siteno.equals(sites.get(i).getSiteno()))return sites.get(i);}return null;}public static Set<String> getSite(String siteName, List<Bus> sites) {Set<String> list = new HashSet();for (int i = 0; i < sites.size(); i++) {Bus bus = sites.get(i);String[] sx = bus.getShangxing();String[] xx = bus.getXiaxing();if (contain(siteName, sx) || contain(siteName, xx)) {list.add(bus.getSiteno());}}return list;}public static List<Bus> getCross(List<Bus> passA, List<Bus> passB) {int as = passA.size();int bs = passB.size();List<Bus> result = new ArrayList();for (int i = 0; i < as; i++) {Bus busa = passA.get(i);for (int j = 0; j < bs; j++) {Bus busb = passB.get(j);if (busa.getSiteno().equalsIgnoreCase(busb.getSiteno())) {result.add(busa);}}}return result;}/** * buses:途经某公交线路与之有交集的所有公交 * bus:一次换乘的焦点公交 * 返回换乘的公交线路 */public static Set<HashMap> getCrossSite(Bus bus1,Bus bus2){if(bus1.getSiteno().equals(bus2.getSiteno())) return null;Set<HashMap> sites=new HashSet();String[] bus1_sx=bus1.getShangxing();String[] bus1_xx=bus1.getXiaxing();String[] bus2_sx=bus2.getShangxing();String[] bus2_xx=bus2.getXiaxing();Set<HashMap> sx=getArrayEqualElem(bus1,bus2,bus1_sx,bus2_sx);Set<HashMap> xx=getArrayEqualElem(bus1,bus2,bus1_xx,bus2_xx);sites.addAll(sx);sites.addAll(xx);return sites;}private static Set<HashMap> getArrayEqualElem(Bus bus1,Bus bus2,String[] str1,String[] str2){Set<HashMap> sites=new HashSet();for(int i=(str1.length-1);i>=0;i--){for(int j=0;j<str2.length;j++){if(str1[i].equals(str2[j])){HashMap hm=new HashMap();hm.put(BUS_NO1, bus1);hm.put(BUS_N02, bus2);hm.put(BUS_CROSS_SITE, str1[i]);sites.add(hm);//选择最优的一条线路返回,第一辆车坐的站数最多return sites;}}}return sites;}public static List<Bus> change2BusList(Set<String> bus, List<Bus> sites) {Iterator itr = bus.iterator();List<Bus> res = new ArrayList();while (itr.hasNext()) {String b = (String) itr.next();if (b == null) {continue;}Bus mybus = getBus(b, sites);res.add(mybus);}return res;}public static void main(String[] args) {//String[] b_1 = "南站、望湖市场、兴宁桥、濠河、江厦公园、外滩、宁大附属医院、白沙路、东鹰花园、大庆北路、大通桥、孔浦、半路凉亭、怡江新村、路林市场"//.split("、");//String[] b_2 = "颐乐园、华丰庄园、丁香路、老庙小学、腊梅路、滨江花苑、中宁花园(锦诚花园)、明晨紫月、科技园区管委会、老庙→、陆家村、交通·BOBO城、中兴北路、车管所、江南村、余隘、林家、柴家漕、城市元年、东胜路、庆安会馆、东门口(天一广场)、阳光广场、鼓楼、西门口、西河街、第二医院→、望京欧院→、新芝路←、高塘新村"//.split("、");//String[] b_3 = "松下站、松下村、王家弄、华光城、市公管处、华侨城、中兴樱花公园、甬港新村、舟孟北路、七塔寺、灵桥东、灵桥西(日新街)、药行街、解放南路、鼓楼、孝闻街、广仁街、华慈医院、传染病医院、育才家园、宁波电大、育才路、姚江公园、姚江"//.split("、");//String[] b_550 = ("保税东区、嵩山路站、开发区医院、国贸花园、北仑青少年宫、新恒路、绍成小学、慎业、宁波职业技术学院站、明港中学站、大碶车站、人民路站、徐洋、新安、湖塘、民乐、育王、宝幢、五乡镇政府、邱隘、浙东科技创业中心、"//+ "会展中心南大门、福明、汽车东站、市公管处、儿童公园、黄鹂新村、李惠利医院、兴宁桥东、望湖市场、宁波南站")//.split("、");//String[] b_901 = ("汽车东站、四号桥、三号桥、体育馆、家乐福、明园、朝晖新城、二号桥、甬港新村、朱雀新村、"//+ "宁波大厦→、公管处、福明路、报社印务中心、松下村老年公寓、浅水湾、海太工业园、邱隘大道、方庄、青年路、沈家村、农科所、万里学院东校区、回龙、金会锻件厂、伟隆机电(沙家垫)、"//+ "红林、东钱湖镇政府、莫枝农贸市场、钱湖新村、方边、岳王庙、湖塘村、国七寺(陶公园)、建设村、陶公村、湖心景区")//.split("、");//String[] b_906 = "南站、青少年宫、第一医院、天封塔、灵塔医院、琴桥东、贺丞新村、李惠利医院、飞虹新村、鄞州电视台、黄泥桥、小城花园、爱尔妮制衣公司(四明路)、格兰云天、前河路、华泰剑桥、万里学院、三星奥克斯、顾家、培罗成、下应镇、李关弟中学、江陆村、邵家弄、华艺服饰、黄隘村、钱湖工业区、红林、东钱湖镇政府、钱湖卫生院、莫枝农贸市场、钱湖新村、岳王庙、湖塘村、大公叉口、凤凰桥、冠英庄、隐学山庄、郭家峙"//.split("、");//String[] b_908 = "汽车东站、野马电池公司、王家湾、东海花园、中兴小区、家乐福、常青藤小城、车管所、江南社区、农药厂、塑料厂、曙光北路、宁波卷烟厂、曙光电影院、工人新村、汽车北站、大庆南路、槐树路、槐树新村、西草马路、新马路、北岸琴森、宁波大剧院、运河桥、姚江公园、宁波教育学院、宁波电大、育才家园"//.split("、");//String[] b_960 = "江家新村、邱隘大道、方庄、青年路、沈家村、农科所、万里学校、回龙、钱湖工业区、伟隆机电(沙家垫)、红林、东钱湖镇政府、钱湖医院、东钱湖镇、莫枝农贸市场、钱湖新村、方边、岳王庙、湖塘村、大公岔口、冠英庄、隐学山庄、郭家峙、韩岭、马山、上水村、石刻群、横街、福泉山景区、官驿河头、下水村、下水小学、绿野岙村、洋山村"//.split("、");//Bus bus_1 = new Bus("1", b_1);//Bus bus_2 = new Bus("2", b_2);//Bus bus_3 = new Bus("3", b_3);//Bus bus_550 = new Bus("550", b_550);//Bus bus_901 = new Bus("901", b_901);//Bus bus_906 = new Bus("906", b_906);//Bus bus_908 = new Bus("908", b_908);//Bus bus_960 = new Bus("960", b_960);//List<Bus> busList = new ArrayList();//busList.add(bus_1);//busList.add(bus_2);//busList.add(bus_3);//busList.add(bus_550);//busList.add(bus_901);//busList.add(bus_906);//busList.add(bus_908);//busList.add(bus_960);//String start = "邱隘大道", end = "第一医院";//Set<String> passA = SimpleBusArith.getSite(start, busList);//Set<String> passB = SimpleBusArith.getSite(end, busList);////// 0次转乘//List<Bus> busa = SimpleBusArith.change2BusList(passA, busList);//List<Bus> busb = SimpleBusArith.change2BusList(passB, busList);//List<Bus> res = SimpleBusArith.getCross(busa, busb);//for (int i = 0; i < res.size(); i++) {//System.out.println("直达线路:" + res.get(i).getSiteno());//}////// 1次转乘//Set<String> passA1 = SimpleBusArith.getSiteChange(passA, busList);//List<Bus> ll=SimpleBusArith.change2BusList(passA1, busList);//List<Bus> res1 = SimpleBusArith.getCross(ll, busb);//for (int i = 0; i < res1.size(); i++) {//for(int j=0;j<busa.size();j++){//Set<HashMap> ss = SimpleBusArith.getCrossSite(busa.get(j), res1.get(i));//if(ss!=null&&ss.size()>0){//Iterator itr = ss.iterator();//while (itr.hasNext()) {//HashMap b = (HashMap) itr.next();//Bus b1=(Bus)b.get(BUS_NO1);//Bus b2=(Bus)b.get(BUS_N02);//System.out.println("1次换乘方案:["+start+"]先"+b1.getSiteno()+"在"+b.get(BUS_CROSS_SITE)+"下车"+//",转"+b2.getSiteno()+"到结束站["+end+"]");//}//}//}//}}}
? 1 楼 fc6029585 2008-12-16   您的BUS类可以贴出来吗?运行看看效果啊! 2 楼 xuelang0000 2009-03-02   朋友,你的BUS类呢?能不能也贴出来啊,看了很长时间也没看懂你的思路啊,谢谢了 3 楼 kongshanxuelin 2009-03-03   xuelang0000 写道
朋友,你的BUS类呢?能不能也贴出来啊,看了很长时间也没看懂你的思路啊,谢谢了

Bus类只是一个Bean没东西的,具体效果可看我的另一篇博客:http://cxlh.iteye.com/admin/blogs/259652 4 楼 kongshanxuelin 2009-03-03   kongshanxuelin 写道
xuelang0000 写道
朋友,你的BUS类呢?能不能也贴出来啊,看了很长时间也没看懂你的思路啊,谢谢了 Bus类只是一个Bean没东西的,具体效果可看我的另一篇博客:http://cxlh.iteye.com/admin/blogs/259652

http://cxlh.iteye.com/blog/259652 5 楼 xuelang0000 2009-03-03   谢谢您能抽空给我回复,我是一个初学者 6 楼 56071925 2009-03-11   BUS类可以贴出来看看么?自己补上的bus有问题? 7 楼 56071925 2009-03-12   大大能不能写些注释?新手感兴趣看不懂,麻烦大大在整理一下好么?能不能把bus类贴出来呢? 8 楼 xuelang0000 2009-03-12   还是希望您能把BUS类贴出来,对我们这些新人们还是贴出来吧,一个程序只给一半那怕是一多部分都是很难去完善的,您也不是写一两天的程序了,应该有接手别人没有完善的程序的经历吧,谢谢您能将这么好的东西和我们共享 9 楼 xiaogangfree 2009-07-16   楼主为什么不肯把BUS的源码给公布出来呢?发一半的代码是没有意义的,我觉得 10 楼 happyhope 2009-09-09  
* Date|time|Author|Change Description*/

package com.common.bus;

public class Bus {
private String siteNo;

private String[] busStations;

public Bus() {
super();
}

public Bus(String siteNo, String[] busStations) {
super();
this.siteNo = siteNo;
this.busStations = busStations;
}

public String[] getBusStations() {
return this.busStations;
}

public void setBusStations(String[] busStations) {
this.busStations = busStations;
}

public String getSiteNo() {
return this.siteNo;
}

public void setSiteNo(String siteNo) {
this.siteNo = siteNo;
}
public String[] getShangxing(){
return busStations;
}
public String[] getXiaxing(){
String[] bus= new String[busStations.length];
for(int i=0;i<busStations.length;i++){
bus[i]=busStations[busStations.length-i-1];
}
return bus;
}
}

热点排行