305 lines
10 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|