Menu
Coddy logo textTech

Interface Console / Interface d'administration

Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy. Leçon 66 sur 70.

challenge icon

Défi

Facile

Terminons votre Library System en construisant une interface console qui réunit tous vos composants ! Vous allez créer une interface d’administration qui traite les commandes pour gérer la bibliothèque : ajouter des livres, inscrire des utilisateurs, gérer les opérations d’emprunt et rechercher dans le catalogue.

Vous allez continuer à vous appuyer sur la structure existante de votre projet :

  • Book.cs : Conservez votre classe Book avec Id, Title, Author, IsAvailable, ainsi que les méthodes Borrow() et Return().
  • User.cs : Conservez votre classe User avec le suivi des emprunts, la constante MaxBooks, CanBorrow() et les méthodes de gestion des livres empruntés.
  • Library.cs : Conservez votre classe Library avec toute la logique d’emprunt et les méthodes de recherche LINQ que vous avez créées. Ajoutez une nouvelle méthode GetAllBooks() qui renvoie tous les livres de la bibliothèque, ainsi que GetAllUsers() qui renvoie tous les utilisateurs inscrits.
  • Program.cs : C’est ici que votre interface console prend vie ! Vous allez construire un processeur de commandes qui lit les commandes et exécute les opérations appropriées de la bibliothèque. Considérez-le comme le tableau de bord d’administration de votre système de bibliothèque.

Votre interface console doit gérer les commandes suivantes :

  • ADD_BOOK|id|title|author - Ajoute un nouveau livre et affiche Added: {Title}
  • ADD_USER|name|memberId - Inscrit un nouvel utilisateur et affiche Registered: {Name}
  • BORROW|bookId|memberId - Traite une demande d’emprunt (utilisez votre logique BorrowBook existante)
  • RETURN|bookId|memberId - Traite une demande de retour (utilisez votre logique ReturnBook existante)
  • SEARCH|type|value - Recherche dans le catalogue lorsque type est title, author, available ou borrowed
  • STATUS - Affiche un résumé indiquant le nombre total de livres, le nombre de livres disponibles, le nombre total d’utilisateurs et le nombre total de livres empruntés

Pour la commande STATUS, affichez le résumé dans ce format :

--- Library Status ---
Total Books: {count}
Available: {count}
Total Users: {count}
Books Borrowed: {count}

Pour les résultats de recherche, affichez chaque livre sous la forme {Title} by {Author} sur sa propre ligne, ou No books found si aucun résultat n’est trouvé.

Vous recevrez les entrées suivantes :

  • Le nom de la bibliothèque
  • Le nombre de commandes à traiter
  • Chaque commande sur sa propre ligne, selon les formats décrits ci-dessus

Par exemple, si les entrées sont les suivantes :

Downtown Library
8
ADD_BOOK|B001|Clean Code|Robert Martin
ADD_BOOK|B002|The Pragmatic Programmer|David Thomas
ADD_USER|Alice|101
ADD_USER|Bob|102
BORROW|B001|101
SEARCH|available
BORROW|B002|102
STATUS

La sortie devrait être la suivante :

Added: Clean Code
Added: The Pragmatic Programmer
Registered: Alice
Registered: Bob
Alice borrowed Clean Code
The Pragmatic Programmer by David Thomas
Bob borrowed The Pragmatic Programmer
--- Library Status ---
Total Books: 2
Available: 0
Total Users: 2
Books Borrowed: 2

Votre interface console joue le rôle de lien entre les entrées de l’utilisateur et vos composants de bibliothèque bien organisés. Chaque commande délègue son traitement à la méthode appropriée de votre classe Library, démontrant ainsi comment une architecture propre facilite la création d’interfaces utilisateur !

Essayez vous-même

using System;
using System.Collections.Generic;

namespace LibrarySystem
{
    class Program
    {
        public static void Main(string[] args)
        {
            // Lire le nom de la bibliothèque
            string libraryName = Console.ReadLine();
            
            // Créer une instance de Library avec le nom de la bibliothèque
            Library library = new Library(libraryName);
            
            // Lire le nombre de commandes
            int numCommands = Convert.ToInt32(Console.ReadLine());
            
            // Traiter chaque commande
            for (int i = 0; i < numCommands; i++)
            {
                string commandLine = Console.ReadLine();
                string[] parts = commandLine.Split('|');
                string command = parts[0];
                
                // TODO: Gérer la commande ADD_BOOK
                // Format : ADD_BOOK|id|title|author
                // Afficher : Added: {title}
                
                // TODO: Gérer la commande ADD_USER
                // Format : ADD_USER|name|memberId
                // Afficher : Registered: {name}
                
                // TODO: Gérer la commande BORROW
                // Format : BORROW|bookId|memberId
                // Afficher le résultat de library.BorrowBook()
                
                // TODO: Gérer la commande RETURN
                // Format : RETURN|bookId|memberId
                // Afficher le résultat de library.ReturnBook()
                
                // TODO: Gérer la commande SEARCH
                // Format : SEARCH|type|value (type peut être title, author, available, borrowed)
                // Afficher chaque livre comme "{Title} by {Author}" ou "No books found"
                
                // TODO: Gérer la commande STATUS
                // Afficher :
                // --- Library Status ---
                // Total Books: {count}
                // Available: {count}
                // Total Users: {count}
                // Books Borrowed: {count}
            }
        }
    }
}

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur C# en ligne