Jan.01

TP7 : Application de gestion des emprunts

Problème :

On souhaite réaliser une application de gestion des emprunts des livres dans une bibliothèque.

Soit la classe Personne qui comporte les attributs suivants : le nom et le prénom.

  1. Définir la classe Personne.
  2. Ajouter un constructeur par défaut et un constructeur paramétré qui initialise tous les attributs.
  3. Ajouter les accesseurs et les mutateurs de chaque attribut :
  4. Ajouter une méthode toString() qui retourne l’état d’un objet Personne.

Soit la classe Adherent qui hérite de la classe Personne et qui a comme attributs :Le code de l’adhérent (doit être attribué automatiquement) et La date d’adhésion.

  1. Définir la classe Adherent.
  2. Ajout un constructeur qui initialise tous les attributs de la classe Adherent.
  3. Ajouter un constructeur paramétré qui initialise le nom et le prénom. Ce constructeur doit faire appel au constructeur précédant (la date d’adhésion est la date système).
  4. Ajouter la méthode toString() qui retourne l’état d’un adhérent (respectez le format : code_nom_prenom_jj mm aaaa).

Soit la classe Auteur qui hérite de la classe Personne et qui a comme attributs : Le code de l’auteur.

  1. Définir la classe Auteur.
  2. Ajouter un constructeur qui initialise tous les attributs de la classe Auteur.
  3. Ajouter les accesseurs et les mutateurs de chaque attribut.
  4. Ajouter une méthode toString() qui retourne l’état d’un objet Auteur.

Soit la classe Livre qui comporte les attributs suivants : Le code du livre, Le titre du livre, L’auteur du livre, Le nombre total des exemplaires et Le nombre des exemplaires disponibles.

  1. Définir la classe
  2. Ajouter un constructeur qui initialise tous les attributs de la classe
  3. Ajouter une méthode livreDisponible() qui vérifie si un livre est disponible pour l’emprunt ou non.

Soit la classe Emprunt qui comporte les attributs suivants : Le code de l’emprunt (attribué automatiquement), Le livre emprunté, L’emprunteur du livre, La date d’emprunt, La date de retour prévue et La date de retour effective.

  1. Définir la classe
  2. Ajouter un constructeur qui initialise tous les attributs de la classe Emprunt (la date de retour est nulle).
  3. Ajouter une méthode etatEmprunt() qui retourne l’état d’un emprunt (en cours, non rendu, rendu).

Soit la classe Bilio qui comporte les attributs suivants :

–  Une liste des livres ArrayList<Livre>

–  Une liste des adhérents ArrayList<Adhérent>

–  Une liste des emprunts ArrayList<Emprunt>

  1. Définir la classe Biblio.
  2. Ajouter une méthode ajouterLivre() qui permet d’ajouter un livre à la bibliothèque.
  3. Ajouter une méthode ajouterAdherent() qui permet d’ajouter un adhérent à la bibliothèque.
  4. Ajouter une méthode rechercherAdherent() qui recherche un adhérent par son code.
  5. Ajouter une méthode rechercherLivre() qui recherche un livre par son code.
  6. Ajouter une méthode ajouterEmprunt(codeA ,codeL) qui permet d’enregistrer un emprunt. La date de d’emprunt est la date système, la durée de l’emprunt est de 3 jours.
  7. Ajouter une méthode retourEmprunt(codeEmprunt) qui enregistre le retour d’un emprunt.
  8. Ajouter une méthode topEmprunts() qui retourne le livre le plus demandé.
  9. Ajouter une méthode emprunteurs() qui retourne la liste des emprunteurs ayant des emprunts en cours ou non rendus.
  10. Ajouter une méthode datePossibilitéEmprunt(codeL) qui retourne la date où un exemplaire de livre pourrait être disponible.

Correction

La classe Personne

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TP7
{
    class Personne
    {
      private  string Nom;
      private  string Prenom;          // Qestion N°1
        public Personne()
        {
            Nom = "";
            Prenom = "";
        }
        public Personne(string n, string p)            
        {
            this.Nom = n;
            this.Prenom = p;
        }
        public string GetNom()
        {
            return this.Nom;
        }
        public void SetNom(string n)                          // Qestion N°3
        {
            this.Nom = n;
        }
        public string GetPrenom()
        {
            return this.Prenom;
        }
        public void SetPrenom(string p)
        {
            this.Prenom = p;
        }
        public string toString()
        {
            return "\nLe nom est :" + this.Nom + "\nLe prénom est :" + this.Prenom + "\n";     // Qestion N°4
        }
    }
}

