Opzione 3

This commit is contained in:
La Programmatrice Verde
2026-01-13 20:49:52 +01:00
parent 567251a28e
commit 813152e531
2 changed files with 71 additions and 20 deletions

View File

@@ -17,18 +17,20 @@ public class ContoCorrente {
private String cognome; private String cognome;
private String codiceFiscale; private String codiceFiscale;
private Date dataDiNascita; private Date dataDiNascita;
private double saldoIniziale; private double saldo;
private int numeroContoCorrente; private int numeroContoCorrente;
private static ArrayList<Integer> numeriContiCorrenti = new ArrayList<>(); private static ArrayList<Integer> numeriContiCorrenti = new ArrayList<>();
public ContoCorrente(String nome, String cognome, String codiceFiscale, Date dataDiNascita, double saldoIniziale,
public ContoCorrente(String nome, String cognome, String codiceFiscale, Date dataDiNascita, double saldo,
int numeroContoCorrente) { int numeroContoCorrente) {
this.nome = nome; this.nome = nome;
this.cognome = cognome; this.cognome = cognome;
this.codiceFiscale = codiceFiscale; this.codiceFiscale = codiceFiscale;
this.dataDiNascita = dataDiNascita; this.dataDiNascita = dataDiNascita;
this.saldoIniziale = saldoIniziale; this.saldo = saldo;
this.numeroContoCorrente = numeroContoCorrente; this.numeroContoCorrente = numeroContoCorrente;
numeriContiCorrenti.add(numeroContoCorrente); numeriContiCorrenti.add(numeroContoCorrente);
} }
@@ -40,4 +42,13 @@ public class ContoCorrente {
public int getNumeroContoCorrente() { public int getNumeroContoCorrente() {
return numeroContoCorrente; return numeroContoCorrente;
} }
public void preleva(double quantita) throws IllegalArgumentException{
if (quantita >= this.saldo) {
throw new IllegalArgumentException("La quantità desiderata eccede il saldo corrente.");
}
else {
this.saldo -= quantita;
}
}
} }

View File

@@ -34,6 +34,7 @@ public class MyBank {
static Scanner sc = new Scanner(System.in); static Scanner sc = new Scanner(System.in);
static final String ERRORE_GENERICO = "Errore: opzione non valida."; static final String ERRORE_GENERICO = "Errore: opzione non valida.";
static final String ERRORE_CONTI_VUOTO = "Errore: è necessario aggiungere almeno un conto corrente prima di proseguire.";
static final String PATH_CONTI = "./src/MyBank/conti/"; static final String PATH_CONTI = "./src/MyBank/conti/";
public static void main(String[] args) { public static void main(String[] args) {
@@ -44,7 +45,7 @@ public class MyBank {
System.out.println("Scegliere un'opzione:"); System.out.println("Scegliere un'opzione:");
System.out.println("1. Aprire conto corrente"); System.out.println("1. Aprire conto corrente");
System.out.println("2. "); System.out.println("2. ");
System.out.println("3. "); System.out.println("3. Prelievo");
System.out.println("4. "); System.out.println("4. ");
System.out.println("0. Esci"); System.out.println("0. Esci");
System.out.print("Opzione: "); System.out.print("Opzione: ");
@@ -63,26 +64,23 @@ public class MyBank {
break; break;
case 2: case 2:
if (conti.isEmpty()) { if (conti.isEmpty()) {
System.out.println( System.out.println(ERRORE_CONTI_VUOTO);
"Errore: è necessario aggiungere almeno un conto corrente prima di proseguire.");
} else { } else {
} }
pausa(); pausa();
break; break;
case 3: case 3:
if (conti.isEmpty()) { if (conti.isEmpty()) {
System.out.println( System.out.println(ERRORE_CONTI_VUOTO);
"Errore: è necessario aggiungere almeno un conto corrente prima di proseguire.");
} else { } else {
preleva(conti);
} }
pausa(); pausa();
break; break;
case 4: case 4:
if (conti.isEmpty()) { if (conti.isEmpty()) {
System.out.println( System.out.println(ERRORE_CONTI_VUOTO);
"Errore: è necessario aggiungere almeno un conto corrente prima di proseguire.");
} else { } else {
} }
@@ -150,7 +148,7 @@ public class MyBank {
dataDiNascita = dataDiNascita(); dataDiNascita = dataDiNascita();
saldoIniziale = saldoIniziale(); saldoIniziale = quantita("del saldo iniziale");
numeroContoCorrente = codiceFiscale.hashCode(); numeroContoCorrente = codiceFiscale.hashCode();
@@ -211,19 +209,19 @@ public class MyBank {
return dataDiNascita; return dataDiNascita;
} }
static double saldoIniziale() { static double quantita(String diCheCosa) {
double saldoIniziale = 0; double quantita = 0;
boolean error; boolean error;
do { do {
error = false; error = false;
System.out.print("Inserire il saldo iniziale: "); System.out.print("Inserire la quantità " + diCheCosa + ": ");
try { try {
saldoIniziale = sc.nextDouble(); quantita = sc.nextDouble();
sc.nextLine(); sc.nextLine();
if (saldoIniziale <= 0) { if (quantita <= 0) {
System.out.println("Errore: il saldo iniziale non può essere minore o uguale a zero."); System.out.println("Errore: la quantità non può essere minore o uguale a zero.");
pausa(); pausa();
error = true; error = true;
} }
@@ -234,7 +232,7 @@ public class MyBank {
} }
} while (error); } while (error);
return saldoIniziale; return quantita;
} }
static void salvaContoCorrente(ContoCorrente conto) { static void salvaContoCorrente(ContoCorrente conto) {
@@ -246,6 +244,48 @@ public class MyBank {
} catch (Exception _) { } catch (Exception _) {
System.out.println("Errore: impossibile salvare il conto corrente."); System.out.println("Errore: impossibile salvare il conto corrente.");
} }
}
static void preleva(ArrayList<ContoCorrente> conti) {
boolean error;
do {
error = false;
try {
selezionaConto(conti).preleva(quantita("da prelevare"));
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
pausa();
error = true;
}
} while (error);
} }
static ContoCorrente selezionaConto(ArrayList<ContoCorrente> conti) {
ContoCorrente contoCorrente = null;
int numeroContoCorrente;
boolean error;
do {
error = false;
System.out.print("Inserire il proprio numero di conto: ");
numeroContoCorrente = sc.nextInt();
sc.nextLine();
if (!ContoCorrente.getNumeriContiCorrenti().contains(numeroContoCorrente)) {
System.out.println("Errore: il conto corrente specificato non esiste.");
pausa();
error = true;
} else {
for (ContoCorrente conto : conti) {
if (conto.getNumeroContoCorrente() == numeroContoCorrente) {
contoCorrente = conto;
break;
}
}
}
} while (error);
return contoCorrente;
}
} }