java中使用oo思想收银结算,商品(名称,数量,单价),有非打折商品,打折商品(8折,9折),将来可能会有对折,返现等不同优惠。 编写一个程序,对一组商品 (用户输入) 进行录入并统计总价
时间: 2023-06-09 12:03:42 浏览: 34
好的,我能理解您的问题,请稍等片刻,我给您找找答案。
以下是基于 Java 类的面向对象思想的一个简单结算程序,可以对不同种类的商品进行结算,并考虑了不同的优惠方式:
```java
import java.util.*;
public class Cashier {
private ArrayList<Item> items = new ArrayList<Item>();
private double totalPrice = 0.0;
public static void main(String[] args) {
Cashier cashier = new Cashier();
cashier.inputItems();
cashier.calculateTotalPrice();
System.out.println("Total Price: " + cashier.getTotalPrice());
}
private void inputItems() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("Please enter the item name:");
String name = scanner.nextLine();
if (name.equals("")) {
break;
} else {
System.out.println("Please enter the number:");
int quantity = Integer.parseInt(scanner.nextLine());
System.out.println("Please enter the price:");
double price = Double.parseDouble(scanner.nextLine());
Item item = new Item(name, quantity, price);
items.add(item);
System.out.println("Item added, please enter next item or press enter to finish.");
}
}
}
private void calculateTotalPrice() {
for (Item item : items) {
if (item.isDiscounted()) {
totalPrice += item.getQuantity() * item.getPrice() * item.getDiscount();
} else {
totalPrice += item.getQuantity() * item.getPrice();
}
}
}
public double getTotalPrice() {
return totalPrice;
}
private class Item {
private String name;
private int quantity;
private double price;
private double discount = 1;
public Item(String name, int quantity, double price) {
this.name = name;
this.quantity = quantity;
this.price = price;
applyDiscount();
}
private void applyDiscount() {
if (name.contains("discounted")) {
if (name.contains("8")) {
discount = 0.8;
} else if (name.contains("9")) {
discount = 0.9;
} else if (name.contains("10")) {
discount = 0.5;
}
}
}
public boolean isDiscounted() {
return discount < 1;
}
public String getName() {
return name;
}
public int getQuantity() {
return quantity;
}
public double getPrice() {
return price;
}
public double getDiscount() {
return discount;
}
}
}
```
在这个程序中,我们定义了一个名为 `Cashier` 的类。该类包含一个名为 `Item` 的嵌套类,该类表示单个商品,并且对应的有名称,数量和价格。同时,我们还实现了 `inputItems()` 方法来录入商品信息,以及 `calculateTotalPrice()` 方法来统计总价。当用户输入要结算的商品后,程序实例化 `Item` 类,通过 `applyDiscount()` 方法来应用不同的折扣。
希望这个例子能回答您的问题,如果您还有疑问或需要进一步帮助,请随时提问。