import java.sql.*;
import java.awt.*;
import java.awt.event.*;
/**
* File: step2_Frame.java
* 按照转乘方式查寻,交互操作的第二步的界面和处理代码
*/
public class step2_Frame extends Frame {
////////////////////////////////
//这个界面提供一次转乘方式的乘车路线查寻。
//
//请按照按钮上序号所提示的步骤顺序操作:
//1,查找中间转乘车站: 给出可能的转乘站。
//2,到换乘站路线: 查寻如何乘车可以从 “始 站” 到达 “转乘站”。
//3,到目标站路线: 查寻如何乘车可以从 “转乘站” 到达 “目标站”。
//
//这个版本的查询系统仅仅提供最多一次转乘的功能。
//更多次转乘可以通过手工反复寻找中间转乘车站拉达到目的。
////////////////////////////////
public String mystat1=new String("");
public String mystat2=new String("");
Button button1 = new Button();
Button button2 = new Button();
TextField user_mystat1 = new TextField();
TextField user_mystat2 = new TextField();
Choice stat_choice = new Choice();
Button button3 = new Button();
Button button4 = new Button();
Choice line_list1 = new Choice();
Choice line_list2 = new Choice();
Label label1 = new Label();
Label label2 = new Label();
Label label3 = new Label();
Label label4 = new Label();
Label label5 = new Label();
Label label6 = new Label();
Label label7 = new Label();
Label label8 = new Label();
Label label9 = new Label();
public step2_Frame() {
this.setSize(550,300);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
this.setLayout(null);
button2.setLabel("取消");
button2.setBounds(new Rectangle(380, 179, 85, 26));
button2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
button2_actionPerformed(e);
}
});
user_mystat1.setText("出发站");
user_mystat1.setBounds(new Rectangle(6, 120, 76, 42));
user_mystat2.setText("到达站");
user_mystat2.setBounds(new Rectangle(421, 119, 83, 40));
this.setVisible(true);
button1.setLabel("1,查找中间转乘车站");
button1.setBounds(new Rectangle(143, 180, 215, 26));
button1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
button1_actionPerformed(e);
}
});
button3.setLabel("2,到换乘站路线");
button3.setBounds(new Rectangle(86, 121, 126, 23));
button3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
button3_actionPerformed(e);
}
});
button4.setLabel("3,到目标站路线");
button4.setBounds(new Rectangle(284, 119, 133, 22));
button4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
button4_actionPerformed(e);
}
});
label1.setText("始站:");
label1.setBounds(new Rectangle(8, 94, 86, 28));
label2.setText("目标站:");
label2.setBounds(new Rectangle(425, 92, 86, 28));
label3.setText("换乘站:");
label3.setBounds(new Rectangle(214, 91, 86, 28));
label5.setText("请按照按钮上序号所提示的步骤顺序操作:");
label5.setBounds(new Rectangle(18, 6, 359, 26));
label6.setText("1,查找中间转乘车站: 给出可能的转乘站。");
label6.setBounds(new Rectangle(20, 31, 276, 16));
label7.setText("2,到换乘站路线: 查寻如何乘车可以从 “始 站” 到达 “转乘站”。");
label7.setBounds(new Rectangle(19, 50, 438, 16));
label8.setText("3,到目标站路线: 查寻如何乘车可以从 “转乘站” 到达 “目标站”。");
label8.setBounds(new Rectangle(20, 70, 446, 16));
label9.setText("----------------------------------------------------------------------------------------------------");
label9.setBounds(new Rectangle(7, 84, 468, 14));
line_list2.setBounds(new Rectangle(286, 142, 131, 18));
line_list1.setBounds(new Rectangle(87, 142, 125, 19));
stat_choice.setBounds(new Rectangle(216, 119, 66, 24));
label4.setBounds(new Rectangle(87, 85, 86, 28));
this.add(label4, null);
this.add(label6, null);
this.add(label5, null);
this.add(button1, null);
this.add(label1, null);
this.add(user_mystat1, null);
this.add(line_list1, null);
this.add(button3, null);
this.add(label3, null);
this.add(stat_choice, null);
this.add(button4, null);
this.add(line_list2, null);
this.add(label2, null);
this.add(user_mystat2, null);
this.add(button2, null);
this.add(label9, null);
this.add(label8, null);
this.add(label7, null);
}
void button1_actionPerformed(ActionEvent e) {
/////////////////////
//1,查找中间转乘车站: 给出可能的转乘站。
/////////////////////
String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";
String databaseURL = "jdbc:odbc:bjtdb";
String user = "bjtdb";
String password = "bjtdb";
String sqlStr="SELECT distinct stat FROM stat_line WHERE line in (select line from stat_line where stat='"+user_mystat1.getText() +"') and stat in (SELECT stat FROM stat_line WHERE line in (select line from stat_line where stat='"+user_mystat2.getText() +"'))";
System.out.print(sqlStr);
try {
Class.forName (driverName);
System.out.println ("成功加载JDBC-ODBC驱动程序!");
}
catch (java.lang.ClassNotFoundException ex) {
System.out.println ("加载JDBC-ODBC驱动程序失败!");
System.out.println (ex.getMessage ());
return;
}
try {
Connection con = DriverManager.getConnection (databaseURL, user, password);
System.out.println ("连接bjtdb数据库成功!");
Statement stmt = con.createStatement();
try{
ResultSet result = stmt.executeQuery(sqlStr);
line_list1.removeAll();
if (!result.next()) {
msgFrame f=new msgFrame("没有中间转乘车站。由于计算过于复杂,请手工查找。");
f.show();
} else {
msgFrame f=new msgFrame("列表显示了可行中间转乘车站。请选择。");
f.show();
};
stat_choice.removeAll();
//读出当前的记录
stat_choice.add(result.getString(1) );
//循环读出剩下的所有记录
while (result.next()) {
String returnInfo = result.getString(1);
System.out.println(returnInfo);
stat_choice.add(returnInfo);
} // end while
}
catch(SQLException ex){
System.out.println ("查询数据库数据失败!");
System.err.println("SQLException: " + ex.getMessage());
}
con.close();
}
catch(SQLException ex) {
System.out.println ("连接bjtdb数据库失败!");
System.err.println("SQLException: " + ex.getMessage());
return;
}
}// end void
void button2_actionPerformed(ActionEvent e) {
this.hide();
}
void button3_actionPerformed(ActionEvent e) {
/////////////////////////
//2,到换乘站路线: 查寻如何乘车可以从 “始 站” 到达 “转乘站”。
/////////////////////////
String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";
String databaseURL = "jdbc:odbc:bjtdb";
String user = "bjtdb";
String password = "bjtdb";
String sqlStr="SELECT DISTINCT line FROM stat_line WHERE stat='"+user_mystat1.getText()+"' and line in (SELECT line FROM stat_line where stat='"+stat_choice.getSelectedItem()+"')";
System.out.println(sqlStr);
try {
Class.forName (driverName);
System.out.println ("成功加载JDBC-ODBC驱动程序!");
}
catch (java.lang.ClassNotFoundException ex) {
System.out.println ("加载JDBC-ODBC驱动程序失败!");
System.out.println (ex.getMessage ());
return;
}
try {
Connection con = DriverManager.getConnection (databaseURL, user, password);
System.out.println ("连接bjtdb数据库成功!");
Statement stmt = con.createStatement();
try{