diff --git a/src/mybank/ContoCorrente.java b/src/mybank/ContoCorrente.java index 607286a..e220fe6 100644 --- a/src/mybank/ContoCorrente.java +++ b/src/mybank/ContoCorrente.java @@ -17,18 +17,20 @@ public class ContoCorrente { private String cognome; private String codiceFiscale; private Date dataDiNascita; - private double saldoIniziale; + private double saldo; private int numeroContoCorrente; private static ArrayList 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) { this.nome = nome; this.cognome = cognome; this.codiceFiscale = codiceFiscale; this.dataDiNascita = dataDiNascita; - this.saldoIniziale = saldoIniziale; + this.saldo = saldo; this.numeroContoCorrente = numeroContoCorrente; numeriContiCorrenti.add(numeroContoCorrente); } @@ -40,4 +42,13 @@ public class ContoCorrente { public int getNumeroContoCorrente() { 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; + } + } } \ No newline at end of file diff --git a/src/mybank/MyBank.java b/src/mybank/MyBank.java index fdba58e..74f1f0f 100644 --- a/src/mybank/MyBank.java +++ b/src/mybank/MyBank.java @@ -34,6 +34,7 @@ public class MyBank { static Scanner sc = new Scanner(System.in); 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/"; public static void main(String[] args) { @@ -44,7 +45,7 @@ public class MyBank { System.out.println("Scegliere un'opzione:"); System.out.println("1. Aprire conto corrente"); System.out.println("2. "); - System.out.println("3. "); + System.out.println("3. Prelievo"); System.out.println("4. "); System.out.println("0. Esci"); System.out.print("Opzione: "); @@ -63,26 +64,23 @@ public class MyBank { break; case 2: if (conti.isEmpty()) { - System.out.println( - "Errore: è necessario aggiungere almeno un conto corrente prima di proseguire."); + System.out.println(ERRORE_CONTI_VUOTO); } else { - + } pausa(); break; case 3: if (conti.isEmpty()) { - System.out.println( - "Errore: è necessario aggiungere almeno un conto corrente prima di proseguire."); + System.out.println(ERRORE_CONTI_VUOTO); } else { - + preleva(conti); } pausa(); break; case 4: if (conti.isEmpty()) { - System.out.println( - "Errore: è necessario aggiungere almeno un conto corrente prima di proseguire."); + System.out.println(ERRORE_CONTI_VUOTO); } else { } @@ -150,7 +148,7 @@ public class MyBank { dataDiNascita = dataDiNascita(); - saldoIniziale = saldoIniziale(); + saldoIniziale = quantita("del saldo iniziale"); numeroContoCorrente = codiceFiscale.hashCode(); @@ -211,19 +209,19 @@ public class MyBank { return dataDiNascita; } - static double saldoIniziale() { - double saldoIniziale = 0; + static double quantita(String diCheCosa) { + double quantita = 0; boolean error; do { error = false; - System.out.print("Inserire il saldo iniziale: "); + System.out.print("Inserire la quantità " + diCheCosa + ": "); try { - saldoIniziale = sc.nextDouble(); + quantita = sc.nextDouble(); sc.nextLine(); - if (saldoIniziale <= 0) { - System.out.println("Errore: il saldo iniziale non può essere minore o uguale a zero."); + if (quantita <= 0) { + System.out.println("Errore: la quantità non può essere minore o uguale a zero."); pausa(); error = true; } @@ -234,7 +232,7 @@ public class MyBank { } } while (error); - return saldoIniziale; + return quantita; } static void salvaContoCorrente(ContoCorrente conto) { @@ -246,6 +244,48 @@ public class MyBank { } catch (Exception _) { System.out.println("Errore: impossibile salvare il conto corrente."); } + } + + static void preleva(ArrayList 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 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; + } }