用java实现跑腿买菜功能。输出所有蔬菜肉蛋类的信息:包括每种食材的类别、名称、单价、库存。 顾客买菜时,根据提示输入蔬菜瓜果类别来选购需要的食材,并根据提示输入购买数量。 购买完毕后输出顾客的订单信息,包括:订单号、订单明细、订单总额。
时间: 2023-06-24 20:04:48 浏览: 180
以下是一个简单的 Java 代码实现,其中使用了 HashMap 来存储食材信息,使用 Scanner 来接收用户输入:
```java
import java.util.*;
public class GroceryStore {
private static final Map<String, Map<String, Object>> inventory = new HashMap<>();
private static int orderNumber = 0;
static {
// 初始化库存
Map<String, Object> vegetables = new HashMap<>();
vegetables.put("name", "蔬菜");
vegetables.put("price", 2.0);
vegetables.put("stock", 100);
inventory.put("蔬菜", vegetables);
Map<String, Object> fruits = new HashMap<>();
fruits.put("name", "水果");
fruits.put("price", 3.0);
fruits.put("stock", 80);
inventory.put("水果", fruits);
Map<String, Object> meat = new HashMap<>();
meat.put("name", "肉类");
meat.put("price", 20.0);
meat.put("stock", 50);
inventory.put("肉类", meat);
Map<String, Object> eggs = new HashMap<>();
eggs.put("name", "蛋类");
eggs.put("price", 3.5);
eggs.put("stock", 120);
inventory.put("蛋类", eggs);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("欢迎来到跑腿买菜!");
while (true) {
System.out.println("请选择要购买的食材类别(输入 q 退出):");
System.out.println("1. 蔬菜");
System.out.println("2. 水果");
System.out.println("3. 肉类");
System.out.println("4. 蛋类");
String input = scanner.nextLine();
if (input.equals("q")) {
break;
}
int category = Integer.parseInt(input);
switch (category) {
case 1:
buy("蔬菜", scanner);
break;
case 2:
buy("水果", scanner);
break;
case 3:
buy("肉类", scanner);
break;
case 4:
buy("蛋类", scanner);
break;
default:
System.out.println("输入有误,请重新选择!");
}
}
}
private static void buy(String category, Scanner scanner) {
Map<String, Object> item = inventory.get(category);
System.out.println("您选择了 " + item.get("name") + ",单价为 " + item.get("price") + " 元,当前库存为 " + item.get("stock") + "。");
System.out.println("请输入购买数量:");
int quantity = Integer.parseInt(scanner.nextLine());
if (quantity > (int) item.get("stock")) {
System.out.println("库存不足,购买失败!");
return;
}
double price = (double) item.get("price") * quantity;
item.put("stock", (int) item.get("stock") - quantity);
orderNumber++;
System.out.println("订单号:" + orderNumber);
System.out.println("订单明细:" + item.get("name") + " x " + quantity + ",共计 " + price + " 元。");
}
}
```
这个程序中,我们首先使用一个 HashMap 来存储食材的信息,其中每个食材对应一个内部的 HashMap,存储该食材的名称、单价和库存。然后在程序启动时,使用静态代码块来初始化库存。
接着在主程序中,我们使用一个循环来不断接收用户的输入,根据用户选择的类别调用 `buy()` 方法进行购买。`buy()` 方法中,我们首先根据用户选择的类别获取对应的食材信息,然后输出该食材的名称、单价和库存。接着提示用户输入购买数量,如果库存不足则购买失败。如果购买成功,则更新库存,生成订单号并输出订单信息。
阅读全文