Correction Complet d'Examen Théorique De Fin De Formation 2012

 

 Voir l'énoncé d'EFF Théorique 2012 sur le lien suivant : Examen de Fin de Formation - Théorique Session Juillet 2012 - TDI  

 

  Correction Complet d'Examen Théorique De Fin De Formation 2012 - UML - Merise - SQL Server - POO - HTML - JavaScript - Réseaux

Dossier 1 : UML - Merise :

Voir le lien suivant : Correction EFF Théorie 2012 Partie UML et Merise

Dossier 2 : SQL Server :

Q 1 : Écrire une requête qui affiche le nombre de matchs joués dans la journée n°12.
     SELECT count(*)
     from Match
     Where numJournee=12
Q 2 : Écrire une requête qui affiche le nombre de matchs joués par journée.
     SELECT numJournee, Count(numMatch)
     From Match
     Group By numJournee
Q 3 : Écrire une requête qui affiche le match qui a compté le plus grand nombre de spectateurs..
     Select numMatch, dateMatch, numJournee
     From Match
     Where nombreSpectateur = (Select Max(nombreSpectateur) From Match)
Q 4 : Écrire une requête qui affiche le nombre de points de l’équipe de code 112 ; le nombre de
points se calcule de la façon suivante : une victoire donne 3 points, une égalité donne 1 point
et une défaite donne 0 point.

Solution 1 :
     Declare @nbVictoirs int , @nbEgalite int , @totalPoints int
     Select @nbVictoirs = Count(numMatch)
     From Match
     Where (nombreButLocaux > nombreButVisiteurs and codeEquipeLocaux=112) OR (nombreButLocaux < nombreButVisiteurs and codeEquipeVisiteurs=112)
     Select @nbEgalite = Count(numMatch)
     From Match
     Where (nombreButLocaux = nombreButVisiteurs) and (codeEquipeLocaux=112 OR codeEquipeVisiteurs=112)
     Set @totalPoints = @nbVictoirs * 3 + @nbEgalite
     Select @totalPoints
Solution 2 :
     SELECT SUM(MyTable.resultat) FROM
     (SELECT resultat=COUNT(numMatch)*3 FROM Match
     WHERE (nombreButLocaux > nombreButVisiteurs and codeEquipeLocaux=112)
     OR (nombreButLocaux < nombreButVisiteurs and codeEquipeVisiteurs=112)
     UNION
     SELECT Count(numMatch)  FROM Match
     WHERE (nombreButLocaux = nombreButVisiteurs)
     and (codeEquipeLocaux=112 OR codeEquipeVisiteurs=112)) MyTable

Q 5 : Écrire une procédure stockée qui affiche les équipes qui ont gagné leur match dans une
journée dont le numéro est donné comme paramètre.

     CREATE PROC Q5 @nbrjour int
     AS
     BEGIN
          SELECT codeEquipeLocaux AS 'Code Equipe' FROM Match
          WHERE nombreButLocaux > nombreButVisiteurs AND numJournee = @nbrjour
          UNION
          SELECT codeEquipeVisiteurs AS 'Code Equipe' FROM Match
          WHERE nombreButLocaux < nombreButVisiteurs AND numJournee = @nbrjour
     END
     EXEC Q5 1;
Q 6 : Écrire un trigger qui refuse l’ajout d’une ligne à la table Match pour laquelle la colonne
codeEquipeLocaux est égale à la colonne codeEquipeVisiteurs..

     CREATE TRIGGER question6 ON Match2 AFTER INSERT
     AS
     DECLARE @loc int , @vis int
     SELECT @loc= codeEquipeLocaux, @vis= codeEquipeVisiteurs FROM Inserted
     IF (@loc=@vis)
     BEGIN
          RAISERROR ('ATTENTION: codeEquipeLocaux == codeEquipeVisiteurs :p', 16, 1);
          Rollback
     END

Dossier 3 : POO - Programmation Orientée Objet :

Solution 1 : en Java Par : AJDI Yassin:
 Q 1 & Q 2 :
public class Camera {
     protected int code;
     protected String type;
     protected int orientation;
     public Camera() {
     super();
     }
     public Camera(int code, String type) {
     super();
     this.code = code;
     this.type = type;
     }
     public int getCode() {
     return code;
     }
     public void setCode(int code) {
     this.code = code;
     }
     public String getType() {
     return type;
     }
     public void setType(String type) {
     this.type = type;
     }
     public int getOrientation() {
     return orientation;
     }
     public void setOrientation(int orientation) {
     this.orientation = orientation;
     }
     public void tourner(int sens) {
     this.orientation = sens;
     }
     public void afficher() {
     System.out.println("-Code: " + this.code + " Orientation:"
     + this.orientation);
     }
}

Q3 - Q4 - Q5 :
public class CameraMobile extends Camera {
     private int abs;
     private int ord;
     public CameraMobile(String type, int code, int abs, int ord) {
     super(code, type);
     this.abs = abs;
     this.ord = ord;
     }
     public CameraMobile() {
     super();
     }
}
public int getAbs() {
     return abs;
}
public void setAbs(int abs) {
     this.abs = abs;
}
public int getOrd() {
     return ord;
}
public void setOrd(int ord) {
     this.ord = ord;
}
public void avancer(int d) {
     switch (this.orientation) {
     case 1:
     this.ord += d;break;
     case 2:
     this.abs += d;break;
     case 3:
     this.ord -= d;break;
     case 4:
     this.abs -= d;break;
     }
}
public void afficherPosition() {
     System.out.println("-position: abs=" + this.abs + " ord=" + this.ord);
}
public void afficher() {
     super.afficher();
     this.afficherPosition();
     }
}

Q 6 :
public class classTest {
     public static void main(String[] args) {
     // TODO Auto-generated method stub
     CameraMobile cm1 = new CameraMobile("SUMSUNG", 213, 0, 0);
     cm1.afficher();
     // a
     cm1.setOrientation(2);
     cm1.afficher();
     // b
     cm1.setOrientation(4);
     cm1.avancer(10);
     cm1.afficher();
     // c
     cm1.setOrientation(1);
     cm1.avancer(16);
     cm1.afficher();
     // d
     cm1.setOrientation(2);
     cm1.avancer(5);
     cm1.afficher();
     // e
     cm1.setOrientation(3);
     cm1.avancer(12);
     cm1.afficher();
     }
}


Solution 2 : en C# :

Q 1 - Q 2 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
Public class Camera
{
     private int code;
     private string type;
     private int orientation;
     public Camera()
     { }
     public Camera(int code, string type, int orientation) {
          this.code = code;
          this.type = type;
           if (orientation >= 1 && orientation <= 4)
               this.orientation = orientation;
          else throw new Exception("valeur incorrecte");
     }
     public int Code {
          get { return code; }
          set { code = value; }
     }
     public string Type {
          get { return type; }
          set { type = value; }
     }
     public int Orientation {
          get { return orientation; }
          set {
          if (value >= 1 && value <= 4)
          orientation = value;
          else throw new Exception("valeur incorrecte");
          }
     }
     public void tourner(int sens){
          if (sens >= 1 && sens <= 4)
          orientation = sens;
          else throw new Exception("valeur incorrecte");
     }
     public virtual void afficher(){
          Console.WriteLine("La caméra {0} a l'orientation {1}",code,orientation);
     }
}

Q 3 - Q 4 - Q 5 :
Public class CameraMobile:Camera
{
     private int abs;
     private int ord;
     public CameraMobile():base()
     { }
     public CameraMobile(int code, string type, int orientation,int abs,int ord) :base(code,type,orientation){
          this.abs = abs;
          this.ord = ord;
     }
     public void afficherPosition(){
          Console.WriteLine("Abscisse={0}-Ordonnée={1}",abs,ord);
     }
     public override void afficher()
     {
          base.afficher();
          afficherPosition();
     }
     public void avancer(int d){
          switch (this.Orientation){
          case 1: ord += d; break;
          case 2: abs += d; break;
          case 3: ord -= d; break;
          case 4: abs -= d; break;
          }
     }
}

Q 6 :
Public class Test
{
     static void Main(string[] args){
          CameraMobile cm = new CameraMobile(125, "Sony FX30", 1, 0, 0);
          cm.afficher();
          cm.tourner(2); cm.afficher();
          cm.tourner(4); cm.avancer(10); cm.afficher();
          cm.tourner(1); cm.avancer(16); cm.afficher();
          cm.tourner(2); cm.avancer(5); cm.afficher();
          cm.tourner(3); cm.avancer(12); cm.afficher();
          Console.ReadLine();
     }
}

Dossier 3 : HTML - JavaScript - Réseaux:


