1.自动售货机有3个投币孔,分别为1元、5元和10元。 2.售货共有3种饮料供选择,分别为汽水、花茶和咖啡。 3.如投币总额超过销售价格,将可由退币钮找回余额。 4.投币总额或当前值显示在7段数码管上。 5.投币值等于或大于12元时,汽水指示灯亮,表示只可选择汽水。 6.投币值等于或大于15元时,汽水和花茶指示灯亮,表示只可选择汽水和花茶。 7.投币值等于或大于20元时,汽水、花茶和咖啡指示灯亮,表示3种均可选择。 8.按下要饮用的饮料按钮,则相对应的指示灯开始闪烁,3s后自动停止,表示饮料 已经掉出。 9.动作停止后按退币钮,可以退回余额,退回金额如果大于10元,则先退10元再退1 元,如果小于10元则直接退1元的。
时间: 2024-02-23 14:02:31 浏览: 40
这是一道比较典型的程序设计题目,需要设计一个自动售货机程序。以下是我的解决方案:
1. 首先,定义一个类来表示自动售货机,其中包含以下属性:
- total:投币总额
- balance:余额
- selected:已选择的饮料
- price:饮料的价格
- canSelect:可选择的饮料
2. 定义一个方法来接收投币,该方法将投币值加到总投币额度上,并更新余额。
3. 定义一个方法来选择饮料,该方法检查投币总额和可选饮料,并将已选择的饮料和价格保存到selected和price属性中。
4. 定义一个方法来退币,该方法计算需要退回的金额,并将余额清零。
5. 定义一个方法来检查当前投币值和可选饮料,更新canSelect属性。
6. 定义一个方法来掉出饮料,该方法检查已选择的饮料和余额是否足够,如果满足条件,则掉出饮料,并更新余额。
以下是Java代码示例:
```java
public class VendingMachine {
private int total; // 投币总额
private int balance; // 余额
private String selected; // 已选择的饮料
private int price; // 饮料价格
private String canSelect; // 可选饮料
public VendingMachine() {
total = 0;
balance = 0;
selected = "";
price = 0;
canSelect = "";
}
public void insertCoin(int coin) {
total += coin;
balance += coin;
updateCanSelect();
}
public void selectDrink(String drink) {
if (total >= price && canSelect.contains(drink)) {
selected = drink;
balance = total - price;
}
}
public void returnCoins() {
int coinsToReturn = balance;
balance = 0;
if (coinsToReturn >= 10) {
System.out.println("Returned 10 yuan");
coinsToReturn -= 10;
}
if (coinsToReturn > 0) {
System.out.println("Returned " + coinsToReturn + " yuan");
}
total = 0;
selected = "";
price = 0;
canSelect = "";
}
public void dropDrink() {
if (selected.equals("soda") && balance >= 3) {
System.out.println("Dropping soda");
balance -= 3;
} else if (selected.equals("tea") && balance >= 5) {
System.out.println("Dropping tea");
balance -= 5;
} else if (selected.equals("coffee") && balance >= 8) {
System.out.println("Dropping coffee");
balance -= 8;
}
total = balance;
selected = "";
price = 0;
updateCanSelect();
}
private void updateCanSelect() {
if (total >= 20) {
canSelect = "soda,tea,coffee";
price = 8;
} else if (total >= 15) {
canSelect = "soda,tea";
price = 5;
} else if (total >= 12) {
canSelect = "soda";
price = 3;
} else {
canSelect = "";
price = 0;
}
}
}
```
这个示例代码实现了自动售货机的基本功能,但还有很多可以改进的地方。例如,可以将饮料和价格定义为枚举类型,以便更好地管理它们。此外,可以添加更多的检查和错误处理,以增强程序的健壮性。