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