地铁查询系统团队进度(二)

 

 

 

 

 

 int demostartid=0,demoendid=0;
    ArrayList<String> array=new ArrayList<String>();
    /*
     *     起始点与终点在一条线上且非换乘站
     */
    public ArrayList<String> Connectonlyoneline(Line line) throws Exception {
        ArrayList<String> array1 = new ArrayList<String>();
        int num = 0;
        Connection connection = jdbcUtil.getconnection();
        String sql = "select * from firstline f1 JOIN firstline f2 on f1.Line=f2.Line WHERE f1.StopName=? AND f2.StopName=?";
        //保证起始站(同时有可能是中转站)与终点站(同时有可能是中转站)在同一条线路上
        PreparedStatement pstmt = connection.prepareStatement(sql);
        pstmt.setString(1, line.getStartstopname());
        pstmt.setString(2, line.getEndstopname());
        ResultSet rs = pstmt.executeQuery();
        while (rs.next()) {
            line.setTemporaryline(rs.getInt("Line"));
        }
        System.out.println(line.getTemporaryline());
        array.add("乘坐" + line.getTemporaryline() + "号线");

        num = select(line);
        //起始站编号小于终点站,即起始站在前,终点站在后
        if (num == 1) {
            String sql1 = "select * from firstline where StopID>=(select StopID from firstline where StopName=? ) and StopID<=(select StopID from firstline where StopName=? )  and Line=?";
            /*
             * 找到这样的一些站:它们的ID号大于起始站的ID号,
             * 它们的ID号小于结束站的ID号,并且它们都是同一条线上的站点
             */
            PreparedStatement pstmt1 = connection.prepareStatement(sql1);
            pstmt1.setString(1, line.getStartstopname());
            pstmt1.setString(2, line.getEndstopname());
            pstmt1.setInt(3, line.getTemporaryline());

            ResultSet rs1 = pstmt1.executeQuery();
            while (rs1.next()) {
                //遍历结果集
                array.add(rs1.getString("StopName"));
            }

            jdbcUtil.close(pstmt1);
            jdbcUtil.close(rs1);
        } else if (num == 2) {
            //起始站编号大于终点站,即起始站在后,终点站在前
            String sql2 = "select * from firstline where StopID<=(select StopID from firstline where StopName=? ) and StopID>=(select StopID from firstline where StopName=? )  and Line=?";
            /*
             * 同上
             */
            PreparedStatement pstmt2 = connection.prepareStatement(sql2);
            pstmt2.setString(1, line.getStartstopname());
            pstmt2.setString(2, line.getEndstopname());
            pstmt2.setInt(3, line.getTemporaryline());

            ResultSet rs2 = pstmt2.executeQuery();
            while (rs2.next()) {
                array1.add(rs2.getString("StopName"));
            }
            for (int i = 0; i < array1.size(); i++) {//测试是否有值
                System.out.print(array1.get(i) + " ");
            }
            for (int j = array1.size() - 1; j >= 0; j--) {//将站名倒序传入
                array.add(array1.get(j));
            }
            jdbcUtil.close(pstmt2);
            jdbcUtil.close(rs2);
        }
        jdbcUtil.close(connection);
        jdbcUtil.close(pstmt);
        jdbcUtil.close(rs);
        return  array;
    }

