Prérequis : La statistique demandée à savoir le nombre moyen de cours nécessaires pour l'obtention du code correspond au rapport du total des cours de code réalisé par tous les élèves ayant réussis l'examen au total de tous les élèves ayant obtenu l'examen Varaibles utilisées par l'ordinogramme |NOM VARIABLE | TYPE | DESIGNATION |----------------------------------------------------------------------------------------- | nbr_seance_ok | INT | nombre de séance valide pour la statistique | requete | STRING | Stock la requête à exécuter | nbr_eleve | INT | nombre d'élève valide pour la statistique | resultat | FLOAT | resultat de la statistique | eleve_unique | HASHSET | Collection (tableau dynamique) qui stock la liste des élèves | | valide pour le calcul de la statistique | periode_debut | STRING | Période de début pour exécuter la requête | periode_fin | STRING | Période de fin pour exécuter la requête |----------------------------------------------------------------------------------------- La classe HASHSET a pour particularité d'insérer dans sa collection que des données uniques. Aussi, elle n'admet aucun doublon. DEBUT // Saisie de la période voulue par l'utilisateur au format JJMMAAAA LECTURE periode_debut LECTURE periode_fin // Exécution d'une requête de jointure interne entre trois tables requête = "SELECT CLIENT.CLIENT_OID, COURS.DATE, CLIENT.ETAT_PIC, COURS.COURS_PIC FROM CLIENT_COURS c_crs INNER JOIN CLIENT c ON c.CLIENT_OID = c_crs.CLIENT_OID INNER JOIN COURS crs ON crs.COURS = c_crs.COURS_OID WHERE DATE BETWEEN periode_debut AND periode_fin" // Initialisation des variables nbr_seance_ok = 0 eleve_unique = new HashSet<>() nbr_eleve = 0 resultat = 0 // Parcourir tous les champs de la jointure nouvellement créée TANT QUE ce n'est pas la fin de la table de jointure FAIRE // Une séance est valide, si l'élève a réussi au code ou à la pratique // et que la séance concerne un cours théorique. // Ces informations sont fournies par la base de données : ETAT_PIC pour la réussite à l'examen ou à la pratique; COURS_PIC pour le type de séance effectuée. SI ETAT_PIC >= 2 ET COURS_PIC = 1 ALORS nbr_seance_ok = nbr_seance_ok + 1 // Comme plusieurs séances peuvent concerner un même élève, // je doit prendre soin de le compter qu'une fois // et c'est ce que réalise la collection HashSet. Ajouter dans la collection eleve_unique l'identifiant du client (CLIENT OID) FIN SI FIN TANT QUE //Calcul la taille de la collection eleve_unique et stock la valeur dans une variable nbr_eleve = eleve_unique.size(); // Affiche le resultat ECRIRE resultat = nbr_seance_ok / nbr_eleve FIN