Correction du TP (atelier8) "Collections" :

 

public class Livre

{

      private String code, titre;

      private int annéePublication;

      private String éditeur, auteur;

      public Livre (String c, String t, int a, String e, String au)

      {

               code = c;

               titre = t;

               annéePublication = a;

               éditeur = e;

               auteur = au;

      }

      public String getCode()

      {

               return code;

      }

     

      public String getTitre()

      {

               return titre;

      }

     

      public String getEditeur()

      {

               return éditeur;

      }

     

      public String getAuteur()

      {

               return auteur;

      }

      public int getAnPublication()

      {

               return annéePublication;

      }

 

      public void affich()

      {

               System.out.println ("Code : " + code);

               System.out.println ("Titre : " + titre);

               System.out.println ("Année de publication : " + annéePublication);

               System.out.println ("Auteur : " + auteur);

               System.out.println ("Editeur : " + éditeur);

      }

}


 

import java.util.*;

public class Ensemble_livres

{

      private ArrayList lesLivres = new ArrayList() ;

 

      public int cardinal ()                      // renvoie le nombre d'éléments de la collection

      {

               return lesLivres.size();

      }

      public int existe (String no)           // cherche le numéro de livre transmis en

                                                            // paramètre et retourne l'indice du livre

                                                            // si le livre existe et 0 sinon

      {

               int i=0;

               while (i<cardinal()-1 && !obtenirLivre(i).getCode().equals(no))      

                        i++;

               if (obtenirLivre(i).getCode().equals(no))       

                        return i;

               else

                        return -1;

      }

      public int rechTitre (String t)

      {

               int i;

               i = 0;

               while (i<cardinal()-1 && !obtenirLivre(i).getTitre().equals(t))

                        i++;

               if (obtenirLivre(i).getTitre().equals(t))  

                        return i;

               else

                        return -1;

      }

      public Livre obtenirLivre (int index)     // accède à un livre contenu dans la

                                                                     // collection à partir de son index et le retourne

      {      

               return (Livre)lesLivres.get(index);

      }

      public void obtenirListe()

      {      

               if (cardinal()==0)

                        System.out.println ("La bibliothèque est vide");

               else

               {

                        System.out.println ("La bibliothèque comporte " + cardinal() + " livres");

                        Iterator jeu = lesLivres.iterator();

                        int i=1;

                        while (jeu.hasNext())  // affichage des livres

                        {

                                          System.out.println("\nLivre no " + (i++));

                                          ((Livre)jeu.next()).affich();

                        }

               }

      }


 

      public void ajouter (Livre l)          // accède à un livre contenu dans la

                                                            // collection à partir de son index et le

                                                            // retourne

      {      

               lesLivres.add(l);

      }

      public void obtenirListe(String a)

      {

               int i;

               boolean ok = false;

               for (i=0; i<lesLivres.size(); i++)

               {

                        if ((obtenirLivre(i).getAuteur()).equals(a))

                        {

                                 System.out.println();

                                 ((Livre)(lesLivres.get(i))).affich();

                                 ok = true;

                        }

               }

               if (!ok)

                        System.out.println("La bibliothèque ne comporte aucun livre de cet auteur");

      }

      public void obtenirListeE(String e)

      {

               int i;

               boolean ok = false;

               for (i=0; i<lesLivres.size(); i++)

               {

                        if ((obtenirLivre(i).getEditeur()).equals(e))

                        {

                                 System.out.println();

                                 ((Livre)(lesLivres.get(i))).affich();

                                 ok = true;

                        }

               }

               if (!ok)

                        System.out.println("La bibliothèque ne comporte aucun livre de cet éditeur");

      }

      public void supprimer (int i)

      {

               lesLivres.remove(i);

      }

}


 

import java.io.*;

public class Test_livres

{

      public static void main (String [] liste) throws IOException      

      {

               Ensemble_livres ensliv = new Ensemble_livres();

               String code, titre, auteur, editeur;

               int choix, choix2, ind=0, annéePublication;

               do

               {

                        System.out.println("\nMenu general :");

                        System.out.println("--------------");

                        System.out.println("1 : ajouter quelques livres");

                        System.out.println("2 : rechercher un livre");

                        System.out.println("3 : afficher tous les livres");

                        System.out.println("4 : supprimer un livre a partir de son code");

                        System.out.println("5 : afficher les livres d'un auteur");

                        System.out.println("6 : afficher les livres d'un editeur");

                        System.out.println("7 : quitter");                    

                        System.out.println("");

                        choix = Entree.entier("\nSaisir le choix");

                        switch (choix)

                        {

                                

                                 case 1 :

                                          code = Entree.chaine("Code : ");

                                          titre = Entree.chaine("Titre : ");

                                          annéePublication = Entree.entier("Année de publication : ");

                                          auteur = Entree.chaine("Auteur : ");

                                          editeur = Entree.chaine("Editeur : ");

                                          Livre l = new Livre (code,titre,annéePublication,editeur,auteur);

                                          ensliv.ajouter(l);

                                          break;

                                 case 2 :

                                          do

                                          {

                                                   System.out.println("\n1 : chercher a partir d'un code");

                                                   System.out.println("2 : chercher a partir d'un titre");

                                                   System.out.println("3 : menu principal");

                                                   System.out.println("");

                                                   System.out.print("Votre choix : ");

                                                   choix2 = Entree.entier("\nSaisir le choix");

                                                   switch(choix2)

                                                   {

                                                            case 1:

                                                            {

                                                                     code = Entree.chaine("\nSaisir le code du livre");

                                                                     ind=ensliv.existe(code);

                                                                     break;

                                                            }


                                                            case 2:

                                                            {

                                                                     titre = Entree.chaine("\nSaisir le titre du livre");

                                                                     ind=ensliv.rechTitre(titre);

                                                                     break;

                                                            }

                                                   }

                                                   if (ind==-1)

                                                            System.out.println("Livre inexistant");

                                                   else

                                                            ensliv.obtenirLivre(ind).affich();                                        

                                          }

                                          while (choix2!=3);

                                          break ;

                                 case 3 :

                                          System.out.println("");

                                          ensliv.obtenirListe();

                                          break;

                                 case 4:

                                          code = Entree.chaine("Code du livre à supprimer :");

                                          ind = ensliv.existe(code);

                                          if (ind != -1)

                                          {

                                                   ensliv.supprimer(ind);

                                                   System.out.println("Livre supprimé");

                                          }

                                          else

                                                   System.out.println("Livre inexistant");

                                          break;

                                 case 5:

                                          auteur = Entree.chaine("Auteur :");

                                          System.out.println("");

                                          ensliv.obtenirListe(auteur);

                                          break;

                                 case 6:

                                          editeur = Entree.chaine("Editeur");

                                          System.out.println("");

                                          ensliv.obtenirListeE(editeur);

                                          break;

                                 case 7:

                                          System.out.print("Au revoir");

                                          Break ;

                        }

               }

               while(choix!=7);

      }

}