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

📄 checkinpreorderpanel.java

📁 酒店管理软件的源代码
💻 JAVA
字号:
import javax.swing.*;
import java.awt.*;
import java.sql.*;
import javax.swing.border.*;
import java.awt.event.*;
import java.util.ArrayList;

public class CheckInPreorderPanel extends JPanel
{
  public CheckInPreorderPanel(MainFrame parent)
  {
    this.parent = parent;
    labels[MainFrame.NAME] = new JLabel("姓 名:");
    labels[MainFrame.ID] = new JLabel("证件号:");
    labels[MainFrame.HOUSE_NUM] = new JLabel("房 号:");
    labels[MainFrame.TYPE] = new JLabel("类 别:");
    labels[MainFrame.TIME] = new JLabel("时 间:");
    labels[MainFrame.MONEY] = new JLabel("住宿费:");
    for (int i = 0; i < labels.length; i++)
      labels[i].setFont(new Font("Serif", Font.BOLD, 16));
    for (int i = 0; i < checkInPreorderTextFields.length; i++)
      checkInPreorderTextFields[i] = new JTextField(10);
    setLayout(new GridBagLayout());
    GridBagConstraints constraints = new GridBagConstraints();
    constraints.fill = GridBagConstraints.NONE;
    constraints.anchor = GridBagConstraints.EAST;
    constraints.weightx = 0;
    constraints.weighty = 0;

    add(this, labels[MainFrame.NAME], constraints, 0, 0, 1, 1);
    add(this, labels[MainFrame.ID], constraints, 0, 1, 1, 1);
    add(this, labels[MainFrame.HOUSE_NUM], constraints, 0, 2, 1, 1);
    add(this, labels[MainFrame.TYPE], constraints, 0, 3, 1, 1);
    add(this, labels[MainFrame.TIME], constraints, 0, 4, 1, 1);

    add(this, checkInPreorderTextFields[MainFrame.NAME], constraints, 1, 0, 1, 1);
    add(this, checkInPreorderTextFields[MainFrame.ID], constraints, 1, 1, 1, 1);
    add(this, checkInPreorderTextFields[MainFrame.HOUSE_NUM], constraints, 1, 2, 1, 1);
    add(this, checkInPreorderTextFields[MainFrame.TYPE], constraints, 1, 3, 1, 1);
    add(this, checkInPreorderTextFields[MainFrame.TIME], constraints, 1, 4, 1, 1);

    Border etched = BorderFactory.createEtchedBorder();
    Border titled = BorderFactory.createTitledBorder(etched, "住房类型");

    JScrollPane scrollPane = new JScrollPane(houseTypeComboBox);
    scrollPane.setBorder(titled);
    JPanel panel = new JPanel();
    panel.add(scrollPane);
    add(this, panel, constraints, 2, 2, 1, 2);

    titled = BorderFactory.createTitledBorder(etched, "空闲房号");
    scrollPane = new JScrollPane(houseNumComboBox);
    scrollPane.setBorder(titled);
    panel = new JPanel();
    panel.add(scrollPane);
    add(this, panel, constraints, 2, 0, 1, 2);
    CheckInButton = new JButton("租出");
    CheckInButton.setToolTipText("登记并入住酒店");
    CheckInButton.setActionCommand("租出");
    add(this, CheckInButton, constraints, 0, 5, 1, 1);

    preorderButton = new JButton("预  定");
    preorderButton.setToolTipText("预定房间");
    preorderButton.setActionCommand("预定");
    add(this, preorderButton, constraints, 1, 5, 1, 1);

    panel = new JPanel();
    panel.setLayout(new BorderLayout());
    panel.add(addRadioButton("未预定的客户", false), BorderLayout.NORTH);
    panel.add(addRadioButton("已预定的客户", true), BorderLayout.SOUTH);
    add(this, panel, constraints, 2, 4, 1, 2);

    CheckInButton.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent event)
      {
        checkInOrPreOrder(CheckInButton);
      }
    });
    preorderButton.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent event)
      {
        checkInOrPreOrder(preorderButton);
      }
    });
    houseTypeComboBox.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent event)
      {
        checkInPreorderTextFields[MainFrame.TYPE].setText( (String) houseTypeComboBox.
                                        getSelectedItem());
        updatehouseNumComboBox();
      }
    });
    houseNumComboBox.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent event)
      {
        checkInPreorderTextFields[MainFrame.HOUSE_NUM].setText( (String) houseNumComboBox.
                                        getSelectedItem());
        if(preordered)
        {
          checkInPreorderTextFields[MainFrame.NAME].setText("");
          checkInPreorderTextFields[MainFrame.ID].setText("");
          try
          {
            ResultSet rs = getParentStatement().executeQuery(
                "select 姓名, 身份证号 from 客户, 酒店房 where 客户.房号 = '" +
                checkInPreorderTextFields[MainFrame.HOUSE_NUM].getText()
                + "' and 客户.房号 = 酒店房.房号 and 酒店房.状态 = '预定'");
            if(rs.next())
            {
              checkInPreorderTextFields[MainFrame.NAME].setText(rs.getString("姓名"));
              checkInPreorderTextFields[MainFrame.ID].setText(rs.getString("身份证号"));
            }
            rs.close();
          }
          catch(SQLException e)
          {
            e.printStackTrace();
            showMessage("获取数据失败!");
          }
        }
      }
    });
    java.sql.Date date = new java.sql.Date(new java.util.Date().getTime());
    checkInPreorderTextFields[MainFrame.TIME].setText(date.toString());
    updatehouseTypeComboBox();
  }

  private void checkInOrPreOrder(JButton button)
  {
    if (!checkInPreorderTextFields[MainFrame.ID].getText().equals("")
        && !checkInPreorderTextFields[MainFrame.HOUSE_NUM].getText().equals(""))
    {
      try
      {
        if(!preordered) //没有预定的客户
        {
          parent.stat.addBatch("update 酒店房 set 状态 = '" +
                        button.getActionCommand()
                        + "' where 房号 = '" +
                        checkInPreorderTextFields[MainFrame.HOUSE_NUM].getText() +
                        "'");
          parent.stat.addBatch("insert into 客户 values('" +
                        checkInPreorderTextFields[MainFrame.NAME].getText() +
                        "', '" +
                        checkInPreorderTextFields[MainFrame.ID].getText() +
                        "', '"
                        +
                        checkInPreorderTextFields[MainFrame.HOUSE_NUM].getText() +
                        "', '" +
                        checkInPreorderTextFields[MainFrame.TIME].getText() +
                        "')");
          parent.stat.executeBatch();
          showMessage("用户:" + checkInPreorderTextFields[MainFrame.NAME].getText() +
                             " 的 "+ button.getActionCommand() + " 事宜处理完毕!");
          checkInPreorderTextFields[MainFrame.NAME].setText("");
          checkInPreorderTextFields[MainFrame.ID].setText("");
          updatehouseNumComboBox();
        }
        else //预定的客户
        {
          if(button.getActionCommand().equals("租出"))
          {
            java.sql.Date date = new java.sql.Date(new java.util.Date().getTime());
            parent.stat.addBatch("update 酒店房 set 状态 = '租出' where 房号 = '" +
                          checkInPreorderTextFields[MainFrame.HOUSE_NUM].
                          getText() + "'");
            parent.stat.addBatch("update 客户 set 入住日期 = '" + date.toString() + "' where 身份证号 = '"
                          + checkInPreorderTextFields[MainFrame.ID].getText() +"'");
            parent.stat.executeBatch();
            showMessage("用户:" +
                        checkInPreorderTextFields[MainFrame.NAME].getText() +
                        " 的 预定转正式租用 事宜处理完毕!");
          }
          else
          {
            parent.stat.addBatch("delete from 客户 where 身份证号 = '"
                          + checkInPreorderTextFields[MainFrame.ID].getText() +
                          "'");
            parent.stat.addBatch("update 酒店房 set 状态 = '空闲' where 房号 = '" +
                          checkInPreorderTextFields[MainFrame.HOUSE_NUM].
                          getText() + "'");
            parent.stat.executeBatch();
            showMessage("用户:" +
                        checkInPreorderTextFields[MainFrame.NAME].getText() +
                        " 的 取消预定 事宜处理完毕!");
            checkInPreorderTextFields[MainFrame.NAME].setText("");
            checkInPreorderTextFields[MainFrame.ID].setText("");
            updatehouseNumComboBox();
          }
        }
      }
      catch (SQLException e)
      {
        e.printStackTrace();
        parent.showWarningMessage("无法更新数据库,可能有重名的ID号!\n");
      }
    }
    else
    {
      StringBuffer messageBuf = new StringBuffer();
      if(checkInPreorderTextFields[MainFrame.NAME].getText().equals(""))
        messageBuf.append("用户的ID号不能为空!");
      if(checkInPreorderTextFields[MainFrame.HOUSE_NUM].getText().equals(""))
        messageBuf.append("没有合适的住房!");
      parent.showWarningMessage(messageBuf.toString());
    }
  }

  public void updatehouseNumComboBox()
  {
    try
    {
      if (parent.stat == null)
        return;
      String type = checkInPreorderTextFields[MainFrame.TYPE].getText();
      if (houseNumComboBox.getItemCount() != 0)
      {
        houseNumComboBox.removeAllItems();
      }
      ResultSet rs;
      if (preordered == false)
        rs = parent.stat.executeQuery(
            "SELECT 房号 FROM 酒店房 WHERE 状态='空闲' AND 类别 = '"
            + type + "'");
      else
        rs = parent.stat.executeQuery(
            "SELECT 房号 FROM 酒店房 WHERE 状态='预定' AND 类别 = '"
            + type + "'");
      ArrayList items = new ArrayList();
      while (rs.next())
      {
        items.add(rs.getString("房号"));
      }
      rs.close();
      for(int i = 0;i<items.size();i++)
        houseNumComboBox.addItem((String)items.get(i));
      parent.repaint();
    }
    catch (SQLException e)
    {
      e.printStackTrace();
    }
  }

  public void updatehouseTypeComboBox()
  {
    try
    {
      System.out.println(parent.stat);
      if(parent.stat == null)
        return;
      ResultSet rs = parent.stat.executeQuery("select 酒店类别 from 酒店房类别");
      if (houseTypeComboBox.getItemCount() != 0)
      {
        houseTypeComboBox.removeAllItems();
      }
      ArrayList types = new ArrayList();
      while (rs.next())
      {
        types.add(rs.getString("酒店类别"));
      }
      rs.close();
      for (int i = 0; i < types.size(); i++)
      {
        houseTypeComboBox.addItem( (String) types.get(i));
      }
      parent.repaint();
    }
    catch(SQLException e)
    {
      e.printStackTrace();
    }
  }
  public void clear()
  {
    if(houseTypeComboBox.getItemCount() != 0)
      houseTypeComboBox.removeAllItems();
    if(houseNumComboBox.getItemCount() != 0)
      houseNumComboBox.removeAllItems();
    for(int i = 0;i<checkInPreorderTextFields.length - 1;i++)
      checkInPreorderTextFields[i].setText("");
  }

  private void add(Container parent, Component c,
                   GridBagConstraints constraints, int x,
                   int y, int w, int h)
  {
    constraints.gridx = x;
    constraints.gridy = y;
    constraints.gridwidth = w;
    constraints.gridheight = h;
    parent.add(c, constraints);
  }
  private void showMessage(String message)
  {
    parent.showMessage(message);
  }
  private JRadioButton addRadioButton(String title, final boolean isSelected)
  {
    JRadioButton button = new JRadioButton(title, !isSelected);
    radioButtonGroup.add(button);
    button.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent event)
      {
        preordered = isSelected;
        updatehouseNumComboBox();
        if(preordered)
          preorderButton.setText("取消预定");
        else
          preorderButton.setText("预  定");
      }
    });
    return button;
  }
  private Statement getParentStatement()
  {
    return parent.stat;
  }

  private JComboBox houseTypeComboBox = new JComboBox();
  private JComboBox houseNumComboBox = new JComboBox();
  private boolean preordered = false;
  private ButtonGroup radioButtonGroup = new ButtonGroup();
  private final MainFrame parent;
  private JLabel[] labels = new JLabel[6];;
  private JTextField[] checkInPreorderTextFields = new JTextField[5];
  private JButton CheckInButton;
  private JButton preorderButton;
}

⌨️ 快捷键说明

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