0% ont trouvé ce document utile (0 vote)
2 vues5 pages

TP4 Solution Java

Le document présente une implémentation en Java d'un registre d'employés utilisant des structures de données telles que LinkedList, ainsi que des fonctionnalités de filtrage et d'exportation au format CSV. Il décrit les classes principales comme Adresse, Personne, Employe, et Registre, ainsi que leur utilisation dans une classe Main pour démontrer les opérations de gestion des employés. Les méthodes incluent l'ajout, la suppression, le tri et le filtrage des employés, ainsi que l'exportation des fiches de paie.

Transféré par

choraichianass
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues5 pages

TP4 Solution Java

Le document présente une implémentation en Java d'un registre d'employés utilisant des structures de données telles que LinkedList, ainsi que des fonctionnalités de filtrage et d'exportation au format CSV. Il décrit les classes principales comme Adresse, Personne, Employe, et Registre, ainsi que leur utilisation dans une classe Main pour démontrer les opérations de gestion des employés. Les méthodes incluent l'ajout, la suppression, le tri et le filtrage des employés, ainsi que l'exportation des fiches de paie.

Transféré par

choraichianass
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TP4 – Registre d'Employés (Java)

Implémentation complète en Java du registre d'employés avec LinkedList, comparateurs, filtrage par
prédicat et export CSV.

1. Classe Adresse
public class Adresse {
private int numero;
private String rue;
private String ville;

public Adresse(int numero, String rue, String ville) {


[Link] = numero;
[Link] = rue;
[Link] = ville;
}

// Getters
public int getNumero() { return numero; }
public String getRue() { return rue; }
public String getVille() { return ville; }

@Override
public String toString() {
return numero + " " + rue + ", " + ville;
}
}

2. Classe Personne
public class Personne {
private String nom;
private String prenom;
private Adresse adresse;

public Personne(String nom, String prenom, Adresse adresse) {


[Link] = nom;
[Link] = prenom;
[Link] = adresse;
}

// Getters
public String getNom() { return nom; }
public String getPrenom() { return prenom; }
public Adresse getAdresse() { return adresse; }

@Override
public String toString() {
return prenom + " " + nom + " (" + adresse + ")";
}
}

3. Classe Employe
public class Employe {
private String code;
private double salaire;
private Personne personne;

public Employe(String code, double salaire, Personne personne) {


[Link] = code;
[Link] = salaire;
[Link] = personne;
}

// Getters
public String getCode() { return code; }
public double getSalaire() { return salaire; }
public Personne getPersonne() { return personne; }

@Override
public String toString() {
return "[" + code + "] " + personne + " – salaire: " + salaire;
}
}

4. Interface Registre

L'interface définit le contrat du registre, notamment la méthode filtrer(Predicate<Employe> p)


et le tri via [Link](Comparator).

import [Link];
import [Link];

public interface Registre {


void ajouterEmploye(Employe e);
boolean supprimerEmploye(String code);
void classerParCode();
void classerParSalaire();
void exporterFichesPaie(String fichier) throws Exception;
List<Employe> filtrer(Predicate<Employe> p);
}

5. Classe RegistreImpl

5.1 Déclaration et constructeur


import [Link].*;
import [Link].*;
import [Link];
import [Link];

