java+mysql+ssm+城市公交查询系统换乘模糊查询
1.包含源程序,数据库脚本。代码和数据库脚本都有详细注释。
2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善
开发环境: 代码已经上传github,下载地址:https://github.com/21503882/citybus
Eclipse ,MYSQL,JDK1.8,Tomcat 8.5
涉及技术点:
MVC模式、SpringBoot、Mybatis、Redis、HTML、log4j、druid、Bootstrap、
Semantic UI、Thymeleaf、JavaScript、CSS、JQUERY、Ajax等
适合学习J2EE的一段时间的熟手,代码思路清晰,注解详细,数据库用的是mysql5.1,服务器用的tomcat8.5,JDK版本1.8. 编程软件Eclispe J2EE版本。是典型MVC架构,并且前后台分离
package com.linxf.ticketsale.controller;
import com.linxf.ticketsale.pojo.Station;
import com.linxf.ticketsale.pojo.Train;
import com.linxf.ticketsale.service.TrainService;
import com.linxf.ticketsale.util.JedisUtil;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import java.util.*;
@Controller
@RequestMapping("/trainController")
public class TrainController {
private static final Logger LOG = Logger.getLogger(TrainController.class);
@Resource
private TrainService trainService;
// 根据车辆类型获取车辆信息列表
@RequestMapping("/getTrainList.action")
@ResponseBody
public List<Train> getTrainList(String ttype) {
List<Train> list = null;
if (ttype == null) {
return list;
}
try {
list = trainService.getTrainList(ttype);
} catch (Exception e) {
LOG.info("getTrainList出错:" + e);
e.printStackTrace();
}
return list;
}
// 获取所有车辆的编号
@RequestMapping("/getTidList.action")
@ResponseBody
public List<String> getTidList() {
List<String> list = null;
try {
list = trainService.getTidList();
} catch (Exception e) {
LOG.info("getTidList出错:" + e);
e.printStackTrace();
}
return list;
}
// 根据编号获取车辆信息
@RequestMapping("/getTrainInfoById.action")
@ResponseBody
public Map<String, Train> getTrainInfoById(String tid) {
Map<String, Train> map = new HashMap<>();
Train train = null;
if (tid == null || "".equals(tid)) {
return null;
}
try {
train = trainService.getTrainInfoById(tid);
} catch (Exception e) {
LOG.info("getTrainInfoById出错:" + e);
e.printStackTrace();
}
map.put("trainMap", train);
return map;
}
// 跳转到车辆信息页面
@RequestMapping("/toTrainInfo.action")
public ModelAndView toTrainInfo(String tid) {
if ("".equals(tid)) {
tid = null;
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("tid", tid);
modelAndView.setViewName("WEB-INF/jsp/admin/train_info.jsp");
return modelAndView;
}
// 跳转到座位类型管理页
@RequestMapping("/toSeatManage.action")
public ModelAndView toSeatManage(String tid) {
if ("".equals(tid)) {
tid = null;
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("tid", tid);
modelAndView.setViewName("WEB-INF/jsp/admin/seatType_admin.jsp");
return modelAndView;
}
// 跳转到车辆类型管理页
@RequestMapping("/toTypeManage.action")
public ModelAndView toTypeManage(String ttype) {
if ("".equals(ttype)) {
ttype = null;
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("ttype", ttype);
modelAndView.setViewName("WEB-INF/jsp/admin/trainType_admin.jsp");
return modelAndView;
}
// 跳转到车辆类型管理页
@RequestMapping("/toAddTrain.action")
public String toAddTrain() {
return "WEB-INF/jsp/admin/addTrain.jsp";
}
// 跳转到路线查询页面
@RequestMapping("/toSearchRout.action")
public String toSearchRout() {
return "WEB-INF/jsp/main/searchRout.jsp";
}
// 根据出发站-到达站查询列车列表--直达车
@RequestMapping("/goSearch.action")
public ModelAndView goSearch(String sname1, String sname2) {
List<Train> trainList = new ArrayList<>();
// 从缓存中获取直达车列表,若不存在则去数据库查
List<Train> trainList1 = JedisUtil.get(sname1 + "-" + sname2 + "直达");
if (trainList1 != null) {// 缓存中有,从缓存中获取
trainList = trainList1;
} else {// 缓存中没有,从数据库查
try {// 查询直达车列表
trainList = trainService.getTrainRout(sname1, sname2);
if (trainList != null) {
List<Station> stationList = new ArrayList<>();
for (Train train : trainList) {
stationList = train.getStationList();
Station station = new Station();
int i = 10;// 间隔站次
Iterator<Station> it = stationList.iterator();
while (it.hasNext()) {
if (i == -1) {
i = 0;
}
i++;
station = it.next();
if (sname1.equals(station.getSname1())) {
if (sname2.equals(station.getSname2())) {
i = 1;// 只有一站
continue;
}
i = -1;
continue;
}
if (sname2.equals(station.getSname2())) {
continue;
}
it.remove();
}
train.setStacount(i);// 共几站
if (stationList.size() == 1) {// 只有一站
stationList.add(stationList.get(0));
}
}
// trainList去重
} else {
trainList = null;// 没有直达车
}
} catch (Exception e) {
LOG.info("goSearch出错:" + e);
e.printStackTrace();
}
// 将结果存入缓存
JedisUtil.put(sname1 + "-" + sname2 + "直达", trainList);
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("trainList", trainList);
modelAndView.addObject("sname1", sname1);
modelAndView.addObject("sname2", sname2);
modelAndView.setViewName("WEB-INF/jsp/main/searchRout.jsp");
return modelAndView;
}
// 用户按照出发站和到达站查询路线功能--可换乘
@RequestMapping("/changeSearch.action")
public ModelAndView changeSearch(String sname1, String sname2) {
ModelAndView modelAndView = new ModelAndView();
List<Map<String, Object>> resultList = new ArrayList<>();
// 从缓存中获取直达车列表,若不存在则去数据库查
List<Map<String, Object>> resultList1 = JedisUtil.get(sname1 + "-" + sname2 + "换乘");
if (resultList1 != null) {// 缓存中有,从缓存中获取
resultList = resultList1;
} else {// 缓存中没有,从数据库查
try {
List<Map<String, Object>> listMap = trainService.getTrainRout2(sname1, sname2);// 换乘车列表
if (listMap != null) {
for (Map<String, Object> map : listMap) {
Map<String, Object> resmap = new HashMap<>();
String saname = (String) map.get("changeState");
Train train1 = (Train) map.get("train1");
Train train2 = (Train) map.get("train2");
int s1 = train1.getStationList().size();
int s2 = train2.getStationList().size();
if (saname != null && train1 != null && train2 != null) {
List<Station> stationList2 = train2.getStationList();
stationList2.set(0, stationList2.get(stationList2.size() - 1));
train1.setStacount(s1);// 共几站
train2.setStacount(s2);// 共几站
train2.setStationList(stationList2);
resmap.put("changeState", saname);// 换乘站
resmap.put("train1", train1);// 换乘车辆1
resmap.put("train2", train2);// 换乘车辆2
}
resultList.add(resmap);
}
}
} catch (Exception e) {
LOG.info("changeSearch出错:" + e);
e.printStackTrace();
}
// 将结果存入缓存
JedisUtil.put(sname1 + "-" + sname2 + "换乘", resultList);
}
modelAndView.addObject("sname1", sname1);
modelAndView.addObject("sname2", sname2);
modelAndView.addObject("resultList", resultList);
modelAndView.setViewName("WEB-INF/jsp/main/searchRout2.jsp");
return modelAndView;
}
/*
* 添加新车辆
*/
@RequestMapping("/addnewtrain.action")
public ModelAndView toStationManage(Train train) {
ModelAndView modelAndView = new ModelAndView();
String str = null;
try {
trainService.addnewtrain(train);
str = "添加车辆成功";
} catch (Exception e) {
LOG.info("addnewtrain出错:" + e);
e.printStackTrace();
}
modelAndView.addObject("result", str);
modelAndView.setViewName("WEB-INF/jsp/admin/addTrainResult.jsp");
return modelAndView;
}
/*
* 跳转至车辆站点管理
*/
@RequestMapping("/toStationManage.action")
public ModelAndView toStationManage(String tid) {
if ("".equals(tid)) {
tid = null;
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("tid", tid);
modelAndView.setViewName("WEB-INF/jsp/admin/station_info.jsp");
return modelAndView;
}
// 根据编号获取车辆的途经车站列表信息
@RequestMapping("/getStationListById.action")
@ResponseBody
public List<Station> getStationListById(String tid) {
List<Station> stationList = null;
if (tid == null || "".equals(tid)) {
return null;
}
try {
stationList = trainService.getStationListById(tid);
} catch (Exception e) {
LOG.info("getStationListById出错:" + e);
e.printStackTrace();
}
return stationList;
}
// 改变车辆的途经车站列表信息
@RequestMapping("/changeStationList.action")
public ModelAndView changeStationList(Train train) {
ModelAndView modelAndView = new ModelAndView();
String result = null;
List<Station> listStation = train.getStationList();
if(listStation != null){
try {
trainService.changeStationList(listStation);
result = "修改成功!";
} catch (Exception e) {
LOG.info("changeStationList出错:" + e);
e.printStackTrace();
}
modelAndView.addObject("result", result);
}
modelAndView.setViewName("WEB-INF/jsp/admin/station_info.jsp");
return modelAndView;
}
/*
* 跳转至车辆票价管理
*/
@RequestMapping("/toStationTicketManage.action")
public ModelAndView toStationTicketManage(String tid) {
if ("".equals(tid)) {
tid = null;
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("tid", tid);
modelAndView.setViewName("WEB-INF/jsp/admin/station_ticket.jsp");
return modelAndView;
}
/*
* 根据车站编号与sname1改变区间票价与数量
*/
@RequestMapping("/updateStationByTrain.action")
public ModelAndView updateStationByTrain(Train train) {
String result = null;
List<Station> listStation = train.getStationList();
try {
trainService.updateStationByTrain(listStation);
result = "修改成功!";
} catch (Exception e) {
LOG.info("updateStationByTrain出错:" + e);
e.printStackTrace();
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("result", result);
modelAndView.setViewName("WEB-INF/jsp/admin/station_ticket.jsp");
return modelAndView;
}
/*
* 根据车站编号改变火车座位类型与价格1
*/
@ResponseBody
@RequestMapping("/updateTrainSeatType1.action")
public Map<String, Object> updateTrainSeatType1(Train train) {
Map<String, Object> map = new HashMap<>();
String result = null;
try {
trainService.updateTrainSeatType1(train);
result = "修改成功!";
} catch (Exception e) {
LOG.info("updateTrainSeatType出错:" + e);
e.printStackTrace();
}
map.put("result", result);
return map;
}
/*
* 根据车站编号改变火车座位类型与价格2
*/
@ResponseBody
@RequestMapping("/updateTrainSeatType2.action")
public Map<String, Object> updateTrainSeatType2(Train train) {
Map<String, Object> map = new HashMap<>();
String result = null;
try {
trainService.updateTrainSeatType2(train);
result = "修改成功!";
} catch (Exception e) {
LOG.info("updateTrainSeatType出错:" + e);
e.printStackTrace();
}
map.put("result", result);
return map;
}
/*
* 根据车站编号改变火车座位类型与价格3
*/
@ResponseBody
@RequestMapping("/updateTrainSeatType3.action")
public Map<String, Object> updateTrainSeatType3(Train train) {
Map<String, Object> map = new HashMap<>();
String result = null;
try {
trainService.updateTrainSeatType3(train);
result = "修改成功!";
} catch (Exception e) {
LOG.info("updateTrainSeatType出错:" + e);
e.printStackTrace();
result = "修改失败,请重试!";
}
map.put("result", result);
return map;
}
}
代码已经上传github,下载地址:https://github.com/21503882/citybus
————————————————