This commit is contained in:
pablo rodriguez 2024-12-17 12:12:34 +01:00
parent 9ef8dc05e6
commit 8fd25394dc
9 changed files with 124 additions and 83 deletions

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -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;

View File

@ -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;

View File

@ -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 **

View File

@ -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();

View File

@ -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.<br>
* 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.<br>
* Ajoute les attributs nbrPointTotal et pointGagner.<br>
*/
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"));
}
}
}
}

View File

@ -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.<br>
* 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.<br>
* Ajoute les attributs nbrPointTotal et pointGagner.<br>
*/
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);
}
}

View File

@ -668,6 +668,17 @@ protected boolean nodeClose = false;
}
/**
* Nettoyage du node.<br>
* Supprime les attributs, les enfants, les contenus.<br>
*/
public void clear() {
this.removeAllAttributs();
this.removeAllEnfants();
this.removeAllContenu();
}
@SuppressWarnings("unchecked")
@Override
public node clone() throws CloneNotSupportedException {