Exercice 1 : HTML - JavaScript :
Q 1 - Q 2 :
    <html >
        <head>
            <script type="text/javascript">
                function ChangeEtat(f) {
                    if(f.accepter.checked == true) {f.validation.disabled = false }
                    if(f.accepter.checked == false) {f.validation.disabled = true }
                }
                function valForm (f) {
                    if(f.nom.value == "" || f.prenom.value == "" || f.jour.value == "" || f.mois.value == "" || f.an.value == "" || f.pass.value == "" || f.confpass.value == "")
                        alert('Remplir tous les champs!!');
                    else
                        if(f.jour.value <=0 || f.jour.value >31|| f.mois.value <=0 || f.mois.value <=0 || f.mois.value>12 || f.an.value<1900)
                            alert('Date incorrecte!!');
                        else
                            if (f.pass.value != f.confpass.value)
                                alert('Le mot de passe et sa confirmation ne coïncident pas !! ');
                            else
                                f.submit();
                }
            </script>
        </head>
        <body >
            Pour s’inscrire, remplir le formulaire :< br >
            <form Action=" inscr.html" Method="Post" name="f1">
            Nom:<br>
            <input name="nom" size="30" ><br /><br />
            Prénom:<br>
            <input name="prenom" size="30" ><br /><br />
            Date de naissance:<br>
            <input name="jour" size="6" > <input name="mois" size="6" > <input name="an" size="6" ><br /><br />
            Mot de passe : <br />
            <input type="password" name="pass" size="30" >
            <br /><br />
            Confirmer mot de passe :<br>
            <input type="password" name="confpass" size="30" /><br /><br />
            <p><input type="checkbox" name="accepter" onClick=" ChangeEtat (this.form)" >J'accepte les conditions</p>
            <p>
            <input type="button" name="validation" value="Valider" disabled onClick="valForm(this.form)" >
            <input type="reset" value="Annuler" ></p>
            </form>
        </body>
    </html>


Q 3 :
On ajoute aux scripts, la fonction :
    function start() {
        setTimeout(window.close, 8000);
    }

La function start s’éxécute au chargement de la page par :
    <body onload="start()">

 Exercice 2 : Réseaux :
 De Q1 à Q4 voir cours.
 Q5 :
   a - Donner les adresses IP et les masques de chaque machine.
        - les adresses autorisées sont (192.168.79.2 jusqu'à 192.168.79.254) sous un masque 255.255.255.0

   b - Donner le type de câble utilisé pour connecter les équipements entre eux.

       
   c - Donner la commande MSDOS pour tester si la machine 1 est connectée à Internet.
        - La commande MSDOS : ping 42.42.6.6
   d - On souhaite que la machine 1 joue le rôle d’un serveur Web (IIS ou Apache), donner les
étapes d’installation et de configuration de ce serveur.

        - Voir cours.

Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9 - (Sql server, Oracle) - (ADO.Net, LINQ, ASP.Net)


Examen Fin Formation Pratique 2012 - TDI - (Sql server, Oracle) - (ADO.Net, LINQ, ASP.Net) Variante 7

Dossier 1 (6 pts)
Une société compte développer une application de gestion de son parc véhicule ; elle consiste à gérer les véhicules, les conducteurs, les différents entretiens, l’assurance, suivre les dépenses qui sont spécifiques à un véhicule précis pour déterminer sa rentabilité. Les véhicules subissent périodiquement des entretiens. Un entretien  est caractérisé par sa fréquence, la période, la distance (kilométrage) au bout de laquelle l’entretien doit être effectué ainsi que le montant de l’entretien. L’application utilise la base de données basée sur le modèle suivant :
N.B.  Les champs marqués en gras et soulignés représentent les clés primaires des tables et les champs marqués par # représentent les clés étrangères.
     Vehicule (immat, marque, modele, puissance, carburant, dateAchat, compteur, #idconducteur)     Conducteur (idconducteur,  nomC, prenC, dateN, pass)     Entretien (idEntretien, nomEntretien, frequence, periode, kilometrage, montant)     EntrVehicule  (idEntVeh, # immat, #idEntretien, dateEntretien, kmVehicule)     AssVehicule (idAss, nomAssureur, dateAss, dateExpiration, #immat)
Exemple : pour l’entretien « Changement d’huile »  qui doit se faire tous les 3 mois ou au bout de  chaque 5000 km et coûte 400 Dh, la période est ‘mois’, la fréquence est 3, le kilométrage est 5000 et le montant est 400. La table EntrVehicule enregistre les entretiens effectués pour les véhicules.
-Structure des tables :



Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9


Travail à faire :
Enregistrer sur un fichier texte qui porte le nom « dossier1.txt » les requêtes SQL qui répondent aux questions suivantes :
Donner les requêtes qui permettent de :
1) Créer la base de données et remplir les tables par un jeu  d’essai. (1 pt) 
2) Créer une procédure stockée qui affiche la liste des véhicules d’une marque  donnée comme paramètre. (1 pt)  (Le code de la procédure doit être sauvegardé dans le fichier dossier1.txt)
3) Créer une procédure stockée qui affiche les véhicules dont l’assurance expirera dans 7 jours. (1 pt)
4) Créer une procédure stockée qui affiche les véhicules qui doivent subir l’entretien « Changement d’huile» ; pour cela on vérifie la colonne kmVehicule (de la table EntrVehicule) du dernier changement d’huile effectué par rapport à la colonne compteur de la table Vehicule.  Prévoir dans le jeu d’essai une ligne « Changement d’huile» dans la table Entretien et des lignes correspondantes dans la table  EntrVehicule. (1 pt)
5) Créer un trigger  qui empêche l’ajout d’une ligne à la table EntrVehicule avec une valeur de la colonne kmVehicule inférieure à la valeur de la colonne compteur de la table Vehicule.  (1 pt)
6) Créer un trigger, qui à chaque ajout d’une ligne à la table EntrVehicule, modifie  également la colonne compteur de la table Vehicule correspondant au véhicule qui a subi l’entretien. (1 pt)

Dossier 2   (7 pts)
Créer une application « client/serveur » qui se base sur la base de données du dossier 1 permettant d’assurer les fonctionnalités suivantes :
1. Créer un menu pour cette application permettant de réaliser les opérations demandées par les questions qui suivent.  (0,25 pt)
2. Créer un formulaire de mise à jour des véhicules avec les éléments suivants : (1,25 pt)
     • Des boutons de navigation.
     • Les boutons Ajouter, Modifier, Supprimer et Enregistrer.
     • Le conducteur est choisi dans une liste déroulante.
3. Créer un formulaire contenant une grille qui affiche la liste des entretiens effectués pour un véhicule choisi dans une liste déroulante ; La grille affiche le nom de l’entretien, la date et le kilométrage.  (1 pt)
4.  a- Créer un formulaire permettant d’afficher la liste des entretiens qui sont en retard pour un véhicule donné; un entretien est en retard si le compteur du véhicule dépasse le kilométrage prévu pour  cet entretien. Le véhicule est choisi dans une liste déroulante. (1 pt)
     b- Ajouter à côté de chaque entretien une case à cocher. Ajouter en bas de la grille, un bouton de commande qui permet de supprimer le ou les entretiens sélectionnés avec tous les enregistrements connexes. (1 pt)
5. Créer un état  qui imprime l’ensemble des véhicules regroupés par marque. L’état contient les informations : nom de la marque, le modèle, le n° du matricule, le type de carburant,  le nom et le prénom du conducteur.  (1,5 pt)
6. Créer un état  qui imprime l’ensemble des véhicules d’une marque donnée qui ont la valeur du compteur supérieure à 200 000 kilomètres. L’état contient les informations : le n° du matricule, le modèle, la puissance et la valeur du compteur. (1 pt)

Dossier 3  (7 pts)
On souhaite développer un site web dynamique permettant aux utilisateurs d’effectuer des recherches et afficher des statistiques relatives à la gestion du parc automobile. On utilise la base de données du dossier 1.
1. Créer la page web d’accueil avec un menu de navigation entre les pages demandées dans les questions qui suivent.  (0,5 pt)
2. Créer une page web de connexion permettant à un conducteur d’afficher le véhicule qui lui est affecté ainsi que des informations sur l’assurance du véhicule avec affichage de la durée qui reste pour l’expiration de cette assurance. Le conducteur saisit comme login son idConducteur, le mot de passe étant le champ pass.  (1 pt)
3.  a- Créer une page web contenant une grille permettant de consulter les entretiens effectués pour un véhicule donné.  On affiche également le montant total engendré par ces entretiens ; le matricule du véhicule est sélectionné dans une liste déroulante. (1 pt)
     b- Insérer à côté de chaque entretien une case à cocher, et en bas de la page web, un lien hypertexte nommé « constituer » qui permet, lorsqu’on clique dessus, de créer un fichier texte contenant le ou les entretiens sélectionnés ainsi que leurs montants dans l’ordre de leur apparition sur la page. (1 pt)
