namespace agenzia_viaggi; class Program { static void Main(string[] args) { Console.Clear(); int scelta = 3; bool eccezione; do { Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Demo"); Console.WriteLine("2. Esecuzione standard"); Console.WriteLine("0. Esci"); Console.Write("Scelta: "); eccezione = false; try { scelta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { switch (scelta) { case 0: break; case 1: Console.Clear(); Demo(); break; case 2: Console.Clear(); Menu(); break; default: Console.WriteLine("Opzione non valida"); Pausa(); break; } } } while (eccezione || scelta < 0 || scelta > 2); } static void Pausa() { Console.WriteLine("Premere un tasto per continuare. . ."); Console.ReadKey(); } static void Demo() { Cliente[] clienti = new Cliente[2]; string nome, cognome, codiceFiscale; int eta = 0; bool eccezione; //inserimento cliente1 { Console.WriteLine("Quanti clienti considerare? 2"); Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("3. Mostra informazioni cliente"); Console.WriteLine("4. Cancella prenotazione"); Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("6. Aggiungi prenotazione"); Console.WriteLine("0. Esci"); Console.WriteLine("Scelta: 1"); Console.WriteLine("Inserire i dati di quale cliente? "); Console.WriteLine("1"); Console.WriteLine("2"); Console.WriteLine("Scelta: 1"); do { Console.Write("Inserire il nome: "); nome = Console.ReadLine(); if (string.IsNullOrWhiteSpace(nome)) { Console.WriteLine("Errore: inserire un nome"); Pausa(); } } while (string.IsNullOrWhiteSpace(nome)); do { Console.Write("Inserire il cognome: "); cognome = Console.ReadLine(); if (string.IsNullOrWhiteSpace(cognome)) { Console.WriteLine("Errore: inserire un cognome"); Pausa(); } } while (string.IsNullOrWhiteSpace(cognome)); do { Console.Write("Inserire il codice fiscale: "); codiceFiscale = Console.ReadLine(); if (string.IsNullOrWhiteSpace(codiceFiscale)) { Console.WriteLine("Errore: inserire un codice fiscale"); Pausa(); } } while (string.IsNullOrWhiteSpace(codiceFiscale)); do { Console.Write("Inserire l'età: "); eccezione = false; try { eta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Età non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (eta <= 0) { Console.WriteLine("Errore: non è possibile inserire un'età inferiore a 1"); Pausa(); } } } while (eccezione || eta <= 0); Console.Write("Inserire il numero di prenotazioni: 2"); clienti[0] = new Cliente(nome, cognome, codiceFiscale, Convert.ToString(eta), 2); } //inserimento prenotazione 1 cliente1 { string[] periodi = ["primavera", "estate", "autunno", "inverno"]; int giorniPrenotati = 0, numeroPersone = 0, scelta; bool exit = false; Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("3. Mostra informazioni cliente"); Console.WriteLine("4. Cancella prenotazione"); Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("6. Aggiungi prenotazione"); Console.WriteLine("0. Esci"); Console.WriteLine("Scelta: 2"); Console.WriteLine("Inserire la prenotazione di quale cliente? "); Console.WriteLine("1"); Console.WriteLine("2"); Console.WriteLine("Scelta: 1"); scelta = 5; do { Console.WriteLine("Quale periodo dell'anno scegliere?"); Console.WriteLine("1. Primavera"); Console.WriteLine("2. Estate"); Console.WriteLine("3. Autunno"); Console.WriteLine("4. Inverno"); Console.Write("Scelta: "); eccezione = false; try { scelta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (scelta < 1 || scelta > 4) { Console.WriteLine("Opzione non valida"); Pausa(); } } } while (eccezione || scelta < 1 || scelta > 4); do { Console.Write("Per quanti giorni prenotare? "); eccezione = false; try { giorniPrenotati = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (giorniPrenotati <= 0) { Console.WriteLine("Errore: impossibile prenotare per meno di un giorno."); Pausa(); } } } while (eccezione || giorniPrenotati <= 0); do { Console.Write("Per quante persone prenotare? "); eccezione = false; try { numeroPersone = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (numeroPersone <= 0) { Console.WriteLine("Errore: impossibile prenotare per meno di una persona."); Pausa(); } } } while (numeroPersone <= 0); for (int i = 0; i < clienti[0].GetPrenotazioni().Length && !exit; i++) { if (clienti[0].GetPrenotazioni()[i] != null) { exit = clienti[0].GetPrenotazioni()[i].GetPeriodo() == periodi[scelta - 1] || clienti[0].GetPrenotazioni()[i].GetGiorniPrenotati() == Convert.ToString(giorniPrenotati) || clienti[0].GetPrenotazioni()[i].GetNumeroPersone() == Convert.ToString(numeroPersone); } } if (!exit) { eccezione = false; try { clienti[0].InserisciPrenotazione(periodi[scelta - 1], Convert.ToString(giorniPrenotati), Convert.ToString(numeroPersone)); } catch (Exception e) { Console.WriteLine(e.Message); eccezione = true; } if (!eccezione) { Console.WriteLine("Prenotazione inserita correttamente."); } Pausa(); } else { Console.WriteLine("Prenotazione già esistente."); Pausa(); } } //inserimento prenotazione 2 cliente1 { string[] periodi = ["primavera", "estate", "autunno", "inverno"]; int giorniPrenotati = 0, numeroPersone = 0, scelta; bool exit = false; Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("3. Mostra informazioni cliente"); Console.WriteLine("4. Cancella prenotazione"); Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("6. Aggiungi prenotazione"); Console.WriteLine("0. Esci"); Console.WriteLine("Scelta: 2"); Console.WriteLine("Inserire la prenotazione di quale cliente? "); Console.WriteLine("1"); Console.WriteLine("2"); Console.WriteLine("Scelta: 1"); scelta = 5; do { Console.WriteLine("Quale periodo dell'anno scegliere?"); Console.WriteLine("1. Primavera"); Console.WriteLine("2. Estate"); Console.WriteLine("3. Autunno"); Console.WriteLine("4. Inverno"); Console.Write("Scelta: "); eccezione = false; try { scelta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (scelta < 1 || scelta > 4) { Console.WriteLine("Opzione non valida"); Pausa(); } } } while (eccezione || scelta < 1 || scelta > 4); do { Console.Write("Per quanti giorni prenotare? "); eccezione = false; try { giorniPrenotati = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (giorniPrenotati <= 0) { Console.WriteLine("Errore: impossibile prenotare per meno di un giorno."); Pausa(); } } } while (eccezione || giorniPrenotati <= 0); do { Console.Write("Per quante persone prenotare? "); eccezione = false; try { numeroPersone = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (numeroPersone <= 0) { Console.WriteLine("Errore: impossibile prenotare per meno di una persona."); Pausa(); } } } while (numeroPersone <= 0); for (int i = 0; i < clienti[0].GetPrenotazioni().Length && !exit; i++) { if (clienti[0].GetPrenotazioni()[i] != null) { exit = clienti[0].GetPrenotazioni()[i].GetPeriodo() == periodi[scelta - 1] || clienti[0].GetPrenotazioni()[i].GetGiorniPrenotati() == Convert.ToString(giorniPrenotati) || clienti[0].GetPrenotazioni()[i].GetNumeroPersone() == Convert.ToString(numeroPersone); } } if (!exit) { eccezione = false; try { clienti[0].InserisciPrenotazione(periodi[scelta - 1], Convert.ToString(giorniPrenotati), Convert.ToString(numeroPersone)); } catch (Exception e) { Console.WriteLine(e.Message); eccezione = true; } if (!eccezione) { Console.WriteLine("Prenotazione inserita correttamente."); } Pausa(); } else { Console.WriteLine("Prenotazione già esistente."); Pausa(); } } //inserimento cliente2 { Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("3. Mostra informazioni cliente"); Console.WriteLine("4. Cancella prenotazione"); Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("6. Aggiungi prenotazione"); Console.WriteLine("0. Esci"); Console.WriteLine("Scelta: 1"); Console.WriteLine("Inserire i dati di quale cliente? "); Console.WriteLine("1"); Console.WriteLine("2"); Console.WriteLine("Scelta: 2"); do { Console.Write("Inserire il nome: "); nome = Console.ReadLine(); if (string.IsNullOrWhiteSpace(nome)) { Console.WriteLine("Errore: inserire un nome"); Pausa(); } } while (string.IsNullOrWhiteSpace(nome)); do { Console.Write("Inserire il cognome: "); cognome = Console.ReadLine(); if (string.IsNullOrWhiteSpace(cognome)) { Console.WriteLine("Errore: inserire un cognome"); Pausa(); } } while (string.IsNullOrWhiteSpace(cognome)); do { Console.Write("Inserire il codice fiscale: "); codiceFiscale = Console.ReadLine(); if (string.IsNullOrWhiteSpace(codiceFiscale)) { Console.WriteLine("Errore: inserire un codice fiscale"); Pausa(); } } while (string.IsNullOrWhiteSpace(codiceFiscale)); do { Console.Write("Inserire l'età: "); eccezione = false; try { eta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Età non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (eta <= 0) { Console.WriteLine("Errore: non è possibile inserire un'età inferiore a 1"); Pausa(); } } } while (eccezione || eta <= 0); Console.Write("Inserire il numero di prenotazioni: 2"); clienti[1] = new Cliente(nome, cognome, codiceFiscale, Convert.ToString(eta), 2); } //inserimento prenotazione 1 cliente2 { string[] periodi = ["primavera", "estate", "autunno", "inverno"]; int giorniPrenotati = 0, numeroPersone = 0, scelta; bool exit = false; Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("3. Mostra informazioni cliente"); Console.WriteLine("4. Cancella prenotazione"); Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("6. Aggiungi prenotazione"); Console.WriteLine("0. Esci"); Console.WriteLine("Scelta: 2"); Console.WriteLine("Inserire la prenotazione di quale cliente? "); Console.WriteLine("1"); Console.WriteLine("2"); Console.WriteLine("Scelta: 2"); scelta = 5; do { Console.WriteLine("Quale periodo dell'anno scegliere?"); Console.WriteLine("1. Primavera"); Console.WriteLine("2. Estate"); Console.WriteLine("3. Autunno"); Console.WriteLine("4. Inverno"); Console.Write("Scelta: "); eccezione = false; try { scelta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (scelta < 1 || scelta > 4) { Console.WriteLine("Opzione non valida"); Pausa(); } } } while (eccezione || scelta < 1 || scelta > 4); do { Console.Write("Per quanti giorni prenotare? "); eccezione = false; try { giorniPrenotati = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (giorniPrenotati <= 0) { Console.WriteLine("Errore: impossibile prenotare per meno di un giorno."); Pausa(); } } } while (eccezione || giorniPrenotati <= 0); do { Console.Write("Per quante persone prenotare? "); eccezione = false; try { numeroPersone = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (numeroPersone <= 0) { Console.WriteLine("Errore: impossibile prenotare per meno di una persona."); Pausa(); } } } while (numeroPersone <= 0); for (int i = 0; i < clienti[1].GetPrenotazioni().Length && !exit; i++) { if (clienti[1].GetPrenotazioni()[i] != null) { exit = clienti[1].GetPrenotazioni()[i].GetPeriodo() == periodi[scelta - 1] || clienti[1].GetPrenotazioni()[i].GetGiorniPrenotati() == Convert.ToString(giorniPrenotati) || clienti[1].GetPrenotazioni()[i].GetNumeroPersone() == Convert.ToString(numeroPersone); } } if (!exit) { eccezione = false; try { clienti[1].InserisciPrenotazione(periodi[scelta - 1], Convert.ToString(giorniPrenotati), Convert.ToString(numeroPersone)); } catch (Exception e) { Console.WriteLine(e.Message); eccezione = true; } if (!eccezione) { Console.WriteLine("Prenotazione inserita correttamente."); } Pausa(); } else { Console.WriteLine("Prenotazione già esistente."); Pausa(); } } //inserimento prenotazione 2 cliente2 { string[] periodi = ["primavera", "estate", "autunno", "inverno"]; int giorniPrenotati = 0, numeroPersone = 0, scelta; bool exit = false; Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("3. Mostra informazioni cliente"); Console.WriteLine("4. Cancella prenotazione"); Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("6. Aggiungi prenotazione"); Console.WriteLine("0. Esci"); Console.WriteLine("Scelta: 2"); Console.WriteLine("Inserire la prenotazione di quale cliente? "); Console.WriteLine("1"); Console.WriteLine("2"); Console.WriteLine("Scelta: 2"); scelta = 5; do { Console.WriteLine("Quale periodo dell'anno scegliere?"); Console.WriteLine("1. Primavera"); Console.WriteLine("2. Estate"); Console.WriteLine("3. Autunno"); Console.WriteLine("4. Inverno"); Console.Write("Scelta: "); eccezione = false; try { scelta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (scelta < 1 || scelta > 4) { Console.WriteLine("Opzione non valida"); Pausa(); } } } while (eccezione || scelta < 1 || scelta > 4); do { Console.Write("Per quanti giorni prenotare? "); eccezione = false; try { giorniPrenotati = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (giorniPrenotati <= 0) { Console.WriteLine("Errore: impossibile prenotare per meno di un giorno."); Pausa(); } } } while (eccezione || giorniPrenotati <= 0); do { Console.Write("Per quante persone prenotare? "); eccezione = false; try { numeroPersone = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (numeroPersone <= 0) { Console.WriteLine("Errore: impossibile prenotare per meno di una persona."); Pausa(); } } } while (numeroPersone <= 0); for (int i = 0; i < clienti[1].GetPrenotazioni().Length && !exit; i++) { if (clienti[1].GetPrenotazioni()[i] != null) { exit = clienti[1].GetPrenotazioni()[i].GetPeriodo() == periodi[scelta - 1] || clienti[1].GetPrenotazioni()[i].GetGiorniPrenotati() == Convert.ToString(giorniPrenotati) || clienti[1].GetPrenotazioni()[i].GetNumeroPersone() == Convert.ToString(numeroPersone); } } if (!exit) { eccezione = false; try { clienti[1].InserisciPrenotazione(periodi[scelta - 1], Convert.ToString(giorniPrenotati), Convert.ToString(numeroPersone)); } catch (Exception e) { Console.WriteLine(e.Message); eccezione = true; } if (!eccezione) { Console.WriteLine("Prenotazione inserita correttamente."); } Pausa(); } else { Console.WriteLine("Prenotazione già esistente."); Pausa(); } } //stampa di tutti i clienti e tutte le prenotazioni { Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("3. Mostra informazioni cliente"); Console.WriteLine("4. Cancella prenotazione"); Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("6. Aggiungi prenotazione"); Console.WriteLine("0. Esci"); Console.WriteLine("Scelta: 3"); for (int i = 0; i < 2; i++) { if (clienti[i] != null) { clienti[i].StampaDatiCliente(); clienti[i].StampaPrenotazioni(); } } Pausa(); } //cancella prenotazione cliente1 { int scelta = 0; Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("3. Mostra informazioni cliente"); Console.WriteLine("4. Cancella prenotazione"); Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("6. Aggiungi prenotazione"); Console.WriteLine("0. Esci"); Console.WriteLine("Scelta: 4"); Console.WriteLine("Cancellare la prenotazione di quale cliente? "); Console.WriteLine("1"); Console.WriteLine("2"); Console.WriteLine("Scelta: 1"); do { Console.WriteLine("Scegliere una prenotazione:"); for (int i = 0; i < clienti[0].GetPrenotazioni().Length; i++) { if (clienti[0].GetPrenotazioni()[i] != null) { Console.WriteLine($"{i + 1}. {clienti[0].GetPrenotazioni()[i].GetUUID()}"); } } Console.Write("Scelta: "); eccezione = false; try { scelta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (scelta < 1 || scelta > clienti[0].GetPrenotazioni().Length) { Console.WriteLine("Opzione non valida"); Pausa(); } else if (clienti[0].GetPrenotazioni()[scelta - 1] == null) { Console.WriteLine("Opzione non valida"); Pausa(); } } } while (eccezione || scelta < 1 || scelta > clienti[0].GetPrenotazioni().Length || clienti[0].GetPrenotazioni()[scelta - 1] == null); clienti[0].CancellaPrenotazione(clienti[0].GetPrenotazioni()[scelta - 1].GetUUID()); Console.WriteLine("Prenotazione cancellata con successo."); Pausa(); } //aggiunta prenotazione cliente2 { Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("3. Mostra informazioni cliente"); Console.WriteLine("4. Cancella prenotazione"); Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("6. Aggiungi prenotazione"); Console.WriteLine("0. Esci"); Console.WriteLine("Scelta: 6"); Console.WriteLine("Aggiungere una prenotazione a quale cliente?"); Console.WriteLine("1"); Console.WriteLine("2"); Console.WriteLine("Scelta: 2"); Prenotazione[] precedente = clienti[1].GetPrenotazioni(); Prenotazione[] nuovo = new Prenotazione[precedente.Length + 1]; for (int i = 0; i < precedente.Length; i++) { nuovo[i] = precedente[i]; } clienti[1].SetPrenotazioni(nuovo); Console.WriteLine("Prenotazione aggiunta con successo"); Pausa(); } //inserimento prenotazione 3 cliente2 { string[] periodi = ["primavera", "estate", "autunno", "inverno"]; int giorniPrenotati = 0, numeroPersone = 0, scelta; Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("3. Mostra informazioni cliente"); Console.WriteLine("4. Cancella prenotazione"); Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("6. Aggiungi prenotazione"); Console.WriteLine("0. Esci"); Console.WriteLine("Scelta: 2"); Console.WriteLine("Inserire la prenotazione di quale cliente? "); Console.WriteLine("1"); Console.WriteLine("2"); Console.WriteLine("Scelta: 2"); scelta = 5; do { Console.WriteLine("Quale periodo dell'anno scegliere?"); Console.WriteLine("1. Primavera"); Console.WriteLine("2. Estate"); Console.WriteLine("3. Autunno"); Console.WriteLine("4. Inverno"); Console.Write("Scelta: "); eccezione = false; try { scelta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (scelta < 1 || scelta > 4) { Console.WriteLine("Opzione non valida"); Pausa(); } } } while (eccezione || scelta < 1 || scelta > 4); do { Console.Write("Per quanti giorni prenotare? "); eccezione = false; try { giorniPrenotati = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (giorniPrenotati <= 0) { Console.WriteLine("Errore: impossibile prenotare per meno di un giorno."); Pausa(); } } } while (eccezione || giorniPrenotati <= 0); do { Console.Write("Per quante persone prenotare? "); eccezione = false; try { numeroPersone = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (numeroPersone <= 0) { Console.WriteLine("Errore: impossibile prenotare per meno di una persona."); Pausa(); } } } while (numeroPersone <= 0); eccezione = false; try { clienti[1].InserisciPrenotazione(periodi[scelta - 1], Convert.ToString(giorniPrenotati), Convert.ToString(numeroPersone)); } catch (Exception e) { Console.WriteLine(e.Message); eccezione = true; } if (!eccezione) { Console.WriteLine("Prenotazione inserita correttamente."); } Pausa(); } //stampa di tutti i clienti e tutte le prenotazioni { Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("3. Mostra informazioni cliente"); Console.WriteLine("4. Cancella prenotazione"); Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("6. Aggiungi prenotazione"); Console.WriteLine("0. Esci"); Console.WriteLine("Scelta: 3"); for (int i = 0; i < 2; i++) { if (clienti[i] != null) { clienti[i].StampaDatiCliente(); clienti[i].StampaPrenotazioni(); } } Pausa(); } //stampa tutte le operazioni { for (int i = 0; i < clienti.Length; i++) { if (clienti[i] != null) { Console.WriteLine($"Cliente n. {i + 1}\n"); clienti[i].StampaPrenotazioni(); } } Pausa(); } } static void Menu() { int numeroClienti = 0, scelta = 0, input = 0; bool eccezione; do { Console.Write("Quanti clienti considerare? "); eccezione = false; try { numeroClienti = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (numeroClienti <= 0) { Console.WriteLine("Errore: non è possibile considerare meno di un cliente."); Pausa(); } } } while (eccezione || numeroClienti <= 0); Cliente[] clienti = new Cliente[numeroClienti]; do { Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("3. Mostra informazioni cliente"); Console.WriteLine("4. Cancella prenotazione"); Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("6. Aggiungi prenotazione"); Console.WriteLine("0. Esci"); Console.Write("Scelta: "); eccezione = false; try { scelta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { switch (scelta) { case 0: break; case 1: do { Console.WriteLine("Inserire i dati di quale cliente? "); for (int i = 0; i < clienti.Length; i++) { Console.WriteLine(i + 1); } Console.Write("Scelta: "); eccezione = false; try { input = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (input <= 0 || input > numeroClienti) { Console.WriteLine("Opzione non valida"); Pausa(); } else if (clienti[input - 1] != null) { Console.WriteLine("Errore: i dati di questo cliente sono già stati inseriti."); Pausa(); } } } while (eccezione || input <= 0 || input > numeroClienti); if (clienti[input - 1] == null) { clienti[input - 1] = CreaCliente(); Console.WriteLine("Cliente inserito con successo"); Pausa(); } break; case 2: string[] periodi = ["primavera", "estate", "autunno", "inverno"]; int giorniPrenotati = 0, numeroPersone = 0; bool exit = false; do { Console.WriteLine("Inserire la prenotazione di quale cliente? "); for (int i = 0; i < clienti.Length; i++) { Console.WriteLine(i + 1); } Console.Write("Scelta: "); eccezione = false; try { input = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (input <= 0 || input > numeroClienti) { Console.WriteLine("Opzione non valida"); Pausa(); } else if (clienti[input - 1] == null) { Console.WriteLine("I dati di questo cliente non sono ancora stati inseriti."); Pausa(); } } } while (eccezione || input <= 0 || input > numeroClienti); if (clienti[input - 1] != null) { scelta = 5; do { Console.WriteLine("Quale periodo dell'anno scegliere?"); Console.WriteLine("1. Primavera"); Console.WriteLine("2. Estate"); Console.WriteLine("3. Autunno"); Console.WriteLine("4. Inverno"); Console.Write("Scelta: "); eccezione = false; try { scelta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (scelta < 1 || scelta > 4) { Console.WriteLine("Opzione non valida"); Pausa(); } } } while (eccezione || scelta < 1 || scelta > 4); do { Console.Write("Per quanti giorni prenotare? "); eccezione = false; try { giorniPrenotati = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (giorniPrenotati <= 0) { Console.WriteLine("Errore: impossibile prenotare per meno di un giorno."); Pausa(); } } } while (eccezione || giorniPrenotati <= 0); do { Console.Write("Per quante persone prenotare? "); eccezione = false; try { numeroPersone = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (numeroPersone <= 0) { Console.WriteLine("Errore: impossibile prenotare per meno di una persona."); Pausa(); } } } while (numeroPersone <= 0); for (int i = 0; i < clienti[input - 1].GetPrenotazioni().Length && !exit; i++) { if (clienti[input - 1].GetPrenotazioni()[i] != null) { exit = clienti[input - 1].GetPrenotazioni()[i].GetPeriodo() == periodi[scelta - 1] || clienti[input - 1].GetPrenotazioni()[i].GetGiorniPrenotati() == Convert.ToString(giorniPrenotati) || clienti[input - 1].GetPrenotazioni()[i].GetNumeroPersone() == Convert.ToString(numeroPersone); } } if (!exit) { eccezione = false; try { clienti[input - 1].InserisciPrenotazione(periodi[scelta - 1], Convert.ToString(giorniPrenotati), Convert.ToString(numeroPersone)); } catch (Exception e) { Console.WriteLine(e.Message); eccezione = true; } if (!eccezione) { Console.WriteLine("Prenotazione inserita correttamente."); } Pausa(); } else { Console.WriteLine("Prenotazione già esistente."); Pausa(); } } break; case 3: for (int i = 0; i < numeroClienti; i++) { if (clienti[i] != null) { clienti[i].StampaDatiCliente(); clienti[i].StampaPrenotazioni(); } } Pausa(); break; case 4: do { Console.WriteLine("Cancellare la prenotazione di quale cliente? "); for (int i = 0; i < clienti.Length; i++) { Console.WriteLine(i + 1); } Console.Write("Scelta: "); eccezione = false; try { input = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (input <= 0 || input > numeroClienti) { Console.WriteLine("Opzione non valida"); Pausa(); } else if (clienti[input - 1] == null) { Console.WriteLine("I dati di questo cliente non sono ancora stati inseriti."); Pausa(); } } } while (eccezione || input <= 0 || input > numeroClienti); if (clienti[input - 1] != null) { do { Console.WriteLine("Scegliere una prenotazione:"); for (int i = 0; i < clienti[input - 1].GetPrenotazioni().Length; i++) { if (clienti[input - 1].GetPrenotazioni()[i] != null) { Console.WriteLine($"{i + 1}. {clienti[input - 1].GetPrenotazioni()[i].GetUUID()}"); } } Console.Write("Scelta: "); eccezione = false; try { scelta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (scelta < 1 || scelta > clienti[input - 1].GetPrenotazioni().Length) { Console.WriteLine("Opzione non valida"); Pausa(); } else if (clienti[input - 1].GetPrenotazioni()[scelta - 1] == null) { Console.WriteLine("Opzione non valida"); Pausa(); } } } while (eccezione || scelta < 1 || scelta > clienti[input - 1].GetPrenotazioni().Length || clienti[input - 1].GetPrenotazioni()[scelta - 1] == null); clienti[input - 1].CancellaPrenotazione(clienti[input - 1].GetPrenotazioni()[scelta - 1].GetUUID()); Console.WriteLine("Prenotazione cancellata con successo."); Pausa(); } break; case 5: for (int i = 0; i < clienti.Length; i++) { if (clienti[i] != null) { Console.WriteLine($"Cliente n. {i + 1}\n"); clienti[i].StampaPrenotazioni(); } } Pausa(); break; case 6: do { Console.WriteLine("Aggiungere una prenotazione a quale cliente? "); for (int i = 0; i < clienti.Length; i++) { Console.WriteLine(i + 1); } Console.Write("Scelta: "); eccezione = false; try { input = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Opzione non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (input <= 0 || input > numeroClienti) { Console.WriteLine("Opzione non valida"); Pausa(); } else if (clienti[input - 1] == null) { Console.WriteLine("I dati di questo cliente non sono ancora stati inseriti."); Pausa(); } } } while (eccezione || input <= 0 || input > numeroClienti); if (clienti[input - 1] != null) { Prenotazione[] precedente = clienti[input - 1].GetPrenotazioni(); Prenotazione[] nuovo = new Prenotazione[precedente.Length + 1]; for (int i = 0; i < precedente.Length; i++) { nuovo[i] = precedente[i]; } clienti[input - 1].SetPrenotazioni(nuovo); Console.WriteLine("Prenotazione aggiunta con successo"); Pausa(); } break; default: Console.WriteLine("Opzione non valida"); Pausa(); break; } } } while (eccezione || scelta != 0); } static Cliente CreaCliente() { string nome, cognome, codiceFiscale; int eta = 0, prenotazioni = 0; const int MAX_PRENOTAZIONI = 10; bool eccezione; do { Console.Write("Inserire il nome: "); nome = Console.ReadLine(); if (string.IsNullOrWhiteSpace(nome)) { Console.WriteLine("Errore: inserire un nome"); Pausa(); } } while (string.IsNullOrWhiteSpace(nome)); do { Console.Write("Inserire il cognome: "); cognome = Console.ReadLine(); if (string.IsNullOrWhiteSpace(cognome)) { Console.WriteLine("Errore: inserire un cognome"); Pausa(); } } while (string.IsNullOrWhiteSpace(cognome)); do { Console.Write("Inserire il codice fiscale: "); codiceFiscale = Console.ReadLine(); if (string.IsNullOrWhiteSpace(codiceFiscale)) { Console.WriteLine("Errore: inserire un codice fiscale"); Pausa(); } } while (string.IsNullOrWhiteSpace(codiceFiscale)); do { Console.Write("Inserire l'età: "); eccezione = false; try { eta = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Età non valida"); eccezione = true; Pausa(); } if (!eccezione) { if (eta <= 0) { Console.WriteLine("Errore: non è possibile inserire un'età inferiore a 1"); Pausa(); } } } while (eccezione || eta <= 0); do { Console.Write("Inserire il numero di prenotazioni: "); eccezione = false; try { prenotazioni = Convert.ToInt32(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("Numero non valido"); eccezione = true; Pausa(); } if (!eccezione) { if (prenotazioni <= 0) { Console.WriteLine("Errore: non è possibile inserire un numero di prenotazioni inferiore a 1"); Pausa(); } else if (prenotazioni > MAX_PRENOTAZIONI) { Console.WriteLine($"Errore: sono consentite al massimo {MAX_PRENOTAZIONI} prenotazioni per cliente"); Pausa(); } } } while (eccezione || prenotazioni <= 0 || prenotazioni > MAX_PRENOTAZIONI); return new Cliente(nome, cognome, codiceFiscale, Convert.ToString(eta), prenotazioni); } }