Exercice Java : gestion de résultats d’examens


Reviewed by:
Rating:
5
On February 22, 2013
Last modified:February 22, 2013

Summary:

Exercice Java : gestion de résultats d’examens

Exercice java traite le  sujet suivant:

Gestion de résultats d’examens

Examinons ce petit Exercice java:

On se propose d’établir les résultats d’examen d’un ensemble d’élèves. Chaque élève sera représenté par un objet de type Eleve, comportant obligatoirement les champs suivants :

  • le nom de l’élève (type String),
  • son admissibilité à l’examen, sous forme d’une valeur d’un type énuméré comportant les valeurs suivantes : N (non admis), P (passable), AB ( Assez bien), B (Bien), TB (Très bien).

Idéalement, les noms des élèves pourraient être contenus dans un fichier. Ici, par souci de simplicité, nous les  supposerons fournis par un tableau de chaînes placé dans le programme principal.
On demande de définir convenablement la classe Eleve et d’écrire un programme principal qui :

  • pour chaque élève, lit au clavier 3 notes d’examen, en calcule la moyenne et renseigne convenablement le champ  d’admissibilité, suivant les règles usuelles :
    – moyenne < 10 : Non admis
    – 10 <= moyenne <12 : Passable
    – 12 <= moyenne <14 : Assez bien
    – 14 <= moyenne <16 : Bien
    – 16 <= moyenne : Très bien
  • affiche l’ensemble des résultats en fournissant en clair la mention obtenue. Voici un exemple d’exécution d’un tel programme :
 donnez les trois notes de l'eleve Dutronc
 11.5
 14.5
 10
 donnez les trois notes de l'eleve Dunoyer
 9.5
 10.5
 9
 donnez les trois notes de l'eleve Lechene
 14.5
 12
 16.5
 donnez les trois notes de l'eleve Dubois
 6
 14
 11
 donnez les trois notes de l'eleve Frenet
 17.5
 14
 18.5
Resultats :
Dutronc - Assez bien
Dunoyer - Non admis
Lechene - Bien
Dubois - Passable
Frenet - Tres bien

L’énoncé nous impose la définition du type énuméré contenant les différents résultats possibles de l’examen.
On notera qu’on nous demande d’afficher ces résultats sous une forme «longue », par exemple Passable et non  simplement P. Nous associerons donc un texte à chacune des valeurs de notre type énuméré, en exploitant la possibilité de doter un tel type de méthodes, à savoir ici :

  • un constructeur recevant en argument le texte associé à la valeur,
  • une méhtode nommée details, permettant de trouver ce texte à partir d’une valeur.

Voici ce que pourrait être la définition de ce type énuméré :

enum Mention
{ NA ("Non admis"), P ("Passable"), AB ("Assez bien"),
          B ("Bien"), TB ("Tres bien"), NC ("Non connu") ;
  private Mention (String d)
  { mentionDetaillee = d ;
  }
  public String details ()
  { return mentionDetaillee ;
  }
  private String mentionDetaillee ;
}

Un champ privé nommé mentionDetaillee nous sert à conserver le texte associé à chaque valeur.
Notez que, pour des questions de sécurité, nous avons prévu une valeur supplémentaire (NC) correspondant à un  résultat non connu, avec laquelle se trouvera automatiquement initialisée (par le constructeur) toute variable du type  Mention, Nous avons prévu d’utiliser deux méthodes statiques :

  • double moyenne (String n) qui demande de fournir trois notes pour le nom n et qui en calcule la moyenne,
  • Mention resul (double m) qui fournit la mention correspondant à une moyenne donnée m.

Voici ce que pourrait être le programme demandé :

public class Examen
{ public static void main (String args[])
  { String noms[] = { "Dutronc", "Dunoyer", "Lechene", "Dubois", "Frenet" } ;
  // creation du tableau d'eleves
    int nel = noms.length ;
Eleve eleves [] = new Eleve [nel] ;
for (int i=0 ; i<nel ; i++)
   eleves [i] = new Eleve (noms[i]) ;
// lecture des notes et détermination du résultat de chaque élève
    for (Eleve el : eleves)
{ double moy = moyenne (el.getNom()) ;
  el.setResul ((resul(moy))) ;
}
      // affichage résultats
    System.out.println ("Resultats : ") ;
    for (Eleve el : eleves)
      System.out.println (el.getNom() + " - " + el.getResul().details())  ;
  }
     // méthode qui demande au clavier trois notes pour un nom donne
     // et qui fournit en retour la moyenne correspondante
  static public double moyenne (String n)
  { System.out.println ("donnez les trois notes de l'eleve " + n) ;
    double som = 0. ;
    for (int i=0 ; i<3 ; i++)
    { double note = Clavier.lireDouble() ;
      som += note ;
    }
    double moyenne = som / 3. ;
    return moyenne ;
  }
 
    // méthode qui définit la mention en fonction de la moyenne
  static public Mention resul (double m)
  { if ( m<10. ) return Mention.NA ;
    if ( m<12.0) return Mention.P ;
    if ( m<14.0) return Mention.AB ;
    if ( m<16.0) return Mention.B ;
    return Mention.TB ;
  }
}
class Eleve
{ public Eleve (String n)
  { nom = n ;
    resul = Mention.NC ;   // valeur par défaut
  }
  public void setResul (Mention r)
  { resul = r ;
  }
  public Mention getResul()
  { return resul ;
  }
  public String getNom()
  { return nom ;
  }
  private String nom ;
  private Mention resul ;
}
enum Mention
{ NA ("Non admis"), P ("Passable"), AB ("Assez bien"),
          B ("Bien"), TB ("Tres bien"), NC ("Non connu") ;
  private Mention (String d)
  { mentionDetaillee = d ;
  }
  public String details ()
  { return mentionDetaillee ;
  }
  private String mentionDetaillee ;
}

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>