4. Créer une page web de mise à jour des entretiens (table Entretien)  avec :
     a) Des boutons permettant d’ajouter, modifier et supprimer des entretiens.  (0,5 pt)
     b) La période est choisie dans une liste remplie avec les valeurs : ‘Jour’, ‘Semaine’, ‘Mois’ et ‘Année’.  (0,25 pt)
     c) Une grille affichant les entretiens.  (0,25 pt)
5. Créer une page web permettant :
     a) D’afficher la liste des noms des marques des véhicules sous forme de liens hypertextes.  (0,5 pt)
     b) Un clic sur le nom d’une marque, permet d’afficher la liste des véhicules  (immatriculation+modèle) de cette marque dans une nouvelle page Web appelée ListeVeh.  (0,5 pt)
     c) La page ListeVeh contient un bouton permettant de générer un fichier XML contenant la liste des véhicules affichés. (1 pt)
     d) Afficher dans une autre page web le fichier XML généré, formaté à l’aide de XSLT. (0,5pt)


Examen Fin Formation Pratique 2012 - TDI - (Sql server, Oracle) - (ADO.Net, LINQ, ASP.Net) Variante 8

Dossier 1 (6 pts)
Une société compte développer une application de gestion de son parc véhicule ; elle consiste à gérer les véhicules, les conducteurs, les différents entretiens, l’assurance, suivre les dépenses qui sont spécifiques à un véhicule précis pour déterminer sa rentabilité, l’historique des pannes et des accidents concernant un véhicule. L’application permet aussi de déterminer les véhicules dont l’assurance est sur le point d’expirer. L’application utilise la base de données basée sur le modèle suivant :
N.B.  Les champs marqués en gras et soulignés représentent les clés primaires des tables et les champs marqués par # représentent les clés étrangères.
     Vehicule (immat, marque, modele, puissance, carburant, dateAchat, compteur, #idconducteur)
     Conducteur (idconducteur,  nomC, prenC, dateN, pass)
     HistoConducteur (idHC, #immat, #idconducteur, dateDebut,  dateFin)
     AssVehicule (idAss, nomAssureur, dateAss, dateExpiration, #immat, montant)
     Panne (idPanne, datePanne, dateReprise,descPanne, kilometrage, # immat)
     Accident (idAccident, dateAccident, note, # immat)

-Structure des tables :



Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9


La table histoConducteur permet de garder l’historique des conducteurs de chaque véhicule avec les dates de début et de fin de conduite du véhicule.
Travail à faire :
Enregistrer sur un fichier texte qui porte le nom « dossier1.txt » les requêtes SQL qui répondent aux questions suivantes :
Donner les requêtes qui permettent de :
1) Créer la base de données et remplir les tables par un jeu d’essai.  (1 pt)
2) Créer une procédure stockée qui affiche la liste des véhicules achetés avant une date donnée comme paramètre. (1 pt) (Le code de la procédure doit être sauvegardé dans le fichier dossier1.txt)
3) Créer une procédure stockée qui affiche les véhicules dont l’assurance expirera dans N jours ; avec N un nombre entier utilisé comme paramètre. (1 pt)
4) Créer une procédure stockée qui affiche, pour un  véhicule donné comme paramètre, la liste des pannes qui sont produites durant l’année 2011. Prévoir dans le jeu d’essai, des lignes dans la table Panne avec des  dates comprises dans l’année 2011. (1 pt)
5) Créer un trigger  qui refuse l’ajout d’une panne  avec une valeur de la colonne kilometrage inférieure à la  valeur de la colonne  compteur de la table Vehicule.  (1 pt)
6) Pour tenir à jour l’historique des conducteurs d’un véhicule, créer un trigger, qui à chaque modification du conducteur dans la table Vehicule, ajoute une ligne à la table HistoConducteur avec des données correspondantes au véhicule et au nouveau conducteur du véhicule ; la colonne dateDebut prend la date système et la colonne dateFin reste nulle. (1 pt)

Dossier 2   (7 pts)
Créer une application « client/serveur » qui se base sur la base de données du dossier 1 permettant d’assurer les fonctionnalités suivantes :
1. Créer un menu pour cette application permettant de réaliser les opérations demandées par les questions qui suivent.  (0,25 pt)
2. Créer un formulaire de mise à jour des pannes avec les éléments suivants : (1,25 pt)
     • Des boutons de navigation.
     • Les boutons Ajouter, Modifier, Supprimer et Enregistrer.
     • Le véhicule est choisi dans une liste déroulante.
3.   a- Créer un formulaire contenant une grille qui affiche l’historique des conducteurs d’un véhicule donné; la  grille affiche le nom et le prénom des conducteurs, la date début et la date fin de conduite du véhicule. Le véhicule  est choisi dans une liste déroulante.  (1 pt)
      b- Ajouter à côté de chaque conducteur une case à cocher. Ajouter en bas de la grille, un bouton de commande qui permet de supprimer le ou les conducteurs sélectionnés avec tous les enregistrements connexes. (1 pt)
4. Créer un formulaire permettant d’afficher la liste des véhicules ayant fait des accidents entre deux dates données ; les dates doivent être saisies dans deux zones de textes. (1 pt)
5. Créer un état  graphique de type secteur qui imprime le nombre de véhicules  par marque du parc.  (1 pt)
6. Créer un état qui imprime l’ensemble des véhicules avec les informations : nom de la marque, le modèle, le n° du matricule,  ainsi qu’un champ qui donne le rendement du véhicule ; le rendement d’un véhicule est calculé comme suit : le nombre total des jours de pannes du véhicule divisé par le nombre total de jours écoulés depuis l’achat du véhicule. (1,5 pt)

Dossier 3  (7 pts)
On souhaite développer un site web dynamique permettant aux utilisateurs d’effectuer des recherches et afficher des statistiques relatives à la gestion du parc automobile. On utilise la base de données du dossier 1.
1. Créer la page web d’accueil avec un menu de navigation entre les pages demandées dans les questions qui suivent.  (0,5 pt)
2. Créer une page web de connexion permettant à un conducteur d’afficher le véhicule qui lui est affecté ainsi que des informations sur les pannes survenues sur le véhicule. Le conducteur saisit comme login son idConducteur, le mot de passe étant le champ pass.  (1 pt)
3.  a- Créer une page web contenant une grille permettant d’afficher  les véhicules  actuellement en panne.  On affiche également, pour chaque véhicule, le nombre de jours de la panne. (1 pt)
     b- Insérer à côté de chaque véhicule en panne une case à cocher, et en bas de la page web, un lien hypertexte nommé « réaliser » qui permet, lorsqu’on clique dessus, de créer un fichier texte contenant le ou les véhicules sélectionnés ainsi que leurs nombres de jours de panne dans l’ordre de leur apparition sur la page. (1 pt)
4. Créer une page web de mise à jour des accidents avec :
     a) Des boutons permettant d’ajouter, modifier et supprimer des accidents.  (0,5 pt)
     b) Ajouter des validateurs : les champs de saisi ne doivent pas être vides.  (0,25 pt)
     c) Le matricule du véhicule est choisi dans une liste déroulante.  (0,25 pt)
5. Créer une page web permettant de :
     a) Afficher la liste des noms des modèles des véhicules sous forme de liens hypertextes.  (0,5 pt)
     b) Un clic sur le nom d’un modèle, permet d’affiche la liste des véhicules  (immatriculation+modèle) de cette marque dans une nouvelle  page Web appelée ListeVehicule.  (0,5 pt)
     c) La page ListeVehicule contient un bouton permettant de générer un fichier XML contenant la liste des véhicules affichés. (1 pt)
     d) Afficher dans une autre page web, le fichier XML généré, formaté à l’aide de XSLT. (0,5pt)


Examen Fin Formation Pratique 2012 - TDI - (Sql server, Oracle) - (ADO.Net, LINQ, ASP.Net) Variante 9

