java现要对华为和小米两种手机产品进行入库,本案例要求编写一个模拟商品入库的程序,可以在控制台输入入库商品的数量,最后打印出仓库中所有商品详细信息以及所有商品的总库存数和库存商品总金额。 商品信息如
时间: 2024-09-20 08:06:24 浏览: 44
在这个Java案例中,你需要创建一个抽象的商品类`Product`,然后分别定义两个具体的子类`HuaweiPhone`和`XiaomiPhone`来代表华为和小米手机。每个子类应该包含必要的属性,比如型号、价格等,并覆盖父类中的`toString()`方法以便于展示商品信息。
```java
// 商品抽象类
public abstract class Product {
private String name;
private double price;
public Product(String name, double price) {
this.name = name;
this.price = price;
}
// 获取方法
public String getName() { return name; }
public double getPrice() { return price; }
// 虚拟方法,子类需要重写
@Override
public String toString() {
return "名称:" + name + ", 价格:" + price;
}
// 简单的库存增加操作
public void addStock(int quantity) {
// 实际应用中会考虑库存限制和实际操作数据库
inventory += quantity;
}
protected int getInventory() {
return inventory;
}
// 子类需要实现的抽象方法,这里省略了具体实现
abstract int getTotalCost();
// 省略的其他属性和方法...
}
// 华为手机子类
public class HuaweiPhone extends Product {
private int huaweiInventory = 0;
// 完成父类的方法并添加华为特有的属性和方法...
@Override
public int getTotalCost() {
return price * huaweiInventory;
}
}
// 小米手机子类
public class XiaomiPhone extends Product {
private int xiaomiInventory = 0;
// 完成父类的方法并添加小米特有的属性和方法...
@Override
public int getTotalCost() {
return price * xiaomiInventory;
}
}
```
你可以创建一个`InventoryManager`类来处理用户输入和打印商品详情:
```java
public class InventoryManager {
private List<Product> products = new ArrayList<>();
public void addProduct(Product product) {
products.add(product);
}
public void acceptProducts(int totalQuantity) {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < totalQuantity; i++) {
System.out.println("请输入华为手机还是小米手机的购买数量(或者直接回车结束):");
String choice = scanner.nextLine();
if (!choice.isEmpty()) {
int quantity = Integer.parseInt(choice);
if ("华为".equals(choice)) {
products.add(new HuaweiPhone("华为手机", 5000)); // 示例价格
addStockToProduct(products, quantity, HuaweiPhone::addStock);
} else if ("小米".equals(choice)) {
products.add(new XiaomiPhone("小米手机", 4000)); // 示例价格
addStockToProduct(products, quantity, XiaomiPhone::addStock);
} else {
break;
}
}
}
}
private void addStockToProduct(List<Product> products, int quantity, Runnable stockAdder) {
for (Product p : products) {
stockAdder.run();
}
}
// 打印商品详情和统计信息
public void printInventoryDetails() {
System.out.println("商品详细信息:");
for (Product product : products) {
System.out.println(product);
}
int totalStock = 0;
double totalPrice = 0.0;
for (Product p : products) {
totalStock += p.getInventory();
totalPrice += p.getTotalCost();
}
System.out.println("总库存数:" + totalStock);
System.out.println("库存商品总金额:" + totalPrice);
}
public static void main(String[] args) {
InventoryManager manager = new InventoryManager();
manager.acceptProducts(10); // 模拟接受10个手机
manager.printInventoryDetails();
}
}
```
当运行这个程序时,用户可以按照提示输入华为或小米手机的数量进行入库,然后程序将显示所有商品的详细信息、总库存数和总金额。
阅读全文