La classe Adherent

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TP7
{
    class Adherent : Personne
    {
       private int CodeAdherent;
       private DateTime DateAdhesion;                 // Qestion N°5
       static int i = 0;
        public Adherent() : base()
        {
            this.DateAdhesion = DateTime.Now;               // Qestion N°6
            i++;
            this.CodeAdherent = i;
        }
        public int GetCodeAdherent()
        {
            return this.CodeAdherent;
        }
        public void SetCodeAdherent(int a)
        {
            this.CodeAdherent = a;
        }

        public Adherent(string n, string p, int c)
            : base(n, p)
        {                                                                // Qestion N°7
            this.CodeAdherent = c;
            this.DateAdhesion = DateTime.Now;
        }
        public string toString()
        {
            return "\nLe code est:" + this.CodeAdherent + "\nLe nom est :" + this.GetNom()
                + "\nLe prénom est " + this.GetPrenom()                                          // Qestion N°8
                + "\nLa date de l'adhésion est : " + this.DateAdhesion.ToString("dd/MM/YYYY");      
        }

    }
}

La classe Auteur

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TP7
{
    class Auteur :Personne
    {
        int CodeAuteur;                    // Qestion N°9
        public Auteur() : base()
        {
            CodeAuteur = 0;                    // Qestion N°10.1
        }
        public Auteur(string n, string p, int c)
            : base(n, p)
        {                                             // Qestion N°10.2
            this.CodeAuteur = c;
        }
        public void SetCodeAuteur(int c)
        {
            this.CodeAuteur = c;
        }
        public int GetCodeAuteur()                     // Qestion N°11
        {
            return this.CodeAuteur;
        }
        public string toString()
        {
            return "\nLe nom est:" + this.GetNom() + "\nLe prénom est :" + this.GetPrenom()    // Qestion N°12
                + "\nLe code d'auteur est :" + this.CodeAuteur;
        }

    }
}

La classe Livre

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TP7
{
    class Livre
    {
        int CodeLivre;
        string TitreLivre;
        Auteur AuteurLivre;                    // Qestion N° 13
        double NbrLivre;
        double NbrLivreDispo;
        public Livre()
        { }
        public Livre(int c, string t, Auteur a, double n, double d)
        {
            this.CodeLivre = c;
            this.TitreLivre = t;
            this.AuteurLivre = a;                  // Qestion N°14
            this.NbrLivre = n;
            this.NbrLivreDispo = d;
        }
        public int GetCodeLivre()
        {
            return this.CodeLivre;
        }
        public void SetCodeLivre(int a)
        {
            this.CodeLivre = a;
        }
        public void SetAuteurLivre(Auteur l)
        {
            this.AuteurLivre = l;
        }
        public bool livreDisponible(Biblio a)
        {
            return a.rechercherLivre(this.GetCodeLivre());          // Qestion N°15
        }
    }
}

La classe Emprunt

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TP7
{
    class Emprunt
    {
        private int Codemprunt;
        private Livre LivreEmprunte;
        private Adherent Emprunteur;                    // Qestion N°16
        private DateTime DateEmprunt;
        private DateTime DateretourP;
        private DateTime DateretourE = new DateTime() ;
        static int j = 0;
        public Emprunt()
        {
            j++;
            this.Codemprunt = j;
        }
        public Emprunt(int c, Livre l, Adherent e, DateTime de, DateTime drp)
        {
            this.Codemprunt = c;
            this.LivreEmprunte = l;
            this.Emprunteur = e;                            // Qestion N°17
            this.DateEmprunt = de;
            this.DateretourP = drp;
            this.DateretourE = new DateTime();
        }
        public DateTime GetDateEmprunt()
        {
            return this.DateEmprunt;
        }
        public Adherent GetEmprunteur()
        {
            return this.Emprunteur;
        }
        public DateTime GetDateretourP()
        {
            return this.DateretourP;
        }
        public DateTime GetDateretourE()
        {
            return this.DateretourE;
        }
        public Livre GetLivreEmprunte()
        {
            return this.LivreEmprunte;
        }
        public void SetLivreEmprunte(Livre a)
        {
            this.LivreEmprunte = a;
        }
        public void SetDateEmprunt(DateTime a)
        {
            this.DateEmprunt = a;
        }
        public void SetDateretourE(DateTime a)
        {
            this.DateretourE = a;
        }
        public void SetDateretourP(DateTime a)
        {
            this.DateretourP = a;
        }
        public void SetEmprunteur(Adherent a)
        {
            this.Emprunteur = a;
        }
        public int GetCodeEmprunt()
        {
            return this.Codemprunt;
        }
        public string etatEmprunt()
        {
            DateTime n = new DateTime();
            if (GetDateretourE() == n)
            {
                if (DateTime.Compare(DateTime.Now, GetDateretourP()) <= 0)
                    return "En cours";
                else
                    return "Non Rendu";                                               // Qestion N°18
            }
            else
                return "Rendu";
        }

    }
}

