Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions ToDoListVitucci/ITaskManager.cs
Original file line number Diff line number Diff line change
@@ -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<string> GetTasks();
void UpdateTask(int taskId, string newTask);
bool RegisterUser(string username, string password);
bool Login(string username, string password);
}
10 changes: 10 additions & 0 deletions ToDoListVitucci/ProgettoFinale.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

</Project>
25 changes: 25 additions & 0 deletions ToDoListVitucci/ProgettoFinale.sln
Original file line number Diff line number Diff line change
@@ -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
123 changes: 123 additions & 0 deletions ToDoListVitucci/Program.cs
Original file line number Diff line number Diff line change
@@ -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;
}
}
}
}
}
109 changes: 109 additions & 0 deletions ToDoListVitucci/TaskManager.cs
Original file line number Diff line number Diff line change
@@ -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<string> Tasks; // Lista pubblica delle attività
private readonly List<User> users; // Lista privata degli utenti

// Costruttore della classe TaskManager
public TaskManager()
{
Tasks = new List<string>(); // Inizializza la lista delle attività
users = new List<User>(); // 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<string> 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
}
}
}
}
16 changes: 16 additions & 0 deletions ToDoListVitucci/User.cs
Original file line number Diff line number Diff line change
@@ -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;
}
}