//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));
 }
Пример #3
0
 internal List <BusinessEntity.EleveBE> listerElevesDuneClasse(string codeclasse, int annee)
 {
     return(eleveDA.listeEleveDuneClasse(codeclasse, annee));
 }