📄 guestcheckinframe.java
字号:
}
/**
* This method initializes roomPriceTextField
*
* @return javax.swing.JTextField
*/
private JTextField getRoomPriceTextField() {
if (roomPriceTextField == null) {
roomPriceTextField = new JTextField();
roomPriceTextField.setEditable(false);
roomPriceTextField.setBounds(new java.awt.Rectangle(390, 76, 100,
30));
}
return roomPriceTextField;
}
/**
* This method initializes guestNameTextField
*
* @return javax.swing.JTextField
*/
private JTextField getGuestNameTextField() {
if (guestNameTextField == null) {
guestNameTextField = new JTextField();
guestNameTextField
.setBounds(new java.awt.Rectangle(140, 30, 90, 30));
}
return guestNameTextField;
}
/**
* This method initializes TextField
*
* @return javax.swing.JTextField
*/
private JTextField getTextField() {
if (guestIdTextField == null) {
guestIdTextField = new JTextField();
guestIdTextField
.setBounds(new java.awt.Rectangle(410, 30, 150, 30));
}
return guestIdTextField;
}
/**
* This method initializes guestCheckOutTimeTextField
*
* @return javax.swing.JTextField
*/
private JTextField getGuestCheckOutTimeTextField() {
if (guestCheckOutTimeTextField == null) {
guestCheckOutTimeTextField = new JTextField();
guestCheckOutTimeTextField.setBounds(new java.awt.Rectangle(410,
85, 150, 30));
}
return guestCheckOutTimeTextField;
}
/**
* This method initializes consumedTypeNameComboBox
*
* @return javax.swing.JComboBox
*/
private JComboBox getConsumedTypeNameComboBox() {
if (consumedTypeNameComboBox == null) {
consumedTypeNameComboBox = new JComboBox();
Vector v = getAllKindsOfConsumedType();
Iterator ite = v.iterator();
ConsumedTypeInfo ct = null;
while (ite.hasNext()) {
ct = (ConsumedTypeInfo) ite.next();
consumedTypeNameComboBox.addItem(ct.getConsumedTypeName()
.trim());
}
consumedTypeNameComboBox.setBounds(new java.awt.Rectangle(140, 140,
120, 30));
}
return consumedTypeNameComboBox;
}
/**
* This method initializes consumedIdTextField
*
* @return javax.swing.JTextField
*/
private JTextField getConsumedIdTextField() {
if (consumedIdTextField == null) {
consumedIdTextField = new JTextField();
consumedIdTextField.setEditable(false);
consumedIdTextField.setBounds(new java.awt.Rectangle(140, 195, 120,
30));
}
return consumedIdTextField;
}
/**
* This method initializes depositTextField
*
* @return javax.swing.JTextField
*/
private JTextField getDepositTextField() {
if (depositTextField == null) {
depositTextField = new JTextField();
depositTextField
.setBounds(new java.awt.Rectangle(410, 140, 100, 30));
}
return depositTextField;
}
// 新建消费记录
private boolean insertGuestConsumedInfo() {
boolean flag = false;
GuestConsumedInfo gci = null;
try {
long consumedId = Long.parseLong(consumedIdTextField.getText()
.trim());
String guestName = guestNameTextField.getText().trim();
String roomNumber = roomNumberTextField.getText().trim();
// 计算出消费时间并进行处理,不足半小时按照半小时计算,超过半小时按照一个小时计算
long guestId = Long.parseLong(guestIdTextField.getText());
String systemtime = new JLabelTime1()
.getCurrTime("yyyy-MM-dd HH:mm:ss");
String[] Intemp = systemtime.split(" ");
String[] Intemp1 = Intemp[0].split("-");
String[] Intemp2 = Intemp[1].split(":");
time.set(time.YEAR, Integer.parseInt(Intemp1[0]));
time.set(time.MONTH, Integer.parseInt(Intemp1[1]));
time.set(time.DATE, Integer.parseInt(Intemp1[2]));
time.set(time.HOUR_OF_DAY, Integer.parseInt(Intemp2[0]));
time.set(time.MINUTE, Integer.parseInt(Intemp2[1]));
time.set(time.SECOND, Integer.parseInt(Intemp2[2]));
long checkInTime = time.getTimeInMillis();
String guestCheckOutTime = guestCheckOutTimeTextField.getText()
.trim();
String[] temp = guestCheckOutTime.split(" ");
String[] temp1 = temp[0].split("-");
String[] temp2 = temp[1].split(":");
time.set(time.YEAR, Integer.parseInt(temp1[0]));
time.set(time.MONTH, Integer.parseInt(temp1[1]));
time.set(time.DATE, Integer.parseInt(temp1[2]));
time.set(time.HOUR_OF_DAY, Integer.parseInt(temp2[0]));
time.set(time.MINUTE, Integer.parseInt(temp2[1]));
time.set(time.SECOND, Integer.parseInt(temp2[2]));
long checkOutTime = time.getTimeInMillis();
long numbertemp = (checkOutTime - checkInTime) / 1000l;
if (numbertemp < (long) (1800l)) {
JOptionPane.showMessageDialog(null, "消费时间不足半小时,不能开房", "提示信息",
JOptionPane.YES_OPTION);
} else {
int numberhour = (int) (numbertemp / 3600);
int numberminute = (int) (numbertemp % 3600) / 60;
int numbersecond = (int) (numbertemp % 3600) % 60;
String strhour = null;
String strminute = null;
String strsecond = null;
numberhour = numberhour % 24;
if (numberhour < 10) {
strhour = "0" + String.valueOf(numberhour);
} else {
strhour = String.valueOf(numberhour);
}
if (numberminute < 10) {
strminute = "0" + String.valueOf(numberminute);
} else {
strminute = String.valueOf(numberminute);
}
if (numbersecond < 10) {
strsecond = "0" + String.valueOf(numbersecond);
} else {
strsecond = String.valueOf(numbersecond);
}
// 消费时间是String类型,格式进行处理,不能超过24小时,如例:04:45:25
String consumedTime = strhour + ":" + strminute + ":"
+ strsecond;
double consumedtime = (double) numberhour;
if (numberminute < 30) {
if (numberminute == 0) {
if (numbersecond > 0) {
consumedtime = (double) numberhour + 0.5;
}
} else {
consumedtime = (double) numberhour + 0.5;
}
} else {
consumedtime = (double) numberhour + 1;
}
// 商品消费额初始值为0
double goodsConsumedMoney = 0;
String consumedTypeName = consumedTypeNameComboBox
.getSelectedItem().toString().trim();
// 押金只能为整数
int deposit = Integer.parseInt(depositTextField.getText()
.trim());
double rebate = getRebate(consumedTypeName);
// 房间费用 = 折扣比例 * 处理过的消费时间 * 房间每小时费用
int roomMoney = (int) (rebate * consumedtime * Integer
.parseInt(roomPriceTextField.getText().trim()));
// 总费用 = 房间费用 + 商品消费额
double fee = roomMoney + goodsConsumedMoney;
rebateTextField.setText(String.valueOf(rebate));
feeTextField.setText(String.valueOf(roomMoney));
gci = new GuestConsumedInfo(consumedId, guestName, roomNumber,
guestId, systemtime, guestCheckOutTime, consumedTime,
goodsConsumedMoney, roomMoney, consumedTypeName,
deposit, rebate, fee);
// 向数据库里新增一条消费记录
flag = new GuestConsumedDao().insertGuestConsumedInfo(gci);
if (flag) {
CheckInTimeLabel.setVisible(false);
gcitLabel.setText(systemtime);
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
return flag;
}
// 通过消费类型名称取得相应的折扣比例
private double getRebate(String consumedTypeName) {
double rebate = new ConsumedTypeSettingDao()
.getRebate(consumedTypeName);
return rebate;
}
/**
* This method initializes rebateTextField
*
* @return javax.swing.JTextField
*/
private JTextField getRebateTextField() {
if (rebateTextField == null) {
rebateTextField = new JTextField();
rebateTextField.setBounds(new java.awt.Rectangle(30, 405, 90, 30));
rebateTextField.setEditable(false);
}
return rebateTextField;
}
/**
* This method initializes feeTextField
*
* @return javax.swing.JTextField
*/
private JTextField getFeeTextField() {
if (feeTextField == null) {
feeTextField = new JTextField();
feeTextField.setBounds(new java.awt.Rectangle(140, 405, 90, 30));
feeTextField.setEditable(false);
}
return feeTextField;
}
// 通过房间号取得相应的房间信息
private static Room getARoom(String value) {
Room r = null;
r = new RoomSettingDao().getARoom(value);
return r;
}
// 取得所有的消费类型信息
private Vector getAllKindsOfConsumedType() {
Vector v = new ConsumedTypeSettingDao().getConsumedTypeInfo();
return v;
}
// 通过房间号更新相应的房间信息
private boolean updateRoomInfo(Room value) {
boolean flag = false;
flag = new RoomSettingDao().updateRoomInfo(value);
return flag;
}
/**
* This method initializes escButton
*
* @return javax.swing.JButton
*/
private JButton getEscButton() {
if (escButton == null) {
escButton = new JButton();
escButton.setBounds(new java.awt.Rectangle(300, 405, 90, 30));
escButton.setText("退出");
escButton.addActionListener(this);
}
return escButton;
}
public void actionPerformed(ActionEvent e) {
JButton eventbutton = (JButton) e.getSource();
if (eventbutton.getText().trim().equals("退出")) {
this.setVisible(false);
// 关闭窗口时,清空可编辑区域
this.guestNameTextField.setText("");
this.guestIdTextField.setText("");
this.depositTextField.setText("");
this.dispose();
MainFrame.getInstance().refresh();
}
if (eventbutton.getText().trim().equals("开房确定"))
// one 表示每次打开该窗口只能成功开房一次
if (checkInputValue()) {
Room r = getARoom(roomNumberTextField.getText().trim());
if (r.getRoomStatement().trim().equals("预订")) {
new ReservationDao().deleteReservation(r.getRoomStatement()
.trim());
}
r.setRoomStatement("占用");
r.setConsumedId(Long.parseLong(consumedIdTextField.getText()));
if (insertGuestConsumedInfo() && updateRoomInfo(r)) {
okbutton.setEnabled(false);
JOptionPane.showMessageDialog(null, "开房已成功", "提示信息",
JOptionPane.WARNING_MESSAGE);
} else {
}
}
}
// 该窗口所有输入信息的约束
private boolean checkInputValue() {
Check check = new Check();
if (check.checkInputIsNull(guestNameTextField.getText())) {
JOptionPane.showMessageDialog(null, "宾客姓名不能为空", "提示信息",
JOptionPane.WARNING_MESSAGE);
guestNameTextField.requestFocus();
return false;
}
if (check.checkIsContainNumber(guestNameTextField.getText().trim())) {
JOptionPane.showMessageDialog(null, "宾客姓名不能包含数字", "提示信息",
JOptionPane.WARNING_MESSAGE);
guestNameTextField.requestFocus();
return false;
}
if (check.checkIdCard(guestIdTextField.getText().trim())) {
JOptionPane.showMessageDialog(null, "宾客身份证号码不合法,必须是18位数字", "提示信息",
JOptionPane.WARNING_MESSAGE);
guestIdTextField.requestFocus();
return false;
}
if (check.checkInputIsNull(guestCheckOutTimeTextField.getText())) {
JOptionPane.showMessageDialog(null, "结账时间不能为空", "提示信息",
JOptionPane.WARNING_MESSAGE);
guestCheckOutTimeTextField.requestFocus();
return false;
}
if (!check.checkDateFormatIsLegal(guestCheckOutTimeTextField.getText())) {
JOptionPane.showMessageDialog(null, "结账时间只能是2008-03-17 00:12:25格式",
"提示信息", JOptionPane.WARNING_MESSAGE);
guestCheckOutTimeTextField.requestFocus();
return false;
}
if (check.checkInputIsNull(depositTextField.getText().trim())) {
JOptionPane.showMessageDialog(null, "押金不能为空", "提示信息",
JOptionPane.WARNING_MESSAGE);
depositTextField.requestFocus();
return false;
}
if (!check.checkIsContainCharactor(depositTextField.getText().trim())) {
JOptionPane.showMessageDialog(null, "押金不能包含有字母", "提示信息",
JOptionPane.WARNING_MESSAGE);
depositTextField.requestFocus();
return false;
}
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -