diff --git a/Cliente.cs b/Cliente.cs
index 77e13af..ceea816 100644
--- a/Cliente.cs
+++ b/Cliente.cs
@@ -1,5 +1,123 @@
namespace Verifica_incontri;
class Cliente {
+string nome;
+ string cognome;
+ string sesso;
+ string eta;
+ string altezza;
+ string professione;
+ string[] interessi;
+ bool isAvailable = true;
+ public Cliente(string p_nome, string p_cognome, string p_sesso, string p_eta, string p_altezza, string p_professione, string[] p_interessi)
+ {
+ this.nome = p_nome;
+ this.cognome = p_cognome;
+ this.sesso = p_sesso;
+ this.eta = p_eta;
+ this.altezza = p_altezza;
+ this.professione = p_professione;
+ this.interessi = p_interessi;
+ }
+
+ public string GetNome()
+ {
+ return this.nome;
+ }
+
+ public string GetCognome()
+ {
+ return this.cognome;
+ }
+ public string GetSesso()
+ {
+ return this.sesso;
+ }
+
+ public string GetEta()
+ {
+ return this.eta;
+ }
+
+ public string GetAltezza()
+ {
+ return this.altezza;
+ }
+
+ public string GetProfessione()
+ {
+ return this.professione;
+ }
+
+
+ public string[] GetInteressi()
+ {
+ return this.interessi;
+ }
+
+ public bool GetIsAvailable()
+ {
+ return this.isAvailable;
+ }
+
+ public void SetNome(string p_nome)
+ {
+ this.nome = p_nome;
+ }
+
+ public void SetCognome(string p_cognome)
+ {
+ this.cognome = p_cognome;
+ }
+ public void SetSesso(string p_sesso)
+ {
+ this.sesso = p_sesso;
+ }
+
+ public void SetEta(string p_eta)
+ {
+ this.eta = p_eta;
+ }
+
+
+ public void SetAltezza(string p_altezza)
+ {
+ this.altezza = p_altezza;
+ }
+
+ public void SetProfessione(string p_professione)
+ {
+ this.professione = p_professione;
+ }
+
+ public void SetInteressi(string[] p_interessi)
+ {
+ this.interessi = p_interessi;
+ }
+
+ public void SetIsAvailable(bool p_isAvailable)
+ {
+ this.isAvailable = p_isAvailable;
+ }
+
+ public void StampaCliente()
+ {
+ string output;
+ Console.WriteLine($"Nome: {this.GetNome()}");
+ Console.WriteLine($"Cognome: {this.GetCognome()}");
+ Console.WriteLine($"Sesso: {this.GetSesso()}");
+ Console.WriteLine($"Età: {this.GetEta()}");
+ Console.WriteLine($"Altezza: {this.GetAltezza()}");
+ Console.WriteLine($"Professione: {this.GetProfessione()}");
+ Console.WriteLine("Interessi: ");
+ for (int i = 0; i < this.interessi.Length; i++)
+ {
+ Console.WriteLine(interessi[i]);
+ }
+
+ output = this.isAvailable ? "Sì" : "No";
+
+ Console.WriteLine($"Disponibile: {output}");
+ }
}
\ No newline at end of file
diff --git a/Program.cs b/Program.cs
index bac033a..4707858 100644
--- a/Program.cs
+++ b/Program.cs
@@ -1,9 +1,393 @@
namespace Verifica_incontri;
class Program
-{
- static void Main(string[] args)
{
- Console.WriteLine("Hello, World!");
- }
-}
+ static void Main(string[] args)
+ {
+ const int MAX_CLIENTI = 3; //da mettere a 10 prima di consegnare
+ int scelta = -1;
+ bool eccezione;
+ Cliente[] clienti = new Cliente[MAX_CLIENTI];
+ do
+ {
+ Console.WriteLine("Inserire un'opzione:");
+ Console.WriteLine("1. Inserisci dati cliente");
+ Console.WriteLine("2. Visualizza clienti");
+ Console.WriteLine("3. Cerca partner");
+ Console.WriteLine("4. Pulisci schermo");
+ Console.WriteLine("0. Esci");
+ Console.Write("Scelta: ");
+ eccezione = false;
+ try
+ {
+ scelta = Convert.ToInt32(Console.ReadLine());
+ }
+ catch (FormatException)
+ {
+ eccezione = true;
+ Console.WriteLine("Opzione non valida.");
+ Pausa();
+ }
+ if (!eccezione)
+ {
+ switch (scelta)
+ {
+ case 0:
+ break;
+ case 1:
+ InserisciClienti(clienti);
+ Pausa();
+ break;
+ case 2:
+ if (!IsClientiPopulated(clienti))
+ {
+ Console.WriteLine("Errore: è necessario inserire i clienti prima di mostrarli.");
+ }
+ else
+ {
+ StampaClienti(clienti);
+ }
+ Pausa();
+ break;
+ case 3:
+ if (!IsClientiPopulated(clienti))
+ {
+ Console.WriteLine("Errore: è necessario inserire i clienti prima di mostrarli.");
+ }
+ else
+ {
+ CercaPartner(clienti);
+ }
+ Pausa();
+ break;
+ case 4:
+ Console.Clear();
+ break;
+ default:
+ Console.WriteLine("Opzione non valida");
+ Pausa();
+ break;
+ }
+ }
+
+ }
+ while (scelta != 0);
+ }
+
+
+ static void Pausa()
+ {
+ Console.WriteLine("Premere un tasto per continuare. . .");
+ Console.ReadKey();
+ }
+
+ static void InserisciClienti(Cliente[] p_clienti)
+ {
+ string nome, cognome, sesso, professione;
+ int eta = -1, altezza = -1, numeroInteressi = -1;
+ string[] interessi;
+ bool eccezione;
+
+ for(int i = 0; i < p_clienti.Length; i++) {
+ Console.WriteLine($"Inserimento dati cliente n. {i + 1}:\n");
+
+ do
+ {
+ Console.Write("Nome: ");
+ nome = Console.ReadLine();
+ if (string.IsNullOrEmpty(nome))
+ {
+ Console.WriteLine("Errore: inserire un nome.");
+ Pausa();
+ }
+ }
+ while (string.IsNullOrEmpty(nome));
+
+ do
+ {
+ Console.Write("Cognome: ");
+ cognome = Console.ReadLine();
+ if (string.IsNullOrEmpty(cognome))
+ {
+ Console.WriteLine("Errore: inserire un cognome.");
+ Pausa();
+ }
+ }
+ while (string.IsNullOrEmpty(cognome));
+
+ do
+ {
+ Console.Write("Sesso: ");
+ sesso = Console.ReadLine();
+ if (string.IsNullOrEmpty(sesso))
+ {
+ Console.WriteLine("Errore: inserire un sesso.");
+ Pausa();
+ }
+ }
+ while (string.IsNullOrEmpty(sesso));
+
+ do
+ {
+ Console.Write("Età: ");
+ eccezione = false;
+ try
+ {
+ eta = Convert.ToInt32(Console.ReadLine());
+ }
+ catch (FormatException)
+ {
+ eccezione = true;
+ Console.WriteLine("Errore: età non valida");
+ Pausa();
+ }
+ if (!eccezione)
+ {
+ if(eta <= 0)
+ {
+ Console.WriteLine("Errore: età non valida");
+ Pausa();
+ }
+ }
+ }
+ while (eccezione || eta <= 0);
+
+ do
+ {
+ Console.Write("Altezza (cm): ");
+ eccezione = false;
+ try
+ {
+ altezza = Convert.ToInt32(Console.ReadLine());
+ }
+ catch (FormatException)
+ {
+ eccezione = true;
+ Console.WriteLine("Errore: altezza non valida");
+ Pausa();
+ }
+ if (!eccezione)
+ {
+ if (altezza <= 0)
+ {
+ Console.WriteLine("Errore: altezza non valida");
+ Pausa();
+ }
+ }
+ }
+ while (eccezione || altezza <= 0);
+
+ do
+ {
+ Console.Write("Professione: ");
+ professione = Console.ReadLine();
+ if (string.IsNullOrEmpty(professione))
+ {
+ Console.WriteLine("Errore: inserire una professione.");
+ Pausa();
+ }
+ }
+ while (string.IsNullOrEmpty(professione));
+
+ do
+ {
+ Console.Write("Numero di interessi: ");
+ eccezione = false;
+ try
+ {
+ numeroInteressi = Convert.ToInt32(Console.ReadLine());
+ }
+ catch (FormatException)
+ {
+ eccezione = true;
+ Console.WriteLine("Errore: numero di interessi non valido");
+ Pausa();
+ }
+ if (!eccezione)
+ {
+ if (numeroInteressi <= 0)
+ {
+ Console.WriteLine("Errore: numero di interessi non valido");
+ Pausa();
+ }
+ }
+ }
+ while (eccezione || numeroInteressi <= 0);
+
+ interessi = new string[numeroInteressi];
+
+ for (int j = 0; j < numeroInteressi; j++)
+ {
+ do
+ {
+ Console.Write($"Interesse n. {j + 1}: ");
+ interessi[j] = Console.ReadLine();
+ if (string.IsNullOrEmpty(interessi[j]))
+ {
+ Console.WriteLine("Errore: inserire un'interesse.");
+ Pausa();
+ }
+ }
+ while (string.IsNullOrEmpty(interessi[j]));
+ }
+
+ p_clienti[i] = new Cliente(nome, cognome, sesso, Convert.ToString(eta), Convert.ToString(altezza), professione, interessi);
+
+ Console.WriteLine($"\n\nCliente {i+1} creato con successo.");
+ }
+
+
+
+
+ }
+
+ static bool IsClientiPopulated(Cliente[] p_clienti)
+ {
+ bool ritorno;
+ if (p_clienti[0] == null)
+ {
+ ritorno = false;
+ }
+ else
+ {
+ ritorno = true;
+ }
+ return ritorno;
+ }
+
+ static void StampaClienti(Cliente[] p_clienti)
+ {
+ for (int i = 0; i < p_clienti.Length; i++)
+ {
+ Console.WriteLine($"Cliente n. {i + 1}:");
+ p_clienti[i].StampaCliente();
+ Console.WriteLine();
+ }
+ }
+
+ static void CercaPartner(Cliente[] p_clienti)
+ {
+ string sesso;
+ int etaMin = -1, etaMax = -1, j = 0, scelta = 0;
+ bool eccezione;
+ int[] matches = new int[p_clienti.Length];
+ for (int i = 0;i < p_clienti.Length; i++)
+ {
+ matches[i] = -1;
+ }
+
+ do
+ {
+ Console.Write("Inserire il sesso da cercare: ");
+ sesso = Console.ReadLine().ToLower().Trim();
+ if (string.IsNullOrEmpty(sesso))
+ {
+ Console.WriteLine("Errore: inserire un sesso.");
+ Pausa();
+ }
+ }
+ while (string.IsNullOrEmpty(sesso));
+
+ do
+ {
+ Console.Write("Inserire l'età minima: ");
+ eccezione = false;
+ try
+ {
+ etaMin = Convert.ToInt32(Console.ReadLine());
+ }
+ catch (FormatException)
+ {
+ eccezione = true;
+ Console.WriteLine("Errore: età non valida");
+ Pausa();
+ }
+ if (!eccezione)
+ {
+ if (etaMin <= 0)
+ {
+ Console.WriteLine("Errore: età non valida");
+ Pausa();
+ }
+ }
+ }
+ while (eccezione || etaMin <= 0);
+
+ do
+ {
+ Console.Write("Inserire l'età massima: ");
+ eccezione = false;
+ try
+ {
+ etaMax = Convert.ToInt32(Console.ReadLine());
+ }
+ catch (FormatException)
+ {
+ eccezione = true;
+ Console.WriteLine("Errore: età non valida");
+ Pausa();
+ }
+ if (!eccezione)
+ {
+ if (etaMax <= 0)
+ {
+ Console.WriteLine("Errore: età non valida");
+ Pausa();
+ }
+ }
+ }
+ while (eccezione || etaMax <= 0);
+
+ for (int i = 0; i < p_clienti.Length; i++) {
+ if(Convert.ToInt32(p_clienti[i].GetEta()) >= etaMin &&
+ Convert.ToInt32(p_clienti[i].GetEta()) <= etaMax &&
+ p_clienti[i].GetSesso().ToLower().Trim() == sesso)
+ {
+ Console.WriteLine("Trovata una corrispondenza:\n");
+ Console.WriteLine($"Nome: {p_clienti[i].GetNome()}");
+ Console.WriteLine($"Cognome: {p_clienti[i].GetCognome()}");
+ Console.WriteLine($"Età: {p_clienti[i].GetEta()}");
+ Console.WriteLine();
+ matches[j] = i;
+ j++;
+ }
+ }
+ do
+ {
+ Console.WriteLine("Selezionare la corrispondenza:");
+ for (int i = 0; i < matches.Length && matches[i] != -1; i++)
+ {
+ Console.WriteLine($"Corrispondenza n. {i + 1}:\n");
+ Console.WriteLine($"Nome: {p_clienti[matches[i]].GetNome()}");
+ Console.WriteLine($"Cognome: {p_clienti[matches[i]].GetCognome()}");
+ Console.WriteLine($"Età: {p_clienti[matches[i]].GetEta()}");
+ }
+ Console.WriteLine();
+ Console.Write("Scelta: ");
+
+ eccezione = false;
+ try
+ {
+ scelta = Convert.ToInt32(Console.ReadLine());
+ }
+ catch (FormatException)
+ {
+ eccezione = true;
+ Console.WriteLine("Opzione non valida.");
+ Pausa();
+ }
+ if (!eccezione)
+ {
+ if (scelta < 1 || scelta >= p_clienti.Length)
+ {
+ Console.WriteLine("Opzione non valida.");
+ Pausa();
+ }
+ }
+
+ }
+ while (eccezione && !(scelta < 1 || scelta >= p_clienti.Length)); //controllo non funzionante
+ p_clienti[scelta - 1].SetIsAvailable(false);
+ Console.WriteLine("Match eseguito");
+ }
+ }
\ No newline at end of file
diff --git a/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
new file mode 100644
index 0000000..9e76325
--- /dev/null
+++ b/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]
diff --git a/obj/Debug/net9.0/Verifica_incontri.AssemblyInfo.cs b/obj/Debug/net9.0/Verifica_incontri.AssemblyInfo.cs
new file mode 100644
index 0000000..2c5756a
--- /dev/null
+++ b/obj/Debug/net9.0/Verifica_incontri.AssemblyInfo.cs
@@ -0,0 +1,22 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("Verifica_incontri")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e070f9f32401399e74a2650d310e4165d36a1e33")]
+[assembly: System.Reflection.AssemblyProductAttribute("Verifica_incontri")]
+[assembly: System.Reflection.AssemblyTitleAttribute("Verifica_incontri")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// Generated by the MSBuild WriteCodeFragment class.
+
diff --git a/obj/Debug/net9.0/Verifica_incontri.AssemblyInfoInputs.cache b/obj/Debug/net9.0/Verifica_incontri.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..3283b15
--- /dev/null
+++ b/obj/Debug/net9.0/Verifica_incontri.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+8931e29328ad8e2429f21a218cdadca67edbadc83105ceee98dbc5dc8428974a
diff --git a/obj/Debug/net9.0/Verifica_incontri.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net9.0/Verifica_incontri.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..bee0bf7
--- /dev/null
+++ b/obj/Debug/net9.0/Verifica_incontri.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,15 @@
+is_global = true
+build_property.TargetFramework = net9.0
+build_property.TargetPlatformMinVersion =
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = Verifica_incontri
+build_property.ProjectDir = /home/Verde/git/Verifica_incontri/
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.EffectiveAnalysisLevelStyle = 9.0
+build_property.EnableCodeStyleSeverity =
diff --git a/obj/Debug/net9.0/Verifica_incontri.GlobalUsings.g.cs b/obj/Debug/net9.0/Verifica_incontri.GlobalUsings.g.cs
new file mode 100644
index 0000000..8578f3d
--- /dev/null
+++ b/obj/Debug/net9.0/Verifica_incontri.GlobalUsings.g.cs
@@ -0,0 +1,8 @@
+//
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.IO;
+global using global::System.Linq;
+global using global::System.Net.Http;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/obj/Debug/net9.0/Verifica_incontri.assets.cache b/obj/Debug/net9.0/Verifica_incontri.assets.cache
new file mode 100644
index 0000000..55be616
Binary files /dev/null and b/obj/Debug/net9.0/Verifica_incontri.assets.cache differ