from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QMessageBox
class ChangeCalculatorApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('找零钱最佳组合')
layout = QVBoxLayout()
# 货品价格输入
self.label_price = QLabel('请输入货品价格 (R):')
layout.addWidget(self.label_price)
self.entry_price = QLineEdit()
layout.addWidget(self.entry_price)
# 顾客付款输入
self.label_payment = QLabel('请输入顾客付款 (P):')
layout.addWidget(self.label_payment)
self.entry_payment = QLineEdit()
layout.addWidget(self.entry_payment)
# 提交按钮
self.submit_button = QPushButton('计算找零')
self.submit_button.clicked.connect(self.calculate_change)
layout.addWidget(self.submit_button)
# 结果显示
self.result_label = QLabel('结果: ')
layout.addWidget(self.result_label)
self.setLayout(layout)
def calculate_change(self):
try:
# 获取输入
price = int(self.entry_price.text())
payment = int(self.entry_payment.text())
# 检查输入有效性
if price <= 0 or price > 100:
self.result_label.setText("结果: 货品价格无效(0 < R ≤ 100)")
return
if payment < price or payment > 100:
self.result_label.setText("结果: 顾客付款无效(R ≤ P ≤ 100)")
return
# 计算找零金额
change = payment - price
# 计算最佳找零组合
n50 = change // 50
change %= 50
n10 = change // 10
change %= 10
n5 = change // 5
n1 = change % 5
# 显示结果
self.result_label.setText(f"结果: 50元={n50}张, 10元={n10}张, 5元={n5}张, 1元={n1}张")
except ValueError:
self.result_label.setText("结果: 输入无效(请输入整数)")
if __name__ == '__main__':
app = QApplication([])
window = ChangeCalculatorApp()
window.show()
app.exec_()
浙公网安备 33010602011771号