Projet - Système de Gestion de Bibliothèque Numérique 📚
Le but de ce projet est de créer un système en Python pour gérer une collection de livres numériques.
Concepts Abordés
- Structures de données : listes, dictionnaires
- Manipulation de fichiers (CSV ou JSON pour stocker les données des livres)
- Fonctions : définition, appel, paramètres, valeurs de retour
- Boucles et conditions
- Interfaces utilisateur simples en mode texte
Fonctionnalités à Implémenter
1. Gestion des Livres
Chaque livre sera représenté par un dictionnaire avec les clés suivantes :
- titre
(chaîne de caractères)
- auteur
(chaîne de caractères)
- annee_publication
(entier)
- genre
(chaîne de caractères)
- isbn
(chaîne de caractères, unique)
Initialisation de la bibliothèque
Créer une liste vide nommée bibliotheque
qui contiendra tous les dictionnaires représentant les livres.
Ajout d'un livre
Créer une fonction ajouter_livre(bibliotheque, titre, auteur, annee_publication, genre, isbn)
qui :
1. Vérifie si un livre avec le même ISBN existe déjà dans la bibliotheque
.
2. Si non, crée un dictionnaire pour le nouveau livre et l'ajoute à la liste bibliotheque
.
3. Renvoie True
si le livre a été ajouté, False
sinon (par exemple, si l'ISBN existe déjà).
Recherche de livres
Créer une fonction rechercher_livres(bibliotheque, critere, valeur)
qui :
1. Prend en paramètre la bibliotheque
, un critere
de recherche (par exemple, "titre", "auteur", "genre") et une valeur
à rechercher.
2. Renvoie une liste de tous les livres (dictionnaires) qui correspondent au critère et à la valeur.
Par exemple, rechercher_livres(bibliotheque, "auteur", "Victor Hugo")
devrait renvoyer tous les livres de Victor Hugo.
Affichage des détails d'un livre
Créer une fonction afficher_details_livre(livre)
qui prend un dictionnaire de livre en paramètre et affiche ses informations de manière lisible.
Tests de la gestion des livres
- Initialiser une bibliothèque vide.
- Ajouter plusieurs livres avec des informations variées. Tenter d'ajouter un livre avec un ISBN déjà existant pour vérifier la gestion des doublons.
- Rechercher des livres par titre, auteur et genre.
- Afficher les détails des livres trouvés.
2. Sauvegarde et Chargement des Données
Pour que les données persistent entre les sessions, nous allons les sauvegarder dans un fichier.
Sauvegarde de la bibliothèque
Créer une fonction sauvegarder_bibliotheque(bibliotheque, nom_fichier)
qui :
1. Prend la liste bibliotheque
et un nom_fichier
(par exemple, "bibliotheque.csv") en paramètres.
2. Écrit les données de chaque livre dans le fichier CSV. Chaque ligne du CSV représentera un livre, et les colonnes correspondront aux attributs du livre (titre, auteur, etc.).
Astuce : Vous pouvez utiliser le module csv
de Python pour cela.
Chargement de la bibliothèque
Créer une fonction charger_bibliotheque(nom_fichier)
qui :
1. Prend un nom_fichier
en paramètre.
2. Lit les données depuis le fichier CSV et reconstruit la liste de dictionnaires bibliotheque
.
3. Renvoie la bibliotheque
chargée. Si le fichier n'existe pas, elle doit renvoyer une liste vide.
Attention à bien convertir les types de données (par exemple, annee_publication
en entier) lors du chargement.
Tests de sauvegarde et chargement
- Créer une bibliothèque et y ajouter quelques livres.
- Sauvegarder la bibliothèque dans un fichier.
- Effacer la variable
bibliotheque
actuelle (ou redémarrez votre script). - Charger la bibliothèque depuis le fichier et vérifier que tous les livres sont correctement restaurés.
3. Interface Utilisateur (Menu Principal)
Créer une interface simple en mode texte pour interagir avec le système.
Menu principal
Créer une fonction menu_principal()
qui affiche les options suivantes à l'utilisateur :
1. Ajouter un nouveau livre
2. Rechercher des livres
3. Afficher tous les livres
4. Supprimer un livre (par ISBN)
5. Sauvegarder et quitter
6. Quitter sans sauvegarder
La fonction doit lire le choix de l'utilisateur et appeler les fonctions correspondantes. La boucle du menu doit continuer jusqu'à ce que l'utilisateur choisisse de quitter.
Suppression d'un livre
Créer une fonction supprimer_livre(bibliotheque, isbn)
qui :
1. Recherche le livre par isbn
.
2. Si trouvé, le supprime de la bibliotheque
et renvoie True
.
3. Sinon, renvoie False
.
Test de l'interface utilisateur
- Lancer le
menu_principal()
. - Tester chaque option du menu :
- Ajouter plusieurs livres.
- Rechercher des livres.
- Afficher tous les livres.
- Supprimer un livre existant, puis essayer de supprimer un livre inexistant.
- Sauvegarder la bibliothèque et quitter. Relancer le programme pour vérifier que les données ont bien été sauvegardées et chargées au démarrage.
Pour aller plus loin (Optionnel)
- Gestion des emprunts : Ajoutez des fonctionnalités pour marquer des livres comme empruntés, avec une date de retour.
- Interface graphique : Utilisez une bibliothèque comme Tkinter ou PyQt pour créer une interface utilisateur graphique.
- Validation des données : Ajoutez des contrôles plus stricts sur les entrées utilisateur (par exemple, format de l'ISBN, année de publication valide).
- Tri des livres : Permettre à l'utilisateur de trier les livres par titre, auteur ou année.