Dossier 1 (6 pts)
Une société compte développer une application de gestion de son parc véhicule ; elle consiste à gérer les véhicules, les conducteurs, les différents entretiens, les visites techniques, suivre les dépenses qui sont spécifiques à un véhicule précis pour déterminer sa rentabilité. L’application gère aussi les pleins de carburant afin de déterminer, en particulier, la moyenne de consommation de chaque véhicule. L’application utilise la base de données basée sur le modèle suivant :
N.B.  Les champs marqués en gras et soulignés représentent les clés primaires des tables et les champs marqués par # représentent les clés étrangères.
     Vehicule (immat, marque, modele, puissance, carburant, dateAchat, compteur, #idconducteur)
     Conducteur (idconducteur,  nomC, prenC, dateN, pass)
     Accident (idAccident, dateAccident, note, # immat)
     VisiteTech (idVisteTech, dateVisite, descVisite, # immat)
     PleinCarburant (idPC, datePC, quantite, PU, kilometrage,  # immat)

-Structure des tables :



Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9




Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9


On suppose que la période des visites techniques de chaque véhicule est d’une année. L’alimentation d’un véhicule en carburant se fait toujours avec remplissage total du réservoir (plein).

Travail à faire :
Enregistrer sur un fichier texte qui porte le nom « dossier1.txt » les requêtes SQL qui répondent aux questions suivantes :
Donner les requêtes qui permettent de :
1) Créer la base de données et remplir les tables par un jeu  d’essai.   (1 pt)
2) Créer une procédure stockée qui affiche la liste des véhicules qui n’ont fait aucun accident durant une année A utilisée  comme paramètre.  (1 pt)  (Le code de la procédure doit être sauvegardé dans le fichier dossier1.txt)
3) Créer une procédure stockée qui affiche les véhicules qui doivent subir une visite technique dans 30 jours. (1 pt)
4) Créer une procédure stockée qui affiche le total de consommation en carburant par véhicule ;  on affiche le total en litre ainsi que le montant total en Dh. (1 pt)
5) Créer un trigger  qui empêche l’ajout d’une ligne à la table  PleinCarburant avec une valeur de la colonne kilometrage inférieure à la valeur de la colonne compteur de la table Vehicule.  (1pt)
6) Créer un trigger, qui à chaque ajout d’une ligne  à la table PleinCarburant, modifie  la colonne compteur de la table Vehicule correspondant au véhicule qui a subi le plein de carburant. (1pt)

Dossier 2  (7 pts)
Créer une application « client/serveur » qui se base sur la base de données du dossier 1 permettant d’assurer les fonctionnalités suivantes :
1. Créer un menu pour cette application permettant de réaliser les opérations demandées par les questions qui suivent.  (0,25 pt)
2. Créer un formulaire de mise à jour de la table  PleinCarburant  avec les éléments suivants :  (1,25 pt)
     • Des boutons de navigation.
     • Les boutons Ajouter, Modifier, Supprimer et Enregistrer.
     • Le véhicule est choisi dans une liste déroulante.
3.  a- Créer un formulaire contenant une grille qui affiche la liste des véhicules qui ont fait des accidents durant l’année 2011 ; la grille affiche le matricule, la marque, le modèle du véhicule ainsi que la date  et la description de l’accident.  (1 pt)
     b- Ajouter à côté de chaque véhicule accidenté une case à cocher. Ajouter en bas de la grille, un bouton de commande qui permet de supprimer le ou les véhicules sélectionnés avec tous les enregistrements connexes.  (1 pt)
4. Créer un formulaire permettant d’afficher, pour un véhicule donné, la consommation moyenne de carburant exprimée en litres par 100 km, calculée comme suit :



Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9
Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9


Avec :   Quantité est la quantité de carburant en litre du dernier plein.
Distance est la différence entre les valeurs de la colonne kilometrage du deux derniers pleins de carburant.   (1,5 pt)
5. Créer un état  qui imprime toutes les visites techniques effectuées par les véhicules d’une marque donnée, avec un regroupement des véhicules par modèle.  (1 pt)
6. Créer un état graphique de type histogramme  montrant pour chaque véhicule,  le total des consommations en litres de carburant. (1 pt)

Dossier 3  (7 pts)
On souhaite développer un site web dynamique permettant aux utilisateurs d’effectuer des recherches et afficher des statistiques relatives à la gestion du parc automobile. On utilise la base de données du dossier 1.
1. Créer la page web d’accueil avec un menu de navigation entre les pages demandées dans les questions qui suivent.  (0,5 pt)
2. Créer une page web de connexion permettant à un conducteur d’afficher le véhicule qui lui est affecté. La page permet au conducteur de saisir une visite technique concernant  le véhicule pour l’ajout dans la table VisiteTech. Le conducteur saisit comme login son idConducteur, le mot de passe étant le champ pass.  (1 pt)
3.  a- Créer une page web contenant une grille permettant d’afficher, pour chaque véhicule, le dernier plein de carburant effectué.  (1 pt)
     b- Insérer à côté de chaque véhicule une case à cocher, et en bas de la page web, un lien hypertexte nommé « opérer » qui permet, lorsqu’on clique dessus, de créer un fichier texte contenant le ou les véhicules sélectionnés ainsi que les derniers pleins de carburant effectués dans l’ordre de leur apparition sur la page. (1 pt)
4. Créer une page web de mise à jour des véhicules avec :
     a) Des boutons permettant d’ajouter, modifier et supprimer des véhicules.  (0,5 pt)
     b) Le type de carburant est choisi dans une liste rempli avec les valeurs : ‘Essence’, ‘Essence sans plomb’, et ‘Diesel’.  (0,25 pt)
     c) Une grille affichant les véhicules.  (0,25 pt)
5. Créer une page web permettant de :
     a) Afficher la liste des matricules des véhicules sous forme de liens hypertextes.  (0,5 pt)
     b) Un clic sur le matricule d’un véhicule, permet d’affiche la liste des accidents  survenus à ce véhicule dans une nouvelle  page Web appelée ListeAcc.  (0,5 pt)
     c) La page ListeAcc contient un bouton permettant de générer un fichier XML contenant la liste des accidents  affichés. (1 pt)
     d) Afficher dans une autre page web, le fichier XML généré, formaté à l’aide de XSLT. (0,5pt)

Télécharger Les Examens Fin Formation Pratique 2012 - TDI - V7-V8-V9 :
en format .pdf sur le lien suivant :



Examens Fin Formation Pratique 2012 V4-V5-V6 - TDI - (Sql server, Oracle) - (Vb.net, Csharp) - (ADO.Net, LINQ, ASP.Net)


Examen Fin Formation Pratique 2012 TDI - (Sql server, Oracle) - (Vb.net, Csharp) - (ADO.Net, LINQ, ASP.Net) Variante 4


Maroc Mecan est une société spécialisée en mécanique qui ne dispose pas d’un système de gestion d’information capable de gérer les opérations de suivi des réparations du matériel. Après étude et analyse de ce système, on vous propose la base de données suivante :

Dossier 1 :  (6 pts)


Examens Fin Formation Pratique 2012 V4-V5-V6
Examens Fin Formation Pratique 2012 V4-V5-V6


Travail à faire :
Enregistrer sur un fichier texte qui porte le nom « dossier1.txt » les requêtes SQL qui répondent aux questions suivantes.
1. Elaborer les requêtes SQL pour la création des tables, les contraintes et la saisie d’un jeu d’essai  dans toutes les tables de la base de données.  (1,5 pt)
2. Ajouter les contraintes : (0,5 pt)
     • Date_Envoi_Reparation inférieure à la Date_Retourne_Reparation.
     • Montant_Reparation : nombre positif.
3. Créer une procédure stockée qui permet  de calculer le coût de réparation d’un modèle dont l’ID_Modele est transmis en paramètre. (1 pt)
4. Créer un trigger sur la table Réparation qui permet d’exécuter les opérations suivantes lors de  l’insertion : (1 pt)
     - Si le champ observations_Réparation est non renseigné, le déclencheur insère automatiquement libelle_piece à sa place.
     - Si le montant_Réparation est supérieur au Prix_achat, le déclencheur doit annuler cette opération de réparation.
5. Créer une fonction qui renvoi le coût de réparation d’un matériel dont l’ID_Mat est transmis en paramètre. (1 pt)
6. Utiliser un bloc TSQL qui permet d’afficher pour chaque matériel les informations (ID_Mat, désignation, cout de réparation), en utilisant la fonction de la question 5. (1 pt)

Dossier 2
L’objectif est de créer une application « client/serveur » qui se base sur la base de données du dossier1 permettant d’assurer les fonctionnalités suivantes :
1. Créer la classe CMatériel dont les attributs sont les champs de la table Materiel et les méthodes sont : (1 pt)
     • Les constructeurs.
     • La méthode Ajouter() qui permet d’insérer un objet de la classe CMatériel dans la table Materiel.
     • La méthode Supprimer() qui permet de supprimer un objet de la table Materiel.
     • La fonction Rechercher() qui retourne un objet de la classe CMatériel (objet anonyme s’il n’existe pas).
     • La fonction Affichage() qui retourne un objet DATAReader  qui contient les enregistrements de la table Matériel.
2. Développer le formulaire de mise à jour de la table Materiel, ce formulaire doit contenir : (1 pt)
     • Les boutons ajouter, supprimer, rechercher.
     • Une grille pour la consultation.
NB : Pour les programmes de la question 2. Utiliser les méthodes déjà programmées dans la classe   CMatériel.
3. Développer le formulaire de mise à jour de la table Réparation (en utilisant le mode déconnecté), le formulaire doit contenir :
     • Les boutons Ajouter, Supprimer, Modifier et Rechercher. (1,25 pt)
     • Une grille pour la consultation. (0,25 pt)
     • Les boutons de navigation (Premier, Suivant).  (0,5 pt)
     • Ajouter une liste déroulante qui contient les ID_Mat. (0,5 pt)
     • Ajouter un programme qui permet de consulter les réparations d’un matériel dont l’ID_Mat est choisi à partir d’une liste. (0,5 pt)
