地铁售票设计思想及部分代码

Posted jinseliunian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了地铁售票设计思想及部分代码相关的知识,希望对你有一定的参考价值。

地铁售票系统设计思想及部分代码

     设计思想:地铁售票系统的关键点在于换乘,所以首先要分为换乘和不换乘两种情况。不换乘比较简单,通过起始站名和终点站名查询他们的num,然后list打包输出到jsp就可以。换乘的话就先要找到两条线路,找到两条线路的交点也就是换乘站,然后分别输出起始站到换乘站,换乘站到终点站两段路线就完成了,这里面还涉及到一个最短路径问题,我的想法是把全部的可能线路都找到,然后比较大小就完成了。目前进度到换乘部分。

package servlet;

import java.io.IOException;
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 Dao.dao;

@WebServlet("/servlet")
public class servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String method = req.getParameter("method");
        if ("chaxun".equals(method)) {
            chaxun(req, resp);
            } 
    }
    private void chaxun(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        req.setCharacterEncoding("utf-8");
        
         String qi=req.getParameter("qi");
         String zhong=req.getParameter("zhong");
         int zhanhao1=dao.getZhanhao(qi);
         int zhanhao2=dao.getZhanhao(zhong);
         int number1=dao.getNum(qi);
         int number2=dao.getNum(zhong);
         if(number1==number2) {
            if(zhanhao1<zhanhao2)
            {
            String line=dao.getLine1(zhanhao1, zhanhao2);
            req.setAttribute("line",line );
            req.setAttribute("num",number1);
            req.getRequestDispatcher("list.jsp").forward(req,resp);
            
            }if(zhanhao1>zhanhao2)
            {
            String line=dao.getLine2(zhanhao2, zhanhao1);
            System.out.print(line);
            req.setAttribute("num",number1);
            req.setAttribute("line",line );
            req.getRequestDispatcher("list.jsp").forward(req,resp);
            }
}}}
package Dao;

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

import connection.DBUtil;


public class dao {

    
    /**
     * 通过name得到number(线路号)
     * @param name
     * @return
     */
    public static int getNum(String name) {
        String sql = "select xianluhao from aaa where name =‘" + name + "";
        Connection conn = DBUtil.getConn();
        Statement state = null;
        ResultSet rs = null;
        int number=0;
        
        try {
            state = conn.createStatement();
            rs = state.executeQuery(sql);
            while (rs.next()) {
                
                
                number = rs.getInt("xianluhao");
            
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, state, conn);
        }
        
        return number;
    }
    /**
     * 通过name得到zhanhao(站台号)
     * @param name
     * @return
     */
    public static int getZhanhao(String name) {
        String sql = "select num from aaa where name =‘" + name + "";
        Connection conn = DBUtil.getConn();
        Statement state = null;
        ResultSet rs = null;
        int zhanhao=0;
        
        try {
            state = conn.createStatement();
            rs = state.executeQuery(sql);
            while (rs.next()) {
                
                
                zhanhao = rs.getInt("num");
            
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, state, conn);
        }
        
        return zhanhao;
    }
    
    

    public static String getLine1(int zhanhao1,int zhanhao2) {
        
        String line="";
        String sql = "select name from aaa where num between ‘"+zhanhao1+"‘ and ‘"+zhanhao2+"‘order by num ASC ";//升序
                
        Connection conn = DBUtil.getConn();
        Statement state = null;
        ResultSet rs = null;    
        try {
            state = conn.createStatement();
            rs = state.executeQuery(sql);
            
            if(rs.next())
                line=rs.getString("name");
            while (rs.next()) {
                String name=rs.getString("name");
                line=line+"->"+name;
            
                }
            
         } catch (Exception e) {
        e.printStackTrace();
         } finally {
        DBUtil.close(rs, state, conn);
        }
    
        
        return line;
    }
    
public static String getLine2(int zhanhao1,int zhanhao2) {
        
        String line="";
        String sql = "select name from aaa where num between ‘"+zhanhao1+"‘ and ‘"+zhanhao2+"‘  order by num DESC ";//降序
                
        Connection conn = DBUtil.getConn();
        Statement state = null;
        ResultSet rs = null;    
        try {
            state = conn.createStatement();
            rs = state.executeQuery(sql);
            
            if(rs.next())
                line=rs.getString("name");
            while (rs.next()) {
                String name=rs.getString("name");
                line=line+"->"+name;
            
                }
            
         } catch (Exception e) {
        e.printStackTrace();
         } finally {
        DBUtil.close(rs, state, conn);
        }
    
        
        return line;
    }}

技术图片队友:张子轩

d

以上是关于地铁售票设计思想及部分代码的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之策略模式在地铁票价系统中的应用

地铁线路项目

影院在线售票云平台(仿猫眼电影,附SpringBoot项目源码) 系统功能实现

北京地铁最短线路规划

地铁最短路径(代码部分)

地铁系统