public class RegistreImpl implements Registre {

// Registre stocké dans une LinkedList


private LinkedList<Employe> employes = new LinkedList<>();

5.2 Ajouter / Supprimer


@Override
public void ajouterEmploye(Employe e) {
[Link](e);
}

@Override
public boolean supprimerEmploye(String code) {
return [Link](e -> [Link]().equals(code));
}

5.3 Classement par code et par salaire


On utilise la méthode [Link](Comparator) disponible par défaut dans l'interface List.

@Override
public void classerParCode() {
// Comparateur sur le code (ordre alphabétique)
[Link]([Link](Employe::getCode));
}

@Override
public void classerParSalaire() {
// Comparateur sur le salaire (ordre croissant)
[Link]([Link](Employe::getSalaire));
}

5.4 Export des fiches de paie (CSV)


Le fichier est au format : code/nom/prénom/adresse/salaire

@Override
public void exporterFichesPaie(String fichier) throws Exception {
try (PrintWriter pw = new PrintWriter(
new BufferedWriter(new FileWriter(fichier)))) {

// En-tête CSV
[Link]("code/nom/prenom/adresse/salaire");

for (Employe e : employes) {


Personne p = [Link]();
[Link]("%s/%s/%s/%s/%.2f%n",
[Link](),
[Link](),
[Link](),
[Link]().toString(),
[Link]()
);
}
}
[Link]("Fiches exportées vers : " + fichier);
}

5.5 Méthode filtrer(Predicate p)


Cette méthode générique retourne tous les éléments du registre vérifiant le prédicat passé en
paramètre.

@Override
public List<Employe> filtrer(Predicate<Employe> p) {
return [Link]()
.filter(p)
.collect([Link]());
}

// Affichage du registre (utilitaire)


public void afficher() {
if ([Link]()) {
[Link]("Registre vide.");
return;
}
[Link]([Link]::println);
}
} // fin RegistreImpl

6. Classe Main – Tests

La classe Main illustre toutes les fonctionnalités : ajout, suppression, classements, filtrage par ville, et
export CSV.

public class Main {


public static void main(String[] args) throws Exception {

// --- Création des adresses ---


Adresse a1 = new Adresse(12, "Rue de la Paix", "Paris");
Adresse a2 = new Adresse(5, "Avenue des Fleurs", "Lyon");
Adresse a3 = new Adresse(8, "Boulevard Haussmann","Paris");
Adresse a4 = new Adresse(3, "Rue Nationale", "Marseille");

// --- Création des personnes ---


Personne p1 = new Personne("Dupont", "Alice", a1);
Personne p2 = new Personne("Martin", "Bob", a2);
Personne p3 = new Personne("Leclerc", "Claire", a3);
Personne p4 = new Personne("Bernard", "David", a4);

// --- Création des employés ---


Employe e1 = new Employe("E003", 3200.0, p1);
Employe e2 = new Employe("E001", 4500.0, p2);
Employe e3 = new Employe("E004", 2800.0, p3);
Employe e4 = new Employe("E002", 5100.0, p4);

// --- Registre ---


RegistreImpl registre = new RegistreImpl();
[Link](e1);
[Link](e2);
[Link](e3);
[Link](e4);

[Link]("=== Registre initial ===");


[Link]();

// --- Classement par code ---


[Link]("\n=== Classé par code ===");
[Link]();
[Link]();

// --- Classement par salaire ---


[Link]("\n=== Classé par salaire ===");
[Link]();
[Link]();

// --- Filtrage : employés habitant Paris ---


[Link]("\n=== Employés habitant Paris ===");
String villeRecherchee = "Paris";
[Link](
e -> [Link]()
.getAdresse()
.getVille()
.equalsIgnoreCase(villeRecherchee)
).forEach([Link]::println);

// --- Suppression ---


[Link]("\n=== Suppression de E001 ===");
boolean ok = [Link]("E001");
[Link]("Supprimé : " + ok);
[Link]();

// --- Export fiches de paie ---


[Link]("fiches_paie.csv");
}
}

7. Exemple de sortie – fiches_paie.csv


code/nom/prenom/adresse/salaire
E002/Bernard/David/3 Rue Nationale, Marseille/5100,00
E003/Dupont/Alice/12 Rue de la Paix, Paris/3200,00
E004/Leclerc/Claire/8 Boulevard Haussmann, Paris/2800,00

8. Structure des fichiers du projet


src/
■■■ [Link] // Numéro, rue, ville
■■■ [Link] // Nom, prénom, adresse
■■■ [Link] // Code, salaire, personne
■■■ [Link] // Interface (filtrer, sort, export...)
■■■ [Link] // Implémentation LinkedList
■■■ [Link] // Démonstration complète

Toutes les classes compilent sous Java 8+ (utilisation des lambdas, Stream API et [Link]).

Vous aimerez peut-être aussi