/*
     *     两条不同的、有交点的线路
     */
    public ArrayList<String> Connecttwoline(Line line) throws Exception {
        int num = 0;
        Connection connection = jdbcUtil.getconnection();
        String sql = "select * from changeline where ID1=? and ID2=? ";
        //根据交点线路查询中转站
        PreparedStatement pstmt = connection.prepareStatement(sql);
        pstmt.setInt(1, line.getOriginline());
        pstmt.setInt(2, line.getFinishline());
        ResultSet rs = pstmt.executeQuery();
        while (rs.next())
        {
            line.setMiddlestop(rs.getString("ChangeStopName"));
        }
        //当前起始点与结束点,存放
        line.setTemporarystartstopname(line.getStartstopname());
        line.setTemporaryendstopname(line.getEndstopname());
        String sql1="select * from firstline where Line=? and StopName=? ";
        //根据起始线路和中转站名称标出中转站位置
        PreparedStatement pstmt1 = connection.prepareStatement(sql1);
        pstmt1.setInt(1, line.getOriginline());
        pstmt1.setString(2, line.getMiddlestop());
        ResultSet rs1 = pstmt1.executeQuery();
        while(rs1.next()) {
            line.setEndstopname(rs1.getString("StopName"));
            //起始点不变,结束点设置为中转点
        }
        //将起始点和中转点所在线路一致的放入临时站线路
        line.setStartstopname(line.getTemporarystartstopname());
        line.setTemporaryline(line.getOriginline());

        array.add("乘坐"+line.getOriginline()+"号线");
        num = select(line);
        if (num == 1) {
            String sql2 = "select * from firstline where StopID>=(select StopID from firstline where StopName=? ) and StopID<=(select StopID from firstline where StopName=? ) and Line=? ";
            /*
             * 找到这样的一些站:它们的ID号大于起始站的ID号,
             * 它们的ID号小于结束站的ID号,并且它们都是同一条线上的站点
             */
            PreparedStatement pstmt2 = connection.prepareStatement(sql2);
            pstmt2.setString(1, line.getStartstopname());
            pstmt2.setString(2, line.getEndstopname());
            pstmt2.setInt(3, line.getTemporaryline());
            ResultSet rs2 = pstmt2.executeQuery();
            while (rs2.next()) {
                //遍历结果集
                array.add(rs2.getString("StopName"));
            }
            jdbcUtil.close(pstmt2);
            jdbcUtil.close(rs2);
        } else if (num == 2) {
            ArrayList<String> array1=new ArrayList<String>();
            //起始站编号大于终点站,即起始站在后,终点站在前
            String sql2 = "select * from firstline where StopID<=(select StopID from firstline where StopName=? ) and StopID>=(select StopID from firstline where StopName=? )  and Line=?";
            /*
             * 同上
             */
            PreparedStatement pstmt2 = connection.prepareStatement(sql2);
            pstmt2.setString(1, line.getStartstopname());
            pstmt2.setString(2, line.getEndstopname());
            pstmt2.setInt(3, line.getTemporaryline());
            ResultSet rs2 = pstmt2.executeQuery();
            while (rs2.next()) {
                array1.add(rs2.getString("StopName"));
            }
            for (int i = 0; i < array1.size(); i++) {//测试是否有值
                System.out.print(array1.get(i) + " ");
            }
            for (int j = array1.size() - 1; j >= 0; j--) {//将站名倒序传入
                array.add(array1.get(j));
            }
            jdbcUtil.close(pstmt2);
            jdbcUtil.close(rs2);
        }
        array.add("转乘"+line.getFinishline()+"号线");
        /*
         *
         *
         *
         *
         */
        line.setStartstopname(line.getMiddlestop());
        //将起始点设为中转点
        line.setEndstopname(line.getTemporaryendstopname());
        //将结束点回归
        line.setTemporaryline(line.getFinishline());
        //将中转点和结束点所在线路一致的放入临时站线路
        num = select(line);
        if (num == 1) {
            String sql3 = "select * from firstline where StopID>=(select StopID from firstline where StopName=?) and StopID<=(select StopID from firstline where StopName=? )  and Line=? ";
            /*
             * 找到这样的一些站:它们的ID号大于起始站的ID号,
             * 它们的ID号小于结束站的ID号,并且它们都是同一条线上的站点
             */
            PreparedStatement pstmt3 = connection.prepareStatement(sql3);
            pstmt3.setString(1, line.getStartstopname());
            pstmt3.setString(2, line.getEndstopname());
            pstmt3.setInt(3, line.getTemporaryline());
            ResultSet rs3= pstmt3.executeQuery();
            while (rs3.next()) {
                //遍历结果集
                array.add(rs3.getString("StopName"));
            }
            System.out.println(line.getStartstopname());
            System.out.println(line.getTemporaryline());
            System.out.println(line.getEndstopname());
            System.out.println(line.getFinishline());

            jdbcUtil.close(pstmt3);
            jdbcUtil.close(rs3);
        } else if (num == 2) {
            ArrayList<String> array1=new ArrayList<String>();
            //起始站编号大于终点站,即起始站在后,终点站在前
            String sql3 = "select * from firstline where StopID<=(select StopID from firstline where StopName=? ) and StopID>=(select StopID from firstline where StopName=? ) and Line=?";
            /*
             * 同上
             */
            PreparedStatement pstmt3 = connection.prepareStatement(sql3);
            pstmt3.setString(1, line.getStartstopname());
            pstmt3.setString(2, line.getEndstopname());
            pstmt3.setInt(3, line.getTemporaryline());
            ResultSet rs3 = pstmt3.executeQuery();
            while (rs3.next()) {
                array1.add(rs3.getString("StopName"));
            }
            for (int i = 0; i < array1.size(); i++) {//测试是否有值
                System.out.print(array1.get(i) + " ");
            }
            for (int j = array1.size() - 1; j >= 0; j--) {//将站名倒序传入
                array.add(array1.get(j));
            }

            jdbcUtil.close(pstmt3);
            jdbcUtil.close(rs3);
        }
        jdbcUtil.close(connection);
        jdbcUtil.close(pstmt);
        jdbcUtil.close(rs);
        jdbcUtil.close(pstmt1);
        jdbcUtil.close(rs1);
        return array;
    }

团队成员:王洪兵

 

posted @ 2023-03-15 21:55  庞司令  阅读(47)  评论(0)    收藏  举报