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

📄 checkoutpanel.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 CheckOutPanel extends JPanel
{
  public CheckOutPanel(MainFrame parent)
  {
    formater = java.text.NumberFormat.getNumberInstance();
    formater.setMaximumFractionDigits(2);

    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("住宿费:");

    labels[MainFrame.TIME].setToolTipText("入住的时间");
    labels[MainFrame.NAME].setToolTipText("可以在此输入名字来搜索");
    labels[MainFrame.ID].setToolTipText("可以在此输入ID号来搜索");
    labels[MainFrame.HOUSE_NUM].setToolTipText("可以在此输入房号来搜索");
    labels[MainFrame.TYPE].setToolTipText("入住房间的类别");
    labels[MainFrame.MONEY].setToolTipText("用户到目前为止应付的金额");
    for (int i = 0; i < labels.length; i++)
      labels[i].setFont(new Font("Serif", Font.BOLD, 16));
    this.parent = parent;
    for (int i = 0; i < checkOutTextFields.length; i++)
      checkOutTextFields[i] = new JTextField(20);
    checkOutTextFields[MainFrame.TIME].setEditable(false);
    checkOutTextFields[MainFrame.MONEY].setEditable(false);
    checkOutTextFields[MainFrame.TYPE].setEditable(false);
    checkOutButton.setEnabled(false);
    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, labels[MainFrame.MONEY], constraints, 0, 5, 1, 1);
    constraints.anchor = GridBagConstraints.WEST;

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

    final JButton serchButton = new JButton("搜索");
    serchButton.setToolTipText("搜索符合的记录");
    add(this, serchButton, constraints, 0, 6, 1, 1);

    checkOutButton.setToolTipText("结账并清除相应的记录");
    add(this, checkOutButton, constraints, 1, 6, 1, 1);
    prevousButton.setToolTipText("上一条记录");
    nextButton.setToolTipText("下一条记录");
    nextButton.setEnabled(false);
    prevousButton.setEnabled(false);
    constraints.anchor = GridBagConstraints.EAST;
    add(this, prevousButton, constraints, 2, 6, 1, 1);
    add(this, nextButton, constraints, 3, 6, 1, 1);

    serchButton.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent event)
      {
        try
        {
          StringBuffer sqlStringBuf = new StringBuffer("select 姓名, 身份证号, 客户.房号, 入住日期, 类别 from 客户, 酒店房 where 客户.房号 = 酒店房.房号 and 酒店房.状态 = '租出'");
          if(!checkOutTextFields[MainFrame.NAME].getText().equals(""))
            sqlStringBuf.append(" and 姓名 like '"+ checkOutTextFields[MainFrame.NAME].getText().replace('*', '%').replace('?', '_') + "'");
          if(!checkOutTextFields[MainFrame.ID].getText().equals(""))
            sqlStringBuf.append(" and 身份证号 like '"+ checkOutTextFields[MainFrame.ID].getText().replace('*', '%').replace('?', '_') + "'");
          if(!checkOutTextFields[MainFrame.HOUSE_NUM].getText().equals(""))
            sqlStringBuf.append(" and 客户.房号 like '"+ checkOutTextFields[MainFrame.HOUSE_NUM].getText().replace('*', '%').replace('?', '_') + "'");
          System.out.println(sqlStringBuf.toString());
          ResultSet rs = getParentStatement().executeQuery(sqlStringBuf.toString());
          if(array.size() != 0)
            array.clear();
          while(rs.next())
          {
            String [] record = new String[5];
            record[0] = rs.getString("姓名");
            record[1] = rs.getString("身份证号");
            record[2] = rs.getString("房号");
            record[3] = rs.getString("类别");
            record[4] = rs.getDate("入住日期").toString();
            array.add(record);
          }
          rs.close();
          rs = getParentStatement().executeQuery("select * from 酒店房类别");
          if(!priceTable.isEmpty())
            priceTable.clear();
          while(rs.next())
          {
            priceTable.put(rs.getString("酒店类别"), new Double(rs.getDouble("价格")));
          }
          for(int i = 0;i<checkOutTextFields.length;i++)
            checkOutTextFields[i].setText("");
          prevousButton.setEnabled(false);
          if(array.size() < 2)
            nextButton.setEnabled(false);
          else
            nextButton.setEnabled(true);
          currentIndex = 0;
          if(array.size() > 0)
          {
            showRecord();
            checkOutButton.setEnabled(true);
          }
        }
        catch(SQLException e)
        {
          e.printStackTrace();
        }
      }
    });
    checkOutButton.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent event)
      {
        try
        {
          getParentStatement().addBatch("delete from 客户 where 身份证号 = '" +
                        ((String[]) array.get(currentIndex))[MainFrame.ID] +"'");
          getParentStatement().addBatch("update 酒店房 set 状态 = '空闲' where 房号 = '" +
                        ((String[]) array.get(currentIndex))[MainFrame.HOUSE_NUM] + "'");
          getParentStatement().executeBatch();
          updateCheckInPreorderPanel();
          for(int i = 0;i<checkOutTextFields.length;i++)
            checkOutTextFields[i].setText("");
          prevousButton.setEnabled(false);
          nextButton.setEnabled(false);
          checkOutButton.setEnabled(false);
          showMessage("手续办理完毕");
        }
        catch(SQLException e)
        {
          e.printStackTrace();
          showMessage("数据库更新失败!\n" + e.toString());
        }
      }
    });
    prevousButton.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent event)
      {
        currentIndex--;
        showRecord();
        nextButton.setEnabled(true);
        if(currentIndex == 0)
          prevousButton.setEnabled(false);
      }
    });
    nextButton.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent event)
      {
        currentIndex++;
        showRecord();
        prevousButton.setEnabled(true);
        if(currentIndex >= array.size() - 1)
          nextButton.setEnabled(false);
      }
    });
  }
  private void updateCheckInPreorderPanel()
  {
    parent.CheckInPreorderPanelInstance.updatehouseNumComboBox();
  }
  private void showRecord()
  {
    System.out.println(currentIndex + "currentIndex");
    for(int i = 0;i<5;i++){
      checkOutTextFields[i].setText(((String[])array.get(currentIndex))[i]);
    System.out.print(((String[])array.get(currentIndex))[i] + "\n");}
    java.sql.Date date = Date.valueOf(checkOutTextFields[MainFrame.TIME].getText());
    double price = ((Double)priceTable.get(((String[])array.get(currentIndex))[MainFrame.TYPE])).doubleValue();
    int day = (int)((new java.sql.Date(new java.util.Date().getTime()).getTime() - date.getTime()) / ONE_DAY);
    StringBuffer outStrBuffer = new StringBuffer(formater.format(price * day == 0 ? 0.5 * price : price * day) + " 元 (");
    if(day == 0)
      outStrBuffer.append("不足一天,算半天。");
    outStrBuffer.append(formater.format(price) + "元/天)");
            checkOutTextFields[MainFrame.MONEY].setText(outStrBuffer.toString());
  }
  private void showMessage(String message)
  {
    parent.showMessage(message);
  }

  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 Statement getParentStatement()
  {
    return parent.stat;
  }

  private java.util.Hashtable priceTable = new java.util.Hashtable();
  private JButton prevousButton = new JButton("上一条");
  private JButton nextButton = new JButton("下一条");
  private final JButton checkOutButton = new JButton("结账");
  private ArrayList array = new ArrayList();
  private final MainFrame parent;
  private int currentIndex = 0;
  private JLabel[] labels = new JLabel[6];;
  private JTextField [] checkOutTextFields = new JTextField[6];
  private java.text.NumberFormat formater;

  public static long ONE_DAY = 86400000;
}

⌨️ 快捷键说明

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