From f24c58190e794744a6f667271dd6baa79af85bbd Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Tue, 4 Nov 2025 18:35:59 +0100 Subject: [PATCH] Main --- src/appComune/Anagrafica.java | 11 ++- src/appComune/GestisciCodiceFiscale.java | 2 + src/appComune/MainComune.java | 113 ++++++++++++++++++++++- 3 files changed, 119 insertions(+), 7 deletions(-) diff --git a/src/appComune/Anagrafica.java b/src/appComune/Anagrafica.java index 8fead5c..4283c0d 100644 --- a/src/appComune/Anagrafica.java +++ b/src/appComune/Anagrafica.java @@ -6,7 +6,7 @@ package appComune; import java.text.SimpleDateFormat; -import javax.swing.text.SimpleAttributeSet; +import java.util.Date; /** * @@ -30,11 +30,12 @@ public class Anagrafica { this.CF = GestisciCodiceFiscale.CalcolaCodiceFiscale(nome, cognome, dataNascita, luogo, sesso); } + @Override public String toString() { - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - String ritorno = "Nome: " + this.nome + "\nCognome: " + this.cognome + "\nData di nascita: " - + sdf.parse(this.dataNascita) + "\nLuogo di nascita: " + this.luogoNascita + "\nSesso: " + this.sesso - + "\nCodice fiscale: " + this.CF; + SimpleDateFormat sdf = new SimpleDateFormat(MainComune.PATTERN_DATA); + String ritorno = "Nome: " + this.getNome() + "\nCognome: " + this.getCognome() + "\nData di nascita: " + + sdf.format(this.getDataNascita()) + "\nLuogo di nascita: " + this.getLuogoNascita() + "\nSesso: " + this.getSesso() + + "\nCodice fiscale: " + this.getCF(); return ritorno; } diff --git a/src/appComune/GestisciCodiceFiscale.java b/src/appComune/GestisciCodiceFiscale.java index 32ece8b..9b471af 100644 --- a/src/appComune/GestisciCodiceFiscale.java +++ b/src/appComune/GestisciCodiceFiscale.java @@ -4,6 +4,8 @@ */ package appComune; +import java.util.Date; + /** * * @author Verde diff --git a/src/appComune/MainComune.java b/src/appComune/MainComune.java index 67420b6..6ae5a1c 100644 --- a/src/appComune/MainComune.java +++ b/src/appComune/MainComune.java @@ -4,6 +4,10 @@ */ package appComune; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; import java.util.InputMismatchException; import java.util.Scanner; @@ -13,9 +17,12 @@ import java.util.Scanner; */ public class MainComune { static Scanner sc = new Scanner(System.in); + static final String PATTERN_DATA = "dd/MM/yy"; + static final String[] sessiAmmessi = { "m", "f" }; public static void main(String[] args) { int scelta = -1; + ArrayList cittadini = new ArrayList<>(); do { System.out.println("Scegliere un'opzione:"); @@ -32,11 +39,11 @@ public class MainComune { case 0: break; case 1: - + aggiungiCittatino(cittadini); pausa(); break; case 2: - + stampaCittadini(cittadini); pausa(); break; default: @@ -56,4 +63,106 @@ public class MainComune { sc.nextLine(); } + static void aggiungiCittatino(ArrayList cittadini) { + String nome; + String cognome; + Date dataNascita; + String luogoNascita; + String sesso; + + System.out.print("Inserire il nome, compresi eventuali secondi nomi: "); + nome = sc.nextLine().trim(); + + System.out.print("Inserire il cognome, compresi eventuali secondi cognomi: "); + cognome = sc.nextLine().trim(); + + dataNascita = dataNascita(); + + luogoNascita = luogoNascita(); + + sesso = sesso(); + + cittadini.add(new Anagrafica(nome, cognome, dataNascita, luogoNascita, sesso)); + + } + + static Date dataNascita() { + SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DATA); + Date ritorno = null; + boolean error; + + do { + error = false; + + try { + System.out.print("Inserire la data di nascita nel formato gg/mm/aa: "); + ritorno = sdf.parse(sc.nextLine().trim()); + } catch (ParseException _) { + System.out.println("Errore nella lettura della data di nascita."); + pausa(); + error = true; + } + } while (error); + + return ritorno; + } + + static String luogoNascita() { + String ritorno = null; + boolean error; + final String COMUNE = "varese"; + + do { + error = false; + + System.out.print("Inserire il comune di nascita: "); + ritorno = sc.nextLine().toLowerCase().trim(); + + if (!ritorno.equals(COMUNE)) { + System.out.println("Errore: è consentito esclusivamente il comune di " + COMUNE); + pausa(); + error = true; + } + } while (error); + + return ritorno; + } + + static String sesso() { + String ritorno = null; + boolean error; + boolean exit = false; + + do { + error = false; + + System.out.println("Inserire il sesso tra le seguenti opzioni: "); + for (String sesso : sessiAmmessi) { + System.out.println(sesso); + } + System.out.print("Scelta: "); + ritorno = sc.nextLine().toLowerCase().trim(); + + for (int i = 0; i < sessiAmmessi.length && !exit; i++) { + exit = ritorno.equals(sessiAmmessi[i]); + } + + if (!exit) { + System.out.println("Errore: il sesso può essere solo una di queste opzioni:"); + for (String sesso : sessiAmmessi) { + System.out.println(sesso); + } + pausa(); + error = true; + } + } while (error); + + return ritorno; + } + + static void stampaCittadini(ArrayList cittadini) { + for (Anagrafica cittadino : cittadini) { + System.out.println(cittadino.toString()); + } + } } \ No newline at end of file