4. Développer une procédure stockée PS_ListeMatériel  qui permet d’afficher la liste des matériels réparés entre deux dates. (0,25 pt)
5. Utiliser la procédure PS_ListeMatériel pour éditer un état qui permet d’afficher la liste des matériels réparés entre deux dates. (0,75 pt)
6. Créer un histogramme qui permet de représenter le Montant_Reparation par matériel(ID_Mat).
(0,5 pt)
7. Développer un formulaire contenant un bouton export vers HTML, qui permet d’exporter les données de la table Réparation dans un fichier HTML (utiliser les tables HTML pour la présentation). (0,75 pt)
8. Proposer un Menu de l’application. (0,25 pt)

Dossier 3
On utilise dans ce dossier la  même base de données du dossier1.
Développer une application web  qui intègre les fonctionnalités suivantes :
1. Créer la table utilisateur (Compte, Motpasse, Email, Tél). (0,25 pt)
2. Créer la page d’inscription : (1 pt)
     • Créer  une page web d’inscription.
     • Utiliser une procédure stockée qui permet l’insertion d’une ligne dans la table utilisateur.
3. Créer la page de connexion. (0,5 pt)
4. Créer une page qui permet d’ajouter une nouvelle réparation. (0,5 pt)
5. Créer une page de consultation des réparations.  (0,5 pt)
6. Ajouter une zone de texte et un bouton recherche dans la page de consultation qui permet d’afficher seulement les réparations d’un matériel saisi (ID_mat). (0,5 pt)
7. Ajouter un bouton imprimer (bouton en HTML), puis ajouter à ce bouton un code JavaScript qui permet d’imprimer la liste des réparations. (0,75 pt)
8. Créer un service web qui fournit la liste de toutes les réparations entre deux dates. (0,75 pt)
9. Réaliser une autre page web qui permet de consommer ce service. (0,5 pt)
10. Réaliser la page HTML suivante : (0,25 pt)


Examens Fin Formation Pratique 2012 V4-  V5-V6
Examens Fin Formation Pratique 2012 V4-V5-V6


11. Programmer les 3 boutons suivants : (1 pt)
a. Calculer qui permet d’afficher le montant des mensualités pour régler le crédit emprunté.
Sachant que :
montant mensuel = (Montant du prêt * (1+Taux d’intérêt + Taux d’assurance)) / durée du prêt.
b. Imprimer  qui permet d’imprimer cette page.
c. Effacer  qui permet de vider les zones de textes.


Examen Fin Formation Pratique 2012 TDI - (Sql server, Oracle) - (Vb.net, Csharp) - (ADO.Net, LINQ, ASP.Net) Variante 5


Maroc Mecano est une société spécialisée en mécanique qui ne dispose pas d’un système de gestion d’information capable de gérer les opérations de suivi de rechange de pièces. Après étude et analyse de ce système, on  vous propose la base de données suivante :

Dossier 1 :  (6 pts)


Examens Fin Formation Pratique   2012 V4-V5-V6
Examens Fin Formation Pratique 2012 V4-V5-V6


Travail à faire :
Enregistrer sur un fichier texte qui porte le nom « dossier1.txt » les requêtes SQL qui répondent aux questions suivantes.
1. Elaborer les requêtes SQL pour la création des tables, les contraintes et la saisie d’un jeu d’essai  dans toutes les tables de la base de données.  (1,5 pt)
2. Ajouter les contraintes : (0,5 pt)
     • Date_Retourne_Rechange supérieure à la Date_Envoi_Rechange.
     • Montant_Rechange : nombre positif.
3. Créer une procédure stockée qui permet  de calculer le coût de rechange d’un modèle dont l’ID_Modele est transmis en paramètre. (1 pt)
4. Créer un trigger sur la table Rechange qui permet d’exécuter les opérations suivantes lors de  l’insertion : (1 pt)
     - Si le champ Description_Rechange est non renseigné, le déclencheur insère automatiquement libelle_piece et prix_achat à sa place.
     - Si le Montant_Rechange est plus supérieur ou égal au Prix_achat, le déclencheur doit annuler cette opération de rechange.
5. Créer une fonction qui renvoi le coût de rechange d’un appareil dont l’ID_Appareil est transmis en paramètre. (1 pt)
6. Utiliser un bloc TSQL qui permet d’afficher pour chaque appareil les informations (ID_Appareil, désignation, cout de réparation), en utilisant la fonction de la question 5. (1 pt)

Dossier 2 (7,5 pts)
L’objectif est de créer une application « client/serveur » qui se base sur la base de données du dossier1 permettant d’assurer les fonctionnalités suivantes :
1. Créer la classe CAppareil dont les attributs sont les champs de la table Appareil et les méthodes sont : (1 pt)
     • Les constructeurs.
     • La méthode Ajouter() qui permet d’insérer un objet de la classe CAppareil dans la table Appareil.
     • La méthode Supprimer() qui permet de supprimer un objet de la table Appareil.
     • La fonction Rechercher() qui retourne un objet de la classe CAppareil (objet anonyme s’il n’existe pas).
     • La fonction Affichage() qui retourne un objet DATAREADER qui contient les enregistrements de la table Appareil.
2. Développer le formulaire de mise à jour de la table Appareil, le formulaire doit contenir : (1 pt)
     • Les boutons Ajouter, Supprimer et Rechercher.
     • Une grille pour la consultation.
NB : Pour les programmes de la question 2. Utiliser les méthodes déjà programmées dans la classe  CAppareil.
3. Développer le formulaire de mise à jour de la table rechange (en utilisant le mode déconnecté), le formulaire doit contenir :
     • Les boutons Adapter (s’il n’existe pas c’est Ajouter sinon c’est Modifier), Rechercher et Supprimer. (1,25 pt)
     • Une grille pour la consultation. (0,25 pt)
     • Les boutons de navigation (Précédent, Dernier).  (0,5 pt)
     • Ajouter une liste déroulante qui contient les ID_ appareil. (0,5 pt)
     • Ajouter un programme qui permet de consulter les opérations de rechange d’une ID_appareil choisie à partir d’une liste. (0,5 pt)
4. Développer une procédure stockée PS_ListePiece qui permet d’afficher la liste des pièces rechangées entre deux dates. (0,25 pt)
5. Utiliser la procédure PS_ListePiece  pour éditer un état qui permet d’afficher la liste pièces rechangées entre deux dates. (0,75 pt)
6. Créer un histogramme qui permet de représenter le Montant_Rechange par appareil (ID_appareil). (0,5 pt)
7. Développer un formulaire contenant un bouton export vers HTML, qui permet d’exporter les données de la table Rechange dans un fichier HTML (utiliser les tables HTML pour la présentation). (0,75 pt)
8. Proposer un Menu de l’application. (0,25 pt)

Dossier 3 (6,5 pts)
On utilise dans ce dossier la  même base de données du dossier1.
Développer une application web  qui intègre les fonctionnalités suivantes :
1. Créer la table Client (Nom, Prenom , Email, Motpasse , Adresse). (0,25 pt)
2. Créer la page d’inscription : (1 pt)
     • Créer  une page web d’inscription.
     • Utiliser une procédure stockée qui permet l’insertion d’une ligne dans la table Client.
3. Créer la page de connexion, sachant que le compte est représenté par le champ Email. (0,5 pt)
4. Créer une page qui permet d’ajouter un nouveau rechange. (0,5 pt)
5. Créer une page de consultation des rechanges. (0,5 pt)
6. Ajouter une zone de texte et un bouton recherche dans la page de consultation qui permet d’afficher seulement les rechanges d’un appareil saisi (ID_ Appareil). (0,5 pt)
7. Ajouter un bouton imprimer (bouton en HTML), puis ajouter à ce bouton un code JavaScript qui permet d’imprimer la liste des rechanges. (0,75 pt)
8. Créer un service web qui fournit la liste de tous les rechanges entre deux dates (0,75 pt)
9. Réaliser une autre page web qui permet de consommer ce service. (0,5 pt)
10. Réaliser la page HTML suivante : (0,25 pt)


Examens Fin Formation Pratique 2012 V4-  V5-V6
Examens Fin Formation Pratique 2012 V4-V5-V6


11. Programmer les 3 boutons suivants : (1 pt)
a. Calculer qui permet d’afficher le montant des mensualités pour régler le crédit emprunté. Sachant que, si le montant du prêt durant cette période (durée du prêt) est inferieur au salaire cumulé durant la même période, alors :
Le montant mensuel = Montant du prêt * (1+Taux d’intérêt) / durée du prêt, sinon on affiche le message « Il est impossible d’octroyer ce prêt ».
b. Imprimer  qui permet d’imprimer cette page.
c. Effacer  qui permet de vider les zones de textes.


