?? checkinpreorderpanel.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 + -