首页 > 其他分享 >地铁线路查询的总结分析

地铁线路查询的总结分析

时间:2023-03-27 18:57:48浏览次数:36  
标签:String ArrayList request private 查询 线路 地铁 import public

设计思想:

站点查询为数据库查询操作,通过输入站点名称,输出线路

线路查询为数据库list查询操作,通过输入线路名称。输出当前输入线路所有站点

最短路线为BFS广度优先遍历,输入起点终点,输出经过线路,转站次数,转站点。

界面添加当前时间,添加跳转链接,将三个查询总结到同一个界面,输出在查询下方。

全国地图为高德地图,在已有的北京、石家庄有marker点,点击可以跳转到所在城市的地铁图。

下面是代码:

package result;

import java.io.IOException;
import java.util.List;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/Servse")
public class Servse extends HttpServlet{
    Dao d=new Dao();
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        String method=request.getParameter("method");
        if (method==null){
            method="findAll";
        }
        switch (method){
        case "find":
            String nol=request.getParameter("nol");
            List<String> l=d.find(nol);
            request.setAttribute("test", l);
               request.getRequestDispatcher("xian.jsp").forward(request, response);
            break;
        case "findd":
            String name=request.getParameter("name");
            List<String> li=d.findd(name);
            request.setAttribute("test", li);
               request.getRequestDispatcher("zhan.jsp").forward(request, response);
            break;
        case "min":
            String start=request.getParameter("start");
            String end=request.getParameter("end");
            List<String> lis=d.result(start,end);
            request.setAttribute("test", lis);
               request.getRequestDispatcher("zui.jsp").forward(request, response);
            break;
    }
    }
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        doPost(request,response);
}
}
package result;

import line.Tool;
import java.util.*;

import Contrl.BFS;
import Contrl.Read;
import Model.Route;
import Model.Station;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Dao {
    // 获取该线路的所有站点
    public List<String> find(String nol) {
        List<String> list = new ArrayList<>();
        Connection conn = Tool.getConnection();
        PreparedStatement pre = null;
        ResultSet res = null;
        String sql = "SELECT *FROM ditie1 where xianlu=? ";
        try {
            pre = conn.prepareStatement(sql);
            pre.setString(1, nol);
            res = pre.executeQuery();
            while (res.next()) {
                String num1 = res.getString("zhandian");
                list.add(num1);
            }
        } catch (SQLException e) {

            e.printStackTrace();
        } finally {
            Tool.release(conn, pre, res);
        }
        return list;
    }

//获取站点所在的线路
    public List<String> findd(String name) {
        List<String> list = new ArrayList<>();
        Connection conn = Tool.getConnection();
        PreparedStatement pre = null;
        ResultSet res = null;
        String sql = "SELECT *FROM ditie1 where zhandian=? ";
        try {
            pre = conn.prepareStatement(sql);
            pre.setString(1, name);
            res = pre.executeQuery();
            while (res.next()) {
                String hao = res.getString("xianlu");
                list.add(hao);
            }
        } catch (SQLException e) {

            e.printStackTrace();
        } finally {
            Tool.release(conn, pre, res);
        }
        return list;
    }


    public ArrayList<String> result(String name1, String name2) {
        BFS bfs = new BFS();
        String start = name1;
        Read re = new Read();
        ArrayList<Station> station = re.getStation();
        ArrayList<Route> route = re.getRoute();
        station = bfs.FindMin(start, station);
        String end = name2;
        ArrayList<String> str = new ArrayList<>();
        str = bfs.shortPath(end, station, str);
        return str;
    }
}
package line;
import java.sql.*;
public class Tool {
private static Connection connection;
private static String url="jdbc:mysql://localhost:3306/jiaqi?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
private static String user="roots";
private static String pass="123456";
static {
    try {
        Class.forName("com.mysql.cj.jdbc.Driver");
    }catch(ClassNotFoundException e){
        e.printStackTrace();
    }
}
public static Connection getConnection() {
    try {
        connection=DriverManager.getConnection(url,user,pass);
    }catch(SQLException e) {
        e.printStackTrace();
    }
    return connection;
}
public static void release(Connection connection,Statement statement,ResultSet resultSet) {
    try {
        if(connection!=null) {
            connection.close();
        }
        if(statement!=null) {
            statement.close();
        }
        if(resultSet!=null) {
            resultSet.close();
        }
    }
    catch(SQLException e) {
        e.printStackTrace();
    }
}
}
package Model;

import java.util.*;

public class Route {
    private String rname;
    private ArrayList<String> route = new ArrayList<>();
    
    public String getRname() {
        return rname;
    }
    public void setRname(String rname) {
        this.rname = rname;
    }

    public void addRoute(String sname) {
        this.route.add(sname);
    }

    public String allRoute() {
        String result="";
        
        for(int i=0;i<route.size();i++) {
            result+=route.get(i)+" ";
        }
        
        return result.trim();
    }
    public ArrayList<String> getRoute() {
        return this.route;
    }
}
package Model;

