ATM出钞程序可以用多种编程语言实现,这里提供一个用Python编写的简单示例:
```python
class ATM:
def __init__(self):
self.balance = 0
self.banknotes_count = [0, 0, 0, 0, 0] [20, 50, 100, 200, 500]
def deposit(self, banknotes_count):
for i, count in enumerate(banknotes_count):
self.balance += count * (20 if i == 0 else 50 if i == 1 else 100 if i == 2 else 200 if i == 3 else 500)
def withdraw(self, amount):
if amount > self.balance:
return [-1]
else:
for i in range(5, -1, -1):
if amount >= (1000 if i == 4 else 500 if i == 3 else 200 if i == 2 else 100 if i == 1 else 20)[i-1]:
amount -= (1000 if i == 4 else 500 if i == 3 else 200 if i == 2 else 100 if i == 1 else 20)[i-1]
self.banknotes_count[i-1] += 1
self.balance -= amount
return self.banknotes_count
示例使用
atm = ATM()
atm.deposit([0, 0, 1, 2, 1]) 存入1张100, 2张50, 1张200, 1张100
print(atm.withdraw(600)) 取出600
print(atm.withdraw(550)) 尝试取出550,但余额不足
```
这个程序定义了一个`ATM`类,包含存款和取款的方法。`deposit`方法用于增加ATM中的钞票数量,`withdraw`方法用于减少余额并返回取出的钞票数量。如果取款金额超过余额,则返回`[-1]`。
请注意,这只是一个简单的示例,实际的ATM系统会更复杂,包括密码验证、交易记录、并发处理等。