La classe Biblio

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace TP7
{
    class Biblio
    {
        List<Livre> ListLivre;
        List<Adherent> ListAdherent;             // Qestion N°19
        List<Emprunt> ListEmprunt;
        public List<Livre> GetListLivre()
        {
            return this.ListLivre;
        }
        public List<Emprunt> GetListEmprunt()
        {
            return this.ListEmprunt;
        }
        public bool ajouterLivre(Livre a)
        {
            if (rechercherLivre(a.GetCodeLivre()))
            {
                Console.WriteLine("Ce Livre dexiste déjà");
                return false;
            }                                                             // Qestion N°20
            else
            {
                ListLivre.Add(a);
                return true;
            }

        }
        public bool rechercherLivre(int a)
        {
            bool trouve = false;
            int i = 0;
            while (i < this.ListLivre.Count && trouve == false)
            {
                if (((Livre)(this.ListLivre[i])).GetCodeLivre() == a)       // Qestion N°23
                    trouve = true;
                else i++;
            }
            return trouve;
        }
        public bool rechercherAdherent(int a)
        {
            int j=0;
            foreach (Adherent i in ListAdherent)                     // Qestion N°22
            { 
                if (i.GetCodeAdherent() == a)
                    j++;
            }
            if (j != 0)
                return true;
            else return false;
        }
        public bool ajouterAdherent(Adherent a)
        {
            if (rechercherAdherent(a.GetCodeAdherent()))
            {
                Console.WriteLine("Cet adherent existe déjà !");
                return false;                                                 // Qestion N°21
            }
            else
            {
                ListAdherent.Add(a);
                return true;
            }

        }
        public void ajouterEmprunt(int a, int b)
        {
            Emprunt emprunt = new Emprunt();

            if (rechercherAdherent(a) == false)
                Console.WriteLine("Cet adherent n'existe pas");
            else
            {
                foreach (Adherent i in ListAdherent)
                    if (i.GetCodeAdherent() == a)
                        emprunt.SetEmprunteur(i);                      // Qestion N°24
            } 

            if (rechercherLivre(b) == false)
                Console.WriteLine("Ce livre n'existe pas");
            else
            {
                foreach (Livre i in ListLivre)
                    if (i.GetCodeLivre() == b)
                        emprunt.SetLivreEmprunte(i);
            }

            emprunt.SetDateEmprunt(DateTime.Now);
            emprunt.SetDateretourP(DateTime.Now.AddDays(3));

            ListEmprunt.Add(emprunt);

        }


        public Livre topEmprunts()
        {
            Livre a = new Livre();
            int max = 0;
            foreach (Emprunt i in ListEmprunt)
            {
                int occ = 0;
                for (int j = 0; j < GetListEmprunt().Count; j++)        // Qestion N°26
                {
                    if (((Livre)(i.GetLivreEmprunte())).GetCodeLivre() == ((Emprunt)(this.ListEmprunt[j])).GetLivreEmprunte().GetCodeLivre())
                        occ++;
                }

                if (occ > max)
                {
                    max = occ;
                    a = ((Livre)(i.GetLivreEmprunte()));
                }
            }

            return a;

        }
        public void retourEmprunt(int i)
        {
            foreach (Emprunt j in ListEmprunt)
            {
                if (i == j.GetCodeEmprunt())                    // Qestion N°25
                    j.SetDateretourE(DateTime.Now);
            }
        }
        public List<Adherent> emprunteurs()
        {
            List<Adherent> a= new List<Adherent>();
            foreach (Emprunt i in ListEmprunt)
            {
                if (i.etatEmprunt().Equals("Non Rendu") || i.etatEmprunt().Equals("En cours"))
                {
                    a.Add(i.GetEmprunteur());                                                           // Qestion N°27
                }
            }
            return a;
        }
        public DateTime datePossibiliteEmprunt(int a)
        {
            DateTime t = new DateTime();
           t = DateTime.Now;
            foreach (Emprunt i in ListEmprunt)
            {
                if (i.GetLivreEmprunte().GetCodeLivre() == a)
                {
                    if (i.etatEmprunt().Equals("Non Rendu"))
                    {
                        Console.WriteLine("Ce Livre n'est pas disponible pour un empunt");     // Qestion N°28
                        t = i.GetDateretourP();
                    }
                    else if (i.etatEmprunt().Equals("En cours"))
                        t = i.GetDateretourP();
                } 
            }
            return t;
        }
    }
}
TP
Share this Story:
  • facebook
  • twitter
  • gplus

About Hassan EL Bahi

Assistant Professor at Cadi ayyad University.

Comments(1)

  1. Bablofil
    2036 days ago

    Thanks, great article.

Leave a comment

Comment