Examen Fin Formation Pratique 2012 TDI - (Sql server, Oracle) - (Vb.net, Csharp) - (ADO.Net, LINQ, ASP.Net) Variante 6

Maroc Mecani est société spécialisée en mécanique qui ne dispose pas d’un système de gestion d’information capable de gérer les opérations de suivi de traitements machine (nettoyage, vérification, change filtre,...). Après étude et analyse de ce système on vous propose la base de données suivante :

Dossier 1 : (6 pts)


Examens Fin Formation Pratique 2012 V4-  V5-V6
Examens Fin Formation Pratique 2012 V4-V5-V6


Travail à faire :
Enregistrer sur un fichier texte qui porte le nom « dossier1.txt » les requêtes SQL qui répondent aux questions suivantes.
1. Elaborer les requêtes SQL pour la création des tables, les contraintes et la saisie d’un jeu d’essai  dans toutes les tables de la base de données.  (1,5 pt)
2. Ajouter les contraintes : (0,5 pt)
     • Date_Retoure_Traitement supérieure à la Date_Envoi_Traitement.
     • Nombreheure et prixparheure : deux nombres positifs.
3. Créer une procédure stockée qui permet de calculer le coût de traitement d’un modèle dont l’ID_Modele est transmis en paramètre. (1 pt)
     • Coût d’une seule opération de traitement = Nombreheure* prixparheure.
4. Créer un trigger sur la table Traitement qui permet d’exécuter les opérations suivantes lors de  l’insertion : (1 pt)
     - Si le champ Description_Traitement n’est pas renseigné, le déclencheur insère automatiquement le texte « Traitement non important ».
     - Si le Nombreheure est supérieur à 10, le déclencheur réduit cette masse horaire à 10 heures seulement.
5. Créer une fonction qui renvoi le coût de traitement d’une machine dont l’ID_machine est transmis en paramètre. (1 pt)
6. Utiliser un bloc TSQL qui permet d’afficher pour chaque matériel les informations (ID_machine, désignation, cout de traitement), en utilisant la fonction de la question 5. et un curseur. (1 pt)

Dossier 2 (7,5 pts)
L’objectif est de créer une application « client/serveur » qui se base sur la base de données du dossier1 permettant d’assurer les fonctionnalités suivantes :
1. Créer la classe CMachine dont les attributs sont les champs de la table Machine et les méthodes sont : (1 pt)
     • Les constructeurs.
     • La méthode Ajouter() qui permet d’insérer un objet de la classe CMachine dans la table Machine.
     • La méthode Supprimer() qui permet de supprimer un objet de la table Machine.
     • La fonction  Compter() qui renvoie les nombres d’enregistrements de la table Machine.
     • La fonction Affichage() qui retourne un objet DATAREADER qui contient les enregistrements de la table Machine.
2. Développer le formulaire de mise à jour de la table Machine, le formulaire doit contenir : (1 pt)
     • Les boutons « ajouter » et « supprimer ».
     • Bouton « compter » pour compter le nombre de machines enregistrées.
     • Une grille pour la consultation.
NB : Pour les programmes de la question 2. Utiliser les méthodes déjà programmées dans la classe   CMachine.
3. Développer le formulaire de mise à jour de la table Traitement (en utilisant le mode déconnecté), le formulaire doit contenir :
     • Les boutons Ajouter, Supprimer, Modifier et Rechercher. (1,25 pt)
     • Une grille pour la consultation. (0,25 pt)
     • Les boutons de navigation (Premier, Suivant, Précédent, Dernier).  (0,5 pt)
     • Ajouter une liste déroulante qui contient les ID_Machine. (0,5 pt)
     • Ajouter un programme qui permet de consulter les traitements d’une machine choisie à partir d’une liste. (0,5 pt)
4. Développer une procédure stockée PS_ListeMachine qui permet d’afficher la liste des machines traitées entre deux dates. (0,25 pt)
5. Utiliser la procédure PS_ListeMachine pour éditer un état qui permet d’afficher la liste des machines  traitées entre deux dates. (0,75 pt)
6. Créer un histogramme qui permet de représenter le Montant de traitement par Machine (ID_Machine). (0,5 pt)
Sachant que : Montant de traitement = Nombreheure* prixparheure
7. Développer un formulaire contenant un bouton export vers HTML, qui permet d’exporter les données de la table Machine dans un fichier HTML (utiliser les tables en HTML pour la présentation). (0,75 pt)
8. Proposer un Menu de l’application. (0,25 pt)

Dossier 3 (6,5 pts)
On utilise dans ce dossier la  même base de données du dossier1.
Développer une application web  qui intègre les fonctionnalités suivantes :
1. Créer la table user (Compte, Motpasse, Email, Question_sécurité, réponse_sécurité). (0,25 pt)
2. Créer la page d’inscription : (1 pt)
     • Créer une page web d’inscription.
     • Utiliser une procédure stockée qui permet l’insertion d’une ligne dans la table user.
3. Créer la page de connexion. (0,5 pt)
4. Créer une page qui permet d’ajouter un nouveau traitement. (0,5 pt)
5. Créer une page de consultation des traitements. (0,5 pt)
6. Ajouter une zone de texte et un bouton recherche dans la page de consultation qui permet d’afficher seulement les traitements d’une machine saisie (ID_ Machine). (0,5 pt)
7. Ajouter un bouton imprimer (bouton en HTML), puis ajouter à ce bouton un code JavaScript qui permet d’imprimer la liste des traitements. (0,75 pt)
8. Créer un service web qui fournit la liste de tous les traitements entre deux dates. (0,75 pt)
9. Réaliser une autre page web qui permet de consommer ce service. (0,5 pt)
10. Réaliser la page HTML suivante : (0,25 pt)


Examens Fin Formation Pratique   2012 V4-V5-V6
Examens Fin Formation Pratique 2012 V4-V5-V6


11. Programmer les 3 boutons suivants : (1 pt)
a. Calculer qui permet d’affiche le montant des mensualités pour régler le crédit emprunté. Sachant que :
 Montant mensuel = (Montant du prêt * (1+Taux d’intérêt - PA)) / durée du prêt.
Avec PA (Pourcentage d’aide) qui se calcule selon le tableau suivant :


Examens Fin Formation Pratique 2012 V4-  V5-V6
Examens Fin Formation Pratique 2012 V4-V5-V6


b. Imprimer  qui permet d’imprimer cette page.
c. Effacer  qui permet de vider les zones de textes.

Télécharger Les Examens Fin Formation Pratique 2012 V4-V5-V6 :
en format .pdf sur le lien suivant :



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3 - (Vb.net, Csharp), (ADO.Net, LINQ), (Sql server, Oracle)


EFF - Examen de Fin de Formation TDI Pratique 2012 Variante 1 (Vb.net, Csharp), (ADO.Net, LINQ), (Sql server, Oracle)

Dossier 1 (6 pts)
Les élections législatives au Maroc se déroulent selon un découpage en circonscriptions électorales.  Une province ou préfecture contient une ou

plusieurs  circonscriptions électorales ; une région contient plusieurs provinces et/ ou préfectures. Un candidat  appartient à un seul Parti politique  et

représente une seule  circonscription électorale. Les électeurs votent dans la circonscription électorale ouu ils sont inscrits. Une application de gestion

des élections législatives utilise la base de données suivante:
N.B.  les champs marqués en gras et soulignés représentent les clés primaires des tables et les champs marqués par # représentent les clés étrangères.
      Region (idRegion, nomRegion)
      ProvincePrefecture (idProvPref,  nomProvPref, #idRegion)
      Circonscription (idCirconscription, nomCir,  NombreSiege, #idProvPref)
      Parti (idParti, nomParti)
      Candidat  (CINcandidat, nomCandidat, prenomCandidat, DateNC, adrCandidat, #idCirconscription, #idParti)
      Electeur (CINelecteur, nomElecteur, dateNE,adrElecteur, #idCirconscription)

-Structure des tables :

EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3


Travail à faire :
Enregistrer sur un fichier texte qui porte le nom « dossier1.txt » les requêtes SQL qui répondent aux questions suivantes.
Donner les requêtes qui permettent de :
1) Créer la base de données et remplir les tables par un jeu  d’essai.   (1 pt)
2) Créer une procédure stockée qui affiche la liste des candidats qui représentent une circonscription donnée comme paramètre et appartenant à un parti donné comme paramétre. (1 pt) (Le code de la procédure doit être sauvegardé dans le fichier dossier1.txt)
3) Créer une procédure stockée qui affiche le nombre d'électeur inscrits dans chaque province d'une région donnée (idRegion transmis en paramètre).  (1 pt)
4) Créer une procédure stockée qui affiche les partis politiques qui ne participent pas dans une circonscription donnée.  (1 pt)
5) Créer un trigger qui empêche l’ajout d’une circonscription avec une valeur de la colonne NombreSiege inférieure à 0 ou supérieure à 6.  (1 pt)
6) Créer un trigger, qui lors de l'ajout d'un candidat à la table candidat, ajoute également ce candidat à la table Electeur : en effet un candidat est aussi un électeur qui va voter dans la même circonscription. (1 pt)

