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