石家庄地铁系统

我和袁鹏一组,代码如下

util层的代码是:

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 数据库连接工具
 * @author YP
 */
public class Util {
    public static String db_url = "jdbc:mysql://localhost:3306/test";
    public static String db_user = "root";
    public static String db_pass = "zxh521+.";
    public static Connection getConnection () {
        Connection connection = null;    
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(db_url, db_user, db_pass);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return connection;
    }
    /**
     * 关闭连接
     * @param state
     * @param conn
     */
    public static void close (Statement state, Connection conn) {
        if (state != null) {
            try {
                state.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }    
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static void close (ResultSet rs, Statement state, Connection conn) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (state != null) {
            try {
                state.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

bean层代码为:

package bean;

public class Subway {
    private int id;
    private int number;
    private String name;
    private String message;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getNumber() {
        return number;
    }
    public void setNumber(int number) {
        this.number = number;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public Subway(int id,int number,String name,String message){
        this.id=id;
        this.name=name;
        this.number=number;
        this.message=message;
    }
    public Subway(int number,String name,String message){
        this.name=name;
        this.number=number;
        this.message=message;
    }
}

Dao层代码为:

package dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import bean.Subway;
import util.Util;

public class SDao {
    /**
     * 查询线路信息
     */
    public List<Subway> getSubwayByNumber(int number) {
        String sql = "select * from subway where number = '" + number + "'";
        List<Subway> list = new ArrayList<>();
        Connection conn = Util.getConnection();
        Statement state = null;
        ResultSet rs = null;
        try {
            state = conn.createStatement();
            rs = state.executeQuery(sql);
            Subway subway = null;
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String message = rs.getString("message");
                subway = new Subway(id, number, name, message);
                list.add(subway);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            Util.close(rs, state, conn);
        }    
        return list;
    }
    /**
     * 通过name得到地铁信息
     */
    public Subway getSubwayByName(String name) {
        String sql = "select * from subway where name ='" + name + "'";
        Connection conn = Util.getConnection();
        Statement state = null;
        ResultSet rs = null;
        Subway subway = null;
        try {
            state = conn.createStatement();
            rs = state.executeQuery(sql);
            while (rs.next()) {
                int id = Integer.parseInt(rs.getString("id"));
                int number = Integer.parseInt(rs.getString("number"));
                String message = rs.getString("message");
                subway = new Subway(id, number, name, message);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            Util.close(rs, state, conn);
        }
        return subway;
    }
    /**
     * 查询路线
     */
    @SuppressWarnings("null")
    public List<Subway> search(String name1,String name2) {
        List<Subway> list = new ArrayList<Subway>();
        Connection conn = Util.getConnection();
        Statement state1 = null;
        Statement state2 = null;
        Statement state3 = null;
        Statement state4 = null;
        Statement state5 = null;
        ResultSet rs1 = null;
        ResultSet rs2 = null;
        ResultSet rs3 = null;
        ResultSet rs4 = null;
        ResultSet rs5 = null;
        try {
            Subway subway1 = null;
            Subway subway2 = null;
            String sql1 = "select * from subway where name ='" + name1 + "'";
            String sql2 = "select * from subway where name ='" + name2 + "'";
            state1 = conn.createStatement();
            rs1 = state1.executeQuery(sql1);
            while (rs1.next()) {
                int id1 = rs1.getInt("id");
                int number1 = rs1.getInt("number");
                String message1 = rs1.getString("message");
                subway1 = new Subway(id1, number1, name1, message1);
            }
            state2 = conn.createStatement();
            rs2 = state2.executeQuery(sql2);
            while (rs2.next()) {
                int id2 = rs2.getInt("id");
                int number2 = rs2.getInt("number");
                String message2 = rs2.getString("message");
                subway2 = new Subway(id2, number2, name2, message2);
            }
            if(subway1.getNumber()==subway2.getNumber()){
                Subway subway3 = null;
                if(subway1.getId()<subway2.getId()){
                    String sql3 = "select * from subway where id between '" + subway1.getId() + "' and '" + subway2.getId() + "'";
                    state3 = conn.createStatement();
                    rs3 = state3.executeQuery(sql3);
                    while (rs3.next()) {
                        int id3 = rs3.getInt("id");
                        int number3 = rs3.getInt("number");
                        String name3 = rs3.getString("name");
                        String message3 = rs3.getString("message");
                        subway3 = new Subway(id3, number3, name3, message3);
                        list.add(subway3);
                    }
                } else if(subway1.getId()>subway2.getId()){
                    String sql3 = "select * from subway where id between '" + subway2.getId() + "' and '" + subway1.getId() + "'";
                    rs3 = state3.executeQuery(sql3);
                    while (rs3.next()) {
                        int id3 = Integer.parseInt(rs3.getString("id"));
                        int number3 = Integer.parseInt(rs3.getString("number"));
                        String name3 = rs3.getString("name");
                        String message3 = rs3.getString("message");
                        subway3 = new Subway(id3, number3, name3, message3);
                        list.add(subway3);
                    }
                } 
            }
            else {
                String sql4 = "select * from subway where number = '" + subway1.getNumber() + "'";
                String sql5 = "select * from subway where number = '" + subway2.getNumber() + "'";
                state4 = conn.createStatement();
                rs4 = state3.executeQuery(sql4);
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            Util.close(rs1, state1, conn);
            Util.close(rs2, state2, conn);
            Util.close(rs3, state3, conn);
        }
        return list;
    }
}

servlet层的代码为:

package servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import bean.Subway;
import dao.SDao;

@WebServlet("/Sservlet")
public class Sservlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    SDao dao = new SDao();
    /**
     * 方法选择
     */
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String method = req.getParameter("method");
        if ("getsubwaybynumber".equals(method)) {
            getSubwayByNumber(req, resp);
        } else if ("getsubwaybyname".equals(method)) {
            getSubwayByName(req, resp);
        }
    }
    /**
     * 查询线路信息
     */
    private void getSubwayByNumber(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
        req.setCharacterEncoding("utf-8");
        int number = Integer.parseInt(req.getParameter("number"));
        List<Subway> subway = dao.getSubwayByNumber(number);
        if(subway == null) {
            req.setAttribute("message", "无此路线!");
            req.getRequestDispatcher("road.jsp").forward(req,resp);
        } else {
            req.setAttribute("subway", subway);
            req.getRequestDispatcher("roadlist.jsp").forward(req,resp);
        }
    }
    /**
     * 通过name得到Subway
     */
    private void getSubwayByName(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
        req.setCharacterEncoding("utf-8");
        String name1 = req.getParameter("name1");
        String name2 = req.getParameter("name2");
        Subway subway1 = dao.getSubwayByName(name1);
        Subway subway2 = dao.getSubwayByName(name2);
        List<Subway> subway3=new ArrayList<>();
        subway3 = dao.search(name1,name2);
        int m = 0;
        if(subway1.getNumber()==subway2.getNumber()){
            m = Math.abs(subway1.getId()-subway2.getId());
        }
        if(subway1.getNumber()!=subway2.getNumber()){
            
        }
        req.setAttribute("subway1", subway1);
        req.setAttribute("subway2", subway2);
        req.setAttribute("m", m);
        req.setAttribute("subway3", subway3);
        req.getRequestDispatcher("searchlist.jsp").forward(req,resp);
    }
}

现在的代码只能完成单条线路和一次换车,无法完成多次换车。

猜你喜欢

转载自www.cnblogs.com/zhaoxinhui/p/10649656.html