Conecptional проблемы проектирования корзины покупок для нескольких пользователей - PullRequest
0 голосов
/ 09 октября 2019

Для моего задания мне нужно создать как минимум два класса. «ShoppingCart» и «Статья». Программа должна использоваться несколькими пользователями и должна иметь возможность добавлять, удалять и изменять элементы для активного пользователя, который в данный момент совершает покупки. Кроме того, я хотел иметь функцию добавления или удаления пользователя, это означает удаление его корзины покупок.

Я уже создал оба класса с базовыми методами get / set. Я работаю в основном в классе ShoppingCart, чтобы сгенерировать новую ShoppingCart для каждого пользователя, используя ключ Hashmap в качестве имени пользователя, и добавить массив данных (article) к ключу карты (user). Прежде чем я продолжу делать покупки, системы попросят активного пользователя правильно назначить элементы.

Я столкнулся с несколькими проблемами при использовании 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() + "%.");
        }
    }
}

Заранее благодарим за любые советы / подсказки.

...