diff --git a/src/listaspesa/listaSpesa.java b/src/listaspesa/listaSpesa.java index 9b69026..3858ae3 100644 --- a/src/listaspesa/listaSpesa.java +++ b/src/listaspesa/listaSpesa.java @@ -4,6 +4,9 @@ */ package listaspesa; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.InputMismatchException; import java.util.Scanner; @@ -18,8 +21,11 @@ public class listaSpesa { */ static Scanner sc = new Scanner(System.in); - Prodotto magazzino[]; - Prodotto scontrino[]; + static Prodotto magazzino[]; + static Prodotto scontrino[]; + static int dimensioneMagazzino = 0, dimensioneScontrino = 0, indiceMagazzino = 0; + static String datePattern = "dd/MM/yyyy"; + static SimpleDateFormat sdf = new SimpleDateFormat(datePattern); public static void main(String[] args) { int scelta = -1; @@ -41,7 +47,15 @@ public class listaSpesa { case 0: break; case 1: - + System.out.print("Quanti prodotti inserire? "); + dimensioneMagazzino = sc.nextInt(); + sc.nextLine(); + + magazzino = new Prodotto[dimensioneMagazzino]; + + for (int i = 0; i < dimensioneMagazzino; i++, indiceMagazzino++) { + inserisciProdotto(); + } pausa(); break; case 2: @@ -57,8 +71,7 @@ public class listaSpesa { pausa(); break; } - } - catch (InputMismatchException e) { + } catch (InputMismatchException e) { System.out.println("Errore: scelta non valida."); pausa(); } @@ -70,19 +83,114 @@ public class listaSpesa { sc.nextLine(); } - public static void inserisciProdotto(){ + public static void inserisciProdotto() { + String nome; + float prezzo = 0; + float qta = 0; + float scontoFidelityCard = 0; + Date dataScadenza = null; + String tipoMateriale = null; + boolean error, isAlimentare = true; + String scelta; + + System.out.print("Inserire il nome: "); + nome = sc.nextLine(); + + try { + do { + error = false; + System.out.print("Inserire il prezzo: "); + prezzo = sc.nextFloat(); + sc.nextLine(); + if (prezzo <= 0) { + System.out.println("Errore: non è possibile inserire un prezzo minore o uguale a zero."); + pausa(); + error = true; + } + } while (error); + } catch (InputMismatchException e) { + System.out.println("Errore: numero non valido."); + } + + try { + do { + error = false; + System.out.print("Inserire lo sconto con carta fedeltà (in %): "); + scontoFidelityCard = sc.nextFloat() / 100; + sc.nextLine(); + if (scontoFidelityCard < 0) { + System.out.println("Errore: non è possibile inserire uno sconto negativo."); + pausa(); + error = true; + } + } while (error); + } catch (InputMismatchException e) { + System.out.println("Errore: numero non valido."); + } + + do { + error = false; + System.out.print("Il prodotto è un genere alimentare? [S/n]"); + scelta = sc.nextLine().toLowerCase(); + + if (scelta.equals("y") || scelta.equals("s")) { + isAlimentare = true; + + boolean dateError; + do { + dateError = false; + try { + System.out.print("Inserire la data di scadenza nel formato " + datePattern + ": "); + dataScadenza = sdf.parse(sc.nextLine()); + } catch (ParseException e) { + System.out.println("Errore nella lettura della data."); + pausa(); + dateError = true; + } + } while (dateError); + + } else if (scelta.equals("n")) { + isAlimentare = false; + + System.out.println("Inserire il materiale del prodotto: "); + tipoMateriale = sc.nextLine(); + } else { + System.out.println("Errore: opzione non valida."); + pausa(); + error = true; + } + } while (error); + + try { + do { + error = false; + System.out.print("Inserire la quantità: "); + qta = isAlimentare ? sc.nextFloat() : (float) sc.nextInt(); + sc.nextLine(); + if (qta <= 0) { + System.out.println("Errore: non è possibile inserire meno di un prodotto."); + pausa(); + error = true; + } + } while (error); + } catch (InputMismatchException e) { + System.out.println("Errore: numero non valido."); + } + + magazzino[indiceMagazzino] = isAlimentare ? new Alimentare(nome, prezzo, qta, scontoFidelityCard, dataScadenza) + : new NonAlimentare(nome, prezzo, qta, scontoFidelityCard, tipoMateriale); } - public static void inserisciDatiScontrino(){ + public static void inserisciDatiScontrino() { } - public static void stampaScontrino(){ + public static void stampaScontrino() { } - public static boolean ricercaProdotto(String nome, boolean isAlimentare){ + public static boolean ricercaProdotto(String nome, boolean isAlimentare) { } }