3/23团队作业 最短路径查询
所花时间:3小时
代码量:如下:
博客量:本学期截至目前26
了解到的知识点:最短路径查询
在今天在网上搜索了一下最短路径的代码并且问别的同学,然后我和我的cp完成了这项功能的实现,但是还是不太完整。
部分代码如下:
因为没用sevlet 所以就在jsp文件中写了。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="Util.util" %>
<jsp:useBean id="util" class="Util.util"></jsp:useBean>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> 起点与终点途径站点</h1>
</body>
<body>
<table border="1" align="center">
<tr>
<th>1.经历站点个数</th>
<th>2.地铁站名</th>
</tr>
<%
//计算输入的起点与终点之间的站点数与换乘的最短路径
String station_name=request.getParameter("station_name");
String stop_station=request.getParameter("stop_station");
Connection connection = util.getConnection();
PreparedStatement preparedStatement = null;
ResultSet rs = null;
try{
String sql="WITH RECURSIVE transfer (start_station, stop_station, stops, path) AS (\r\n"
+ " SELECT station_name, next_station, 1, CAST(CONCAT(line_name,station_name , '->', line_name,next_station) AS CHAR(1000))\r\n"
+ " FROM bj_subway WHERE station_name = ?\r\n"
+ " UNION ALL\r\n"
+ " SELECT p.start_station, e.next_station, stops + 1, CONCAT(p.path, '->', e.line_name, e.next_station)\r\n"
+ " FROM transfer p\r\n"
+ " JOIN bj_subway e\r\n"
+ " ON p.stop_station = e.station_name AND (INSTR(p.path, e.next_station) = 0)\r\n"
+ ")\r\n"
+ "SELECT * FROM transfer WHERE stop_station =? limit 2 ";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1 ,station_name);
preparedStatement.setString(2 ,stop_station);
rs = preparedStatement.executeQuery();
while(rs.next()){
%>
<tr>
<td><%=rs.getString("stops") %></td>
<td><%=rs.getString("path") %></td>
</tr>
<%
}
}catch (Exception ex){
ex.printStackTrace();
}
finally{
util.close(rs,preparedStatement,connection);
}
%>
</table>
</body>
</html>

浙公网安备 33010602011771号