Projet Python - Application de Gestion des Tâches (To-Do List)
Contexte du projet :
L’objectif de ce projet est de développer une application de gestion de tâches (To-Do List).
Vous allez concevoir une application permettant à l’utilisateur de gérer une liste de tâches
(ajouter, modifier, supprimer, marquer comme terminée) et de sauvegarder cette liste de
manière persistante dans un fichier. Le tout doit être accompagné d'une interface graphique
(UI) développée avec Tkinter.
Objectifs :
Le projet couvre plusieurs aspects essentiels de la programmation Python, tels que :
• Gestion de données avec des objets (POO) : Vous utiliserez la programmation
orientée objet pour représenter les tâches et la liste de tâches.
• Manipulation de collections : Vous utiliserez des listes pour stocker les tâches.
• Gestion des fichiers : Vous devrez sauvegarder et charger la liste des tâches à partir
d’un fichier JSON.
• Gestion des exceptions : Vous devrez gérer les erreurs (par exemple, mauvaise
saisie de dates ou suppression d'une tâche inexistante).
• Interface graphique (Tkinter) : Vous allez créer une interface graphique pour rendre
l’application plus interactive.
Fonctionnalités à implémenter :
1. Interface graphique :
o
La fenêtre principale doit afficher une Listbox contenant toutes les tâches.
o
La fenêtre doit permettre de saisir des informations sur une nouvelle tâche
(titre, description, date d’échéance).
o Des boutons doivent être disponibles pour :
▪ Ajouter une tâche
▪ Modifier une tâche existante
▪ Supprimer une tâche
▪ Sauvegarder la liste des tâches dans un fichier
o Un champ pour entrer le titre, la description et la date d’échéance des
tâches.
2. Gestion des tâches :
o Une tâche se caractérise par les informations suivantes :
▪ Titre (obligatoire)
▪ Description (optionnelle)
▪ Date d’échéance (optionnelle, format JJ/MM/AAAA)
▪ Statut : Terminée ou non (par défaut non terminée)
o Les utilisateurs doivent pouvoir :
▪ Ajouter une nouvelle tâche.
▪ Modifier une tâche existante (titre, description, date d’échéance).
▪ Supprimer une tâche de la liste.
▪ Marquer une tâche comme terminée.
▪ Afficher toutes les tâches dans la liste, avec leur statut et leur date
d'échéance.
3. Sauvegarde et Chargement :
o La liste des tâches doit être sauvegardée dans un fichier JSON pour
permettre à l’utilisateur de la retrouver après la fermeture de l’application.
o Lors du lancement de l'application, la liste des tâches doit être
automatiquement chargée à partir du fichier JSON (s'il existe).
o Si le fichier n’existe pas, l’application doit démarrer avec une liste vide.
Détails techniques :
Classes à implémenter :
1. Classe Tache : Cette classe doit représenter une tâche. Chaque tâche aura :
o Un titre (string)
o Une description (string, optionnelle)
o Un statut (booléen, True pour terminée, False pour non terminée)
o Une date d’ajout (date et heure actuelles)
o Une date d’échéance (date, optionnelle)
La classe Tache devra également :
o Avoir une méthode marquer_complet pour marquer la tâche comme
terminée.
o Implémenter une méthode __str__ pour afficher un résumé de la tâche
(titre, statut, date d’ajout, et date d’échéance).
2. Classe ToDoList : Cette classe gère la liste de toutes les tâches. Elle doit permettre :
o D'ajouter une nouvelle tâche
o De supprimer une tâche par son titre
o De modifier une tâche (titre, description, date d’échéance)
o De marquer une tâche comme terminée
o De sauvegarder et charger les tâches dans un fichier JSON
o D’afficher toutes les tâches sous forme de texte.
Interface Graphique avec Tkinter :
1. Fenêtre principale : La fenêtre doit contenir :
o Une Listbox pour afficher toutes les tâches.
o Un ScrollBar pour permettre de faire défiler les tâches si la liste devient trop
longue.
o Des champs de saisie pour entrer les informations d’une tâche (titre,
description, date d’échéance).
o Des boutons pour interagir avec les tâches (ajouter, modifier, supprimer,
quitter).
2. Interaction :
o Lorsqu'une tâche est sélectionnée dans la Listbox, vous pouvez :
▪ Modifier ses informations (titre, description, date d’échéance).
▪ Supprimer la tâche de la liste.
o Vous devez afficher un message d’erreur en cas de mauvaise saisie (par
exemple, une date mal formatée ou une tâche non sélectionnée).
Exigences supplémentaires :
1. Gestion des erreurs :
o Vous devez gérer les exceptions courantes, telles que les erreurs de format
de date ou l'absence de tâche sélectionnée lors de la modification ou de la
suppression.
2. Améliorations possibles :
o Filtrage des tâches : Ajoutez une fonctionnalité pour filtrer et afficher
seulement les tâches terminées ou non terminées.
o Tri des tâches : Permettez à l'utilisateur de trier les tâches par date
d'échéance ou par statut.
o Priorité des tâches : Ajoutez un champ pour définir la priorité de chaque
tâche (faible, moyenne, élevée).
Livrables :
1. Code source : Vous devez soumettre tout le code Python, organisé en fichiers de
manière claire et lisible. Le code doit être bien commenté.
2. Fichier JSON : Vous devez inclure un fichier taches.json qui contient des données de
test au format JSON pour vérifier que la sauvegarde et le chargement fonctionnent
correctement.
3. Documentation : Un fichier README décrivant :
o L'architecture des différents module de votre application.
o Les fonctionnalités implémentées.
o Comment exécuter et utiliser l’application.
o Les éventuelles améliorations que vous avez ajoutées.
Critères d’évaluation :
1. Fonctionnalités : L'application doit répondre à toutes les fonctionnalités demandées
(ajout, modification, suppression, affichage, sauvegarde et chargement).
2. Interface graphique : L’interface doit être claire, intuitive et fonctionnelle. Les
boutons doivent avoir des labels explicites et les interactions doivent être fluides.
3. Code : Le code doit être propre, bien structuré, et respecte des bonnes pratiques
(nommage des variables, organisation des fonctions, etc.).
4. Gestion des erreurs : Le programme doit correctement gérer les erreurs de saisie et
afficher des messages d'erreur appropriés.
Conseils :
• Testez chaque fonctionnalité de manière indépendante avant d'assembler toutes les
parties.
• Prenez le temps de bien organiser votre code avec des classes et des méthodes bien
définies.
• Pensez à utiliser des exceptions pour gérer les erreurs de manière élégante et à
afficher des messages d’erreur clairs à l’utilisateur.
• Utilisez des commentaires dans le code pour expliquer vos choix et faciliter la
lecture.
Deadline : La date limite de remise du projet est la veille de l’examen finale.