Dossier 2   (7 pts)
Créer une application « client/serveur » qui se base sur la base de données du dossier 1 permettant d’assurer les fonctionnalités suivantes :
1. Créer un menu pour cette application permettant de réaliser les opérations demandées par les questions qui suivent.  (0,25 pt)
2. Créer un formulaire de mise à jour des circonscription avec les éléments suivants : (1,25 pt)
     • Des boutons de navigation.
     • Les boutons Ajouter, Modifier, Supprimer et Enregistrer.
     • La province est choisie dans une liste déroulante.
3.
     a- Créer un formulaire contenant une grille qui affiche la liste des partis d'une circonscription avec, pour chaque parti, le nombre total de candidats enregistrés; la circonscription est choisie dans une liste déroulante. (1 pt)
     b- Ajouter à côté de chaque parti une case à cocher. Ajouter en bas de la grille, un bouton de commande qui permet de supprimer le ou les partis sélectionnés avec tous les enregistrements connexes. (1 pt)
4. Créer un formulaire permettant d'afficher la liste des candidats d'une circonscription pour un parti donné; la circonscription ainsi que le parti sont choisis dans deux listes déroulantes. (1,5 pt)
5. Créer un état  qui imprime les circonscriptions de la région « GRAND-CASABLANCA » avec les informations : nom de la circonscription, nombre de sièges affectés.  (1 pt)
6. Créer un état graphique de type secteur montrant pour chaque région, le nombre d'électeurs. (1 pt)

Dossier 3  (7 pts)
On souhaite développer un site web dynamique permettant aux utilisateurs d’effectuer des recherches et afficher des statistiques relatives aux élections législatives marocaines. On utilise la base de données du dossier 1.
1. Créer la page web d’accueil avec un menu de navigation entre les pages demandées dans les questions qui suivent.  (0,5 pt)
2. Créer une page web qui affiche la liste des électeurs inscrits dans une circonscription donnée. La circonscription  doit être sélectionnée dans une liste. L'affichage comprend le nom, le prénom et la date de naissance des électeurs classés par nom en ordre croissant. (1 pt)
3.
    a- Créer une page web contenant une grille à deux colonnes qui affiche dans la 1er colonne, le nom de chaque parti et dans la 2ème colonne, le nombre total de candidats par parti au niveau national. en bas de la page, on affiche le nombre total de condidats. (1 pt)
    b- Insérer à gauche de chaque parti une case à cocher, et en bas de la pages web, un lien hypertexte nommé "générer" qui permet, lorsqu'on clique dessus, de générer un fichier texte contenant le ou les partis sélectionnés ainsi que leurs candidats dans l’ordre de leur apparition sur la page. (1 pt)
4. Créer une page web de mise à jour des électeurs avec :
    a) Des boutons permettant d’ajouter, modifier et supprimer des électeurs.  (0,5 pt)
    b) Ajouter des validateurs : les champs de saisi ne doivent pas être vides.  (0,5 pt)
    c) Une grille affichant les électeurs.  (0,5 pt)
5. On veut effectuer  une recherche plus fine d’une circonscription afin d’afficher des statistiques sur les candidats et les électeurs.
Créer une page web  avec les fonctionnalités suivantes :
a) Pour le choix d’une circonscription, on affiche en haut de la page une ligne contenant les lettres qui sont les initiales des circonscriptions (uniquement pour celles existantes dans la base de données) sous forme de liens hypertextes : (1 pt)
A      B     E    F    G    H    J  …..
b) Lorsque l’utilisateur clique sur une lettre, la page affiche le nom de toutes les circonscriptions qui commencent par cette lettre sous forme de liens hypertextes. (0,5pt)
c)    Un clic sur une circonscription affiche le nombre total de candidats de cette circonscription ainsi que le nombre total d'électeur et le poucentage de candidats par rapport aux électeurs. (0,5 pt)

EFF - Examen de Fin de Formation TDI Pratique 2012 Variante 2 (Vb.net, Csharp), (ADO.Net, LINQ), (Sql server, Oracle)

Dossier 1 (6 pts)
Les élections législatives au Maroc se déroulent selon un découpage en circonscriptions électorales.  Une province ou préfecture contient une ou plusieurs  circonscriptions électorales ; une région contient plusieurs provinces et/ ou préfectures. Un candidat  appartient à un seul Parti politique  et représente une seule  circonscription électorale. Un candidat appartient à une tranche d’âge (« moins de 35 ans », « entre 35 et 45 ans » …). Un candidat possède un numéro d’ordre  (un classement) parmi les candidats du même parti de la même circonscription (liste électorale). Un candidat possède un niveau scolaire (« primaire », « secondaire » « supérieur »…).
Une application de gestion des élections législatives utilise la base de données suivante :
N.B.  les champs marqués en gras et soulignés représentent les clés primaires des tables et les champs marqués par # représentent les clés étrangères.
     Region (idRegion, nomRegion)
     ProvincePrefecture (idProvPref,  nomProvPref, #idRegion)
     Circonscription (idCirconscription, nomCir,  NombreSiege, #idProvPref)
     Parti (idParti, nomParti)
     TrancheAge (idTranche, tranche)
     Candidat  (CINcandidat, nomCandidat, prenomCandidat, DateNC, niveauScolaire, NumOrdreListe, adrCandidat, #idCirconscription,# idParti, #idTrancheAge)

-Structure des tables :

EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3


Travail à faire :
Enregistrer sur un fichier texte qui porte le nom « dossier1.txt » les requêtes SQL qui répondent aux questions suivantes.
Donner les requêtes qui permettent de :
1) Créer la base de données et remplir les tables par un jeu  d’essai.   (1 pt)
2) Créer une procédure stockée qui affiche le nombre de candidats par province pour une  région donnée comme paramètre. (1 pt) (Le code de la procédure doit être sauvegardé dans le fichier dossier1.txt)
3) Créer une fonction qui retourne le nombre total de sièges affectés à une région donnée (idRegion transmis en paramètre).  (1 pt)
4) Créer une procédure stockée qui affiche le parti politique qui a enregistré le plus grand nombre de candidat  dans une circonscription donnée.  (1 pt)
5) Créer un trigger  qui empêche l’ajout d’une circonscription avec une valeur de la colonne NombreSiege inférieure à 0 ou supérieure à 6.  (1 pt)
6) Créer un trigger, qui après suppression d’un candidat qui est 1er dans la liste (ayant  la colonne numOrdreListe=1),   le 2ème  candidat prend sa place  ie : son numOrdreListe est modifié en prenant la valeur 1. (1 pt)

Dossier 2   (7 pts)
Créer une application « client/serveur » qui se base sur la base de données du dossier 1 permettant d’assurer les fonctionnalités suivantes :
1. Créer un menu pour cette application permettant de réaliser les opérations demandées par les questions qui suivent.  (0,25 pt)
2. Créer un formulaire de mise à jour des candidats  avec les éléments suivants : (1,25 pt)
     • Des boutons de navigation.
     • Les boutons Ajouter, Modifier, Supprimer et Enregistrer.
     • La circonscription, le parti et la tranche d’âge  sont choisis dans des listes déroulantes.
3. Créer un formulaire contenant une grille qui affiche le pourcentage des candidats par tranche d’âge pour une circonscription choisie dans une liste déroulante. La 1ère colonne de la grille affiche la tranche d’âge et la 2ème colonne affiche le pourcentage. (1 pt)
4.
     a- Créer un formulaire permettant d’afficher la liste des candidats d’une circonscription pour un parti donné ; la circonscription ainsi que le parti sont choisis dans une  liste déroulante. L’affichage est trié selon la colonne numOrdreListe en ordre croissant. (1,5 pt)
     b- Ajouter à côté de chaque candidat une case à cocher. Ajouter en bas de la grille, un bouton de commande qui permet de supprimer le ou les candidats sélectionnés. (1 pt)
5. Créer un état  qui imprime les circonscriptions de la région « DOUKKALA-ABDA » avec les informations : nom de la circonscription, nombre de sièges affectés.  (1 pt)
6. Créer un état graphique de type histogramme montrant pour chaque niveau scolaire, le nombre de candidats. (1 pt)

