inserisciDatiScontrino

This commit is contained in:
La Programmatrice Verde
2025-10-21 20:21:17 +02:00
parent 00bc10352d
commit 8b792b8006
2 changed files with 194 additions and 8 deletions

View File

@@ -23,20 +23,43 @@ public class Prodotto {
this.scontoFidelityCard = p_scontoFidelityCard;
this.descrizione = p_descrizione;
}
public void stampaDati(){
public void stampaDati() {
}
public float checkQtaDisponibile(String nome, float qtaDaComprare){
public float checkQtaDisponibile(String nome, float qtaDaComprare) {
float ritorno;
if (!this.nome.equals(nome)) {
ritorno = 0; // oppure potresti lanciare un'eccezione
}
if (this.qta >= qtaDaComprare) {
ritorno = qtaDaComprare;
} else {
ritorno = this.qta;
}
return ritorno;
}
public void updQtaMagazzino(String nome, float qtaFinale){
public void updQtaMagazzino(String nome, float qtaFinale) {
}
public void applicaSconto() {
}
public float getQta() {
return this.qta;
}
public void decreaseQuantity(float p_qta) {
this.qta -= p_qta;
}
public String getNome() {
return this.nome;
}
}

View File

@@ -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;
}
}