Controllo input e gestione eccezioni fino all'opzione 1

This commit is contained in:
La Programmatrice Verde 2025-05-07 20:39:27 +02:00
parent f9184fea2c
commit ec1388ecb1
16 changed files with 341 additions and 144 deletions

View File

@ -4,34 +4,47 @@ namespace agenzia_viaggi;
class Program { class Program {
static void Main(string[] args) { static void Main(string[] args) {
int scelta = 0; Console.Clear();
int scelta = 3;
bool eccezione;
do { do {
Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("Scegliere un'opzione:");
Console.WriteLine("1. Demo"); Console.WriteLine("1. Demo");
Console.WriteLine("2. Esecuzione standard"); Console.WriteLine("2. Esecuzione standard");
Console.WriteLine("0. Esci");
Console.Write("Scelta: "); Console.Write("Scelta: ");
eccezione = false;
try { try {
scelta = Convert.ToInt32(Console.ReadLine()); scelta = Convert.ToInt32(Console.ReadLine());
} }
catch (FormatException) { catch (FormatException) {
Console.WriteLine("Opzione non valida"); Console.WriteLine("Opzione non valida");
eccezione = true;
Pausa(); Pausa();
} }
switch (scelta) { if (!eccezione) {
case 1: switch (scelta) {
Demo(); case 0:
break; break;
case 2: case 1:
Menu(); Console.Clear();
break; Demo();
default: break;
Console.WriteLine("Opzione non valida"); case 2:
Pausa(); Console.Clear();
break; Menu();
break;
default:
Console.WriteLine("Opzione non valida");
Pausa();
break;
}
} }
} }
while (scelta != 0); while (eccezione || scelta < 0 || scelta > 2);
} }
static void Pausa() { static void Pausa() {
@ -54,25 +67,32 @@ class Program {
static void Menu() { static void Menu() {
int numeroClienti = 0, scelta = 0, input = 0; int numeroClienti = 0, scelta = 0, input = 0;
bool eccezione;
do { do {
Console.Write("Quanti clienti considerare? "); Console.Write("Quanti clienti considerare? ");
eccezione = false;
try { try {
numeroClienti = Convert.ToInt32(Console.ReadLine()); numeroClienti = Convert.ToInt32(Console.ReadLine());
} }
catch (FormatException) { catch (FormatException) {
Console.WriteLine("Numero non valido"); Console.WriteLine("Numero non valido");
eccezione = true;
Pausa(); Pausa();
} }
if (numeroClienti <= 0) { if (!eccezione) {
Console.WriteLine("Errore: non è possibile considerare meno di un cliente."); if (numeroClienti <= 0) {
Pausa(); Console.WriteLine("Errore: non è possibile considerare meno di un cliente.");
Pausa();
}
} }
} }
while (numeroClienti <= 0); while (eccezione || numeroClienti <= 0);
Cliente[] clienti = new Cliente[numeroClienti]; Cliente[] clienti = new Cliente[numeroClienti];
do {
do {
Console.WriteLine("Scegliere un'opzione:"); Console.WriteLine("Scegliere un'opzione:");
Console.WriteLine("1. Inserire i dati dei clienti"); Console.WriteLine("1. Inserire i dati dei clienti");
Console.WriteLine("2. Inserire una prenotazione"); Console.WriteLine("2. Inserire una prenotazione");
@ -81,135 +101,249 @@ class Program {
Console.WriteLine("5. Mostra tutte le prenotazioni"); Console.WriteLine("5. Mostra tutte le prenotazioni");
Console.WriteLine("0. Esci"); Console.WriteLine("0. Esci");
Console.Write("Scelta: "); Console.Write("Scelta: ");
eccezione = false;
try { try {
scelta = Convert.ToInt32(Console.ReadLine()); scelta = Convert.ToInt32(Console.ReadLine());
} }
catch (FormatException) { catch (FormatException) {
Console.WriteLine("Opzione non valida"); Console.WriteLine("Opzione non valida");
eccezione = true;
Pausa(); Pausa();
} }
switch (scelta) {
case 0: if (!eccezione) {
break; switch (scelta) {
case 1: case 0:
do { break;
Console.WriteLine("Inserire i dati di quale cliente? "); 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 || 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;
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();
}
}
}
while (eccezione || input <= 0 || input > numeroClienti);
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);
clienti[input - 1].InserisciPrenotazione(periodi[scelta], Convert.ToString(giorniPrenotati), Convert.ToString(numeroPersone));
Console.WriteLine("Prenotazione inserita correttamente.");
Pausa();
break;
case 3:
for (int i = 0; i < numeroClienti; i++) {
clienti[i].StampaDatiCliente();
clienti[i].StampaPrenotazioni();
}
Pausa();
break;
case 4:
do {
Console.WriteLine("Cancellare la prenotazione di quale cliente? ");
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();
}
}
}
while (eccezione || input <= 0 || input > numeroClienti);
do {
Console.WriteLine("Scegliere una prenotazione:");
for (int i = 0; i < clienti[input].GetPrenotazioni().Length; i++) {
Console.WriteLine($"{i + 1}. {clienti[input].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].GetPrenotazioni().Length) {
Console.WriteLine("Opzione non valida");
Pausa();
}
}
} while (eccezione || scelta < 1 || scelta > clienti[input].GetPrenotazioni().Length);
try { try {
input = Convert.ToInt32(Console.ReadLine()); clienti[input].CancellaPrenotazione(clienti[input].GetPrenotazioni()[scelta - 1].GetUUID());
} }
catch (FormatException) { catch (Exception e) {
Console.WriteLine("Opzione non valida"); Console.WriteLine(e.Message);
Pausa();
} }
if (input <= 0 || input > numeroClienti) { Pausa();
Console.WriteLine("Opzione non valida"); break;
Pausa(); case 5:
for (int i = 0; i < clienti.Length; i++) {
clienti[i].StampaPrenotazioni();
} }
} Pausa();
while (input <= 0 || input > numeroClienti); break;
default:
clienti[input] = CreaCliente(); Console.WriteLine("Opzione non valida");
Pausa();
Pausa(); break;
break; }
case 2:
string[] periodi = ["primavera", "estate", "autunno", "inverno"];
int giorniPrenotati = 0, numeroPersone = 0;
do {
Console.WriteLine("Inserire la prenotazione di quale cliente? ");
try {
input = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException) {
Console.WriteLine("Opzione non valida");
Pausa();
}
if (input <= 0 || input > numeroClienti) {
Console.WriteLine("Opzione non valida");
Pausa();
}
}
while (input <= 0 || input > numeroClienti);
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: ");
try {
scelta = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException) {
Console.WriteLine("Opzione non valida");
Pausa();
}
if (scelta < 1 || scelta > 4) {
}
} while (scelta < 1 || scelta > 4);
do {
Console.Write("Per quanti giorni prenotare?");
try {
giorniPrenotati = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException) {
Console.WriteLine("Numero non valido");
}
if (giorniPrenotati <= 0) {
Console.WriteLine("Errore: impossibile prenotare per meno di un giorno.");
Pausa();
}
}
while (giorniPrenotati <= 0);
do {
Console.Write("Per quante persone prenotare?");
try {
numeroPersone = Convert.ToInt32(Console.ReadLine());
}
catch (FormatException) {
Console.WriteLine("Numero non valido");
}
if (numeroPersone <= 0) {
Console.WriteLine("Errore: impossibile prenotare per meno di una persona.");
Pausa();
}
}
while (numeroPersone <= 0);
clienti[input].InserisciPrenotazione(periodi[scelta], Convert.ToString(giorniPrenotati), Convert.ToString(numeroPersone));
Pausa();
break;
case 3:
for (int i = 0; i < numeroClienti; i++) {
clienti[i].StampaDatiCliente();
clienti[i].StampaPrenotazioni();
}
Pausa();
break;
case 4:
Pausa();
break;
case 5:
Pausa();
break;
default:
Console.WriteLine("Opzione non valida");
Pausa();
break;
} }
} }
while (scelta != 0); while (eccezione || scelta != 0);
} }
static Cliente CreaCliente() { static Cliente CreaCliente() {
string nome, cognome, codiceFiscale; string nome, cognome, codiceFiscale;
int eta = 0, prenotazioni = 0; int eta = 0, prenotazioni = 0;
const int MAX_PRENOTAZIONI = 10; const int MAX_PRENOTAZIONI = 10;
bool eccezione;
do { do {
Console.Write("Inserire il nome: "); Console.Write("Inserire il nome: ");
@ -243,39 +377,51 @@ class Program {
do { do {
Console.Write("Inserire l'età: "); Console.Write("Inserire l'età: ");
eccezione = false;
try { try {
eta = Convert.ToInt32(Console.ReadLine()); eta = Convert.ToInt32(Console.ReadLine());
} }
catch (FormatException) { catch (FormatException) {
Console.WriteLine("Età non valida"); Console.WriteLine("Età non valida");
eccezione = true;
Pausa(); Pausa();
} }
if (eta <= 0) { if (!eccezione) {
Console.WriteLine("Errore: non è possibile inserire un'età inferiore a 1"); if (eta <= 0) {
Pausa(); Console.WriteLine("Errore: non è possibile inserire un'età inferiore a 1");
Pausa();
}
} }
} }
while (eta <= 0); while (eccezione || eta <= 0);
do { do {
Console.Write("Inserire il numero di prenotazioni: "); Console.Write("Inserire il numero di prenotazioni: ");
eccezione = false;
try { try {
prenotazioni = Convert.ToInt32(Console.ReadLine()); prenotazioni = Convert.ToInt32(Console.ReadLine());
} }
catch (FormatException) { catch (FormatException) {
Console.WriteLine("Età non valida"); Console.WriteLine("Numero non valido");
eccezione = true;
Pausa(); Pausa();
} }
if (prenotazioni <= 0) { if (!eccezione) {
Console.WriteLine("Errore: non è possibile inserire un numero di prenotazioni inferiore a 1"); if (prenotazioni <= 0) {
Pausa(); 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"); else if (prenotazioni > MAX_PRENOTAZIONI) {
Pausa(); Console.WriteLine($"Errore: sono consentite al massimo {MAX_PRENOTAZIONI} prenotazioni per cliente");
Pausa();
}
} }
} }
while (prenotazioni <= 0 && prenotazioni > MAX_PRENOTAZIONI); while (eccezione || prenotazioni <= 0 || prenotazioni > MAX_PRENOTAZIONI);
return new Cliente(nome, cognome, codiceFiscale, Convert.ToString(eta), prenotazioni); return new Cliente(nome, cognome, codiceFiscale, Convert.ToString(eta), prenotazioni);

BIN
bin/Debug/net9.0/agenzia_viaggi Executable file

Binary file not shown.

View File

@ -0,0 +1,23 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v9.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v9.0": {
"agenzia_viaggi/1.0.0": {
"runtime": {
"agenzia_viaggi.dll": {}
}
}
}
},
"libraries": {
"agenzia_viaggi/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,12 @@
{
"runtimeOptions": {
"tfm": "net9.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "9.0.0"
},
"configProperties": {
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

View File

@ -13,10 +13,10 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("agenzia_viaggi")] [assembly: System.Reflection.AssemblyCompanyAttribute("agenzia_viaggi")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8e5f3e33fbcd48695682ec39aee4bd41978d057c")] [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f9184fea2c9646a9d311a20814a0ffb94d3afd4a")]
[assembly: System.Reflection.AssemblyProductAttribute("agenzia_viaggi")] [assembly: System.Reflection.AssemblyProductAttribute("agenzia_viaggi")]
[assembly: System.Reflection.AssemblyTitleAttribute("agenzia_viaggi")] [assembly: System.Reflection.AssemblyTitleAttribute("agenzia_viaggi")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class. // Generato dalla classe WriteCodeFragment di MSBuild.

View File

@ -1 +1 @@
f8f6f674141003bac93fe918afe7713f0e7b7f4d36c5021a8ac1373fecaeff14 1bc455adbb990f51be8b7d12aa7c0f4dcc419f5750faa87eb217db2284f5c44c

View File

@ -0,0 +1 @@
272511a537020fef9d5058812d4bcfb6bb307ad5010489099043c9b34fa5a981

View File

@ -0,0 +1,14 @@
/home/Verde/git/agenzia_viaggi/bin/Debug/net9.0/agenzia_viaggi
/home/Verde/git/agenzia_viaggi/bin/Debug/net9.0/agenzia_viaggi.deps.json
/home/Verde/git/agenzia_viaggi/bin/Debug/net9.0/agenzia_viaggi.runtimeconfig.json
/home/Verde/git/agenzia_viaggi/bin/Debug/net9.0/agenzia_viaggi.dll
/home/Verde/git/agenzia_viaggi/bin/Debug/net9.0/agenzia_viaggi.pdb
/home/Verde/git/agenzia_viaggi/obj/Debug/net9.0/agenzia_viaggi.GeneratedMSBuildEditorConfig.editorconfig
/home/Verde/git/agenzia_viaggi/obj/Debug/net9.0/agenzia_viaggi.AssemblyInfoInputs.cache
/home/Verde/git/agenzia_viaggi/obj/Debug/net9.0/agenzia_viaggi.AssemblyInfo.cs
/home/Verde/git/agenzia_viaggi/obj/Debug/net9.0/agenzia_viaggi.csproj.CoreCompileInputs.cache
/home/Verde/git/agenzia_viaggi/obj/Debug/net9.0/agenzia_viaggi.dll
/home/Verde/git/agenzia_viaggi/obj/Debug/net9.0/refint/agenzia_viaggi.dll
/home/Verde/git/agenzia_viaggi/obj/Debug/net9.0/agenzia_viaggi.pdb
/home/Verde/git/agenzia_viaggi/obj/Debug/net9.0/agenzia_viaggi.genruntimeconfig.cache
/home/Verde/git/agenzia_viaggi/obj/Debug/net9.0/ref/agenzia_viaggi.dll

Binary file not shown.

View File

@ -0,0 +1 @@
106d84dc00dd80da38f44a5ee46bdbd9b6bee51edd940c49f882de68d9ebdfc6

Binary file not shown.

BIN
obj/Debug/net9.0/apphost Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.