diff --git a/Program.cs b/Program.cs
index 6b84908..e45c9ea 100644
--- a/Program.cs
+++ b/Program.cs
@@ -1,9 +1,180 @@
namespace Rubrica_Miglioria;
-class Program
-{
- static void Main(string[] args)
- {
- Console.WriteLine("Hello, World!");
+class Program {
+ static void Main(string[] args) {
+ Console.Clear();
+ const int DIMENSIONE_RUBRICA = 100;
+ int scelta = 0;
+ string nome = "";
+ string numeroditelefono, tipologia;
+ bool check = false;
+ bool check2 = false;
+ bool check3 = false;
+ int contatore = 0;
+ string nomeesatto;
+ string nomeapprossimato;
+ string messaggio;
+ string[] nomi = new string[DIMENSIONE_RUBRICA];
+ string[] numeriditelefono = new string[DIMENSIONE_RUBRICA];
+ Voce singolavoce = null;
+ Voce[] vocidellarubrica = new Voce[DIMENSIONE_RUBRICA];
+ Rubrica rubrica = null;
+ do {
+ Console.WriteLine("1)Aggiungi nuova voce in rubrica");
+ Console.WriteLine("2)Ricerca esatta per nome");
+ Console.WriteLine("3)Ricerca approsimata per nome");
+ Console.WriteLine("4)Stampa completa rubrice");
+ Console.WriteLine("5)Esci");
+ scelta = Convert.ToInt32(Console.ReadLine());
+ switch (scelta) {
+ case 1:
+ if (contatore > DIMENSIONE_RUBRICA - 1) {
+ Console.WriteLine($"Limite di {DIMENSIONE_RUBRICA} voci nella rubrica raggiunta");
+ }
+ else {
+ do {
+ check2 = false;
+ Console.WriteLine("Inserisci il nome della voce che andrà nella rubrica telefonica");
+ nome = Console.ReadLine().ToLower();
+ nomi[contatore] = nome;
+ tipologia = "nome";
+ check2 = VerificaCorrettezza(nome, tipologia);
+ check3 = VerificaDoppione(nome, nomi, contatore);
+ if (nome.Length > 40) {
+ Console.WriteLine("il nome non può essere lungo più di 40 caratteri");
+ }
+ if (check2 == true) {
+ Console.WriteLine("il nome non può contenere dei numeri");
+ }
+ if (check3 == true) {
+ Console.WriteLine("Questo nome esiste già nelle rubrica");
+ }
+ }
+ while (nome.Length > 40 || check2 == true || check3 == true);
+ do {
+ check2 = false;
+ Console.WriteLine("Inserisci il numero di telefono della voce che andrà nella rubrica telefonica");
+ numeroditelefono = Console.ReadLine();
+ numeroditelefono = numeroditelefono.ToLower();
+ numeriditelefono[contatore] = numeroditelefono;
+ tipologia = "numero di telefono";
+ check2 = VerificaCorrettezza(numeroditelefono, tipologia);
+ check3 = VerificaDoppione(numeroditelefono, numeriditelefono, contatore);
+ if (numeroditelefono.Length > 20) {
+ Console.WriteLine("il numero di telefono non può essere lungo più di 20 caratteri");
+ }
+ if (check2 == true) {
+ Console.WriteLine("il numero di telefono deve contenere solo numeri");
+ }
+ if (check3 == true) {
+ Console.WriteLine("Questo numero di telefono esiste già nelle rubrica");
+ }
+ }
+ while (numeroditelefono.Length > 20 || check2 == true || check3 == true);
+ singolavoce = new Voce(nome, numeroditelefono);
+ vocidellarubrica[contatore] = singolavoce;
+ rubrica = new Rubrica(vocidellarubrica);
+ contatore++;
+ check = true;
+ }
+ break;
+ case 2:
+ if (check == false) {
+ Console.WriteLine("devi prima aggiungere una voce in rubrica");
+ }
+ else {
+ do {
+ check2 = false;
+ Console.WriteLine("Inserisci il nome esatto che stai cercando");
+ nomeesatto = Console.ReadLine();
+ nomeesatto = nomeesatto.ToLower();
+ tipologia = "nome";
+ check2 = VerificaCorrettezza(nome, tipologia);
+ if (nomeesatto.Length > 40) {
+ Console.WriteLine("il nome non può essere lungo più di 40 caratteri");
+ }
+ if (check2 == true) {
+ Console.WriteLine("il nome non può contenere dei numeri");
+ }
+ }
+ while (nomeesatto.Length > 40 || check2 == true);
+ messaggio = rubrica.EsistenzaNomeEsatto(nomeesatto, contatore);
+ Console.WriteLine(messaggio);
+ }
+ break;
+ case 3:
+ if (check == false) {
+ Console.WriteLine("devi prima aggiungere una voce in rubrica");
+ }
+ else {
+ do {
+ check2 = false;
+ Console.WriteLine("Inserisci il nome approsimato che stai cercando");
+ nomeapprossimato = Console.ReadLine();
+ nomeapprossimato = nomeapprossimato.ToLower();
+ tipologia = "nome";
+ check2 = VerificaCorrettezza(nome, tipologia);
+ if (nomeapprossimato.Length > 40) {
+ Console.WriteLine("il nome non può essere lungo più di 40 caratteri");
+ }
+ if (check2 == true) {
+ Console.WriteLine("il nome non può contenere dei numeri");
+ }
+ }
+ while (nomeapprossimato.Length > 40 || check2 == true);
+ rubrica.EsistenzaNomeApprosimato(nomeapprossimato, contatore);
+ }
+ break;
+ case 4:
+ if (check == false) {
+ Console.WriteLine("devi prima aggiungere una voce in rubrica");
+ }
+ else {
+ rubrica.StampaRubricaCompleta(contatore);
+ }
+ break;
+ case 5:
+ break;
+ default:
+ Console.WriteLine("Questa scelta non esiste");
+ break;
+ }
+ }
+ while (scelta != 5);
+ Console.WriteLine("Chiusura effettuta con successo");
+ }
+ static bool VerificaDoppione(string p_stringa, string[] p_stringhe, int p_contatore) {
+ bool check = false;
+ if (p_contatore != 0) {
+ for (int i = 0; i < p_contatore; i++) {
+ if (p_stringhe[i] == p_stringa) {
+ check = true;
+ break;
+ }
+ }
+ }
+ return check;
+ }
+ static bool VerificaCorrettezza(string p_stringa, string p_tipologia) {
+ bool check = false;
+ string corretezzanome = "1234567890";
+ string corretezzanumeroditelefono = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàèéìòùÀÈÉÌÒÙáéíóúÁÉÍÓÚâêîôûÂÊÎÔÛäëïöüÄËÏÖÜãõñÃÕÑçÇß¡¿€£¥¢¤!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ \r\n";
+ if (p_tipologia == "nome") {
+ for (int i = 0; i < p_stringa.Length; i++) {
+ if (corretezzanome.Contains(p_stringa[i])) {
+ check = true;
+ break;
+ }
+ }
+ }
+ if (p_tipologia == "numero di telefono") {
+ for (int i = 0; i < p_stringa.Length; i++) {
+ if (corretezzanumeroditelefono.Contains(p_stringa[i])) {
+ check = true;
+ break;
+ }
+ }
+ }
+ return check;
}
}
diff --git a/Rubrica.cs b/Rubrica.cs
index 86e021d..feae58f 100644
--- a/Rubrica.cs
+++ b/Rubrica.cs
@@ -1,5 +1,59 @@
namespace Rubrica_Miglioria;
class Rubrica {
+Voce[] vocidellarubrica;
+ public Rubrica(Voce[] p_vocidellarubrica)
+ {
+ this.vocidellarubrica = p_vocidellarubrica;
+ }
+
+ public void Setvocidellarubrica(Voce[] p_vocidellarubrica)
+ {
+ this.vocidellarubrica = p_vocidellarubrica;
+ }
+ public Voce[] GetVocidellarubrica()
+ {
+ return this.vocidellarubrica;
+ }
+ public string EsistenzaNomeEsatto(string p_nomeesatto, int p_contatore)
+ {
+ string nomedellarubrica = "";
+ string numeroditelefonodellarubrica = "";
+ string messaggio = "non esiste il nome " + p_nomeesatto + " all'interno della rubrica";
+ for (int i = 0; i < p_contatore; i++)
+ {
+ nomedellarubrica = this.vocidellarubrica[i].GetNome();
+ if (p_nomeesatto == nomedellarubrica)
+ {
+ messaggio = "esiste il nome " + p_nomeesatto + " all'interno della rubrica" + "e il suo numero di telefono è " + (numeroditelefonodellarubrica = this.vocidellarubrica[i].Getnumeroditelefono());
+ break;
+ }
+ }
+ return messaggio;
+ }
+ public void EsistenzaNomeApprosimato(string p_nomeapprosimato, int p_contatore)
+ {
+ string nomedellarubrica = "";
+ string numeroditelefonodellarubrica = "";
+ for (int i = 0; i < p_contatore; i++)
+ {
+ nomedellarubrica = this.vocidellarubrica[i].GetNome();
+ if (nomedellarubrica.StartsWith(p_nomeapprosimato))
+ {
+ Console.WriteLine("esiste il nome " + nomedellarubrica + " e il suo numero di telefono è: " + (numeroditelefonodellarubrica = this.vocidellarubrica[i].Getnumeroditelefono()));
+ }
+ }
+ }
+ public void StampaRubricaCompleta(int p_contatore)
+ {
+ string nomedellarubrica = "";
+ string numeroditelefonodellarubrica = "";
+ for (int i = 0; i < p_contatore; i++)
+ {
+ Console.WriteLine("nome: " + (nomedellarubrica = this.vocidellarubrica[i].GetNome()));
+ Console.WriteLine("numero di telefono: " + (numeroditelefonodellarubrica = this.vocidellarubrica[i].Getnumeroditelefono()));
+ Console.WriteLine();
+ }
+ }
}
\ No newline at end of file
diff --git a/Voce.cs b/Voce.cs
index 7deed4d..23e3ed0 100644
--- a/Voce.cs
+++ b/Voce.cs
@@ -1,5 +1,28 @@
namespace Rubrica_Miglioria;
class Voce {
+string nome;
+ string numeroditelefono;
+ public Voce(string p_nome, string p_numeroditelefono)
+ {
+ this.nome = p_nome;
+ this.numeroditelefono = p_numeroditelefono;
+ }
+ public void SetNome(string p_nome)
+ {
+ this.nome = p_nome;
+ }
+ public void SetNumeroditelefono(string p_numeroditelefono)
+ {
+ this.numeroditelefono = p_numeroditelefono;
+ }
+ public string GetNome()
+ {
+ return this.nome;
+ }
+ public string Getnumeroditelefono()
+ {
+ return this.numeroditelefono;
+ }
}
\ No newline at end of file
diff --git a/bin/Debug/net9.0/Rubrica_Miglioria b/bin/Debug/net9.0/Rubrica_Miglioria
new file mode 100755
index 0000000..aed81b2
Binary files /dev/null and b/bin/Debug/net9.0/Rubrica_Miglioria differ
diff --git a/bin/Debug/net9.0/Rubrica_Miglioria.deps.json b/bin/Debug/net9.0/Rubrica_Miglioria.deps.json
new file mode 100644
index 0000000..69fdfb0
--- /dev/null
+++ b/bin/Debug/net9.0/Rubrica_Miglioria.deps.json
@@ -0,0 +1,23 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v9.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v9.0": {
+ "Rubrica_Miglioria/1.0.0": {
+ "runtime": {
+ "Rubrica_Miglioria.dll": {}
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Rubrica_Miglioria/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/bin/Debug/net9.0/Rubrica_Miglioria.dll b/bin/Debug/net9.0/Rubrica_Miglioria.dll
new file mode 100644
index 0000000..982b873
Binary files /dev/null and b/bin/Debug/net9.0/Rubrica_Miglioria.dll differ
diff --git a/bin/Debug/net9.0/Rubrica_Miglioria.pdb b/bin/Debug/net9.0/Rubrica_Miglioria.pdb
new file mode 100644
index 0000000..9d379a2
Binary files /dev/null and b/bin/Debug/net9.0/Rubrica_Miglioria.pdb differ
diff --git a/bin/Debug/net9.0/Rubrica_Miglioria.runtimeconfig.json b/bin/Debug/net9.0/Rubrica_Miglioria.runtimeconfig.json
new file mode 100644
index 0000000..b19c3c8
--- /dev/null
+++ b/bin/Debug/net9.0/Rubrica_Miglioria.runtimeconfig.json
@@ -0,0 +1,12 @@
+{
+ "runtimeOptions": {
+ "tfm": "net9.0",
+ "framework": {
+ "name": "Microsoft.NETCore.App",
+ "version": "9.0.0"
+ },
+ "configProperties": {
+ "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
+ }
+ }
+}
\ 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/Rubrica_Miglioria.AssemblyInfo.cs b/obj/Debug/net9.0/Rubrica_Miglioria.AssemblyInfo.cs
new file mode 100644
index 0000000..2eda683
--- /dev/null
+++ b/obj/Debug/net9.0/Rubrica_Miglioria.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("Rubrica_Miglioria")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7a8c35dc14d3f94742b1739914f0c1734fbd4634")]
+[assembly: System.Reflection.AssemblyProductAttribute("Rubrica_Miglioria")]
+[assembly: System.Reflection.AssemblyTitleAttribute("Rubrica_Miglioria")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// Generated by the MSBuild WriteCodeFragment class.
+
diff --git a/obj/Debug/net9.0/Rubrica_Miglioria.AssemblyInfoInputs.cache b/obj/Debug/net9.0/Rubrica_Miglioria.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..ab588cb
--- /dev/null
+++ b/obj/Debug/net9.0/Rubrica_Miglioria.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+08edd7693ed88a88b67a3d844ce1f743c8ffacd35a9ff767cd5bae496a22411b
diff --git a/obj/Debug/net9.0/Rubrica_Miglioria.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net9.0/Rubrica_Miglioria.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..03b7dcb
--- /dev/null
+++ b/obj/Debug/net9.0/Rubrica_Miglioria.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 = Rubrica_Miglioria
+build_property.ProjectDir = /home/Verde/git/Rubrica_Miglioria/
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.EffectiveAnalysisLevelStyle = 9.0
+build_property.EnableCodeStyleSeverity =
diff --git a/obj/Debug/net9.0/Rubrica_Miglioria.GlobalUsings.g.cs b/obj/Debug/net9.0/Rubrica_Miglioria.GlobalUsings.g.cs
new file mode 100644
index 0000000..8578f3d
--- /dev/null
+++ b/obj/Debug/net9.0/Rubrica_Miglioria.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/Rubrica_Miglioria.assets.cache b/obj/Debug/net9.0/Rubrica_Miglioria.assets.cache
new file mode 100644
index 0000000..ba59d69
Binary files /dev/null and b/obj/Debug/net9.0/Rubrica_Miglioria.assets.cache differ
diff --git a/obj/Debug/net9.0/Rubrica_Miglioria.csproj.CoreCompileInputs.cache b/obj/Debug/net9.0/Rubrica_Miglioria.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..0cf715b
--- /dev/null
+++ b/obj/Debug/net9.0/Rubrica_Miglioria.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+81a9309d4b011cce7eed8d10551813d1fe4ff508969ada1600a9d276a4ff626a
diff --git a/obj/Debug/net9.0/Rubrica_Miglioria.csproj.FileListAbsolute.txt b/obj/Debug/net9.0/Rubrica_Miglioria.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..34f9c3e
--- /dev/null
+++ b/obj/Debug/net9.0/Rubrica_Miglioria.csproj.FileListAbsolute.txt
@@ -0,0 +1,14 @@
+/home/Verde/git/Rubrica_Miglioria/bin/Debug/net9.0/Rubrica_Miglioria
+/home/Verde/git/Rubrica_Miglioria/bin/Debug/net9.0/Rubrica_Miglioria.deps.json
+/home/Verde/git/Rubrica_Miglioria/bin/Debug/net9.0/Rubrica_Miglioria.runtimeconfig.json
+/home/Verde/git/Rubrica_Miglioria/bin/Debug/net9.0/Rubrica_Miglioria.dll
+/home/Verde/git/Rubrica_Miglioria/bin/Debug/net9.0/Rubrica_Miglioria.pdb
+/home/Verde/git/Rubrica_Miglioria/obj/Debug/net9.0/Rubrica_Miglioria.GeneratedMSBuildEditorConfig.editorconfig
+/home/Verde/git/Rubrica_Miglioria/obj/Debug/net9.0/Rubrica_Miglioria.AssemblyInfoInputs.cache
+/home/Verde/git/Rubrica_Miglioria/obj/Debug/net9.0/Rubrica_Miglioria.AssemblyInfo.cs
+/home/Verde/git/Rubrica_Miglioria/obj/Debug/net9.0/Rubrica_Miglioria.csproj.CoreCompileInputs.cache
+/home/Verde/git/Rubrica_Miglioria/obj/Debug/net9.0/Rubrica_Miglioria.dll
+/home/Verde/git/Rubrica_Miglioria/obj/Debug/net9.0/refint/Rubrica_Miglioria.dll
+/home/Verde/git/Rubrica_Miglioria/obj/Debug/net9.0/Rubrica_Miglioria.pdb
+/home/Verde/git/Rubrica_Miglioria/obj/Debug/net9.0/Rubrica_Miglioria.genruntimeconfig.cache
+/home/Verde/git/Rubrica_Miglioria/obj/Debug/net9.0/ref/Rubrica_Miglioria.dll
diff --git a/obj/Debug/net9.0/Rubrica_Miglioria.dll b/obj/Debug/net9.0/Rubrica_Miglioria.dll
new file mode 100644
index 0000000..982b873
Binary files /dev/null and b/obj/Debug/net9.0/Rubrica_Miglioria.dll differ
diff --git a/obj/Debug/net9.0/Rubrica_Miglioria.genruntimeconfig.cache b/obj/Debug/net9.0/Rubrica_Miglioria.genruntimeconfig.cache
new file mode 100644
index 0000000..0920da8
--- /dev/null
+++ b/obj/Debug/net9.0/Rubrica_Miglioria.genruntimeconfig.cache
@@ -0,0 +1 @@
+62202b9df737cdcd60bdcd615c08e9b8fa1ff7a6cf05d5984c23d9418d373ebf
diff --git a/obj/Debug/net9.0/Rubrica_Miglioria.pdb b/obj/Debug/net9.0/Rubrica_Miglioria.pdb
new file mode 100644
index 0000000..9d379a2
Binary files /dev/null and b/obj/Debug/net9.0/Rubrica_Miglioria.pdb differ
diff --git a/obj/Debug/net9.0/apphost b/obj/Debug/net9.0/apphost
new file mode 100755
index 0000000..aed81b2
Binary files /dev/null and b/obj/Debug/net9.0/apphost differ
diff --git a/obj/Debug/net9.0/ref/Rubrica_Miglioria.dll b/obj/Debug/net9.0/ref/Rubrica_Miglioria.dll
new file mode 100644
index 0000000..5cff0c0
Binary files /dev/null and b/obj/Debug/net9.0/ref/Rubrica_Miglioria.dll differ
diff --git a/obj/Debug/net9.0/refint/Rubrica_Miglioria.dll b/obj/Debug/net9.0/refint/Rubrica_Miglioria.dll
new file mode 100644
index 0000000..5cff0c0
Binary files /dev/null and b/obj/Debug/net9.0/refint/Rubrica_Miglioria.dll differ