1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
|
package be.iepscfjemelle.poolabo.nicolay.entreprise2withcollections;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Classe héritant de l'interface Prog, qui à partir d'un menu secondaire, crée
* des objets Personnes et leurs attributs, (fonctions d'après un hashmap).
* Places ces objets Personnes dans un hashset, pour éviter les doublons.
* Ensuite, parcours le hashset, sérialise chaque ojets et l'enregistre dans un
* fichier binaire. Propose un retour au menu principal à la fin.
*
* @author Frederic Nicolay 2ème Bachelier Informatique
*/
public class IntroDonneesSaveBin implements Prog {
/**
* Methode qui remplis mon hashset et les attributs de chaques employés
*
*/
@Override
public void execute(MenuDepart programme) {
//Création d'une haspMap qui définira la fonction d'un objet
HashMap<Integer, String> mesFonctions = new HashMap<>();
// Insertion des valeurs dans la hashmap
mesFonctions.put(1, "Directeur");
mesFonctions.put(2, "Comptable");
mesFonctions.put(3, "Secretaire");
mesFonctions.put(4, "Ouvrier");
// Création d'un hashSet d'objets Personnes
HashSet<Personnes> hset = new HashSet<>();
ObjectOutputStream sortie = null;
int nbr = nombreEmploye();//nombre d'employé dans l'entreprise pour définir le nombre de boucles
for (int i = 0; i < nbr; i++) {
int choix = menuFonction();//Appel de ma méthode MenuFonction
//Lecture des données de chaque employé dans la console pour remplir les attributs de chaque objet Personnes
System.out.println("Entrer les informations demandée sur l'ouvrier: ");
System.out.print("Numéro National: ");
String numeroNational = Clavier.lireString();
System.out.print("Prénom: ");
String prenom = Clavier.lireString();
System.out.print("Nom: ");
String nom = Clavier.lireString();
System.out.println("Fonction: " + mesFonctions.get(choix));
String fonction = mesFonctions.get(choix);
System.out.println("\n");
//Switch pour remplir les attributs d'une classe en fonction du choix fait avant
switch (choix) {
case 0:
System.exit(0);
break;
case 1:
Personnes directeur = new Directeur(numeroNational, prenom, nom, fonction);
//condition ajout de l'objet, si le nom existe déjà, msg erreur et demande à nouveau les attributs du nouvel employé
if (hset.add(directeur)) {
} else {
System.out.println("Cet employé occupe déjà une fonction dans l'entreprise.\n");
System.out.println("Veuillez rentrer à nouveau les informations sur l'employé.\n");
i--;
}
System.out.println("\n");
break;
case 2:
Personnes comptable = new Comptable(numeroNational, prenom, nom, fonction);
//condition ajout de l'objet, si le nom existe déjà, msg erreur et demande à nouveau les attributs du nouvel employé
if (hset.add(comptable)) {
} else {
System.out.println("Cet employé occupe déjà une fonction dans l'entreprise.\n");
System.out.println("Veuillez rentrer à nouveau les informations sur l'employé.\n");
i--;
}
System.out.println("\n");
break;
case 3:
Personnes secretaire = new Secretaire(numeroNational, prenom, nom, fonction);
//condition ajout de l'objet, si le nom existe déjà, msg erreur et demande à nouveau les attributs du nouvel employé
if (hset.add(secretaire)) {
} else {
System.out.println("Cet employé occupe déjà une fonction dans l'entreprise.\n");
System.out.println("Veuillez rentrer à nouveau les informations sur l'employé.\n");
i--;
}
System.out.println("\n");
break;
case 4:
Personnes ouvrier = new Ouvrier(numeroNational, prenom, nom, fonction);
//condition ajout de l'objet, si le nom existe déjà, msg erreur et demande à nouveau les attributs du nouvel employé
if (hset.add(ouvrier)) {
} else {
System.out.println("Cet employé occupe déjà une fonction dans l'entreprise.\n");
System.out.println("Veuillez rentrer à nouveau les informations sur l'employé.\n");
i--;
}
System.out.println("\n");
break;
case 5:
programme.showMenuDépart();
default:
this.menuFonction();
}
}
try {
saveDataHset(hset);//appel de ma méthode saveDataHset
} catch (IOException ex) {
Logger.getLogger(IntroDonneesSaveBin.class.getName()).log(Level.SEVERE, null, ex);
}
this.endProg(programme);//appel de la méthode fin de programme
}
//****************************************Méthodes*****************************************************
public void addPersHset(hset<Personnes>, Personnes pers, int i) {
if (hset.add(pers)) {
} else {
System.out.println("Cet employé occupe déjà une fonction dans l'entreprise.\n");
System.out.println("Veuillez rentrer à nouveau les informations sur l'employé.\n");
i--;
}
}
/*public String entreeDonneePersonnes(chiffre){
System.out.println("Entrer les informations demandée sur l'ouvrier: ");
System.out.print("Numéro National: ");
String numeroNational = Clavier.lireString();
System.out.print("Prénom: ");
String prenom = Clavier.lireString();
System.out.print("Nom: ");
String nom = Clavier.lireString();
System.out.println("Fonction: " + mesFonctions.get(chiffre));
String fonction = mesFonctions.get(chiffre);
return numeroNational, prenom, nom, fonction;
}*/
/**
* Méthode qui parcour mon hashset via un itérateur et encode mes objets
* Personnes dans un fichier binaire
*
* @param hs
* @throws FileNotFoundException
* @throws IOException
*/
public static void saveDataHset(HashSet<Personnes> hs) throws FileNotFoundException, IOException {
// Création d'un itérateur
Iterator<Personnes> iter = hs.iterator();
ObjectOutputStream sortie = new ObjectOutputStream(new FileOutputStream("fichier.dat"));
// Boucle tant qu'il y a un objet dans le hashset
while (iter.hasNext()) {
Personnes empl = iter.next();
sortie.writeObject(empl);
}
System.out.println();
}
/**
* Fin du programme, retour au menu principale
*
* @param programme
*/
@Override
public void endProg(MenuDepart programme) {
System.out.println("Appuyer sur une touche pour retourner au menu.");
String str = Clavier.lireString();
programme.showMenuDépart();
}
/**
* Méthode pour choisir la fonction, quitter ou retour au menu principale
*
* @return
*/
private int menuFonction() {
System.out.println("Veuillez choisir un chiffre dans la liste ci-dessous: ");
System.out.println("0 ==> Quitter");
System.out.println("1 ==> Directeur");
System.out.println("2 ==> Comptable");
System.out.println("3 ==> Secretaire");
System.out.println("4 ==> Ouvrier");
System.out.println("5 ==> Retour au menu de départ");
System.out.print("Votre choix: ");
int choix;
choix = (Clavier.lireInt());
return choix;
}
/**
* Méthode pour choisir le nombre d'employé et renvoyé un int
*
* @return
*/
private int nombreEmploye() {
int taille;
System.out.print("Entrer le nombre d'employé dans l'entreprise: ");
taille = Clavier.lireInt();
return taille;
}
} |
Partager