diff --git a/ana.xml b/ana.xml index 8b1210a..45cc51f 100644 --- a/ana.xml +++ b/ana.xml @@ -1 +1 @@ - \ No newline at end of file +Alex Marechal;20.0;1.0Alexandre Berthelin;7.142857142857143;0.35714285714285715Alexis Legrand;20.0;1.0Alexy Lefebvre;19.870129870129873;0.9935064935064936Amelie Bruniaux;20.0;1.0Anais Blondel;18.571428571428573;0.9285714285714286Anais Najdecki;6.753246753246753;0.33766233766233766Antoine Duponchelle;12.467532467532468;0.6233766233766234Antoine Ponchel;13.506493506493506;0.6753246753246753Apolline Michel;19.870129870129873;0.9935064935064936Arthur Willart;12.077922077922079;0.6038961038961039Aurelien Ben Yahia;19.870129870129873;0.9935064935064936Axel Aoumat;11.03896103896104;0.551948051948052Axel Cadart;13.506493506493506;0.6753246753246753Aymeric Grenier;20.0;1.0Baptiste Fynnaert;7.272727272727273;0.36363636363636365Charles Carron;12.077922077922079;0.6038961038961039Chloe Mazur;20.0;1.0Clara Bruneau;10.649350649350648;0.5324675324675324Clement Legrand;19.870129870129873;0.9935064935064936Cyril Massart;12.077922077922079;0.6038961038961039Doriane Bernard;19.74025974025974;0.987012987012987Elliot Pilawa;2.207792207792208;0.11038961038961038Elodie Vaesken;12.337662337662339;0.6168831168831169Enora-Lou Deplanque;10.38961038961039;0.5194805194805194Esteban Devos Devulder;9.35064935064935;0.4675324675324675Gabriel Humain;20.0;1.0Helene Adjal;12.467532467532468;0.6233766233766234Hugo Guffroy;19.48051948051948;0.974025974025974Imen Belaiche;13.506493506493506;0.6753246753246753Ines Aubier;8.441558441558442;0.42207792207792205Ines El Karami;20.0;1.0Issam Benzemra--Petit;20.0;1.0Jane Gosset;19.870129870129873;0.9935064935064936Jeremy Legros;11.03896103896104;0.551948051948052Julie Rohart;12.207792207792208;0.6103896103896104Justine Bertin;10.779220779220779;0.538961038961039Justine Mikolajczak;12.077922077922079;0.6038961038961039Lali Vin;19.870129870129873;0.9935064935064936Lea Denys;19.870129870129873;0.9935064935064936Leo Marin;13.506493506493506;0.6753246753246753Lilian Lamorille;16.883116883116884;0.8441558441558441Lisa Baran;20.0;1.0Lucas Canon;20.0;1.0Lucie Delong;18.7012987012987;0.935064935064935Luna Hemery;13.506493506493506;0.6753246753246753Maeline Humez;19.870129870129873;0.9935064935064936Manon Cassel;13.506493506493506;0.6753246753246753Martin Pilot;18.7012987012987;0.935064935064935Mateo Darras;12.077922077922079;0.6038961038961039Matheo Guerineau;19.870129870129873;0.9935064935064936Matheo Normand;20.0;1.0Mathilde Carlier;6.883116883116883;0.34415584415584416Mathilde Konury;13.376623376623375;0.6688311688311688Mathis Carlier;19.870129870129873;0.9935064935064936Mathys Calesse;12.207792207792208;0.6103896103896104Mehdi Boutchich;11.948051948051948;0.5974025974025974Melanie Bouchoir;13.376623376623375;0.6688311688311688Melusine Miletti;12.727272727272727;0.6363636363636364Mickael Lenclud;6.233766233766234;0.3116883116883117Noah Desfachelles;7.142857142857143;0.35714285714285715Noah Halluin;1.8181818181818183;0.09090909090909091Oceane Decroix;9.61038961038961;0.4805194805194805Pablo Rodriguez;18.571428571428573;0.9285714285714286Quentin Stautemas;13.506493506493506;0.6753246753246753Raphael Rivaux;10.0;0.5Remi Delaval;11.948051948051948;0.5974025974025974Remi Delvalle;13.376623376623375;0.6688311688311688Remy Maeght;10.51948051948052;0.525974025974026Romain Bruni;19.870129870129873;0.9935064935064936Romain Delrue;13.376623376623375;0.6688311688311688Ronan Bourdrel;13.376623376623375;0.6688311688311688Simon Ducrocq;20.0;1.0Solene Marien;20.0;1.0Stefan Gaudin;10.0;0.5Tanguy Delavier;18.7012987012987;0.935064935064935Theo Duprez;12.077922077922079;0.6038961038961039Theo Justin;12.207792207792208;0.6103896103896104Theo Rouze;20.0;1.0Theo Verlet;13.376623376623375;0.6688311688311688Thomas Renard;12.207792207792208;0.6103896103896104Thomas Thevenin;11.948051948051948;0.5974025974025974Tristan Quesson;6.883116883116883;0.34415584415584416Tyffene Viseur;13.506493506493506;0.6753246753246753Vytto Scilironi;11.03896103896104;0.551948051948052Yvonnick Levis;20.0;1.0 \ No newline at end of file diff --git a/bin/calc/commandes.class b/bin/calc/commandes.class index 8da84df..483f607 100644 Binary files a/bin/calc/commandes.class and b/bin/calc/commandes.class differ diff --git a/src/calc/commandes.java b/src/calc/commandes.java index 15f0927..e7c5362 100644 --- a/src/calc/commandes.java +++ b/src/calc/commandes.java @@ -19,6 +19,7 @@ public class commandes { //** Le node du fichier d'analyse public static node sujet = new node(); + public static node tousLesResultats = new node("Tous"); public static node sujetSauvegarde = new node(); public static JTree tree = new JTree(); public static node nodeACCSV = null; diff --git a/src/evaluer/evaluerAttributs.java b/src/evaluer/evaluerAttributs.java index 74a07bf..a4fc730 100644 --- a/src/evaluer/evaluerAttributs.java +++ b/src/evaluer/evaluerAttributs.java @@ -1,14 +1,15 @@ package evaluer; import java.util.Map; + import outils.outils; -import xml.crearNodeAna; +import xml.creerNodeEvaluationEtudiant; import xml.node; public class evaluerAttributs { private node nEtudiant ; - private crearNodeAna nAnalyse ; + private creerNodeEvaluationEtudiant nAnalyse ; private node nSujet ; /** @@ -17,7 +18,7 @@ public class evaluerAttributs { * @param nodeEtudiant : le node de l'étudiant. * @param analyse : le node analyse qui contiendra les résultats. */ - public evaluerAttributs(node nodeSujet, node nodeEtudiant, crearNodeAna analyse) { + public evaluerAttributs(node nodeSujet, node nodeEtudiant, creerNodeEvaluationEtudiant analyse) { nEtudiant = nodeEtudiant; nAnalyse = analyse; nSujet = nodeSujet; diff --git a/src/evaluer/evaluerLesFichiersEtudiants.java b/src/evaluer/evaluerLesFichiersEtudiants.java index b77f047..99249dc 100644 --- a/src/evaluer/evaluerLesFichiersEtudiants.java +++ b/src/evaluer/evaluerLesFichiersEtudiants.java @@ -1,5 +1,7 @@ package evaluer; +import java.io.BufferedWriter; +import java.io.FileWriter; import java.io.IOException; import java.text.ParseException; @@ -17,14 +19,14 @@ import calcul.enumerations.typeFichier; import fenetres.baliseStyle; import xml.EnsembleFichiers; import xml.LecturesDossiers; -import xml.crearNodeAna; +import xml.creerNodeEvaluationEtudiant; import xml.node; import xml.transformeXLMtoNode; public class evaluerLesFichiersEtudiants implements Runnable{ private final JEditorPane txt; - public node tousLesResultats = new node("Tous"); + public evaluerLesFichiersEtudiants(JEditorPane txt) { commandes.analyse=true; @@ -65,6 +67,7 @@ public class evaluerLesFichiersEtudiants implements Runnable{ if(commandes.fichierStudentMoodle) { LecturesDossiers.getEC().Initialise(); + commandes.tousLesResultats.clear(); txt.setText(""); try { new LecturesDossiers(enumerations.LocationFile.UniquementFichier, commandes.path); @@ -160,8 +163,11 @@ public class evaluerLesFichiersEtudiants implements Runnable{ //***************************************************** //** Parcours l'ensemble des fichiers des étudiants *** //***************************************************** + StringBuilder fichierCSV = new StringBuilder(); + fichierCSV.append("nomEtudiant;note;pourcentage\n"); for(int i = 0 ; i < nbClasseur ; i++) { - String texteAfficher = txt.getText() + "\nEvaluation du fichier n° " + String.valueOf(i+1) + "/" + String.valueOf(nbClasseur) + " fichier(s)"; + + String texteAfficher = "Evaluation du fichier n° " + String.valueOf(i+1) + "/" + String.valueOf(nbClasseur) + " fichier(s)\n" + txt.getText() ; txt.setText(texteAfficher); //index de l'étudiant @@ -193,19 +199,37 @@ public class evaluerLesFichiersEtudiants implements Runnable{ nodStudent.saveNodeEnXMLinNewFile("nodStudent.xml", commandes.pathApp); if(commandes.analyse) { - crearNodeAna ana = new crearNodeAna(nomEtudiant, i); + creerNodeEvaluationEtudiant ana = new creerNodeEvaluationEtudiant(nomEtudiant, i); new evaluerNodesClasseurStudent(ana, nodStudent); - ana.calculResultat(); - tousLesResultats.addEnfant(ana.clone()); + ana.calculResultatDuNode(); + fichierCSV.append(ana.retourneFirstEnfant("csv").getContenu(0)+"\n"); + commandes.tousLesResultats.addEnfant(ana); } - tousLesResultats.saveNodeEnXMLinNewFile("ana.xml", commandes.pathApp); + commandes.tousLesResultats.saveNodeEnXMLinNewFile("ana.xml", commandes.pathApp); } catch (CloneNotSupportedException | IOException e) { e.printStackTrace(); } }// ** Parcours l'ensemble des fichiers des étudiants *** + txt.setText("** FIN**\n" + txt.getText()); + saveCSV(commandes.pathApp, fichierCSV); }// Run + + + public static boolean saveCSV(String filePath, StringBuilder content) { + String path = filePath + "/ensembleResultats.csv"; + try (BufferedWriter writer = new BufferedWriter(new FileWriter(path))) { + writer.write(content.toString()); // Écrit le contenu dans le fichier + System.out.println("✅ Fichier CSV sauvegardé avec succès : " + filePath); + return true; + } catch (IOException e) { + System.err.println("❌ Erreur lors de la sauvegarde du fichier CSV : " + e.getMessage()); + e.printStackTrace(); // Affiche la trace de l'erreur pour le débogage + return false; + } + } + } //********************************** //** Analyse des fichiers student ** diff --git a/src/evaluer/evaluerNodesClasseurStudent.java b/src/evaluer/evaluerNodesClasseurStudent.java index b2b3d60..f93b47e 100644 --- a/src/evaluer/evaluerNodesClasseurStudent.java +++ b/src/evaluer/evaluerNodesClasseurStudent.java @@ -1,12 +1,12 @@ package evaluer; import calc.commandes; -import xml.crearNodeAna; +import xml.creerNodeEvaluationEtudiant; import xml.node; public class evaluerNodesClasseurStudent { - private crearNodeAna nAna ; + private creerNodeEvaluationEtudiant nAna ; private node nodeEtudiant = new node(); /** @@ -16,7 +16,7 @@ public class evaluerNodesClasseurStudent { * @param ana * @param nodStudent */ - public evaluerNodesClasseurStudent(crearNodeAna ana, node nodStudent) { + public evaluerNodesClasseurStudent(creerNodeEvaluationEtudiant ana, node nodStudent) { nodeEtudiant = nodStudent; nAna = ana; evaluerLesFeuilles(); diff --git a/src/xml/crearNodeAna.java b/src/xml/crearNodeAna.java deleted file mode 100644 index 0f99e2d..0000000 --- a/src/xml/crearNodeAna.java +++ /dev/null @@ -1,69 +0,0 @@ -package xml; - -import java.text.ParseException; -import java.util.Date; - -import calcul.formatDateWriter; - -/** - * Cette class contient tous les résultats d'un seul étudiant.
- * Les resultats sont stockés dans le node ana (node analyse). - * @author pabr6 - * - */ -public class crearNodeAna extends node{ - - private int nbrPointTotal = 0; - private int pointGagner = 0; - - public crearNodeAna() { - - } - - - public crearNodeAna(String nomEtudiant, Integer indexFichier) { - this.nameNode="analyse"; - this.attributs.put("nomEtudiant", nomEtudiant); - this.attributs.put("indexFichier", String.valueOf(indexFichier)); - try { - this.attributs.put("dateEvaluation", String.valueOf(formatDateWriter.DateLibreOffice(new Date()))); - } catch (ParseException e) { - e.printStackTrace(); - } - this.attributs.put("nbrPointTotal", "0"); - this.attributs.put("pointGagner", "0"); - } - - - /** - * Calcul le total des points de l'étudiants.
- * Ajoute les attributs nbrPointTotal et pointGagner.
- */ - public void calculResultat() { - int total= 0; - int point = 0 ; - for (node enfant : this.retourneAllEnfants("resultat")) { - total = total + Integer.valueOf(enfant.getAttributs().get("total")); - point = point + Integer.valueOf(enfant.getAttributs().get("point")); - } - this.getAttributs().put("nbrPointTotal", String.valueOf(total)); - this.getAttributs().put("pointGagner", String.valueOf(point)); - } - - @Override - public void addEnfant(node enfant) { -// enfant = (crearNodeAna) enfant; - enfant.setParent(this); - enfant.setLevel(this.level+1); - this.enfants.add(enfant); - if(enfant.getNameNode().equals("resultat")) { - nbrPointTotal = nbrPointTotal + Integer.valueOf(enfant.getAttributs().get("total")); - if(Boolean.valueOf(enfant.getAttributs().get("correct"))) { - pointGagner = pointGagner + Integer.valueOf(enfant.getAttributs().get("total")); - } - } - } - - - -} diff --git a/src/xml/creerNodeEvaluationEtudiant.java b/src/xml/creerNodeEvaluationEtudiant.java new file mode 100644 index 0000000..1328cc1 --- /dev/null +++ b/src/xml/creerNodeEvaluationEtudiant.java @@ -0,0 +1,73 @@ +package xml; + +import java.text.ParseException; +import java.util.Date; + +import calc.commandes; +import calcul.formatDateWriter; + +/** + * Cette class contient tous les résultats d'un seul étudiant.
+ * Les resultats sont stockés dans le node ana (node analyse). + * @author pabr6 + * + */ +public class creerNodeEvaluationEtudiant extends node{ + + + + public creerNodeEvaluationEtudiant() { + + } + + + public creerNodeEvaluationEtudiant(String nomEtudiant, Integer indexFichier) { + this.nameNode="analyse"; + this.attributs.put("nomEtudiant", nomEtudiant); + this.attributs.put("indexFichier", String.valueOf(indexFichier)); + try { + this.attributs.put("dateEvaluation", String.valueOf(formatDateWriter.DateLibreOffice(new Date()))); + } catch (ParseException e) { + e.printStackTrace(); + } + this.attributs.put("nbrPointTotal", "0"); + this.attributs.put("pointGagner", "0"); + this.attributs.put("bareme",String.valueOf(commandes.analyse_bareme)); + this.attributs.put("baremeABC",String.valueOf(commandes.analyse_baremeABC)); + } + + + /** + * Calcul le total des points de l'étudiants.
+ * Ajoute les attributs nbrPointTotal et pointGagner.
+ */ + public void calculResultatDuNode() { + int total= 0; + int point = 0 ; + node root = this.retourneRoot(); + for (node enfant : root.retourneAllEnfants("resultat")) { + total = total + Integer.valueOf(enfant.getAttributs().get("total")); + point = point + Integer.valueOf(enfant.getAttributs().get("point")); + } + root.getAttributs().put("nbrPointTotal", String.valueOf(total)); + root.getAttributs().put("pointGagner", String.valueOf(point)); + notationEtudiant(root,total,point); + } + + + private void notationEtudiant(node root, int total, int point ) { + node csv = new node("csv"); + double note = (double) 0; + double pourcentageReussite = (double) 0; + if(!commandes.analyse_baremeABC) { + pourcentageReussite = (double) point/total; + note = pourcentageReussite*commandes.analyse_bareme; + } + csv.addContenu(root.getAttributs().get("nomEtudiant") + ";" +String.valueOf(note) + ";" + String.valueOf(pourcentageReussite)); + root.addEnfant(csv); + } + + + + +} diff --git a/src/xml/node.java b/src/xml/node.java index 3afe206..a96ce97 100644 --- a/src/xml/node.java +++ b/src/xml/node.java @@ -667,6 +667,17 @@ protected boolean nodeClose = false; && Objects.equals(nameNode, other.nameNode) && Objects.equals(parent, other.parent); } + + /** + * Nettoyage du node.
+ * Supprime les attributs, les enfants, les contenus.
+ */ + public void clear() { + this.removeAllAttributs(); + this.removeAllEnfants(); + this.removeAllContenu(); + } + @SuppressWarnings("unchecked") @Override