import java.util.*;

public class Station {
    public final static int MaxDist = 65535;
    private String sname;//站名
    private ArrayList<String> bTR = new ArrayList<>();//线路名
    private ArrayList<String> bs = new ArrayList<>();//邻站(距离为1的站)

    
    //执行算法后更改
    private Station ps;//前一个站点
    private int dist;//距离(距起始站)
    private int transNum;//换乘数
    private int visited;//保存是否访问
    
    public Station() {
        this.dist=MaxDist;
        this.transNum=0;
        this.visited=0;
    }
    
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    //站所属路线(可能有多个)
    public void setBTR(String belongToRname) {
        this.bTR.add(belongToRname);
    }
    //所属路线输出(用于算法)
    public ArrayList<String> getBTR() {
        return this.bTR;
    }
    //相邻站录入
    public void setBs(String sname) {
        for(int i=0;i<this.bs.size();i++) {
            if(this.bs.get(i).equals(sname)) {
                return;
            }
        }
        this.bs.add(sname);
    }
    //相邻站输出(用于算法)
    public ArrayList<Station> getBs(ArrayList<Station> station){
        ArrayList<Station> result = new ArrayList<>();
        for(int i=0;i<this.bs.size();i++) {
            String tmp = this.bs.get(i);
            for(int j=0;j<station.size();j++) {
                if(station.get(j).getSname().equals(tmp)) {
                    result.add(station.get(j));
                    break;
                }
            }
        }
        return result;
    }
    public int getVisited() {
        return visited;
    }

    public void setVisited(int visited) {
        this.visited = visited;
    }

    //执行算法后更改
    public Station getPs() {
        return ps;
    }
    public void setPs(Station ps) {
        this.ps = ps;
    }
    public int getDist() {
        return dist;
    }
    public void setDist(int dist) {
        this.dist = dist;
    }
    public int getTransNum() {
        return transNum;
    }
    public void setTransNum(int transNum) {
        this.transNum = transNum;
    }
}

 

 

 总结分析:需要在网上学习不会的。需要研究许多的代码。

 

标签:String,ArrayList,request,private,查询,线路,地铁,import,public
From: https://www.cnblogs.com/syhxx/p/17262514.html

相关文章

  • 地铁线路查询的总结分析
    设计思想:站点查询为数据库查询操作,通过输入站点名称,输出线路线路查询为数据库list查询操作,通过输入线路名称。输出当前输入线路所有站点最短路线为BFS广度优先遍历,输入起点......
  • CSS3 Media Query 响应式媒体查询
    在CSS中,有一个极其实用的功能:@media响应式布局。具体来说,就是可以根据客户端的介质和屏幕大小,提供不同的样式表或者只展示样式表中的一部分。通过响应式布局,可以达到只使用......
  • 武装你的WEBAPI-OData聚合查询
    本文属于OData系列目录武装你的WEBAPI-OData入门武装你的WEBAPI-OData便捷查询武装你的WEBAPI-OData分页查询武装你的WEBAPI-OData资源更新Delta武装你的WEBAPI-OD......
  • Delphi Locate函数[1] - 查询、定位
     DelphiTDataSet.Locate函数-查询、定位使用ADO等数据控件的时候,经常会用到 locate函数,在结果数据集中查询和定位,下面介绍一下:原型:1function Locat......
  • [pymysql]查询基础
    importpymysql#获取连接conn=pymysql.connect(host='10.105.212.1',port=3306,user='root',password='DemoDemo',database='db',cha......
  • 3.26 地铁查询系统安卓端学习进度。
    学习了安卓Studio中如何连接mysql的数据库的知识,并正在学习如何查询Mysql数据库中的信息显示到app中去,目前为止还无法实现对数据库的查询功能。完成了对地铁查询系统主要......
  • 3.26web和android端地铁查询开发学习总结
    web端的思想在前面已经写了,Android端的思想跟web端差不多少,其中不一样的就是连接MySQL数据库,其要求的jar包是5版本左右的,而且还涉及到线程的问题,在连接MySQL的时候要另外启......
  • 媒体查询
    媒体查询媒体查询能使页面在不同在终端设备下达到不同的效果媒体查询根据设备的大小自动识别加载不同的样式设置meta标签使用设备的宽度作为视图宽度并禁止初始的缩放......
  • 3.26全部完成android和web端的地铁查询系统
    web端的思想在前面已经写了,Android端的思想跟web端差不多少,其中不一样的就是连接MySQL数据库,其要求的jar包是5版本左右的,而且还涉及到线程的问题,在连接MySQL的时候要另......
  • 配置文件 条件查询
    编写接口方法:Mapper**参数:所有查询条件**结果:List<Brand>2.编写SQL语句:SQL映射文件3.执行方法,测试方法一:步骤一:在BrandMapp......