inserisciDatiScontrino
This commit is contained in:
@@ -23,7 +23,7 @@ public class listaSpesa {
|
||||
static Scanner sc = new Scanner(System.in);
|
||||
static Prodotto magazzino[];
|
||||
static Prodotto scontrino[];
|
||||
static int dimensioneMagazzino = 0, dimensioneScontrino = 0, indiceMagazzino = 0;
|
||||
static int dimensioneMagazzino = 0, dimensioneScontrino = 0, indiceMagazzino = 0, indiceScontrino = 0;
|
||||
static String datePattern = "dd/MM/yyyy";
|
||||
static SimpleDateFormat sdf = new SimpleDateFormat(datePattern);
|
||||
|
||||
@@ -181,20 +181,183 @@ public class listaSpesa {
|
||||
System.out.println("Errore: numero non valido.");
|
||||
}
|
||||
|
||||
magazzino[indiceMagazzino] = isAlimentare ? new Alimentare(nome, prezzo, qta, scontoFidelityCard, dataScadenza, descrizione)
|
||||
magazzino[indiceMagazzino] = isAlimentare
|
||||
? new Alimentare(nome, prezzo, qta, scontoFidelityCard, dataScadenza, descrizione)
|
||||
: new NonAlimentare(nome, prezzo, qta, scontoFidelityCard, tipoMateriale, descrizione);
|
||||
|
||||
}
|
||||
|
||||
public static void inserisciDatiScontrino() {
|
||||
boolean error, isAlimentare = false, useNomeProdotto = false, exit = false;
|
||||
String scelta, nomeODescrizione;
|
||||
float qta = 0;
|
||||
|
||||
do {
|
||||
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;
|
||||
} else if (scelta.equals("n")) {
|
||||
isAlimentare = false;
|
||||
} else {
|
||||
System.out.println("Errore: opzione non valida.");
|
||||
pausa();
|
||||
error = true;
|
||||
}
|
||||
} while (error);
|
||||
|
||||
do {
|
||||
error = false;
|
||||
System.out.println("Opzioni ammesse: prodotto, descrizione.");
|
||||
System.out.println("Inserire il nome del prodotto o la sua descrizione? ");
|
||||
scelta = sc.nextLine().toLowerCase();
|
||||
|
||||
if (scelta.equals("prodotto")) {
|
||||
useNomeProdotto = true;
|
||||
} else if (scelta.equals("descrizione")) {
|
||||
useNomeProdotto = false;
|
||||
} else {
|
||||
System.out.println("Opzioni ammesse: prodotto, descrizione.");
|
||||
System.out.println("Errore: opzione non valida.");
|
||||
pausa();
|
||||
error = true;
|
||||
}
|
||||
} while (error);
|
||||
|
||||
System.out.print("Inserire " + (useNomeProdotto ? "il nome" : "la descrizione") + " del prodotto:"
|
||||
+ (useNomeProdotto ? " " : "\n"));
|
||||
nomeODescrizione = sc.nextLine();
|
||||
|
||||
if (ricercaProdotto(nomeODescrizione, isAlimentare)) {
|
||||
System.out.println("Prodotto trovato: ");
|
||||
|
||||
Prodotto prodottoTrovato = isAlimentare ? (Alimentare) ricercaProdotto(nomeODescrizione)
|
||||
: (NonAlimentare) ricercaProdotto(nomeODescrizione);
|
||||
prodottoTrovato.stampaDati();
|
||||
|
||||
do {
|
||||
error = false;
|
||||
System.out.print("È corretto? [S/n]");
|
||||
scelta = sc.nextLine().toLowerCase();
|
||||
|
||||
if (scelta.equals("y") || scelta.equals("s")) {
|
||||
do {
|
||||
error = false;
|
||||
do {
|
||||
try {
|
||||
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;
|
||||
}
|
||||
} catch (InputMismatchException e) {
|
||||
System.out.println("Errore: numero non valido.");
|
||||
pausa();
|
||||
error = true;
|
||||
}
|
||||
|
||||
} while (error);
|
||||
|
||||
if (prodottoTrovato.checkQtaDisponibile(nomeODescrizione, qta) != 0) {
|
||||
if (qta <= prodottoTrovato.checkQtaDisponibile(nomeODescrizione, qta)) {
|
||||
if (prodottoTrovato.getQta() - qta == 0) {
|
||||
System.out.println("Il prodotto è stato finito.");
|
||||
scontrino[trovaPosizioneLibera(scontrino)] = prodottoTrovato;
|
||||
magazzino[trovaProdottoInMagazzino(prodottoTrovato)] = null;
|
||||
} else {
|
||||
prodottoTrovato.decreaseQuantity(qta);
|
||||
}
|
||||
exit = true;
|
||||
|
||||
} else {
|
||||
System.out.println("Errore: la quantità inserita supera quella disponibile, ovvero "
|
||||
+ prodottoTrovato.getQta());
|
||||
pausa();
|
||||
error = true;
|
||||
}
|
||||
} else {
|
||||
System.out.println("Errore: il nome non è corretto.");
|
||||
pausa();
|
||||
error = true;
|
||||
}
|
||||
} while (error);
|
||||
|
||||
} else if (scelta.equals("n")) {
|
||||
break;
|
||||
} else {
|
||||
System.out.println("Errore: opzione non valida.");
|
||||
pausa();
|
||||
error = true;
|
||||
}
|
||||
} while (error);
|
||||
} else {
|
||||
System.out.println("Errore: prodotto non trovato.");
|
||||
pausa();
|
||||
}
|
||||
} while (scelta.equals("n") || !exit);
|
||||
}
|
||||
|
||||
public static void stampaScontrino() {
|
||||
|
||||
}
|
||||
|
||||
public static boolean ricercaProdotto(String nome, boolean isAlimentare) {
|
||||
public static boolean ricercaProdotto(String nome, boolean isAlimentare) { // prodottoExists
|
||||
boolean ritorno = false;
|
||||
for (int i = 0; i < magazzino.length && !ritorno; i++) {
|
||||
if (isAlimentare) {
|
||||
if (magazzino[i].getClass().getSimpleName().equals("Alimentare")) {
|
||||
ritorno = magazzino[i].getNome().equals(nome);
|
||||
}
|
||||
} else {
|
||||
if (magazzino[i].getClass().getSimpleName().equals("NonAlimentare")) {
|
||||
ritorno = magazzino[i].getNome().equals(nome);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ritorno;
|
||||
}
|
||||
|
||||
static Prodotto ricercaProdotto(String p_nomeODescrizione) {
|
||||
Prodotto ritorno = null;
|
||||
boolean exit = false;
|
||||
for (int i = 0; i < magazzino.length && !exit; i++) {
|
||||
if (magazzino[i].getNome().equals(p_nomeODescrizione)) {
|
||||
ritorno = magazzino[i];
|
||||
exit = true;
|
||||
}
|
||||
}
|
||||
return ritorno;
|
||||
}
|
||||
|
||||
static int trovaProdottoInMagazzino(Prodotto p_prodotto) {
|
||||
int ritorno = -1;
|
||||
boolean exit = false;
|
||||
for (int i = 0; i < magazzino.length && !exit; i++) {
|
||||
if (magazzino[i].hashCode() == p_prodotto.hashCode()) {
|
||||
ritorno = i;
|
||||
exit = true;
|
||||
}
|
||||
}
|
||||
return ritorno;
|
||||
}
|
||||
|
||||
static int trovaPosizioneLibera(Prodotto[] p_prodotti) {
|
||||
int ritorno = -1;
|
||||
boolean exit = false;
|
||||
|
||||
for (int i = 0; i < p_prodotti.length && !exit; i++) {
|
||||
if (p_prodotti[i] == null) {
|
||||
ritorno = i;
|
||||
exit = true;
|
||||
}
|
||||
}
|
||||
return ritorno;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user