Dossier 3  (7 pts)
On souhaite développer un site web dynamique permettant aux utilisateurs d’effectuer des recherches et afficher des statistiques relatives aux élections législatives marocaines. On utilise la base de données du dossier 1.
1. Créer la page web d’accueil avec un menu de navigation entre les pages demandées dans les questions qui suivent.  (0,5 pt)
2. Créer une page web qui affiche la liste des candidats qui ont le niveau scolaire « supérieur ». L’affichage comprend le nom, le prénom et la date de naissance des candidats  classés par nom en ordre croissant.  (1 pt)
3.
     a- Créer une page web permettant d’afficher tous les  candidats d’une circonscription donnée qui sont en tête des listes électorales de cette circonscription (ayant numOrdreListe=1) ; la circonscription est choisie dans une liste déroulante. (1 pt)
     b- Insérer à côté de chaque candidat une case à cocher, et en bas de la page web, un lien hypertexte nommé « produire » qui permet, lorsqu’on clique dessus, de produire un fichier texte contenant le ou les candidats sélectionnés ainsi que leurs niveaux scolaires dans l’ordre de leur apparition sur la page. (1 pt)
4. Créer une page web de mise à jour des circonscriptions avec :
     a) Des boutons permettant d’ajouter, modifier et supprimer des circonscriptions.  (0,5 pt)
     b) Ajouter des validateurs : les champs de saisi ne doivent pas être vides.  (0,5 pt)
     c) Une grille affichant les circonscriptions.  (0,5 pt)
5. On veut effectuer  une recherche plus fine d’une circonscription afin d’en afficher les partis.
Créer une page web  avec les fonctionnalités suivantes :
     a) Pour le choix d’une circonscription, on affiche en haut de la page une ligne contenant les lettres qui sont les initiales des circonscriptions (uniquement pour celles existantes dans la base de données) sous forme de liens hypertextes : (1 pt)
A      B     E    F    G    H    J  …..
     b) Lorsque l’utilisateur clique sur une lettre, la page affiche le nom de toutes les circonscriptions qui commencent par cette lettre sous forme de liens hypertextes. (0,5pt)
     c) Un clic sur une circonscription affiche la liste des partis qui représentent cette circonscription ainsi que le nombre total de partis (à la fin de la page). (0,5 pt)

EFF - Examen de Fin de Formation TDI Pratique 2012 Variante 3 (Vb.net, Csharp), (ADO.Net, LINQ), (Sql server, Oracle)

Dossier 1 (6 pts)
Les élections législatives au Maroc se déroulent selon un découpage en circonscriptions électorales.  Une province ou préfecture contient une ou plusieurs  circonscriptions électorales ; une région contient plusieurs provinces et/ ou préfectures. Un candidat  appartient à un seul parti politique  et représente une seule  circonscription électorale. Pour le résultat des élections, on compte le nombre de voix obtenu par les partis dans chaque circonscription électorales.  Les électeurs votent dans la circonscription électorale où ils sont inscrits. Une application de gestion des élections législatives utilise la base de données suivante :
N.B.  Les champs marqués en gras et soulignés représentent les clés primaires des tables et les champs marqués par # représentent les clés étrangères.
      Region (idRegion, nomRegion)
      ProvincePrefecture (idProvPref,  nomProvPref, #idRegion)
      Circonscription (idCirconscription, nomCir,  NombreElecteur, #idProvPref)
      Parti (idParti, nomParti)
      Candidat  (CINcandidat, nomCandidat, prenomCandidat, DateNC, adrCandidat, #idCirconscription,# idParti)
      Resultat (idCirconscription, idParti, nombreVoix)

-Structure des tables :


EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3



EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3


Travail à faire :
Enregistrer sur un fichier texte qui porte le nom « dossier1.txt » les requêtes SQL qui répondent aux questions suivantes :
Donner les requêtes qui permettent de :
1) Créer la base de données et remplir les tables par un jeu  d’essai.  (1 pt)
2) Créer une procédure stockée qui permet d’ajouter une ligne à la table Resultat en prenant comme paramètres un idCirconscription, un idParti et le nombre de voix. (1 pt) (Le code de la procédure doit être sauvegardé dans le fichier dossier1.txt)
3) Créer une procédure stockée qui affiche le nombre total de voix obtenu par parti  dans chaque province d’une région donnée (idRegion transmis en paramètre).  (1 pt)
4) Créer une procédure stockée qui affiche les partis politiques qui n’ont pas atteint le seuil  de 6% des voix nécessaires pour avoir un siège dans une circonscription donnée (idCirconscription comme paramère). Le test se fait à l’aide du quotient : nombre de voix  obtenu par le parti dans une circonscription, divisé par, le nombre d’électeurs de la circonscription. (1 pt)
5) Créer un trigger  qui empêche l’ajout d’une ligne à table Resultat si la valeur de la colonne  nombreVoix est supérieure à la valeur de la colonne nombreElecteur de la table Circonscription pour la même circonscription.  (1 pt)
6) Créer un trigger, qui refuse l’ajout d’un candidat  si son âge est inférieur à 18 ans ; âge minimum pour être éligible. (1 pt)

Dossier 2   (7 pts)
Créer une application « client/serveur » qui se base sur la base de données du dossier 1 permettant d’assurer les fonctionnalités suivantes :
1. Créer un menu pour cette application permettant de réaliser les opérations demandées par les questions qui suivent.  (0,25 pt)
2. Créer un formulaire de mise à jour de la table Resultat avec les éléments suivants : (1,25 pt)
     • Des boutons de navigation.
     • Les boutons Ajouter, Modifier, Supprimer et Enregistrer.
     • La circonscription et le parti sont choisis dans une liste déroulante.
3.
     a- Créer un formulaire contenant une grille qui affiche la liste des partis d’une circonscription avec, pour chaque parti, le nombre total de voix obtenues classées en ordre décroissant sur le nombre de voix ; la circonscription est choisie dans une liste déroulante.  (1 pt)
     b- Ajouter à côté de chaque parti une case à cocher. Ajouter en bas de la grille, un bouton de commande qui permet de supprimer le ou les partis sélectionnés avec tous les enregistrements connexes. (1 pt)
4. Créer un formulaire contenant une grille qui affiche,  la liste des candidats du parti qui a obtenu le plus grand nombre de voix dans une circonscription donnée ; la circonscription est  choisie dans une liste déroulante. (1,5 pt)
5. Créer un état  qui imprime les circonscriptions de la région « SOUSS » avec les informations : nom de la circonscription, nombre d’électeurs.  (1 pt)
6. Créer un état graphique de type histogramme montrant pour chaque région, le nombre total de voix obtenu par un parti donné. (1 pt)

Dossier 3  (7 pts)
On souhaite développer un site web dynamique permettant aux utilisateurs d’effectuer des recherches et d’afficher des statistiques relatives aux élections législatives marocaines. On utilise la base de données du dossier 1.
1. Créer la page web d’accueil avec un menu de navigation entre les pages demandées dans les questions qui suivent.  (0,5 pt)
2. Créer une page web permettant d’afficher la liste des candidats inscrits dans une circonscription donnée. La circonscription doit être sélectionnée dans une liste. L’affichage comprend le nom, le prénom et la date de naissance des candidats classés par nom en ordre croissant.  (1 pt)
3.
     a- Créer une page web contenant une grille à deux colonnes qui affiche dans la 1ère colonne, le nom de chaque parti et dans la 2ème colonne, le nombre de voix par parti au niveau d’une circonscription choisie dans une liste. En bas de la page, on affiche le nombre total de voix.  (1pt)
     b- Insérer à gauche de chaque parti une case à cocher, et en bas de la page web, un lien hypertexte nommé « engendrer » qui permet, lorsqu’on clique dessus, de créer un fichier texte contenant le ou les partis sélectionnés ainsi que le nombre de voix dans l’ordre de leur apparition sur la page. (1 pt)
     4. Créer une page web de mise à jour des candidats avec :
     a) Des boutons permettant d’ajouter, modifier et supprimer des candidats.  (0,5 pt)
     b) Ajouter des validateurs : les champs de saisi ne doivent pas être vides.  (0,5 pt)
     c) Une grille affichant les candidats.  (0,5 pt)
5. On veut effectuer  une recherche plus fine d’une circonscription afin d’en afficher les résultats des élections.
Créer une page web  avec les fonctionnalités suivantes :
     a) Pour le choix d’une circonscription, on affiche en haut de la page une ligne contenant les lettres qui sont les initiales des circonscriptions (uniquement pour celles existantes dans la base de données) sous forme de liens hypertextes : (1 pt)
A      B     E    F    G    H    J  …..
     b) Lorsque l’utilisateur clique sur une lettre, la page affiche le nom de toutes les circonscriptions qui commencent par cette lettre sous forme de liens hypertextes. (0,5pt)
     c) Un clic sur une circonscription affiche la liste des résultats de vote par parti de cette circonscription : on affiche le nom du parti et le nombre de voix obtenues classées par ordre décroissant par nombre de voix. (0,5 pt)

Télécharger Les EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3 :
en format .pdf sur le lien suivant :



Retrouvez-nous sur Facebook
×Facebook Mouad Ouisse