From 2ee993e17315716c50d6a6b73f07f79be21a5fee Mon Sep 17 00:00:00 2001 From: SandroVitucci <167544019+SandroVitucci@users.noreply.github.com> Date: Mon, 24 Jun 2024 14:17:12 +0200 Subject: [PATCH] primo commit --- ToDoListVitucci/ITaskManager.cs | 21 +++++ ToDoListVitucci/ProgettoFinale.csproj | 10 +++ ToDoListVitucci/ProgettoFinale.sln | 25 ++++++ ToDoListVitucci/Program.cs | 123 ++++++++++++++++++++++++++ ToDoListVitucci/TaskManager.cs | 109 +++++++++++++++++++++++ ToDoListVitucci/User.cs | 16 ++++ 6 files changed, 304 insertions(+) create mode 100644 ToDoListVitucci/ITaskManager.cs create mode 100644 ToDoListVitucci/ProgettoFinale.csproj create mode 100644 ToDoListVitucci/ProgettoFinale.sln create mode 100644 ToDoListVitucci/Program.cs create mode 100644 ToDoListVitucci/TaskManager.cs create mode 100644 ToDoListVitucci/User.cs diff --git a/ToDoListVitucci/ITaskManager.cs b/ToDoListVitucci/ITaskManager.cs new file mode 100644 index 0000000..c434dff --- /dev/null +++ b/ToDoListVitucci/ITaskManager.cs @@ -0,0 +1,21 @@ + +// Definizione dell'interfaccia per il gestore delle attività Alessandro Vitucci + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using ProgettoFinale; + +public interface ITaskManager +{ + void AddTask(string task); + void DisplayTasks(); + void RemoveTask(int taskId); + List GetTasks(); + void UpdateTask(int taskId, string newTask); + bool RegisterUser(string username, string password); + bool Login(string username, string password); +} diff --git a/ToDoListVitucci/ProgettoFinale.csproj b/ToDoListVitucci/ProgettoFinale.csproj new file mode 100644 index 0000000..40c60dd --- /dev/null +++ b/ToDoListVitucci/ProgettoFinale.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/ToDoListVitucci/ProgettoFinale.sln b/ToDoListVitucci/ProgettoFinale.sln new file mode 100644 index 0000000..9755448 --- /dev/null +++ b/ToDoListVitucci/ProgettoFinale.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.35013.160 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProgettoFinale", "ProgettoFinale.csproj", "{EB030E5C-43B2-4819-B832-43F6EE4E2217}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EB030E5C-43B2-4819-B832-43F6EE4E2217}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EB030E5C-43B2-4819-B832-43F6EE4E2217}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EB030E5C-43B2-4819-B832-43F6EE4E2217}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EB030E5C-43B2-4819-B832-43F6EE4E2217}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {50930B24-420F-48AD-8BEA-C902D6F21CA0} + EndGlobalSection +EndGlobal diff --git a/ToDoListVitucci/Program.cs b/ToDoListVitucci/Program.cs new file mode 100644 index 0000000..b5870fd --- /dev/null +++ b/ToDoListVitucci/Program.cs @@ -0,0 +1,123 @@ +// Classe principale del programma + +using System; +using ProgettoFinale; + +public class Program +{ + static void Main(string[] args) + { + // Inizializzazione del gestore delle attività e variabili + ITaskManager taskManager = new TaskManager(); // Crea un'istanza del gestore delle attività + bool loggedIn = false; // Variabile per tracciare lo stato di accesso + string currentUsername = null; // Memorizza il nome utente corrente + + // Messaggio di benvenuto iniziale + Console.WriteLine("Benvenuto! Seleziona un'opzione:"); + + while (true) // Loop principale dell'applicazione + { + if (!loggedIn) // Se non si è ancora effettuato l'accesso + { + // Menu di accesso e registrazione + Console.WriteLine("1. Registrati"); + Console.WriteLine("2. Accedi"); + Console.WriteLine("3. Esci"); + Console.Write("Inserisci il comando: "); + var command = Console.ReadLine(); + + switch (command) + { + case "1": + // Registrazione di un nuovo utente + Console.Write("Inserisci il nome utente: "); + var username = Console.ReadLine(); + currentUsername = username; // Imposta il nome utente corrente + Console.WriteLine($"Benvenuto, {currentUsername}!"); + Console.Write("Inserisci la password: "); + var password = Console.ReadLine(); + taskManager.RegisterUser(username, password); // Chiama il metodo per registrare l'utente + break; + case "2": + // Accesso con nome utente e password + Console.Write("Inserisci il nome utente: "); + var loginUsername = Console.ReadLine(); + Console.Write("Inserisci la password: "); + var loginPassword = Console.ReadLine(); + loggedIn = taskManager.Login(loginUsername, loginPassword); // Chiama il metodo per effettuare l'accesso + currentUsername = loginUsername; // Imposta il nome utente corrente se l'accesso ha avuto successo + break; + case "3": + // Uscita dall'applicazione + Console.WriteLine("Grazie per aver usato la To-Do List. Arrivederci!"); + return; + default: + // Comando non valido + Console.WriteLine("Comando non valido. Riprova."); + break; + } + } + else // Se l'utente è loggato + { + // Menu delle attività disponibili + Console.WriteLine("\nScegli un'opzione:"); + Console.WriteLine("1. Aggiungi attività"); + Console.WriteLine("2. Visualizza attività"); + Console.WriteLine("3. Rimuovi attività"); + Console.WriteLine("4. Modifica attività"); + Console.WriteLine("5. Esci"); + Console.Write("\nInserisci il comando: "); + var command = Console.ReadLine(); + + switch (command) + { + case "1": + // Aggiunta di un'attività + Console.Write("Inserisci il nome dell'attività: "); + var task = Console.ReadLine(); + taskManager.AddTask(task); // Chiama il metodo per aggiungere un'attività + Console.WriteLine($"L'attività '{task}' è stata aggiunta."); + break; + case "2": + // Visualizzazione delle attività + taskManager.DisplayTasks(); // Chiama il metodo per visualizzare le attività + break; + case "3": + // Rimozione di un'attività + Console.Write("Inserisci l'identificativo dell'attività da rimuovere: "); + if (int.TryParse(Console.ReadLine(), out int taskNumberToRemove)) + { + taskManager.RemoveTask(taskNumberToRemove); // Chiama il metodo per rimuovere un'attività + } + else + { + Console.WriteLine("Numero non valido."); + } + break; + case "4": + // Modifica di un'attività + Console.Write("Inserisci l'identificativo dell'attività da modificare: "); + if (int.TryParse(Console.ReadLine(), out int taskNumberToUpdate)) + { + Console.Write("Inserisci il nuovo nome dell'attività: "); + var newTaskName = Console.ReadLine(); + taskManager.UpdateTask(taskNumberToUpdate, newTaskName); // Chiama il metodo per aggiornare un'attività + } + else + { + Console.WriteLine("Identificativo non valido."); + } + break; + case "5": + // Uscita dall'applicazione + Console.WriteLine("Grazie per aver usato la To-Do List. Arrivederci!"); + return; + default: + // Comando non valido + Console.WriteLine("Comando non valido. Riprova."); + break; + } + } + } + } +} \ No newline at end of file diff --git a/ToDoListVitucci/TaskManager.cs b/ToDoListVitucci/TaskManager.cs new file mode 100644 index 0000000..b390c11 --- /dev/null +++ b/ToDoListVitucci/TaskManager.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace ProgettoFinale +{ + // Classe che implementa l'interfaccia ITaskManager + public class TaskManager : ITaskManager + { + // Lista delle attività e lista degli utenti registrati + public readonly List Tasks; // Lista pubblica delle attività + private readonly List users; // Lista privata degli utenti + + // Costruttore della classe TaskManager + public TaskManager() + { + Tasks = new List(); // Inizializza la lista delle attività + users = new List(); // Inizializza la lista degli utenti registrati + } + + // Metodo per aggiungere un'attività alla lista + public void AddTask(string task) + { + Tasks.Add(task); // Aggiunge l'attività alla lista Tasks + } + + // Metodo per mostrare tutte le attività presenti nella lista + public void DisplayTasks() + { + if (Tasks.Count == 0) + { + Console.WriteLine("Non ci sono attività da mostrare."); + return; + } + + Console.WriteLine("Elenco delle attività:"); + for (int i = 0; i < Tasks.Count; i++) + { + Console.WriteLine($"{i + 1}. {Tasks[i]}"); // Mostra ogni attività numerata + } + } + + // Metodo per rimuovere un'attività dalla lista tramite ID + public void RemoveTask(int taskId) + { + if (taskId > 0 && taskId <= Tasks.Count) + { + Tasks.RemoveAt(taskId - 1); // Rimuove l'attività corrispondente all'ID specificato + Console.WriteLine("Attività rimossa con successo."); + } + else + { + Console.WriteLine("ID attività non valido."); + } + } + + // Metodo per ottenere tutte le attività presenti nella lista + public List GetTasks() + { + return Tasks; // Restituisce l'intera lista delle attività + } + + // Metodo per aggiornare un'attività nella lista tramite ID + public void UpdateTask(int taskId, string newTask) + { + if (taskId > 0 && taskId <= Tasks.Count) + { + Tasks[taskId - 1] = newTask; // Aggiorna l'attività corrispondente all'ID specificato + Console.WriteLine("Attività aggiornata con successo."); + } + else + { + Console.WriteLine("ID attività non valido."); + } + } + + // Metodo per registrare un nuovo utente + public bool RegisterUser(string username, string password) + { + // Verifica se il nome utente è già in uso + if (users.Any(u => u.Username == username)) + { + Console.WriteLine("Nome utente già in uso. Scegli un altro nome utente."); + return false; // Ritorna false se il nome utente è già presente + } + + users.Add(new User(username, password)); // Aggiunge un nuovo utente alla lista + Console.WriteLine($"Utente '{username}' registrato con successo."); + return true; // Ritorna true se la registrazione è avvenuta con successo + } + + // Metodo per effettuare il login di un utente + public bool Login(string username, string password) + { + // Cerca l'utente corrispondente alle credenziali fornite + var user = users.FirstOrDefault(u => u.Username == username && u.Password == password); + if (user != null) + { + Console.WriteLine($"Accesso effettuato come '{username}'."); + return true; // Ritorna true se il login ha avuto successo + } + else + { + Console.WriteLine("Credenziali non valide. Riprova."); + return false; // Ritorna false se le credenziali non sono corrette + } + } + } +} \ No newline at end of file diff --git a/ToDoListVitucci/User.cs b/ToDoListVitucci/User.cs new file mode 100644 index 0000000..05b7080 --- /dev/null +++ b/ToDoListVitucci/User.cs @@ -0,0 +1,16 @@ + +//Definizione classe utenti + +public class User +{ + + //Definizione parametri di ingresso + public string Username { get; } + public string Password { get; } + + public User(string username, string password) + { + Username = username; + Password = password; + } +} \ No newline at end of file