Prosecuzione sistemazione dei controlli

This commit is contained in:
La Programmatrice Verde 2025-09-23 17:57:30 +02:00
parent 03dfc24f00
commit 815fb9762e
2 changed files with 82 additions and 96 deletions

View File

@ -8,8 +8,8 @@ class Program {
int scelta = 0; int scelta = 0;
string nome = ""; string nome = "";
string numeroditelefono; string numeroditelefono;
bool check = false; bool rubricaEsiste = false;
bool check2 = false; bool error;
bool check3 = false; bool check3 = false;
int contatore = 0; int contatore = 0;
string nomeesatto; string nomeesatto;
@ -19,12 +19,12 @@ class Program {
string[] numeriditelefono = new string[DIMENSIONE_RUBRICA]; string[] numeriditelefono = new string[DIMENSIONE_RUBRICA];
Voce singolavoce = null; Voce singolavoce = null;
Voce[] voci = new Voce[DIMENSIONE_RUBRICA]; Voce[] voci = new Voce[DIMENSIONE_RUBRICA];
Rubrica rubrica = null; Rubrica? rubrica = null;
do { do {
Console.WriteLine("1)Aggiungi nuova voce in rubrica"); Console.WriteLine("1)Aggiungi nuova voce in rubrica");
Console.WriteLine("2)Ricerca esatta per nome"); Console.WriteLine("2)Ricerca esatta per nome");
Console.WriteLine("3)Ricerca approsimata per nome"); Console.WriteLine("3)Ricerca approssimata per nome");
Console.WriteLine("4)Stampa completa rubrice"); Console.WriteLine("4)Stampa completa rubrica");
Console.WriteLine("5)Esci"); Console.WriteLine("5)Esci");
scelta = Convert.ToInt32(Console.ReadLine()); scelta = Convert.ToInt32(Console.ReadLine());
switch (scelta) { switch (scelta) {
@ -34,53 +34,48 @@ class Program {
} }
else { else {
do { do {
check2 = false; string? message;
error = true;
Console.WriteLine("Inserisci il nome della voce che andrà nella rubrica telefonica"); Console.WriteLine("Inserisci il nome della voce che andrà nella rubrica telefonica");
nome = Console.ReadLine().ToLower(); nome = Console.ReadLine().ToLower();
nomi[contatore] = nome;
check3 = VerificaDoppione(nome, nomi, contatore);
if (contatore == 0) {
message = Controllo(nome, true, contatore, rubrica);
if (message != null) {
Console.WriteLine(message);
} }
if (nome.Length > 40) { else {
Console.WriteLine("il nome non può essere lungo più di 40 caratteri"); error = false;
}
if (VerificaCorrettezza(nome, 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); while (error);
do { do {
check2 = false; string? message;
error = true;
Console.WriteLine("Inserisci il numero di telefono della voce che andrà nella rubrica telefonica"); Console.WriteLine("Inserisci il numero di telefono della voce che andrà nella rubrica telefonica");
numeroditelefono = Console.ReadLine(); numeroditelefono = Console.ReadLine().ToLower();
numeroditelefono = numeroditelefono.ToLower();
numeriditelefono[contatore] = numeroditelefono; message = Controllo(nome, true, contatore, rubrica);
check2 = VerificaCorrettezza(numeroditelefono, false);
check3 = VerificaDoppione(numeroditelefono, numeriditelefono, contatore); if (message != null) {
if (numeroditelefono.Length > 20) { Console.WriteLine(message);
Console.WriteLine("il numero di telefono non può essere lungo più di 20 caratteri");
} }
if (check2 == true) { else {
Console.WriteLine("il numero di telefono deve contenere solo numeri"); error = false;
}
if (check3 == true) {
Console.WriteLine("Questo numero di telefono esiste già nelle rubrica");
} }
} }
while (numeroditelefono.Length > 20 || check2 == true || check3 == true); while (error);
singolavoce = new Voce(nome, numeroditelefono); singolavoce = new Voce(nome, numeroditelefono);
voci[contatore] = singolavoce; voci[contatore] = singolavoce;
rubrica = new Rubrica(voci); rubrica = new Rubrica(voci);
contatore++; contatore++;
check = true; rubricaEsiste = true;
} }
break; break;
case 2: case 2:
if (check == false) { if (rubricaEsiste == false) {
Console.WriteLine("devi prima aggiungere una voce in rubrica"); Console.WriteLine("devi prima aggiungere una voce in rubrica");
} }
else { else {
@ -103,7 +98,7 @@ class Program {
} }
break; break;
case 3: case 3:
if (check == false) { if (rubricaEsiste == false) {
Console.WriteLine("devi prima aggiungere una voce in rubrica"); Console.WriteLine("devi prima aggiungere una voce in rubrica");
} }
else { else {
@ -125,7 +120,7 @@ class Program {
} }
break; break;
case 4: case 4:
if (check == false) { if (rubricaEsiste == false) {
Console.WriteLine("devi prima aggiungere una voce in rubrica"); Console.WriteLine("devi prima aggiungere una voce in rubrica");
} }
else { else {
@ -140,7 +135,7 @@ class Program {
} }
} }
while (scelta != 5); while (scelta != 5);
Console.WriteLine("Chiusura effettuta con successo"); Console.WriteLine("Chiusura effettuata con successo");
} }
static bool VerificaCorrettezza(string p_stringa, bool p_tipologia) { static bool VerificaCorrettezza(string p_stringa, bool p_tipologia) {
@ -161,21 +156,23 @@ class Program {
return check; return check;
} }
static bool Controllo(string p_stringa, bool p_tipologia, int p_contatore) { static string? Controllo(string p_stringa, bool p_tipologia, int p_contatore, Rubrica? p_rubrica) {
bool ritorno = true; /*
tipologia=true -> Controllo validità nome
tipologia=false -> Controllo validità numero di telefono
*/
string? ritorno = null;
const int LUNGHEZZA_NOME = 40; const int LUNGHEZZA_NOME = 40;
const int LUNGHEZZA_TELEFONO = 20; const int LUNGHEZZA_TELEFONO = 20;
if (p_stringa.Length > (p_tipologia ? LUNGHEZZA_NOME : LUNGHEZZA_TELEFONO)) { if (p_stringa.Length > (p_tipologia ? LUNGHEZZA_NOME : LUNGHEZZA_TELEFONO)) {
Console.WriteLine($"Il {(p_tipologia ? "nome" : "numero di telefono")} non può essere lungo più di {(p_tipologia ? LUNGHEZZA_NOME : LUNGHEZZA_TELEFONO)} caratteri"); ritorno = $"Il {(p_tipologia ? "nome" : "numero di telefono")} non può essere lungo più di {(p_tipologia ? LUNGHEZZA_NOME : LUNGHEZZA_TELEFONO)} caratteri";
ritorno = false;
} }
if (VerificaCorrettezza(p_stringa, p_tipologia)) { if (VerificaCorrettezza(p_stringa, p_tipologia)) {
Console.WriteLine(p_tipologia ? "Il nome non può contenere numeri" : "Numero di telefono non valido"); ritorno = p_tipologia ? "Il nome non può contenere numeri" : "Numero di telefono non valido";
ritorno = false;
} }
if (p_contatore != 0) { if (p_contatore != 0 && p_rubrica != null) {
if (p_stringhe.Contains(p_stringa)) { if (p_rubrica.Contains(p_stringa)) {
Console.WriteLine($"Questo {(p_tipologia ? "nome" : "numero di telefono")} esiste già nelle rubrica."); ritorno = $"Questo {(p_tipologia ? "nome" : "numero di telefono")} esiste già nella rubrica.";
} }
} }
return ritorno; return ritorno;

View File

@ -1,59 +1,48 @@
namespace Rubrica_Miglioria; namespace Rubrica_Miglioria;
class Rubrica { class Rubrica {
Voce[] vocidellarubrica; Voce[] vocidellarubrica;
public Rubrica(Voce[] p_vocidellarubrica) public Rubrica(Voce[] p_vocidellarubrica) {
{ this.vocidellarubrica = p_vocidellarubrica;
this.vocidellarubrica = p_vocidellarubrica; }
}
public void Setvocidellarubrica(Voce[] p_vocidellarubrica) public void Setvocidellarubrica(Voce[] p_vocidellarubrica) {
{ this.vocidellarubrica = p_vocidellarubrica;
this.vocidellarubrica = p_vocidellarubrica; }
} public Voce[] GetVocidellarubrica() {
public Voce[] GetVocidellarubrica() return this.vocidellarubrica;
{ }
return this.vocidellarubrica; public string EsistenzaNomeEsatto(string p_nomeesatto, int p_contatore) {
} string nomedellarubrica = "";
public string EsistenzaNomeEsatto(string p_nomeesatto, int p_contatore) string numeroditelefonodellarubrica = "";
{ string messaggio = "non esiste il nome " + p_nomeesatto + " all'interno della rubrica";
string nomedellarubrica = ""; for (int i = 0; i < p_contatore; i++) {
string numeroditelefonodellarubrica = ""; nomedellarubrica = this.vocidellarubrica[i].GetNome();
string messaggio = "non esiste il nome " + p_nomeesatto + " all'interno della rubrica"; if (p_nomeesatto == nomedellarubrica) {
for (int i = 0; i < p_contatore; i++) messaggio = "esiste il nome " + p_nomeesatto + " all'interno della rubrica" + "e il suo numero di telefono è " + (numeroditelefonodellarubrica = this.vocidellarubrica[i].Getnumeroditelefono());
{ break;
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) return messaggio;
{ }
string nomedellarubrica = ""; public void EsistenzaNomeApprosimato(string p_nomeapprosimato, int p_contatore) {
string numeroditelefonodellarubrica = ""; string nomedellarubrica = "";
for (int i = 0; i < p_contatore; i++) string numeroditelefonodellarubrica = "";
{ for (int i = 0; i < p_contatore; i++) {
Console.WriteLine("nome: " + (nomedellarubrica = this.vocidellarubrica[i].GetNome())); nomedellarubrica = this.vocidellarubrica[i].GetNome();
Console.WriteLine("numero di telefono: " + (numeroditelefonodellarubrica = this.vocidellarubrica[i].Getnumeroditelefono())); if (nomedellarubrica.StartsWith(p_nomeapprosimato)) {
Console.WriteLine(); 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();
}
}
} }