Program sklepu internetowego

0

Cześć,

jestem w trakcie tworzenia projektu sklepu internetowego na studia ale opornie idzie mi ten język.
Aktualnie mam zrobione tyle, że program pyta się użytkownika co chce kupić, ile tego i za jaką cenę, a na końcu wypisuje wszystko i dla każdego przedmiotu podaje cenę * ilość, a potem sumuje cenę wszystkich zakupionych przedmiotów.

Mam też drugą klasę "Storage" połączoną z trzecią klasą "Item" gdzie przechowuję w ArrayList dane o danym przedmiocie, jego nazwie, cenie oraz ilości jaką mam na stanie.

Mój problem zaczął się teraz, ponieważ potrzebuję przerobić Maina tak żeby użytkownik mógł wybrać dostępny produkt a następnie podać jego ilość.
Po dodaniu wszystkiego co potrzebne i wybraniu "KUP" to co znalazło się w koszyku np dwa rowery powinny odjąć się od aktualnego stanu magazynowego w klasie Storage.
I w jaki sposób mogę to osiągnąć? Niestety mam ogrom pomysłów ale nie wiem jak je przelać na kod.

1

Np w klasie Storage zrób sobie mapę gdzie kluczem będzie obiekt Rower, a wartością liczba elementów w magazynie. Jak użytkownik kupi Rower to po prostu zmniejszysz wartość o 1.
Ważne, że taki Storage po wyłączeniu aplikacji zniknie. Jak chcesz żeby nie znikał to musisz to jakoś utrwalić. Albo zapisać do pliku tekstowego albo użyć jakieś prostej bazy danych. Chociaż wydaje mi się, że na początkowym etapie nauki odpuść sobie jeszcze bazy danych przez chwilę.

0

A w jaki sposób można zmniejszyć ilość danych produktów w ArrayList dla poszczególnych rekordów?

0

Nie rozumiem pytania. Pokaż kod

0
Berylo napisał(a):

Nie rozumiem pytania. Pokaż kod


package IS;

import java.util.ArrayList;

public class Storage {

    public static void menu(Storage storage) {

            ArrayList<Item> Storage = new ArrayList<>();

            Storage.add(new Item("Rower", 300, 10));
            Storage.add(new Item("Kask", 10, 50));
            Storage.add(new Item("Rękawiczki", 5, 75));
            Storage.add(new Item("Strój kolarski", 50, 20));
            Storage.add(new Item("Koszyk", 10, 100));

            for (Item a : Storage)
                System.out.println("Produkt " + a.getName() + " o wartości " + a.getPrice() + " dostępny w ilości " + a.getQuantity());

    }

}

W ten sposób mam utworzoną listę i teraz siedząc w drugiej klasie "Koszyk" muszę zrobić coś takiego, że użytkownik wybiera, że chce kupić Rower w ilości dwa. To zostaje dodane do koszyka (jeśli istnieje pobrana przez system ilość. Jeśli nie to zwraca błąd) i albo kontynuuje się zakupy albo je kończy i jeśli jest koniec to następuje zmniejszenie ilości o 2 w liście, a koszyk zostaje wyzerowany i następuje powrót do początku programu.

I tu właśnie nie wiem w jaki sposób mogę to osiągnąć.
ArrayList --> Kolejno (Nazwa, cena, ilość)

0
for (Item item : Storage){
    if (Objects.equals(item.getName(), name){
        item.setQuantity(item.getQuantity - quantity);
    }
}

albo

Storage.steam()
    .filter(item -> Objects.equals(item.getName(), name))
    .forEach(item -> item.setQuantity(item.getQuantity - quantity));
0

Produkt nie powinien w sobie zawierać informacji o stanie magazynowym. To tak jakbyś kupił w sklepie rower, a on miałby naklejkę z informacją ile jeszcze rowerów zostało w magazynie.
Item powinien mieć nazwę i cenę, a ilość w magazynie powinna być trzymana np tak jak pisałem wcześniej.

Przykład:

Item rower = new Item("Rower", 300);
Map<Item, Integer> storage = new HashMap<Item, Integer>();
storage.put(rower, 10);

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0