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

📄 guestcheckinframe.java

📁 一个KTV管理系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	}

	/**
	 * 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 + -