系统主要功能介绍:
用户端:
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;
}
数据库及完整代码咨询,请扫码