From 597612352ae902145e75ff2344834dedb55315e2 Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Tue, 21 Oct 2025 21:26:32 +0200 Subject: [PATCH] Migliorie --- src/listaspesa/Alimentare.java | 10 ++++++++-- src/listaspesa/Prodotto.java | 16 +++++++++------- src/listaspesa/listaSpesa.java | 22 +++++++++++++++------- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/src/listaspesa/Alimentare.java b/src/listaspesa/Alimentare.java index eb48a60..7e9b369 100644 --- a/src/listaspesa/Alimentare.java +++ b/src/listaspesa/Alimentare.java @@ -30,7 +30,13 @@ public class Alimentare extends Prodotto { } - public void rimuoviProdottoScaduto(){ - + public void rimuoviProdottoScaduto() { + if (this.checkDataScadenza()) { + this.invalida(); + } + } + + public void invalida() { + super.invalida(); } } \ No newline at end of file diff --git a/src/listaspesa/Prodotto.java b/src/listaspesa/Prodotto.java index 992e2fa..9e7b333 100644 --- a/src/listaspesa/Prodotto.java +++ b/src/listaspesa/Prodotto.java @@ -35,7 +35,7 @@ public class Prodotto { public float checkQtaDisponibile(String nome, float qtaDaComprare) { float ritorno; if (!this.nome.equals(nome)) { - ritorno = 0; // oppure potresti lanciare un'eccezione + ritorno = 0; } if (this.qta >= qtaDaComprare) { @@ -47,8 +47,10 @@ public class Prodotto { return ritorno; } - public void updQtaMagazzino(String nome, float qtaFinale) { - + public void updQtaMagazzino(String nome, float qtaFinale) { // decreaseQuantity + if (this.nome.equals(nome)) { + this.qta = qtaFinale; + } } public void applicaSconto() { @@ -59,10 +61,6 @@ public class Prodotto { return this.qta; } - public void decreaseQuantity(float p_qta) { - this.qta -= p_qta; - } - public String getNome() { return this.nome; } @@ -70,4 +68,8 @@ public class Prodotto { public float getPrezzo() { return this.prezzo; } + + public void invalida() { + this.nome = null; + } } \ No newline at end of file diff --git a/src/listaspesa/listaSpesa.java b/src/listaspesa/listaSpesa.java index 71d83f0..a93ff0d 100644 --- a/src/listaspesa/listaSpesa.java +++ b/src/listaspesa/listaSpesa.java @@ -21,9 +21,9 @@ public class listaSpesa { */ static Scanner sc = new Scanner(System.in); - static Prodotto magazzino[]; - static Prodotto scontrino[]; - static int dimensioneMagazzino = 0, dimensioneScontrino = 0, indiceMagazzino = 0, indiceScontrino = 0; + static Prodotto magazzino[] = null; + static Prodotto scontrino[] = null; + static int dimensioneMagazzino = 0, dimensioneScontrino = 0; static String datePattern = "dd/MM/yyyy"; static SimpleDateFormat sdf = new SimpleDateFormat(datePattern); @@ -53,13 +53,21 @@ public class listaSpesa { magazzino = new Prodotto[dimensioneMagazzino]; - for (int i = 0; i < dimensioneMagazzino; i++, indiceMagazzino++) { + for (int i = 0; i < dimensioneMagazzino; i++) { inserisciProdotto(); } pausa(); break; case 2: + System.out.print("Quanti prodotti inserire? "); + dimensioneScontrino = sc.nextInt(); + sc.nextLine(); + scontrino = new Prodotto[dimensioneScontrino]; + + for (int i = 0; i < dimensioneScontrino; i++) { + inserisciProdotto(); + } pausa(); break; case 3: @@ -194,7 +202,7 @@ public class listaSpesa { prodotto = new NonAlimentare(nome, prezzo, qta, scontoFidelityCard, tipoMateriale, descrizione); } if (trovaProdottoInMagazzino(prodotto) != -1) { - magazzino[indiceMagazzino] = prodotto; + magazzino[trovaPosizioneLibera(magazzino)] = prodotto; } else { System.out.println("Errore: il prodotto esiste già nel magazzino."); pausa(); @@ -285,11 +293,11 @@ public class listaSpesa { if (prodottoTrovato.checkQtaDisponibile(nomeODescrizione, qta) != 0) { if (qta <= prodottoTrovato.checkQtaDisponibile(nomeODescrizione, qta)) { if (prodottoTrovato.getQta() - qta == 0) { - System.out.println("Il prodotto è stato finito."); + System.out.println("Attenzione: il prodotto è stato finito."); scontrino[trovaPosizioneLibera(scontrino)] = prodottoTrovato; magazzino[trovaProdottoInMagazzino(prodottoTrovato)] = null; } else { - prodottoTrovato.decreaseQuantity(qta); + prodottoTrovato.updQtaMagazzino(nomeODescrizione, prodottoTrovato.getQta() - qta); } exit = true;