基于springboot的公交线路查询系统的设计与实现+LW

系统主要功能介绍:

用户端:

1、登录注册:普通用户可以进行注册,注册完成后登录系统,然后使用相关功能

2、按照条件搜索线路:用户可以输入相关站点关键字,然后系统进行匹配,查询出相关的线路

3、按照起点站和终点站搜索线路,系统推荐最优线路:本系统的核心模块,用户输入起点站和终点站,系统根据两个站点查询出来最优的线路,展示给用户。

4、系统公告、新闻阅读:管理员发布新闻或者发布系统公告,用户登录之后可以查看系统内的公告,并且阅读新闻。

管理员端:

1、用户管理:对系统用户进行管理,包括用户的增删改查

2、车站管理:对系统的站点信息进行管理,维护站点的相关信息

3、公交线路管理:把系统录入的站点信息联系起来

4、新闻管理:管理员登录之后可以发布新闻,对新闻信息进行管理,可以发布新闻,对新闻信息金添加和删除

5、用户建议管理:管理用户的建议信息,查看建议

6、司机管理:对司机进行管理,对司机信息进行增删改查

代码结构:
在这里插入图片描述

部分代码:


```java
 @RequestMapping(value = "")
    public String index(ModelMap modelMap, HttpServletRequest request) {
        LoginModel login = (LoginModel) request.getSession()
                .getAttribute(CommonVal.sessionName);
        modelMap.addAttribute("login", login);
        BannerInfoExample be = new BannerInfoExample();
        be.setOrderByClause("id desc");
        be.setPageRows(0);
        be.setStartRow(4);
        List<BannerInfo> bl = bannerInfoMapper.selectByExample(be);
        modelMap.addAttribute("bl", bl);
        return "index/bus_line_info_list";
    }
 /**
     * 计算所有可达路径
     *
     * @param startId
     * @param endId
     * @return
     */
    public List<Map<String, Object>> getBusLine(Integer startId, Integer endId) {
        List<Map<String, Object>> rs = new ArrayList<Map<String, Object>>();
        if (startId == null || endId == null) {
            return rs;
        }
        if (startId.equals(endId)) {
            BusLineMsgInfoExample example = new BusLineMsgInfoExample();
            example.createCriteria().andStationIdEqualTo(startId);
            List<BusLineMsgInfo> list = busLineMsgInfoMapper.selectByExample(example);
 
            List<BusLineInfo> bus = new ArrayList<BusLineInfo>();
            Map<String, Object> map = new HashMap<String, Object>();
 
 
            for (BusLineMsgInfo busLineMsgInfo : list) {
                BusLineInfo key = busLineInfoMapper.selectByPrimaryKey(busLineMsgInfo.getLineId());
 
                bus.add(key);
            }
            map.put("list", bus);
            map.put("mess", 1);
            rs.add(map);
            return rs;
        }
        BusLineInfoExample be = new BusLineInfoExample();
        List<BusLineInfo> bl = busLineInfoMapper.selectByExample(be);
        List<Map<String, Object>> lines = new ArrayList<Map<String, Object>>();//所有的线路
        List<Integer> lineIds = new ArrayList<Integer>();
        for (BusLineInfo b : bl) {
            Map<String, Object> map = new HashMap<String, Object>();
            BusLineMsgInfoExample be2 = new BusLineMsgInfoExample();
            BusLineMsgInfoExample.Criteria bc2 = be2.createCriteria();
            bc2.andLineIdEqualTo(b.getId());
            be2.setOrderByClause("no asc");//根据编号排序
            List<BusLineMsgInfo> bl2 = busLineMsgInfoMapper.selectByExample(be2);
            map.put("id", b.getId());
            map.put("lineName", b.getLineName());
            map.put("linePrice", b.getPrice());
            map.put("list", bl2);//整个路线的站点
            lines.add(map);
            lineIds.add(b.getId());
        }
        BusLineMsgInfoExample be2 = new BusLineMsgInfoExample();
        BusLineMsgInfoExample.Criteria bc2 = be2.createCriteria();
        bc2.andStationIdEqualTo(startId);
        bc2.andLineIdIn(lineIds);
        List<BusLineMsgInfo> bl2 = busLineMsgInfoMapper.selectByExample(be2);
 
 
        if (bl2.size() == 0) {
            return rs;
        }
        getAllPath2(rs, lines, new ArrayList<Map<String, Object>>(), startId, bl2.get(0).getLineId(), endId);
 
        Collections.sort(rs, new Comparator<Map<String, Object>>() {
            @Override
            public int compare(Map<String, Object> u1, Map<String, Object> u2) {
                int diff = Integer.parseInt(u1.get("costTime").toString()) - Integer.parseInt(u2.get("costTime").toString());
                if (diff > 0) {
                    return 1;
                } else if (diff < 0) {
                    return -1;
                }
                return 0; //相等为0
            }
        }); // 按花费时间排序
        return rs;
 
    }

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数据库及完整代码咨询,请扫码

在这里插入图片描述

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

情绪稳定的犟种

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值