Refactoring

This commit is contained in:
La Programmatrice Verde
2025-11-18 21:50:34 +01:00
parent d374731cbe
commit d67f5e7581

View File

@@ -9,7 +9,6 @@ import java.io.BufferedWriter;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.nio.Buffer;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
@@ -30,14 +29,12 @@ public class FatturaScontrini {
static Scanner sc = new Scanner(System.in); static Scanner sc = new Scanner(System.in);
static final String PATH_MENU = "./src/fatturascontrini/menu.txt"; static final String PATH_MENU = "./src/fatturascontrini/menu.txt";
static final String ERRORE_DEFAULT = "Errore: opzione non valida."; static final String ERRORE_DEFAULT = "Errore: opzione non valida.";
static final String ERRORE_FILE = "Errore nella lettura del file: ";
static int codiceScontrino = 0; static int codiceScontrino = 0;
public static void main(String[] args) { public static void main(String[] args) {
int scelta = -1; int scelta = -1;
ArrayList<int[]> ordinazione = null; ArrayList<int[]> ordinazione = null;
boolean ordinazioneEffettuata = false;
String sceltaSiNo;
boolean error;
do { do {
System.out.println("Scegliere un'opzione:"); System.out.println("Scegliere un'opzione:");
@@ -55,36 +52,11 @@ public class FatturaScontrini {
case 0: case 0:
break; break;
case 1: case 1:
if (ordinazioneEffettuata) { ordinazione = placeOrdinazione(ordinazione);
do {
error = false;
System.out.print(
"Attenzione: verrà sovrascritta la precedente ordinazione. Continuare? [S/N] ");
sceltaSiNo = sc.nextLine().trim().toLowerCase();
switch (sceltaSiNo) {
case "s":
ordinazione = ordinazione();
System.out.println("Ordinazione effettuata con successo.");
break;
case "n":
System.out.println("L'ordinazione non è stata modificata.");
break;
default:
System.out.println(ERRORE_DEFAULT);
pausa();
error = true;
break;
}
} while (error);
} else {
ordinazione = ordinazione();
ordinazioneEffettuata = true;
System.out.println("Ordinazione effettuata con successo.");
}
pausa(); pausa();
break; break;
case 2: case 2:
if (ordinazioneEffettuata) { if (ordinazione != null) {
pagare(ordinazione); pagare(ordinazione);
} else { } else {
System.out.println( System.out.println(
@@ -113,19 +85,85 @@ public class FatturaScontrini {
sc.nextLine(); sc.nextLine();
} }
static ArrayList<int[]> placeOrdinazione(ArrayList<int[]> ordinazione) {
boolean error;
String scelta;
if (ordinazione != null) {
do {
error = false;
System.out.print(
"Attenzione: verrà sovrascritta la precedente ordinazione. Continuare? [S/N] ");
scelta = sc.nextLine().trim().toLowerCase();
switch (scelta) {
case "s":
ordinazione = ordinazione();
System.out.println("Ordinazione effettuata con successo.");
break;
case "n":
System.out.println("L'ordinazione non è stata modificata.");
break;
default:
System.out.println(ERRORE_DEFAULT);
pausa();
error = true;
break;
}
} while (error);
} else {
ordinazione = ordinazione();
System.out.println("Ordinazione effettuata con successo.");
}
return ordinazione;
}
static ArrayList<int[]> ordinazione() { static ArrayList<int[]> ordinazione() {
ArrayList<int[]> ritorno = new ArrayList<>(); ArrayList<int[]> ritorno = new ArrayList<>();
boolean exit = true; boolean exit;
boolean error; boolean error;
boolean isDuplicate = false; boolean isDuplicate = false;
String scelta; String scelta;
do { do {
if (exit) { exit = true;
exit = false;
int[] ordine = { selezioneMenu(), quantita() }; int[] ordine = { selezioneMenu(), quantita() };
for (int[] ordini : ritorno) {
isDuplicate = isOrdinazioneDuplicata(ritorno, ordine);
if (!isDuplicate) {
ritorno.add(ordine);
}
do {
error = false;
System.out.print("Inserire un altra ordinazione? [S/N] ");
scelta = sc.nextLine().trim().toLowerCase();
switch (scelta) {
case "s":
exit = false;
break;
case "n":
break;
default:
System.out.println(ERRORE_DEFAULT);
pausa();
error = true;
break;
}
} while (error);
} while (!exit);
return ritorno;
}
static boolean isOrdinazioneDuplicata(ArrayList<int[]> ordinazione, int[] ordine) {
boolean ritorno = false;
boolean error;
String scelta;
for (int[] ordini : ordinazione) {
if (ordini[0] == ordine[0]) { if (ordini[0] == ordine[0]) {
isDuplicate = true; ritorno = true;
do { do {
error = false; error = false;
System.out System.out
@@ -134,7 +172,7 @@ public class FatturaScontrini {
scelta = sc.nextLine().trim().toLowerCase(); scelta = sc.nextLine().trim().toLowerCase();
switch (scelta) { switch (scelta) {
case "s": case "s":
ritorno.get(ritorno.indexOf(ordini))[1] = ordine[1]; ordinazione.get(ordinazione.indexOf(ordini))[1] = ordine[1];
break; break;
case "n": case "n":
System.out.println("L'ordinazione non è stata modificata."); System.out.println("L'ordinazione non è stata modificata.");
@@ -149,31 +187,6 @@ public class FatturaScontrini {
} }
} }
if (!isDuplicate) {
ritorno.add(ordine);
}
do {
error = false;
System.out.print("Inserire un altra ordinazione? [S/N] ");
scelta = sc.nextLine().trim().toLowerCase();
switch (scelta) {
case "s":
exit = true;
break;
case "n":
break;
default:
System.out.println(ERRORE_DEFAULT);
pausa();
error = true;
break;
}
} while (error);
// controllo se c'è già e aggiorno la quantità
}
} while (exit);
return ritorno; return ritorno;
} }
@@ -189,7 +202,7 @@ public class FatturaScontrini {
riga = br.readLine(); riga = br.readLine();
} }
} catch (IOException e) { } catch (IOException e) {
System.out.println("Errore nella lettura del file: " + e.getMessage()); System.out.println(ERRORE_FILE + e.getMessage());
} }
} }
@@ -203,7 +216,7 @@ public class FatturaScontrini {
riga = br.readLine(); riga = br.readLine();
} }
} catch (IOException e) { } catch (IOException e) {
System.out.println("Errore nella lettura del file: " + e.getMessage()); System.out.println(ERRORE_FILE + e.getMessage());
} }
return i; return i;
} }
@@ -325,7 +338,7 @@ public class FatturaScontrini {
riga = br.readLine(); riga = br.readLine();
} // crea tabella nome e prezzo } // crea tabella nome e prezzo
} catch (IOException e) { } catch (IOException e) {
System.out.println("Errore nella lettura del file: " + e.getMessage()); System.out.println(ERRORE_FILE + e.getMessage());
} }
return ritorno; return ritorno;
} }