Projet Système de gestion de bibliothèque (console)
Contexte : Construisez une application console qui gère des livres et des membres en utilisant les principes POO : classes, héritage, encapsulation, interfaces et membres statiques.
Code complet
Section intitulée « Code complet »using System;using System.Collections.Generic;using System.Linq;
// Classe de base abstraitepublic abstract class ElementBibliotheque{ public string Titre { get; set; } public string Auteur { get; set; } public string Isbn { get; set; } public bool EstEmprunte { get; set; }}
// Classe Livrepublic class Livre : ElementBibliotheque{ public Livre(string titre, string auteur, string isbn) { Titre = titre; Auteur = auteur; Isbn = isbn; EstEmprunte = false; } public override string ToString() => $"{Titre} par {Auteur} (ISBN: {Isbn}) - {(EstEmprunte ? "Emprunté" : "Disponible")}";}
// Classe Membrepublic class Membre{ public string Nom { get; set; } public int MembreId { get; set; } public List<Livre> LivresEmpruntes { get; } = new List<Livre>(); public Membre(string nom, int id) { Nom = nom; MembreId = id; }}
// Interfacepublic interface IBibliotheque{ void AjouterLivre(Livre livre); bool SupprimerLivre(string isbn); bool EmprunterLivre(string isbn, Membre membre); bool RetournerLivre(string isbn, Membre membre); List<Livre> ObtenirTousLesLivres();}
// Implémentationpublic class Bibliotheque : IBibliotheque{ private static List<Livre> _livres = new List<Livre>();
public void AjouterLivre(Livre livre) => _livres.Add(livre); public List<Livre> ObtenirTousLesLivres() => _livres.ToList();
public bool SupprimerLivre(string isbn) { var livre = _livres.FirstOrDefault(l => l.Isbn == isbn); if (livre != null && !livre.EstEmprunte) { _livres.Remove(livre); return true; } return false; }
public bool EmprunterLivre(string isbn, Membre membre) { var livre = _livres.FirstOrDefault(l => l.Isbn == isbn); if (livre != null && !livre.EstEmprunte) { livre.EstEmprunte = true; membre.LivresEmpruntes.Add(livre); return true; } return false; }
public bool RetournerLivre(string isbn, Membre membre) { var livre = membre.LivresEmpruntes.FirstOrDefault(l => l.Isbn == isbn); if (livre != null) { livre.EstEmprunte = false; membre.LivresEmpruntes.Remove(livre); return true; } return false; }}
// Application consolepublic class Program{ static Bibliotheque bibliotheque = new Bibliotheque(); static Membre membreCourant;
static void Main() { Console.WriteLine("=== Système de gestion de bibliothèque ==="); Console.Write("Entrez votre nom : "); string nom = Console.ReadLine(); membreCourant = new Membre(nom, new Random().Next(1000, 9999)); Console.WriteLine($"Bienvenue {membreCourant.Nom} ! Votre ID membre est {membreCourant.MembreId}\n");
bool quitter = false; while (!quitter) { Console.WriteLine("\nMenu :"); Console.WriteLine("1. Ajouter un livre"); Console.WriteLine("2. Lister tous les livres"); Console.WriteLine("3. Emprunter un livre"); Console.WriteLine("4. Retourner un livre"); Console.WriteLine("5. Quitter"); Console.Write("Choix : "); string choix = Console.ReadLine();
switch (choix) { case "1": AjouterLivre(); break; case "2": ListerLivres(); break; case "3": EmprunterLivre(); break; case "4": RetournerLivre(); break; case "5": quitter = true; break; default: Console.WriteLine("Choix invalide."); break; } } }
static void AjouterLivre() { Console.Write("Titre : "); string titre = Console.ReadLine(); Console.Write("Auteur : "); string auteur = Console.ReadLine(); Console.Write("ISBN : "); string isbn = Console.ReadLine(); bibliotheque.AjouterLivre(new Livre(titre, auteur, isbn)); Console.WriteLine("Livre ajouté."); }
static void ListerLivres() { var livres = bibliotheque.ObtenirTousLesLivres(); if (livres.Count == 0) Console.WriteLine("Aucun livre."); else foreach (var l in livres) Console.WriteLine(l); }
static void EmprunterLivre() { Console.Write("Entrez l'ISBN à emprunter : "); string isbn = Console.ReadLine(); if (bibliotheque.EmprunterLivre(isbn, membreCourant)) Console.WriteLine("Livre emprunté."); else Console.WriteLine("Impossible d'emprunter (ISBN invalide ou déjà emprunté)."); }
static void RetournerLivre() { Console.Write("Entrez l'ISBN à retourner : "); string isbn = Console.ReadLine(); if (bibliotheque.RetournerLivre(isbn, membreCourant)) Console.WriteLine("Livre retourné."); else Console.WriteLine("Vous n'avez pas emprunté ce livre."); }}Exemple d’exécution
Section intitulée « Exemple d’exécution »=== Système de gestion de bibliothèque ===Entrez votre nom : AliceBienvenue Alice ! Votre ID membre est 4567
Menu :1. Ajouter un livre2. Lister tous les livres3. Emprunter un livre4. Retourner un livre5. QuitterChoix : 1Titre : Programmation C#Auteur : John DoeISBN : 123Livre ajouté.
Choix : 2Programmation C# par John Doe (ISBN: 123) - Disponible
Choix : 3Entrez l'ISBN à emprunter : 123Livre emprunté.
Choix : 4Entrez l'ISBN à retourner : 123Livre retourné.Concepts POO utilisés
Section intitulée « Concepts POO utilisés »- Classes :
Livre,Membre,Bibliotheque - Héritage :
Livrehérite deElementBibliotheque - Abstraction : classe abstraite
ElementBibliotheque - Encapsulation : liste privée static
_livres - Interfaces : contrat
IBibliotheque - Membres static :
_livres(partagé entre toutes les instances deBibliotheque)