首页 > 解决方案 > 为多用户设计购物车的概念问题

问题描述

对于我的任务,我必须创建至少两个类。“购物车”和“文章”。该程序应由多个用户使用,并且应该能够为当前正在购物的活动用户添加、删除和更改项目。另外我想有添加或删除用户的功能,这意味着删除他的购物车。

我已经用基本的 get/set 方法创建了这两个类。我主要在 ShoppingCart 类中工作,通过使用 Hashmap 键作为用户名为每个用户生成一个新的 ShoppingCart,并将一个数组列表(文章)添加到映射键(用户)。在我继续购物之前,系统会要求我让活动用户正确分配商品。

我在使用 hasmap 时遇到了几个问题,例如我无法访问所有文章详细信息,例如特定键(用户)的价格,或者通常我无法访问之前处于活动状态的用户的购物车项目。

因此,我想知道是否有另一种方法可以完成这项任务,或者我是否因为我是新手而犯了基本错误。

这是我目前的编码:

主班

public class Main {

    private static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {        

        int amount;
        String customerName = "";       
        System.out.println("How many people wanna shop");
        amount = Integer.parseInt(sc.nextLine());

        for (int i = 0; i < amount; i++) {
            System.out.println("User name:");
            customerName = sc.nextLine();
            new Warenkorb().initialCreation(customerName);          
        }       
    }

文章类

class Artikel {
    private String itemName;
    private int itemPrice;
    private int itemTax;

    public Artikel(String itemName, int itemPrice, int itemTax) {
        this.itemName = itemName;
        this.itemPrice = itemPrice;
        this.itemTax = itemTax;
    }

    public String getItemName() {
            return itemName;
    }

    public int getItemPrice() {
        return itemPrice;
    }

    public int getItemTax() {
        return itemTax;
    }

    public void setItemPrice(int itemPrice) {
        this.itemPrice = itemPrice;
    }

    public void setItemQuantity(int itemTax) {
        this.itemTax = itemTax;
    }

    public void setItemName(String itemName) {
        this.itemName = itemName;
    }
}

购物车

我没有在这里复制其他方法,因为我无法打印所有购物车,包括。文章详情。它甚至打印最后一个购物车(用户)。

class Warenkorb {
private String customerName;
private ArrayList<Artikel> shoppingCart = new ArrayList<>();
private Map<String, ArrayList<Artikel>> map = new HashMap<String, ArrayList<Artikel>>();
private Scanner sc = new Scanner(System.in);

public  void initialCreation(String customerName) {
    String currentUser = customerName;
    int amountofitem;
    System.out.println("How many Arcticle do you want to create");
    amountofitem = Integer.parseInt(sc.nextLine());

    for (int i = 0; i < amountofitem; i++) {
        String artikelName = "";
        int price, qty;
        System.out.println(">>>Add Article<<<");
        System.out.println("Please enter article name");
        artikelName = sc.nextLine().trim().toString();
        System.out.println("Please enter price");
        price = Integer.parseInt(sc.nextLine());
        System.out.println("Please enter how many you would like to add -> quantity");
        qty = Integer.parseInt(sc.nextLine());
        Artikel newArticle = new Artikel(artikelName, qty, price);
        shoppingCart.add(newArticle);
    }
    map.put(currentUser, shoppingCart);

    for (Map.Entry<String, ArrayList<Artikel>> entry : map.entrySet()) {
        System.out.println("Shopping Cart of  " + entry.getKey());

        for (Artikel item : entry.getValue()) {
            System.out.println("Artikel" + " " + item.getItemName() + " " + item.getItemPrice() + "€ " + item.getItemTax() + "%.");
        }
    }
}

提前感谢任何提示/建议。

标签: javaarraylistshopping-cart

解决方案


推荐阅读