Les notes sont perdues à chaque fermeture de l’application de gestion, ce qui rend son utilisation peu pratique.
Cette perte répétée d’informations peut être frustrante et inefficace pour les utilisateurs qui comptent sur l’application pour gérer leurs tâches.
Nous allons explorer comment intégrer la persistance des données en utilisant un fichier texte pour sauvegarder et restaurer les notes efficacement.
Démarrez votre voyage en programmation C# et devenez un expert en un rien de temps.
Projet : Persistance des Notes Personnelles
Dans ce projet, nous allons élargir notre application de gestion de notes en ajoutant un élément essentiel : la persistance des données . Actuellement, les notes sont perdues à chaque fermeture de l’application, car elles ne sont stockées que temporairement en mémoire. Nous allons résoudre ce problème en utilisant un fichier texte comme mécanisme de sauvegarde et de restauration.
Importance de la Persistance des Données
Imaginez que vous gérez vos tâches journalières dans une application. Si toutes vos notes disparaissent à chaque redémarrage, l’application devient peu pratique. La persistance des données garantit que les informations saisies restent disponibles même après la fermeture de l’application.
Nous utiliserons un fichier texte pour :
- Sauvegarder les notes lors de la fermeture.
- Charger automatiquement les notes au démarrage.
- Améliorer l’affichage des notes avec des couleurs.
Voici les étapes clés pour implémenter cette fonctionnalité.
Solution : Sauvegarde Automatique des Notes
1. Création et Gestion du Fichier Texte
Nous utiliserons la classe File de l’espace de noms System.IO pour gérer les opérations de lecture et d’écriture dans un fichier texte.
Chemin du Fichier :
static string cheminFichier = Path.Combine(Environment.CurrentDirectory, « notes.txt »);
Ce code définit le chemin du fichier notes.txt dans le répertoire courant de l’application. La méthode Path.Combine assure un chemin valide, quel que soit le système d’exploitation.
2. Fonctionnalités de Sauvegarde et de Chargement
a. Sauvegarder les Notes :
Nous allons créer une méthode qui écrit toutes les notes dans un fichier texte :
void SauvegarderNotes(List Notes)
{
string chemin = @"C:\Users\IGA\Desktop\C#.txt"; // Utilisation d'une chaîne verbatim
try
{
File.WriteAllLines(chemin, Notes); // Sauvegarde les notes dans le fichier
Console.WriteLine("Notes sauvegardées avec succès.");
}
catch (IOException e)
{
Console.WriteLine($"Erreur lors de la sauvegarde des notes : {e.Message}");
}
}
Cette méthode utilise File.WriteAllLines, qui remplace le contenu existant du fichier avec les nouvelles notes.
b. Charger les Notes :
Lors du démarrage, l’application doit récupérer les notes sauvegardées :
static List ChargerNotes()
{
if (File.Exists(cheminFichier))
{
return new List(File.ReadAllLines(cheminFichier));
}
else
{
return new List();
}
}
Cette méthode vérifie si le fichier existe avant de tenter une lecture. Si le fichier est absent, une liste vide est retournée.
3. Intégration dans l'Application
Dans la méthode principale, nous ajoutons les appels aux méthodes de sauvegarde et de chargement pour garantir une transition fluide entre les sessions :
Sauvegarde au Quitter :
static void QuitterApplication(List notes)
{
SauvegarderNotes(notes);
Environment.Exit(0);
}
Chargement à l’Initialisation :
static void Main(string[] args)
{
List<string> notes = ChargerNotes();
// … Reste du code de gestion des notes
}
4. Amélioration de l'Affichage
Pour améliorer la lisibilité des notes, nous les affichons avec des couleurs :
static void AfficherNotes(List<string> notes)
{
Console.ForegroundColor = ConsoleColor.Yellow;
for (int i = 0; i < notes.Count; i++)
{
Console.WriteLine($ »{i + 1}. {notes[i]} »);
}
Console.ResetColor();
}
Ce code utilise Console.ForegroundColor pour colorer les textes en jaune, rendant les notes plus visibles.
Interface : Affichage Coloré des Notes
Voici les options proposées à l’utilisateur dans le menu principal :
1. Ajouter une note
2. Supprimer une note
3. Afficher les notes
4. Quitter
Chaque choix appelle la méthode correspondante : ajout, suppression, affichage ou sauvegarde avant de quitter.
Code Complet:
using System;
using System.Collections.Generic;
using System.IO;
namespace formation
{
internal class Program
{
// Constante pour le chemin du fichier
private static readonly string cheminFichier = @"C:\Users\IGA\Desktop\C#.txt";
static void Main(string[] args)
{
// Charger les notes au démarrage
List notes = ChargerNotes();
// Boucle principale du programme
while (true)
{
AfficherMenu();
// Traiter l'entrée de l'utilisateur
switch (Console.ReadLine())
{
case "1":
AjouterNote(notes);
break;
case "2":
SupprimerNote(notes);
break;
case "3":
AfficherNotes(notes);
break;
case "4":
QuitterApplication(notes);
return;
default:
Console.WriteLine("Choix invalide, veuillez réessayer.");
break;
}
}
}
// Méthode pour afficher le menu principal
private static void AfficherMenu()
{
Console.WriteLine("\n=== Gestion des Notes ===");
Console.WriteLine("1. Ajouter une note");
Console.WriteLine("2. Supprimer une note");
Console.WriteLine("3. Lister les notes");
Console.WriteLine("4. Quitter");
Console.Write("Choisissez une option : ");
}
// Méthode pour sauvegarder les notes dans le fichier
private static void SauvegarderNotes(List notes)
{
try
{
File.WriteAllLines(cheminFichier, notes);
Console.WriteLine("Notes sauvegardées avec succès.");
}
catch (IOException e)
{
Console.WriteLine($"Erreur lors de la sauvegarde des notes : {e.Message}");
}
}
// Méthode pour charger les notes depuis le fichier
private static List ChargerNotes()
{
if (File.Exists(cheminFichier))
{
return new List(File.ReadAllLines(cheminFichier));
}
else
{
return new List();
}
}
// Méthode pour ajouter une note
private static void AjouterNote(List notes)
{
Console.Write("Entrez votre note : ");
string note = Console.ReadLine();
if (!string.IsNullOrWhiteSpace(note))
{
notes.Add(note);
Console.WriteLine("Note ajoutée avec succès !");
}
else
{
Console.WriteLine("La note ne peut pas être vide.");
}
}
// Méthode pour lister toutes les notes avec mise en forme colorée
private static void AfficherNotes(List notes)
{
if (notes.Count == 0)
{
Console.WriteLine("Aucune note à afficher.");
return;
}
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("\n=== Liste des Notes ===");
for (int i = 0; i < notes.Count; i++)
{
Console.WriteLine($"{i + 1}. {notes[i]}");
}
Console.ResetColor();
}
// Méthode pour supprimer une note
private static void SupprimerNote(List notes)
{
if (notes.Count == 0)
{
Console.WriteLine("Aucune note à supprimer.");
return;
}
AfficherNotes(notes);
Console.Write("Entrez le numéro de la note à supprimer : ");
if (int.TryParse(Console.ReadLine(), out int index) && index > 0 && index <= notes.Count)
{
notes.RemoveAt(index - 1);
Console.WriteLine("Note supprimée avec succès !");
}
else
{
Console.WriteLine("Numéro invalide.");
}
}
// Méthode pour quitter l'application
private static void QuitterApplication(List notes)
{
SauvegarderNotes(notes);
Console.WriteLine("Merci d'avoir utilisé l'application. À bientôt !");
Environment.Exit(0);
}
}
}
Résultats : Gestion Optimisée des Données
- Persistance :Les notes sont sauvegardées dans un fichier texte, rendant leur perte impossible lors de la fermeture du programme.
- Restauration Automatique :Les notes précédemment enregistrées sont automatiquement chargées au redémarrage.
- Expérience Améliorée :L’affichage en couleur rend les notes plus attractives et lisibles.
Résultat dans la console:
Conclusion : Perspectives de Sauvegarde
Ce mini-projet illustre comment intégrer une persistance simple dans une application console. Pour aller plus loin, vous pouvez :
- Ajouter des catégories pour organiser les notes.
- Implémenter une fonctionnalité de recherche.
- Envisager d’autres méthodes de stockage, comme une base de données SQLite.
Avec ces étapes, votre application est maintenant fonctionnelle et robuste pour une utilisation quotidienne !
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment éviter la perte de notes dans l'application ?
Quel est le rôle du fichier texte dans la persistance des données ?
Comment sauvegarder et charger les notes efficacement ?
Comment améliorer l'affichage des notes dans l'application ?
Pourquoi la persistance des données est-elle importante pour une application ?
Conclusion
Ce mini-projet démontre l’importance de la persistance des données dans une application. Comment envisagez-vous d’améliorer encore cette fonctionnalité dans vos projets futurs ?