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;
}
}