From 61a485c92ba5f0a354d07c966335a252d41eb166 Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Thu, 15 Jan 2026 18:26:36 +0100 Subject: [PATCH] Gestione codice fiscale + numeroContoCorrente --- src/mybank/ContoCorrente.java | 13 ++++++++-- src/mybank/MyBank.java | 44 +++++++++++++++++---------------- src/mybank/Persona.java | 32 ++++++++++++++++++++++-- src/mybank/ScriviLeggiFile.java | 36 +++++++++++++++++++++++++++ 4 files changed, 100 insertions(+), 25 deletions(-) diff --git a/src/mybank/ContoCorrente.java b/src/mybank/ContoCorrente.java index b04979d..347b170 100644 --- a/src/mybank/ContoCorrente.java +++ b/src/mybank/ContoCorrente.java @@ -16,15 +16,16 @@ public class ContoCorrente { private double saldo; private int numeroContoCorrente; + private static int totaleNumeriCorrenti; private static ArrayList numeriContiCorrenti = new ArrayList<>(); public ContoCorrente() { } - public ContoCorrente(Persona intestatario, double saldo, int numeroContoCorrente) { + public ContoCorrente(Persona intestatario, double saldo) { this.intestatario = intestatario; this.saldo = saldo; - this.numeroContoCorrente = numeroContoCorrente; + this.numeroContoCorrente = totaleNumeriCorrenti++; numeriContiCorrenti.add(numeroContoCorrente); MyBank.log("Apertura del conto con saldo iniziale di " + this.saldo, numeroContoCorrente); } @@ -41,6 +42,14 @@ public class ContoCorrente { return numeroContoCorrente; } + public Persona getIntestatario() { + return intestatario; + } + + public double getSaldo() { + return saldo; + } + public void versa(double quantita) { this.saldo += quantita; MyBank.log("Versamento di " + quantita + " effettuato con successo.", this.numeroContoCorrente); diff --git a/src/mybank/MyBank.java b/src/mybank/MyBank.java index e02d9f9..fee9714 100644 --- a/src/mybank/MyBank.java +++ b/src/mybank/MyBank.java @@ -15,6 +15,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.InputMismatchException; +import java.util.List; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -132,10 +133,8 @@ public class MyBank { numeriContiCorrenti.add(conti.getLast().getNumeroContoCorrente()); ContoCorrente.setNumeriContiCorrenti(numeriContiCorrenti); - } catch (Exception e) { + } catch (Exception _) { System.out.println("Errore nella lettura del file di conto corrente."); - System.out.println(e.getMessage()); - System.out.println(e.getStackTrace()); } } } @@ -144,32 +143,35 @@ public class MyBank { } static void aggiungiConto(ArrayList conti) { - double saldoIniziale; - int numeroContoCorrente; - Persona persona = persona(); + Persona persona; boolean error; ContoCorrente contoCorrente; + List listaCodiciFiscali; do { error = false; - saldoIniziale = quantita("del saldo iniziale"); + try { + persona = persona(); + listaCodiciFiscali = ScriviLeggiFile.leggiCodiciFiscali(); - numeroContoCorrente = Math.abs(persona.getCodiceFiscale().hashCode()); - - if (ContoCorrente.getNumeriContiCorrenti().contains(numeroContoCorrente)) { - System.out.println("Errore: esiste già un conto corrente per questo codice fiscale, riprovare."); - pausa(); - error = true; - } else { - File percorsoConti = new File(PATH_CONTI); - if (!percorsoConti.exists()) { - percorsoConti.mkdir(); + if (listaCodiciFiscali != null && listaCodiciFiscali.contains(persona.getCodiceFiscale())) { + System.out.println("Errore: esiste già un conto corrente per questo codice fiscale, riprovare."); + pausa(); + error = true; + } else { + ScriviLeggiFile.salvaCodiceFiscale(persona.getCodiceFiscale()); + File percorsoConti = new File(PATH_CONTI); + if (!percorsoConti.exists()) { + percorsoConti.mkdir(); + } + contoCorrente = new ContoCorrente(persona, quantita("del saldo iniziale")); + conti.add(contoCorrente); + salvaContoCorrente(contoCorrente); } - contoCorrente = new ContoCorrente(persona, saldoIniziale, - numeroContoCorrente); - conti.add(contoCorrente); - salvaContoCorrente(contoCorrente); + } catch (IOException e) { + System.out.println(e.getMessage()); + error = true; } } while (error); } diff --git a/src/mybank/Persona.java b/src/mybank/Persona.java index 81a173c..77be0cf 100644 --- a/src/mybank/Persona.java +++ b/src/mybank/Persona.java @@ -3,8 +3,11 @@ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ package mybank; - +import java.util.ArrayList; import java.util.Date; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonFormat; /** * @@ -15,16 +18,41 @@ public class Persona { private String nome; private String cognome; private String codiceFiscale; + + @JsonFormat + (shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy", + timezone = "Europe/Rome") private Date dataDiNascita; - + + private static ArrayList codiciFiscali = new ArrayList<>(); + + public Persona(){} + public Persona(String nome, String cognome, String codiceFiscale, Date dataDiNascita) { this.nome = nome; this.cognome = cognome; this.codiceFiscale = codiceFiscale; this.dataDiNascita = dataDiNascita; + codiciFiscali.add(codiceFiscale); } public String getCodiceFiscale() { return codiceFiscale; } + + public static List getCodiciFiscali() { + return codiciFiscali; + } + + public static void setCodiciFiscali(List codiciFiscali) { + Persona.codiciFiscali = (ArrayList) codiciFiscali; + } + + public String getNome() { + return nome; + } + + public String getCognome() { + return cognome; + } } \ No newline at end of file diff --git a/src/mybank/ScriviLeggiFile.java b/src/mybank/ScriviLeggiFile.java index b261fa1..362f988 100644 --- a/src/mybank/ScriviLeggiFile.java +++ b/src/mybank/ScriviLeggiFile.java @@ -4,10 +4,46 @@ */ package mybank; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.List; + /** * * @author Verde */ public class ScriviLeggiFile { + private static final String PATH_CODICI_FISCALI = "./src/mybank/codiciFiscali.txt"; + private ScriviLeggiFile() { + } + + public static void salvaCodiceFiscale(String codiceFiscale) throws IOException { + try (BufferedWriter bw = new BufferedWriter( + new FileWriter(PATH_CODICI_FISCALI, true))) { + bw.write(codiceFiscale + "\n"); + } catch (IOException _) { + throw new IOException("Errore nella scrittura del codice fiscale."); + } + } + + public static List leggiCodiciFiscali() throws IOException { + List codiciFiscali = null; + + File percorsoCodiciFiscali = new File(PATH_CODICI_FISCALI); + if (percorsoCodiciFiscali.exists()) { + try (BufferedReader bf = new BufferedReader( + new FileReader(PATH_CODICI_FISCALI))) { + codiciFiscali = bf.readAllLines(); + } catch (IOException _) { + throw new IOException("Errore nella lettura dei codici fiscali."); + } + } + + return codiciFiscali; + } } \ No newline at end of file