我被要求编制一个小型在线销售应用程序。
理论上听起来非常简单(但对我而言,这对我来说太棒了)。我应该拥有一个包含大约5种产品的arrayList,然后让客户购买1到5种产品并打印销售总额。
public 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;
}
public String printInfo() {
return "Product: " + name + " Cost: " + price;
}
}
然后我有一个客户端类:
public class Cliente {
private String name;
private int numPedido;
ArrayList<Producto> products = new ArrayList<Producto>();
public void listBuilder() {
Producto shirt = new Producto("Shirt", 30);
Producto tshirt = new Producto("T-Shirt", 40);
Producto sweater = new Producto("Sweater", 50);
}
public Cliente(String name, int numPedido) {
this.name = name;
this.numPedido = numPedido;
}
public Cliente() {
}
public String getName() {
return name;
}
public int getNumPedido() {
return (int) (Math.random() * 100);
}
public void addNewClient() {
name = JOptionPane.showInputDialog("Nombre: ");
}
public String printInfo() {
return "Nombre: " + name;
}
}
现在,我一直在考虑如何让客户选择产品并将其附加到他身上。我正在考虑制作一个arrayList的arrayList,但我确信这会使事情变得复杂。我知道可能有一种更简单的方式来连接它们,但我无法想到。我想到的选项是一种方法,显示从1到3的数字(对应于每个产品),当用户选择一个时,它应该返回该项目的价格。
仍然不确定如何以用户可以选择多种产品的方式实现它。
编辑:
我还有一个这样的管理类:
public class Admin {
private Client[] clientList;
public AdminPedidos() {
clientList = new Client[2];
}
public void AddContact() {
clienteList[0] = addProduct();
clienteList[1] = addProduct();
fillList();
}
public Cliente addProduct() {
String contactoString = JOptionPane.showInputDialog("Are you a new client? Press 1 if yes.");
if (contactoString.equals("1")) {
return new Cliente();
} else {
return new Cliente(); //just for testing
}
}
private void fillList() {
for (Client i : clientList) {
i.addNewClient();
}
}
public void printContact() {
for (Client i : clientList) {
System.out.println(i.printInfo());
}
}
}
答案 0 :(得分:2)
您可以为每个purchaseProduct
添加一些Client
方法。
public void purchaseProduct(Product product) { this.products.add(product); }
然后,您实例化的每个Client
(Client client = new Client(name, id);
)都可以使用Products
方法将purchaseProduct
添加到他/她的购物车中。
我假设你正在使用某种用户输入法(Scanner
)。有了它,您可以阅读用户输入的Product
,并相应地使用右侧Product
调用该函数。
listBuilder
函数对我来说没有多大意义(在编辑之后,很难理解Admin
类应该/代表什么)。
编辑:你可能想要创建一个ArrayList<Product>
,它将附加到你已经拥有的每个客户端。我觉得你很难决定把你的实际Products
放在哪里。你应该不将它们放在你的Client
课程中
你应该考虑使用它们/在哪里使用它们。可能在main
对吗?所以首先在那里实例化它们,然后Client
可以选择购买哪一个(通过我之前介绍的方法):
client.purchaseProduct(product);