石家庄地铁系统开发实例

合作人 周博

实现功能:可以进行不同路线之间的换乘,查找最短路程;

缺点:功能并不完善,代码过于冗余;界面不够美观。

实现功能相关代码

public List<User>Num5(String a,String b)
    {
        int NN=0;
        User start=new User();
        User end=new User();
        start=loadUser(a);
        end=loadUser(b);
        conn=ut.getConn();
        ps=null;
        ResultSet rs=null;
        String id;
        sql="select * from station where Id between ? and ? order by Id";
        List<User> users=new ArrayList<User>();
        List<User>    Mid1s=new ArrayList<User>();//做出一个始发站中转站点集
        List<User>    Mid2s=new ArrayList<User>();//做出一个终点站中转站点集
        List<User>    Mid3s=new ArrayList<User>();//1在转战线上的位置
        List<User>    Mid4s=new ArrayList<User>();//2在转战上的位置
        User user=null;
        User Mid1=null;
        User Mid2=null;
        User Mid3=null;
        User Mid4=null;
        
        int Zhuan;//最近的转战是第几条线
        if(start.getLine()==end.getLine())//一条线
        {
            if(start.getId()<=end.getId())
            {
                try {
                    conn=ut.getConn();
            ps=conn.prepareStatement(sql);
            ps.setInt(1, start.getId());
            ps.setInt(2, end.getId());
            
            rs=ps.executeQuery();
            while(rs.next()) {
                user=new User();
                user.setName(rs.getString("Name"));
                user.setId(rs.getInt("Id"));
                user.setLine(rs.getInt("Line")) ;
                user.setNum(rs.getInt("Num"));
                user.setExchange(rs.getInt("Exchange"));
                users.add(user);
            }
        }catch(SQLException e) {
            e.printStackTrace();
        }
        }
            else
            {
                
                try {
                    sql="select * from station where Id between ? and ? order by Id desc";
                    conn=ut.getConn();
                    ps=conn.prepareStatement(sql);
                    ps.setInt(2, start.getId());
                    ps.setInt(1, end.getId());
                    rs=ps.executeQuery();
                    while(rs.next()) {
                        user=new User();
                        user.setName(rs.getString("Name"));
                        user.setId(rs.getInt("Id"));
                        user.setLine(rs.getInt("Line")) ;
                        user.setNum(rs.getInt("Num"));
                        user.setExchange(rs.getInt("Exchange"));
                        users.add(user);
                    }
                }catch(SQLException e) {
                    e.printStackTrace();
                }
            }
            
            
        }
        if(start.getLine()!=end.getLine())//不在一条线
        {
            int mid=0;
            try {
                
                sql="select * from station where Line=? and Exchange !=?";//始发站一条线
                conn=ut.getConn();
                ps=conn.prepareStatement(sql);
                ps.setInt(1, start.getLine());
                ps.setInt(2, 0);
                rs=ps.executeQuery();
                while(rs.next())
                {
                Mid1=new User();
                Mid1.setName(rs.getString("Name"));
                Mid1.setId(rs.getInt("Id"));
                Mid1.setLine(rs.getInt("Line")) ;
                Mid1.setNum(rs.getInt("Num"));
                Mid1.setExchange(rs.getInt("Exchange"));
                Mid1s.add(Mid1);
                }
                for(User mid1:Mid1s)
                {
                    sql="select * from station where Name=?";//同名 但是Id 不一样
                    conn=ut.getConn();
                    ps=conn.prepareStatement(sql);
                    ps.setString(1, mid1.getName());
                    rs=ps.executeQuery();
                    while(rs.next())
                    {
                    Mid3=new User();
                    Mid3.setName(rs.getString("Name"));
                    Mid3.setId(rs.getInt("Id"));
                    Mid3.setLine(rs.getInt("Line")) ;
                    Mid3.setNum(rs.getInt("Num"));
                    Mid3.setExchange(rs.getInt("Exchange"));
                    if(Mid3.getId()!=mid1.getId())
                    {
                        Mid3s.add(Mid3);
                    }
                    }
                }
                sql="select * from station where Line=? and Exchange !=?";  //找到在终点站那条线路上
                conn=ut.getConn();
                ps=conn.prepareStatement(sql);
                ps.setInt(2, start.getLine());
                ps.setInt(1, end.getLine());
                rs=ps.executeQuery();
                while(rs.next())
                {
                Mid2=new User();
                Mid2.setName(rs.getString("Name"));
                Mid2.setId(rs.getInt("Id"));
                Mid2.setLine(rs.getInt("Line")) ;
                Mid2.setNum(rs.getInt("Num"));
                Mid2.setExchange(rs.getInt("Exchange"));
                Mid2s.add(Mid2);
                }
                for(User mid2:Mid2s)
                {
                    sql="select * from station where Name=?";//同名 但是Id 不一样
                    conn=ut.getConn();
                    ps=conn.prepareStatement(sql);
                    ps.setString(1, mid2.getName());
                    rs=ps.executeQuery();
                    while(rs.next())
                    {
                    Mid4=new User();
                    Mid4.setName(rs.getString("Name"));
                    Mid4.setId(rs.getInt("Id"));
                    Mid4.setLine(rs.getInt("Line")) ;
                    Mid4.setNum(rs.getInt("Num"));
                    Mid4.setExchange(rs.getInt("Exchange"));
                    if(Mid4.getId()!=mid2.getId())
                    {
                        Mid4s.add(Mid4);
                    }
                    }
                }
                
                
                
                int min=100;//选出最近转战口
                int Min1=Mid1.getId();//最近转战口ID 与始发站相同
                int Min2=Mid2.getId();//与终点站相同
                int Min3=Mid3.getId();
                int Min4=Mid4.getId();
                for(User mid1:Mid1s)
                {
                    for(User mid3:Mid3s)
                    {
                    for(User mid2:Mid2s)
                    {
                        for(User mid4:Mid4s)
                        {
                        if((mid1.getExchange()==mid2.getExchange())&&(mid3.getLine()==mid4.getLine())&&(mid1.getExchange()==mid3.getLine()))
                        {
                            
                            int n=Math.abs(mid1.getId()-start.getId())+Math.abs(mid2.getId()-end.getId())+Math.abs(mid3.getId()-mid4.getId());
                            if(min>n)
                            {
                                min=n;
                                Min1=mid1.getId();
                                Min2=mid2.getId();
                                Min3=mid3.getId();
                                Min4=mid4.getId();
                            }
                        }
                        }
                        
                    }
                    }
                }
                System.out.println(Min1);
                User mid1=Select_Id(Min1);
                User mid2=Select_Id(Min2);
                User mid3=Select_Id(Min3);
                User mid4=Select_Id(Min4);
                System.out.println(mid2.getName()+"asdfasdfasdgasdgasdf"+mid1.getName());////////////
                if(mid1.getId()>start.getId())//始发站->中转站
                {    
                    sql="select * from station where Id between ? and ? order by Id";
                    conn=ut.getConn();
                    ps=conn.prepareStatement(sql);
                    ps.setInt(1, start.getId());
                    ps.setInt(2, mid1.getId());
                    rs=ps.executeQuery();
                    while(rs.next()) {
                    NN=NN+1;
                    user=new User();
                    user.setName(rs.getString("Name"));
                    user.setId(rs.getInt("Id"));
                    user.setLine(rs.getInt("Line")) ;
                    user.setNum(rs.getInt("Num"));
                    user.setExchange(rs.getInt("Exchange"));
                    users.add(user);       
                }
                    if(mid3.getId()>mid4.getId())//3->4
                    {
                        sql="select * from station where Id between ? and ? order by Id desc";
                        conn=ut.getConn();
                        ps=conn.prepareStatement(sql);
                        ps.setInt(1,mid4.getId());
                        ps.setInt(2, mid3.getId()-1);/////////////////////
                        rs=ps.executeQuery();
                        while(rs.next()) {
                            NN=NN+1;
                        user=new User();
                        user.setName(rs.getString("Name"));
                        user.setId(rs.getInt("Id"));
                        user.setLine(rs.getInt("Line")) ;
                        user.setNum(rs.getInt("Num"));
                        user.setExchange(rs.getInt("Exchange"));
                        users.add(user);       
                    }
                    }
                    if(mid3.getId()<mid4.getId())//3->4
                    {
                        sql="select * from station where Id between ? and ? order by Id ";
                        conn=ut.getConn();
                        ps=conn.prepareStatement(sql);
                        ps.setInt(1,mid3.getId()+1);
                        ps.setInt(2, mid4.getId());
                        rs=ps.executeQuery();
                        while(rs.next()) {
                            NN=NN+1;
                        user=new User();
                        user.setName(rs.getString("Name"));
                        user.setId(rs.getInt("Id"));
                        user.setLine(rs.getInt("Line")) ;
                        user.setNum(rs.getInt("Num"));
                        user.setExchange(rs.getInt("Exchange"));
                        users.add(user);       
                    }
                    }
                     if(mid2.getId()>end.getId())//始发站->中转站    终点站->中转站
                        {
                         System.out.println("");
                         sql="select * from station where Id between ? and ? order by Id desc";
                            conn=ut.getConn();
                            ps=conn.prepareStatement(sql);
                            ps.setInt(1, end.getId());
                            ps.setInt(2, mid2.getId()-1);
                            rs=ps.executeQuery();
                            while(rs.next()) {
                                NN=NN+1;
                            user=new User();
                            user.setName(rs.getString("Name"));
                            user.setId(rs.getInt("Id"));
                            user.setLine(rs.getInt("Line")) ;
                            user.setNum(rs.getInt("Num"));
                            user.setExchange(rs.getInt("Exchange"));
                            users.add(user);       
                        }
                        }
                     else//始发站->中转站->终点站
                     {
                         sql="select * from station where Id between ? and ? order by Id ";
                            conn=ut.getConn();
                            ps=conn.prepareStatement(sql);
                            ps.setInt(2, end.getId());
                            ps.setInt(1, mid2.getId()+1);
                            rs=ps.executeQuery();
                            while(rs.next()) {
                                NN=NN+1;
                            user=new User();
                            user.setName(rs.getString("Name"));
                            user.setId(rs.getInt("Id"));
                            user.setLine(rs.getInt("Line")) ;
                            user.setNum(rs.getInt("Num"));
                            user.setExchange(rs.getInt("Exchange"));
                            users.add(user);       
                        }
                     }
                     
                }
                else//中转站<-始发站
                {    
                    
                    sql="select * from station where Id between ? and ? order by Id desc";
                    conn=ut.getConn();
                    ps=conn.prepareStatement(sql);
                    ps.setInt(2, start.getId());
                    ps.setInt(1, mid1.getId());
                    rs=ps.executeQuery();
                    while(rs.next()) {
                        NN=NN+1;
                    user=new User();
                    user.setName(rs.getString("Name"));
                    user.setId(rs.getInt("Id"));
                    user.setLine(rs.getInt("Line")) ;
                    user.setNum(rs.getInt("Num"));
                    user.setExchange(rs.getInt("Exchange"));
                    users.add(user);       
                }
                    if(mid3.getId()>mid4.getId())//3->4
                    {
                        sql="select * from station where Id between ? and ? order by Id desc";
                        conn=ut.getConn();
                        ps=conn.prepareStatement(sql);
                        ps.setInt(1,mid4.getId());
                        ps.setInt(2, mid3.getId()-1);
                        rs=ps.executeQuery();
                        while(rs.next()) {
                            NN=NN+1;
                        user=new User();
                        user.setName(rs.getString("Name"));
                        user.setId(rs.getInt("Id"));
                        user.setLine(rs.getInt("Line")) ;
                        user.setNum(rs.getInt("Num"));
                        user.setExchange(rs.getInt("Exchange"));
                        users.add(user);       
                    }
                    }
                    if(mid3.getId()<mid4.getId())//3->4
                    {
                        sql="select * from station where Id between ? and ? order by Id ";
                        conn=ut.getConn();
                        ps=conn.prepareStatement(sql);
                        ps.setInt(1,mid3.getId()+1);
                        ps.setInt(2, mid4.getId());
                        rs=ps.executeQuery();
                        while(rs.next()) {
                            NN=NN+1;
                        user=new User();
                        user.setName(rs.getString("Name"));
                        user.setId(rs.getInt("Id"));
                        user.setLine(rs.getInt("Line")) ;
                        user.setNum(rs.getInt("Num"));
                        user.setExchange(rs.getInt("Exchange"));
                        users.add(user);       
                    }
                    }
                    
                     if(mid2.getId()>end.getId())//中转站<-始发站    终点站->中转站    
                        {
                         sql="select * from station where Id between ? and ? order by Id desc";
                            conn=ut.getConn();
                            ps=conn.prepareStatement(sql);
                            ps.setInt(1, end.getId());
                            ps.setInt(2, mid2.getId()-1);
                            rs=ps.executeQuery();
                            while(rs.next()) {
                                NN=NN+1;
                            user=new User();
                            user.setName(rs.getString("Name"));
                            user.setId(rs.getInt("Id"));
                            user.setLine(rs.getInt("Line")) ;
                            user.setNum(rs.getInt("Num"));
                            user.setExchange(rs.getInt("Exchange"));
                            users.add(user);       
                        }
                        }
                     else//中转站<-始发站    
                     {
                         sql="select * from station where Id between ? and ? order by Id ";
                            conn=ut.getConn();
                            ps=conn.prepareStatement(sql);
                            ps.setInt(2, end.getId());
                            ps.setInt(1, mid2.getId()+1);
                            rs=ps.executeQuery();
                            while(rs.next()) {
                                NN=NN+1;
                            user=new User();
                            user.setName(rs.getString("Name"));
                            user.setId(rs.getInt("Id"));
                            user.setLine(rs.getInt("Line")) ;
                            user.setNum(rs.getInt("Num"));
                            user.setExchange(rs.getInt("Exchange"));
                            users.add(user);       
                        }
                     }
                     
                }
                
       
                
                
                
                
                
                
            }catch(SQLException e) {
                e.printStackTrace();
            }
            
            
            
            
            
            
        }
        System.out.println("aadfasdfsdaf"+NN+"adsfads"+Num1(a,b));
        if(NN>Num1(a,b))
        {
            return Num3(a,b);
        }
        else
            {
            return users;
            }
    }

 

 

posted on 2019-04-01 16:00  哈弗h6  阅读(157)  评论(0编辑  收藏  举报

导航