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.
- Définir la classe Personne.
- Ajouter un constructeur par défaut et un constructeur paramétré qui initialise tous les attributs.
- Ajouter les accesseurs et les mutateurs de chaque attribut :
- 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.
- Définir la classe Adherent.
- Ajout un constructeur qui initialise tous les attributs de la classe Adherent.
- 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).
- 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.
- Définir la classe Auteur.
- Ajouter un constructeur qui initialise tous les attributs de la classe Auteur.
- Ajouter les accesseurs et les mutateurs de chaque attribut.
- 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.
- Définir la classe
- Ajouter un constructeur qui initialise tous les attributs de la classe
- 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.
- Définir la classe
- Ajouter un constructeur qui initialise tous les attributs de la classe Emprunt (la date de retour est nulle).
- 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>
- Définir la classe Biblio.
- Ajouter une méthode ajouterLivre() qui permet d’ajouter un livre à la bibliothèque.
- Ajouter une méthode ajouterAdherent() qui permet d’ajouter un adhérent à la bibliothèque.
- Ajouter une méthode rechercherAdherent() qui recherche un adhérent par son code.
- Ajouter une méthode rechercherLivre() qui recherche un livre par son code.
- 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.
- Ajouter une méthode retourEmprunt(codeEmprunt) qui enregistre le retour d’un emprunt.
- Ajouter une méthode topEmprunts() qui retourne le livre le plus demandé.
- Ajouter une méthode emprunteurs() qui retourne la liste des emprunteurs ayant des emprunts en cours ou non rendus.
- 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; } } }
Bablofil
Thanks, great article.
tayssir
merci