La Programmatrice Verde 997d114446 Opzioni 2 e 3
2025-07-24 16:07:54 +02:00

305 lines
10 KiB
C#

using System.Text.RegularExpressions;
namespace vacanzeEstive_rubricaTelefonica;
class Program {
static void Main(string[] args) {
Console.Clear();
int scelta = 0;
Voce[] rubrica = new Voce[100]; //tetto massimo di voci possibili nella rubrica
int indice = 0;
do {
Console.WriteLine("Inserire un'opzione:");
Console.WriteLine("1. Aggiungi nuova voce in rubrica");
Console.WriteLine("2. Ricerca esatta per nome");
Console.WriteLine("3. Ricerca approssimata per nome");
Console.WriteLine("4. Visualizza rubrica completa");
Console.WriteLine("0. Esci");
Console.Write("Scelta: ");
try {
scelta = Convert.ToInt32(Console.ReadLine());
switch (scelta) {
case 0:
break;
case 1:
CreaVoce(rubrica, indice++);
Pausa();
break;
case 2:
if (rubrica[0] == null) {
Console.WriteLine("Errore: rubrica vuota.");
}
else {
RicercaEsatta(rubrica);
}
Pausa();
break;
case 3:
if (rubrica[0] == null) {
Console.WriteLine("Errore: rubrica vuota.");
}
else {
Ricerca(rubrica);
}
Pausa();
break;
case 4:
if (rubrica[0] == null) {
Console.WriteLine("Errore: rubrica vuota.");
}
else {
MostraRubrica(rubrica);
}
Pausa();
break;
default:
Console.WriteLine("Opzione non valida.");
Pausa();
break;
}
}
catch (FormatException) {
Console.WriteLine("Opzione non valida.");
Pausa();
}
}
while (scelta != 0);
}
static void Pausa() {
Console.WriteLine("Premere un tasto per continuare. . .");
Console.ReadKey();
}
static void CreaVoce(Voce[] p_rubrica, int p_indice) {
bool error;
string scelta;
string nome;
string cognome;
string telefono;
string cellulare = null;
string email = null;
string indirizzo = null;
const int LUNGHEZZA_NOME = 40;
const int LUNGHEZZA_TELEFONO = 20;
const string TELEFONO = "^(?:\\(?\\+?\\d{1,3}\\)?|\\(?00\\d{1,3}\\)?)?[\\s-]?\\d{3}[\\s-]\\d{3}[\\s-]\\d{4}$";
const string EMAIL = "^[\\w.-]+@([\\w-]+\\.)+[\\w-]{2,4}$";
const string CONFERMA = "[SsYy]{1}";
const string NEGAZIONE = "[Nn]{1}";
string[] voce;
do {
Console.Write("Inserire il nome della persona: ");
nome = Console.ReadLine();
if (nome.Length > LUNGHEZZA_NOME) {
Console.WriteLine($"Errore: il nome non può superare i {LUNGHEZZA_NOME} caratteri.");
Pausa();
}
}
while (nome.Length > LUNGHEZZA_NOME);
do {
Console.Write("Inserire il cognome della persona: ");
cognome = Console.ReadLine();
if (cognome.Length > LUNGHEZZA_NOME) {
Console.WriteLine($"Errore: il cognome non può superare i {LUNGHEZZA_NOME} caratteri.");
Pausa();
}
}
while (cognome.Length > LUNGHEZZA_NOME);
do {
error = false;
Console.Write("Inserire il numero di telefono della persona: ");
telefono = Console.ReadLine();
if (telefono.Length > LUNGHEZZA_TELEFONO) {
error = true;
Console.WriteLine($"Errore: il numero di telefono non può superare i {LUNGHEZZA_TELEFONO} caratteri.");
Pausa();
}
if (!Regex.IsMatch(telefono, TELEFONO)) {
error = true;
Console.WriteLine("Errore: il numero di telefono inserito non è valido.");
Pausa();
}
}
while (error);
do {
error = false;
Console.Write("Inserire il numero cellulare? [S/N] ");
scelta = Console.ReadLine();
if (Regex.IsMatch(scelta, CONFERMA)) {
do {
error = false;
Console.Write("Inserire il numero cellulare della persona: ");
cellulare = Console.ReadLine();
if (cellulare.Length > LUNGHEZZA_TELEFONO) {
error = true;
Console.WriteLine($"Errore: il numero cellulare non può superare i {LUNGHEZZA_TELEFONO} caratteri.");
Pausa();
}
if (!Regex.IsMatch(cellulare, TELEFONO)) {
error = true;
Console.WriteLine("Errore: il numero cellulare inserito non è valido.");
Pausa();
}
}
while (error);
}
else if (Regex.IsMatch(scelta, NEGAZIONE)) {
cellulare = "";
}
else {
error = true;
Console.WriteLine("Opzione non valida.");
Pausa();
}
}
while (error);
do {
error = false;
Console.Write("Inserire l'email? [S/N] ");
scelta = Console.ReadLine();
if (Regex.IsMatch(scelta, CONFERMA)) {
do {
error = false;
Console.Write("Inserire l'email della persona: ");
email = Console.ReadLine();
if (!Regex.IsMatch(email, EMAIL)) {
error = true;
Console.WriteLine("Errore: l'email inserita non è valida.");
Pausa();
}
}
while (error);
}
else if (Regex.IsMatch(scelta, NEGAZIONE)) {
email = "";
}
else {
error = true;
Console.WriteLine("Opzione non valida.");
Pausa();
}
}
while (error);
do {
error = false;
Console.Write("Inserire l'indirizzo? [S/N] ");
scelta = Console.ReadLine();
if (Regex.IsMatch(scelta, CONFERMA)) {
do {
error = false;
Console.Write("Inserire l'indirizzo della persona: ");
indirizzo = Console.ReadLine();
if (string.IsNullOrEmpty(indirizzo)) {
error = true;
Console.WriteLine("Errore: inserire un indirizzo non vuoto.");
Pausa();
}
}
while (error);
}
else if (Regex.IsMatch(scelta, NEGAZIONE)) {
indirizzo = "";
}
else {
error = true;
Console.WriteLine("Opzione non valida.");
Pausa();
}
}
while (error);
if (p_indice == p_rubrica.Length) {
Console.WriteLine("Errore: la rubrica è piena.");
}
else {
voce = [nome, cognome, telefono, cellulare, email, indirizzo];
if (!DoesVoceExist(p_rubrica, voce)) {
p_rubrica[p_indice] = new Voce(nome, cognome, telefono, cellulare, email, indirizzo);
Console.WriteLine("Voce creata con successo.");
}
else {
Console.WriteLine("Errore: la voce esiste già.");
}
}
}
static void MostraRubrica(Voce[] p_rubrica) {
for (int i = 0; i < p_rubrica.Length && p_rubrica[i] != null; i++) {
Console.WriteLine($"Voce n. {i + 1}:");
p_rubrica[i].MostraVoce();
}
}
static bool DoesVoceExist(Voce[] p_rubrica, string[] p_voce) {
bool esiste = false;
for (int i = 0; i < p_rubrica.Length && p_rubrica[i] != null && !esiste; i++) {
for (int j = 2; j < p_voce.Length && !esiste; j++) {
if (p_voce[j] == p_rubrica[i].GetVoceAsArray()[j] && p_voce[j] != "") {
esiste = true;
}
}
}
return esiste;
}
static void RicercaEsatta(Voce[] p_rubrica) {
string ricerca;
do {
Console.Write("Inserire il nome da cercare: ");
ricerca = Console.ReadLine();
if (string.IsNullOrEmpty(ricerca)) {
Console.WriteLine("Errore: nome vuoto.");
Pausa();
}
}
while (string.IsNullOrEmpty(ricerca));
for (int i = 0; i < p_rubrica.Length && p_rubrica[i] != null; i++) {
if (p_rubrica[i].GetNome() == ricerca) {
Console.WriteLine("Corrispondenza trovata:");
p_rubrica[i].MostraVoce();
}
}
}
static void Ricerca(Voce[] p_rubrica) {
string ricerca;
do {
Console.Write("Inserire il termine da cercare: ");
ricerca = Console.ReadLine();
if (string.IsNullOrEmpty(ricerca)) {
Console.WriteLine("Errore: nome vuoto.");
Pausa();
}
}
while (string.IsNullOrEmpty(ricerca));
for (int i = 0; i < p_rubrica.Length && p_rubrica[i] != null; i++) {
if (p_rubrica[i].GetNome().Contains(ricerca)) {
Console.WriteLine("Corrispondenza trovata:");
p_rubrica[i].MostraVoce();
}
}
}
}