//Calcul du résultats des élèves // il s'agit du calcul de la note des élèves à une séquence pour une année donnée, en prenant en compte les notes // de l'élève sur toutes les évaluations des différentes matières ainsi que de leurs coéfficient //il s'agit de remplir la table "Résultat" public void calculerResultats(String codeClasse, String codeSequence, int annee) { List <EleveBE> listeEleve = eleveDA.listeEleveDuneClasse(codeClasse, annee); GenererBulletinsSequentielBL genererBulletinBL = new GenererBulletinsSequentielBL(); foreach (EleveBE e in listeEleve) { genererBulletinBL.DefinirLesAvertissementsEtBlamesDunEleve(e.matricule, codeSequence, annee); } // calcul de la moyenne Sequentielle des élèves sur chacune des matières individuellement List <String[]> List = resultatDA.calculResultatSequentiel(codeClasse, codeSequence, annee); if (List != null && List.Count != 0) { //on fabrique les objets de type Resultat Sequentiel et on les mets dans le BD List <ResultatBE> LResultatSequentiels = new List <ResultatBE>(); for (int i = 0; i < List.Count; i++) { /* * List.ElementAt(i)[0] : matricule; * List.ElementAt(i)[1] : codeSequence; * List.ElementAt(i)[2] : annee; * List.ElementAt(i)[3] : totalPoint; // le total des points de l'élève * List.ElementAt(i)[4] : moyenne; // la moyenne de l'élève * List.ElementAt(i)[5] : coef; // la somme des coeficients */ ResultatBE resultatSequentiel = new ResultatBE(); resultatSequentiel.codeseq = codeSequence; resultatSequentiel.matricule = List.ElementAt(i)[0]; resultatSequentiel.point = Convert.ToDouble(List.ElementAt(i)[3]); resultatSequentiel.coef = Convert.ToInt16(List.ElementAt(i)[5]); resultatSequentiel.moyenne = Convert.ToDouble(List.ElementAt(i)[4]); resultatSequentiel.annee = annee; resultatSequentiel.rang = 0; resultatSequentiel.moyenneclasse = 0; if (getMention(resultatSequentiel.moyenne) != null) { resultatSequentiel.mention = getMention(resultatSequentiel.moyenne); } else { resultatSequentiel.mention = ""; } resultatSequentiel.remarque = ""; if (resultatSequentiel.moyenne >= 10) { resultatSequentiel.decision = "Admis"; } else { resultatSequentiel.decision = "Echec"; } //resultatSequentiel.moyenneMin = 0; //resultatresultatSequentiel.moyenneMax = 0; LResultatSequentiels.Add(resultatSequentiel); } //-------------- on calcule le rang, la moyenne générale de la classe, les moyennes min et max double moyenneDeLaClasse = 0; // moyenne générale de la classe //double moyenneMin = LResultatTrimestriels.ElementAt(0).moyenne; // moyenne mininale des élèves de la classe //double moyenneMax = LResultatTrimestriels.ElementAt(0).moyenne; // moyenne maximale des élèves de la classe //on trie la liste LResultatSequentiels = LResultatSequentiels.OrderByDescending(o => o.moyenne).ToList(); ResultatBE resultatPrecedent = new ResultatBE(); for (int i = 0; i < LResultatSequentiels.Count; i++) { // ------------------- DEBUT détermination du rang if (i == 0) { // on est sur le premier (celui qui a la plus grande note) ResultatBE oldResultat = LResultatSequentiels.ElementAt(i); // l'ancienne version de la moyenne (sera utilisé pour la modification) LResultatSequentiels.ElementAt(i).rang = 1; // le premier pour cette séquence et cette matière //on met à jour le rang dans la BD //modifierMoyenne(oldResultat, LResultatTrimestriels.ElementAt(j)); resultatPrecedent = LResultatSequentiels.ElementAt(i); } else { if (LResultatSequentiels.ElementAt(i).moyenne == resultatPrecedent.moyenne) { ResultatBE oldResultat = LResultatSequentiels.ElementAt(i); // l'ancienne version de la moyenne (sera utilisé pour la modification) //alors on a un ex éco (ils ont le même rang) LResultatSequentiels.ElementAt(i).rang = resultatPrecedent.rang; //on met à jour le rang dans la BD //modifierMoyenne(oldResultat, LMoyenneAvecRang.ElementAt(j)); } else { ResultatBE oldResultat = LResultatSequentiels.ElementAt(i); // l'ancienne version de la moyenne (sera utilisé pour la modification) //alors l'élève prend le rend suivant //LResultatTrimestriels.ElementAt(j).rang = moyennePrecedente.rang + 1; LResultatSequentiels.ElementAt(i).rang = i + 1; //on met à jour le rang dans la BD //modifierMoyenne(oldResultat, LMoyenneAvecRang.ElementAt(j)); } resultatPrecedent = LResultatSequentiels.ElementAt(i); } // ------------------- FIN détermination du rang // ------------------- DEBUT détermination de la moyenne de la classe moyenneDeLaClasse = moyenneDeLaClasse + LResultatSequentiels.ElementAt(i).moyenne; // ------------------- FIN détermination de la moyenne de la classe //// ------------------- DEBUT détermination des moyennes minimales et maximales //if (LResultatTrimestriels.ElementAt(i).moyenne < moyenneMin) // moyenneMin = LMoyennesTrimestriels.ElementAt(i).moyenne; //if (LMoyennesTrimestriels.ElementAt(i).moyenne > moyenneMax) // moyenneMax = LMoyennesTrimestriels.ElementAt(i).moyenne; //// ------------------- FIN détermination des moyennes minimales et maximales } moyenneDeLaClasse = moyenneDeLaClasse / LResultatSequentiels.Count; //------------------- DEBUT mise à jour des moyennes avec les infos telles que : moyenneClasse, mention, moyenneMin, moyenneMax for (int i = 0; i < LResultatSequentiels.Count; i++) { LResultatSequentiels.ElementAt(i).moyenneclasse = moyenneDeLaClasse; //LResultatTrimestriels.ElementAt(i).moyenneMin = moyenneMin; //LResultatTrimestriels.ElementAt(i).moyenneMax = moyenneMax; //on met à jour le rang dans la BD if (resultatDA.rechercher(LResultatSequentiels.ElementAt(i)) != null) { resultatDA.supprimer(LResultatSequentiels.ElementAt(i)); } resultatDA.ajouter(LResultatSequentiels.ElementAt(i)); //modifierMoyenneSequentiel(LMoyennesTrimestriels.ElementAt(i), LMoyennesTrimestriels.ElementAt(i)); } //------------------- FIN mise à jour des moyennes avec les infos telles que : moyenneClasse, mention, moyenneMin, moyenneMax } journalDA.journaliser("Calcul des résultats séquentiels des élèves de la classe : " + codeClasse + ", séquence : " + codeSequence + ", année : " + annee); }
internal List <EleveBE> listeEleveDuneClasse(string classe, int annee) { return(eleveDA.listeEleveDuneClasse(classe, annee)); }
internal List <BusinessEntity.EleveBE> listerElevesDuneClasse(string codeclasse, int annee) { return(eleveDA.listeEleveDuneClasse(codeclasse, annee)); }