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

📄 ticketbook.java~72~

📁 航班查询与订票系统 用Java与sqlserver2000来编写一个航班查询与订票系统
💻 JAVA~72~
📖 第 1 页 / 共 2 页
字号:
package flight.ticketbook;

import flight.assist.*;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.util.*;
import javax.swing.border.*;

public class TicketBook
    extends JFrame
    implements ActionListener, ItemListener {
  DataBaseManager dbManager = DataBaseManager.getInstance();

  private String[] string = new String[22];
  private JComboBox boxyear = new JComboBox();
  private JComboBox boxyear1 = new JComboBox();
  private JComboBox boxyear2 = new JComboBox();
  private JComboBox boxmonth = new JComboBox();
  private JComboBox boxmonth1 = new JComboBox();
  private JComboBox boxmonth2 = new JComboBox();
  private JComboBox boxday1 = new JComboBox();
  private JComboBox boxday2 = new JComboBox();
  private JComboBox boxday = new JComboBox();

  //private JComboBox boxadult=new JComboBox();
  private String[] year = {
      "2006", "2007", "2008"};
  private String[] adult = {
      " 成人 ", " 儿童 ", " 学生 "};
  private String[] month = {
      "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"};
  private String[] day = {
      "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12",
      "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24",
      "25", "26", "27", "28", "29", "30", "31"};

  private JTextField jbtflight = new JTextField(10);
  private JTextField jbtflight1 = new JTextField(10);
  private JTextField jbtflight2 = new JTextField(10);
  private JRadioButton jbrsingle, jbrdouble, jbrmultiple, jbradult, jbrchild;
  private ButtonGroup jbr = new ButtonGroup();
  private ButtonGroup jbr1 = new ButtonGroup();
  private JButton jbtbutton = new JButton("机 票 预 定");
  private JButton jbtreturn = new JButton("返回主页面");
  Color color = new Color(230, 230, 255);
  public static boolean open = false;

  //equals to p0
  private JPanel s1, s2;
  private JLabel jblsecondflight = new JLabel("    第二航班号");
  private JLabel jblreturnflight = new JLabel("       返回航班");
  private SeatInfo seatinformation = new SeatInfo();
  int flag = 0;
  int pflag = 0;

  String startplace = new String();
  String endplace = new String();

  public TicketBook() {
    string[5] = "单程";
    //	string[12]="single";
    for (int i = 0; i < year.length; i++)
      boxyear.addItem(year[i]);
    for (int i = 0; i < year.length; i++)
      boxyear1.addItem(year[i]);
    for (int i = 0; i < year.length; i++)
      boxyear2.addItem(year[i]);
    for (int i = 0; i < month.length; i++)
      boxmonth.addItem(month[i]);
    for (int i = 0; i < month.length; i++)
      boxmonth1.addItem(month[i]);
    for (int i = 0; i < month.length; i++)
      boxmonth2.addItem(month[i]);
    for (int i = 0; i < day.length; i++)
      boxday.addItem(day[i]);
    for (int i = 0; i < day.length; i++)
      boxday1.addItem(day[i]);
    for (int i = 0; i < day.length; i++)
      boxday2.addItem(day[i]);
      //	for(int i=0;i<adult.length;i++)
//			boxadult.addItem(adult[i]);
      //Panel for the return time
    JPanel p0 = new JPanel();
    p0.setVisible(false);
    display(p0);
    //p0.setBackground(color);
    p0.setLayout(new FlowLayout(FlowLayout.LEFT));
    p0.add(new JLabel("        返回日期"));
    p0.add(boxyear1);
    //boxyear1.setVisible(false);
    p0.add(new JLabel("年"));
    //	jbtmonth1.setHorizontalAlignment(JTextField.RIGHT);
    p0.add(boxmonth1);
    //	jbtday1.setHorizontalAlignment(JTextField.RIGHT);
    p0.add(new JLabel("月"));
    p0.add(boxday1);
    p0.add(new JLabel("日"));

    //Panel for multiple
    JPanel p1 = new JPanel();
    p1.setVisible(false);
    display1(p1);
    //p1.setBackground(color);
    p1.setLayout(new FlowLayout(FlowLayout.LEFT));
    p1.add(new JLabel("第二出发日期:"));
    p1.add(boxyear2);
    p1.add(new JLabel("年"));
    //	jbtmonth2.setHorizontalAlignment(JTextField.RIGHT);
    p1.add(boxmonth2);
    //	jbtday2.setHorizontalAlignment(JTextField.RIGHT);
    p1.add(new JLabel("月"));
    p1.add(boxday2);
    p1.add(new JLabel("日"));
    //Panel starttime

    JPanel p3 = new JPanel();
    //p3.setBackground(color);
    p3.setLayout(new FlowLayout(FlowLayout.LEFT));
    //JLabel starttime
    p3.add(new JLabel("第一出发日期:"));
    p3.add(boxyear);
    p3.add(new JLabel("年"));
    //	jbtmonth.setHorizontalAlignment(JTextField.RIGHT);
    //	jbtmonth.setText("12");
    p3.add(boxmonth);
    //	jbtday.setHorizontalAlignment(JTextField.RIGHT);

    p3.add(new JLabel("月"));
    p3.add(boxday);
    p3.add(new JLabel("日"));
    //Panel style
    JPanel p5 = new JPanel();
    //p5.setBackground(color);
    p5.setLayout(new FlowLayout(FlowLayout.LEFT));
    //style
    p5.add(new JLabel("机票类型:                 "));
    p5.add(jbrsingle = new JRadioButton("单程", true));
    p5.add(jbrdouble = new JRadioButton("往返", false));
    p5.add(jbrmultiple = new JRadioButton("联票   ", false));
    //	p5.add(boxadult);
    //jbrsingle.setBackground(color);
    //jbrdouble.setBackground(color);
    //jbrmultiple.setBackground(color);
    jbr.add(jbrsingle);
    jbr.add(jbrdouble);
    jbr.add(jbrmultiple);

    JPanel p6 = new JPanel();
    p6.setLayout(new FlowLayout(FlowLayout.LEFT));
    //p6.setBackground(color);
    p6.add(jbtbutton);
    p6.add(jbtreturn);
    JPanel p8 = new JPanel();
    //p8.setBackground(color);
    p8.setLayout(new FlowLayout(FlowLayout.LEFT));
    //the firstflight
    p8.add(new JLabel("第一航班号:   "));
    p8.add(jbtflight);
    p8.add(jblreturnflight);
    p8.add(jbtflight1);
    p8.add(jblsecondflight);
    p8.add(jbtflight2);
    jblsecondflight.setVisible(false);
    jbtflight1.setVisible(false);
    jbtflight2.setVisible(false);
    jblreturnflight.setVisible(false);
    JPanel p7 = new JPanel();
    //p7.setBackground(color);
    p7.setBorder(new MatteBorder(new ImageIcon("border.gif")));
    p7.setLayout(null);
    p7.add(p0);
    p7.add(p1);
    p7.add(p3);
    p7.add(p5);
    p7.add(p6);
    p7.add(p8);
    p3.reshape(50, 30, 350, 30);
    p0.reshape(50, 70, 350, 30);
    p1.reshape(50, 70, 350, 30);
    p8.reshape(50, 110, 350, 30);
    p5.reshape(50, 150, 350, 40);
    p6.reshape(120, 200, 250, 30);
    getContentPane().add(p7, BorderLayout.CENTER);
    getContentPane().setBackground(new Color(255, 255, 230));
    jbtbutton.addActionListener(this);
    jbtreturn.addActionListener(this);
    jbrsingle.addActionListener(this);
    jbrdouble.addActionListener(this);
    jbrmultiple.addActionListener(this);

    boxyear.addItemListener(this);
    boxyear1.addItemListener(this);
    boxyear2.addItemListener(this);
    boxmonth.addItemListener(this);
    boxmonth1.addItemListener(this);
    boxmonth2.addItemListener(this);

    this.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        TicketBook.this.setVisible(false);
        TicketBook.this.dispose();
      }
    }
    );
    setDisplayPresentTime();

    this.setSize(430, 300);
    this.setResizable(false);
    this.setTitle("国内机票实时速定");
  }

  //set panel//s1 for return
  public void display(JPanel p) {
    s1 = p;

  }

  //set label//s2 for multiple
  public void display1(JPanel p) {
    s2 = p;
  }

  String otherchoice = new String("");
  String dotherchoice = new String("");
  String motherchoice = new String("");
  boolean isFull = false;
  public void actionPerformed(ActionEvent e) {
    //book the ticket
    if (e.getSource() == jbtbutton) {
      int conditionSatisfied=0;
      if (jbrsingle.isSelected()) {
         conditionSatisfied=singleflight();
      }
      else if (jbrdouble.isSelected()) {
        conditionSatisfied=doubleflight();
      }
      else if (jbrmultiple.isSelected()) {
        JOptionPane.showMessageDialog(this, "联程订票功能尚未开通!",
                                      "提示信息", JOptionPane.WARNING_MESSAGE);
        return;
      }
      if(conditionSatisfied==1){
        ClientFrame clientFrame = new ClientFrame();
        //clientFrame.getContentPane().add(client.panel(string));
        clientFrame.initTextField(string);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); //屏幕大小
        clientFrame.setLocation( (d.width - clientFrame.getSize().width) /
                                2,
                                (d.height - clientFrame.getSize().height) /
                                2);
        clientFrame.show();
      }
    }
    if (e.getSource() == jbtreturn) {
      this.setVisible(false);
      this.dispose();
    }
    if (e.getSource() == jbrsingle) {
      string[11] = jbtflight1.getText().trim();
      //	string[12]="single";
      string[5] = "单程";
      s1.setVisible(false);
      s2.setVisible(false);
      jblsecondflight.setVisible(false);
      jbtflight1.setVisible(false);
      jblreturnflight.setVisible(false);
      jbtflight2.setVisible(false);
    }
    if (e.getSource() == jbrdouble) {
      //	string[12]="double";
      string[5] = "往返";
      s2.setVisible(false);
      s1.setVisible(true);
      jblreturnflight.setVisible(true);
      jbtflight1.setVisible(true);
      jblsecondflight.setVisible(false);
      jbtflight2.setVisible(false);
    }
    if (e.getSource() == jbrmultiple) {
      //	string[12]="multiple";
      string[5] = "联程";
      s1.setVisible(false);
      jblreturnflight.setVisible(false);
      jbtflight1.setVisible(false);
      s2.setVisible(true);
      jblsecondflight.setVisible(true);
      jbtflight2.setVisible(true);
    }
  }

  public int singleflight() {
    if (jbtflight.getText().trim().length() == 0) {
      JOptionPane.showMessageDialog(this, "航班号不能为空!",
                                    "错误信息", JOptionPane.ERROR_MESSAGE);
      return 0;
    }

    string[4] = jbtflight.getText().trim();
    String year1 = new String(boxyear.getSelectedItem().toString().trim());
    String month1 = new String(boxmonth.getSelectedItem().toString().trim());
    String day1 = new String(boxday.getSelectedItem().toString().trim());
    string[3] = year1 + month1 + day1;
    string[2] = year1 + "年" + month1 + "月" + day1 + "日";
    if (!this.isTimeValid(year1, month1, day1)) {
      JOptionPane.showMessageDialog(null, "对不起,不能预定以前的票了",
                                    "客户信息", JOptionPane.ERROR_MESSAGE);
      return 0;
    }

    ResultSet rs = dbManager.getResult("select * from flight where flight='" +
                                       string[4] + "'");
    try {
      if (!rs.next()) {
        JOptionPane.showMessageDialog(this, "没有第一航班号,请您重新查阅!",
                                      "错误信息", JOptionPane.ERROR_MESSAGE);
        jbtflight.setText("");
        return 0;
      }
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }

    if (!this.isFlightPresent(string[4], string[3])) {
      JOptionPane.showMessageDialog(null, "对不起,这一天没有这个航班",
                                    "客户信息", JOptionPane.ERROR_MESSAGE);
      jbtflight.setText("");
      return 0;
    }

    if (seatinformation.isFull(string[4], string[3])) {
      JOptionPane.showMessageDialog(this, "你要预定的航班已经满座!请您改选其它航班",
                                    "客户信息", JOptionPane.INFORMATION_MESSAGE);
      jbtflight.setText("");
      return 0;
    }
    String sql =
        "select start,destination,airFirm from flight where flight='" +
        string[4] + "'";
    ResultSet rs1 = dbManager.getResult(sql);
    try{
      if (rs1.next()) {
        startplace = rs1.getString(1).trim();
        endplace = rs1.getString(2).trim();
        string[6] = rs1.getString(3).trim();
      }
    }catch (Exception ex) {
        ex.printStackTrace();
    }

    string[0] = startplace;
    string[1] = endplace;

    string[8] = string[5] + "票";

    return 1;
  }

  //********************************************************************************************

   public int doubleflight() {
     int i=singleflight();
     if(i==0)return 0;
     if(jbtflight1.getText().trim().length() == 0){
       JOptionPane.showMessageDialog(this, "返程航班号不能为空!", "错误信息",
                                            JOptionPane.ERROR_MESSAGE);
       return 0;
     }
     string[11]=jbtflight1.getText().trim();
     String year2 = new String(boxyear1.getSelectedItem().toString().trim());
     String month2 = new String(boxmonth1.getSelectedItem().toString().trim());
     String day2 = new String(boxday1.getSelectedItem().toString().trim());
     string[10] = year2 + month2 + day2;

⌨️ 快捷键说明

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