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);
}
}