⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fangwen1.java

📁 java写的一交通导航程序点击任意两站点就可以以可视化的方式将转车次数最少的乘车方案找出来 注:连ACCESS数据库 odbc数据源名称为lv
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

import java.sql.*;
import java.io.*;
import java.lang.String;
import java.lang.Math.*;
class fangwen1//fangwen1是站点之间的搜索
{       public static String f1,f2;
        public fangwen1(String t1,String t2)throws Exception
        {
        	f1=t1;f2=t2;
        //}
        //public static void main(String args[]) 
       // {   
          FileOutputStream fileOut =new FileOutputStream("jieguo.txt");

            //String f1="明珠北";//出发站
           // String f2="拱北";//目的站
            String g1="C0";//车次站点表
          
                String ur1="jdbc:odbc:lv";
                String query="SELECT * FROM "+g1+" WHERE "+g1+".站点='"+f1+"' ";
                String query1="SELECT * FROM "+g1+" WHERE "+g1+".站点='"+f2+"' ";
            dropbiao db=new dropbiao();
            db.ddb();
            jilu jl=new jilu();
             jl.jjl();
                try
                {
                        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                }
                catch(java.lang.ClassNotFoundException e)
                {
                        System.err.print("classNotFoundException:");
                        System.err.println(e.getMessage());
                }
                try
                {
                        Connection con=DriverManager.getConnection(ur1);
                        Statement stmt=con.createStatement();

                        Statement stmt1=con.createStatement();
                        Statement stmt2=con.createStatement();
                        
                      
                        //创建表B1,B2,B3,B33,B4,B5
                stmt1.executeUpdate("CREATE TABLE B1(id char(20),车次 char(20),站点 char(20));");
                //用B1记录s(I):过出发站的所有车次
                stmt2.executeUpdate("CREATE TABLE B2(id char(20),车次 char(20),站点 char(20));");
                //用B2记录t(J):过终点站的所有车次
                 Statement stmt3=con.createStatement();
                Statement stmt4=con.createStatement();
             stmt3.executeUpdate("CREATE TABLE B3(id char(20),车次 char(20),站点 char(20));");
             //用B3记录E(I,U)
             stmt1.executeUpdate("CREATE TABLE B33(id char(20),车次 char(20),站点 char(20));");//用B33记录t(k)
             stmt4.executeUpdate("CREATE TABLE B4(id char(20),车次 char(20),站点 char(20));");//用B4记录F(J,V)
             
           /*  stmt3.executeUpdate("CREATE TABLE J0(id char(20),车次 char(20),k char(20));");
             stmt1.executeUpdate("CREATE TABLE J1(id char(20),车次1 char(20),站点 char(20),车次2char(20),k char(20));");
             stmt4.executeUpdate("CREATE TABLE J2(id char(20),车次1 char(20),站点1char(20),车次2char(20),站点2char(20),车次3char(20),k char(20);");*/
             Statement stmt6=con.createStatement();
             Statement stmt8=con.createStatement();
            stmt6.executeUpdate("CREATE TABLE B5(id char(20),车次 char(20),站点 char(20));");


                        ResultSet r=stmt1.executeQuery(query);
                    ResultSet rr=stmt2.executeQuery(query1);

      ////////////////////////////////// System.out.println("车次:"+"    "+"站点:");
                        while(r.next())//用B1记录s(I):过出发站的所有车次
                        {   String r0=r.getString("id");
                                String r1=r.getString("车次");
                                String r2=r.getString("站点");
                        //	System.out.println(r1+"           "+r2);


                                stmt.executeUpdate("INSERT INTO B1(id,车次,站点) VALUES("+r0+","+r1+",'"+r2+"')");

            }

            while(rr.next())//用B2记录t(J):过终点站的所有车次
            {   String r0=rr.getString("id");
                                String r1=rr.getString("车次");
                                String r2=rr.getString("站点");
                stmt.executeUpdate("INSERT INTO B2(id,车次,站点) VALUES("+r0+","+r1+",'"+r2+"')");
            }

             String query2="SELECT * FROM B1 WHERE B1.车次 in (SELECT 车次 FROM B2)";//求s(I)和t(J)的交集
              ResultSet rrr=stmt2.executeQuery(query2);

              if(rrr.next())//s(I)和t(J)有交集即有直达的车
              { ResultSet c1=stmt4.executeQuery("SELECT * FROM J0");int q=0;
                if(!c1.next())//J0表是空的 
                {
                	q=1;
                }
               do
               {
                int i=0,j=0,k=0;//t=0;
                      String r1=rrr.getString("车次");
                      //输出结果

                      ResultSet rr1=stmt1.executeQuery("SELECT * FROM "+g1+" WHERE 车次='"+r1+"' AND 站点='"+f1+"'");
                      rr1.next();
                        i=rr1.getInt("id");
                            ResultSet rr2=stmt1.executeQuery("SELECT * FROM "+g1+" WHERE 车次='"+r1+"' AND 站点='"+f2+"'");
                            rr2.next();
                            j=rr2.getInt("id");
                            k=k+Math.abs((i-j));
    /////////////////System.out.println(""+f1+"和"+f2+"之间有直达车:"+r1+"总共经过了"+k+"个站点");
                      String bbt=""+f1+"和"+f2+"之间有直达车:"+r1+"总共经过了"+k+"个站点";
       
                     
                       if(q==1)//若J0表是空的话就将结果保存在J0中
                      	{stmt.executeUpdate("INSERT INTO J0(车次,k) VALUES("+r1+","+k+")");q=1;}//直达的乘车方案保存在J0中
                     
                      
                   tofile.write(fileOut,bbt);

               }while(rrr.next());
              }
              else //s(I)和t(J)没有交集,即没有直达的车		
              {
              System.out.println(""+f1+"和"+f2+"之间没有直达车");
               String bbt=""+f1+"和"+f2+"之间没有直达车";
               tofile.write(fileOut,bbt);
              }


                String query3="SELECT * FROM "+g1+" WHERE "+g1+".车次 in (SELECT 车次 FROM B1)";//过A的所有车次经过的站点集合E(I,U)
                String query4="SELECT * FROM "+g1+" WHERE "+g1+".车次 in (SELECT 车次 FROM B2)";//过B的所有车次经过的站点集合F(J,V)

                ResultSet r3=stmt3.executeQuery(query3);

                                   while(r3.next())//用B3记录E(I,U)
                                                {   String r0=r3.getString("id");
                                                        String r1=r3.getString("车次");
                                                        String r2=r3.getString("站点");

                                                        stmt.executeUpdate("INSERT INTO B3(id,车次,站点) VALUES("+r0+","+r1+",'"+r2+"')");

                                    }
                    ResultSet r4=stmt4.executeQuery(query4);
                                    while(r4.next())//用B4记录F(J,V)
                                    {   String r0=r4.getString("id");
                                                        String r1=r4.getString("车次");
                                                        String r2=r4.getString("站点");
                                        stmt.executeUpdate("INSERT INTO B4(id,车次,站点) VALUES("+r0+","+r1+",'"+r2+"')");

                                     }
                            String query44="SELECT * FROM "+g1+" WHERE "+g1+".站点 in (SELECT 站点 FROM B3)";

                            ResultSet r66=stmt3.executeQuery(query44);
                             while(r66.next())//用B33记录t(k)
                                                {   String r0=r66.getString("id");
                                                        String r1=r66.getString("车次");
                                                        String r2=r66.getString("站点");

                                                        stmt.executeUpdate("INSERT INTO B33(id,车次,站点) VALUES("+r0+","+r1+",'"+r2+"')");

                                    }

                           String query5="SELECT * FROM B3 WHERE 站点 in (SELECT 站点 FROM B4)";//求E(I,U)和F(J,V)的交集
                           ResultSet r5=stmt2.executeQuery(query5);
                       if(r5.next())//E(I,U)和F(J,V)有交集即转一次车能够到达
                           {	//输出结果
                            int q2=0;
                            ResultSet c2=stmt4.executeQuery("SELECT * FROM J1");
                               if(!c2.next()) q2=1;

                     do{	int i=0,j=0,k=0,d=0;//t=0;
                                        String r1=r5.getString("车次");
                                              String r2=r5.getString("站点");
                                              String query55="SELECT 车次 FROM B4 WHERE 站点='"+r2+"'";
                                              ResultSet r55=stmt4.executeQuery(query55);
                                              if(r55.next()){
                                              String r11=r55.getString("车次");

                                //求经过的站点数
                                    ResultSet rr3=stmt1.executeQuery("SELECT * FROM "+g1+" WHERE 车次='"+r1+"'AND 站点='"+f1+"'");
                                    rr3.next();
                                    i=rr3.getInt("id");
                                    ResultSet rr4=stmt1.executeQuery("SELECT * FROM "+g1+" WHERE 车次='"+r1+"'AND 站点='"+r2+"'");
                                    rr4.next();
                                    j=rr4.getInt("id");
                                    k=k+Math.abs((i-j));//System.out.println(""+k+"");

                                    ResultSet rr5=stmt1.executeQuery("SELECT * FROM "+g1+" WHERE 车次='"+r11+"'AND 站点='"+f2+"'");
                                    rr5.next();
                                    i=rr5.getInt("id");
                                    ResultSet rr12=stmt1.executeQuery("SELECT * FROM "+g1+" WHERE 车次='"+r11+"'AND 站点='"+r2+"'");
                                    rr12.next();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -