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.0
Alexandre Berthelin;7.142857142857143;0.35714285714285715
Alexis Legrand;20.0;1.0
Alexy Lefebvre;19.870129870129873;0.9935064935064936
Amelie Bruniaux;20.0;1.0
Anais Blondel;18.571428571428573;0.9285714285714286
Anais Najdecki;6.753246753246753;0.33766233766233766
Antoine Duponchelle;12.467532467532468;0.6233766233766234
Antoine Ponchel;13.506493506493506;0.6753246753246753
Apolline Michel;19.870129870129873;0.9935064935064936
Arthur Willart;12.077922077922079;0.6038961038961039
Aurelien Ben Yahia;19.870129870129873;0.9935064935064936
Axel Aoumat;11.03896103896104;0.551948051948052
Axel Cadart;13.506493506493506;0.6753246753246753
Aymeric Grenier;20.0;1.0
Baptiste Fynnaert;7.272727272727273;0.36363636363636365
Charles Carron;12.077922077922079;0.6038961038961039
Chloe Mazur;20.0;1.0
Clara Bruneau;10.649350649350648;0.5324675324675324
Clement Legrand;19.870129870129873;0.9935064935064936
Cyril Massart;12.077922077922079;0.6038961038961039
Doriane Bernard;19.74025974025974;0.987012987012987
Elliot Pilawa;2.207792207792208;0.11038961038961038
Elodie Vaesken;12.337662337662339;0.6168831168831169
Enora-Lou Deplanque;10.38961038961039;0.5194805194805194
Esteban Devos Devulder;9.35064935064935;0.4675324675324675
Gabriel Humain;20.0;1.0
Helene Adjal;12.467532467532468;0.6233766233766234
Hugo Guffroy;19.48051948051948;0.974025974025974
Imen Belaiche;13.506493506493506;0.6753246753246753
Ines Aubier;8.441558441558442;0.42207792207792205
Ines El Karami;20.0;1.0
Issam Benzemra--Petit;20.0;1.0
Jane Gosset;19.870129870129873;0.9935064935064936
Jeremy Legros;11.03896103896104;0.551948051948052
Julie Rohart;12.207792207792208;0.6103896103896104
Justine Bertin;10.779220779220779;0.538961038961039
Justine Mikolajczak;12.077922077922079;0.6038961038961039
Lali Vin;19.870129870129873;0.9935064935064936
Lea Denys;19.870129870129873;0.9935064935064936
Leo Marin;13.506493506493506;0.6753246753246753
Lilian Lamorille;16.883116883116884;0.8441558441558441
Lisa Baran;20.0;1.0
Lucas Canon;20.0;1.0
Lucie Delong;18.7012987012987;0.935064935064935
Luna Hemery;13.506493506493506;0.6753246753246753
Maeline Humez;19.870129870129873;0.9935064935064936
Manon Cassel;13.506493506493506;0.6753246753246753
Martin Pilot;18.7012987012987;0.935064935064935
Mateo Darras;12.077922077922079;0.6038961038961039
Matheo Guerineau;19.870129870129873;0.9935064935064936
Matheo Normand;20.0;1.0
Mathilde Carlier;6.883116883116883;0.34415584415584416
Mathilde Konury;13.376623376623375;0.6688311688311688
Mathis Carlier;19.870129870129873;0.9935064935064936
Mathys Calesse;12.207792207792208;0.6103896103896104
Mehdi Boutchich;11.948051948051948;0.5974025974025974
Melanie Bouchoir;13.376623376623375;0.6688311688311688
Melusine Miletti;12.727272727272727;0.6363636363636364
Mickael Lenclud;6.233766233766234;0.3116883116883117
Noah Desfachelles;7.142857142857143;0.35714285714285715
Noah Halluin;1.8181818181818183;0.09090909090909091
Oceane Decroix;9.61038961038961;0.4805194805194805
Pablo Rodriguez;18.571428571428573;0.9285714285714286
Quentin Stautemas;13.506493506493506;0.6753246753246753
Raphael Rivaux;10.0;0.5
Remi Delaval;11.948051948051948;0.5974025974025974
Remi Delvalle;13.376623376623375;0.6688311688311688
Remy Maeght;10.51948051948052;0.525974025974026
Romain Bruni;19.870129870129873;0.9935064935064936
Romain Delrue;13.376623376623375;0.6688311688311688
Ronan Bourdrel;13.376623376623375;0.6688311688311688
Simon Ducrocq;20.0;1.0
Solene Marien;20.0;1.0
Stefan Gaudin;10.0;0.5
Tanguy Delavier;18.7012987012987;0.935064935064935
Theo Duprez;12.077922077922079;0.6038961038961039
Theo Justin;12.207792207792208;0.6103896103896104
Theo Rouze;20.0;1.0
Theo Verlet;13.376623376623375;0.6688311688311688
Thomas Renard;12.207792207792208;0.6103896103896104
Thomas Thevenin;11.948051948051948;0.5974025974025974
Tristan Quesson;6.883116883116883;0.34415584415584416
Tyffene Viseur;13.506493506493506;0.6753246753246753
Vytto Scilironi;11.03896103896104;0.551948051948052
Yvonnick 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