1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
Dismiss Notice
Welcome to our Education website, plz like our page facebook to support us. Thank You and wish you good navigation

Examen de fin de formation session Juillet 2014 - EFM - OFPPT

abdelouafiDec 25, 2016

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      165
      Likes Received:
      7
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      Filière : Techniques de Développement Informatique Niveau : TS Epreuve : Théorique
      Durée :4 heures Barème : /40 pts

      Dossier 1 :(10 pts):
      Une agence de voyage organise des voyages touristiques pour ses clients suite à des réservations. L’agence assure, selon un planning établi, des visites dans des lieux touristiques (monuments historiques, stations balnéaires …) avec l’aide d’un guide ou d’un accompagnateur qui assiste les clients durant tout le voyage. L’agence s’occupe également de différentes réservations : réservations des billets d’avion pour les clients, réservation des chambres d’hôtel ; de ce fait, le Directeur de l’agence maintient un large contact avec différents partenaires tels que les compagnies aériennes et les hôtels. Pour cela, L’agence compte développer une application appelée VoyageCOM pour gérer son activité.

      VoyageCOM sera utilisé par le Directeur pour gérer le personnel : ajout d’un nouvel employé, modifier ses caractéristiques etc. Le Directeur établit également les plannings de voyages qui constituent les offres proposées aux clients de l’agence. Un responsable touristique assure la gestion des clients de l’agence (ajout, modification, suppression des clients) ; VoyageCOM permet également au responsable touristique de gérer les guides touristiques et les accompagnateurs ainsi que les moyens de transport utilisés pendant les tournées touristiques. Le responsable des réservations gère les réservations des clients : réservation des billets d’avion et réservation d’hôtel. Un responsable de comptabilité s’occupe du suivi des factures : factures clients, factures compagnies aériennes et factures hôtels. Un administrateur est chargé de créer des comptes de connexion pour les nouveaux utilisateurs de VoyageCOM, de modifier les logins et mots de passe et de supprimer les comptes.

      Un client qui s’inscrit à un voyage est identifié par un code, nom, prénom, numéro passeport, adresse et téléphone. Un voyage est caractérisé par un code, un libellé, un prix, une date début et une date fin. Un voyage est composé de plusieurs tournées. Une tournée est caractérisée par un code, un libellé, une date/heure de départ et une date/heure de retour. Une tournée consiste à visiter des lieux qui sont caractérisés par un code, un nom du lieu et la ville. Une tournée utilise des ressources qui sont des guides touristiques et des véhicules de transport.

      1) Donner la liste des acteurs. (2pt)
      2) Etablir le diagramme de cas d’utilisation pour le système VoyageCOM. (4 pts)
      3) Etablir le diagramme de classe. (4pts)

      Dossier 2 (4 pts)
      1- Donner la définition et le rôle des couches suivantes du modèle OSI : Physique, Réseau, Transport. (1,5 pt)
      2- Expliquer le fonctionnement de la méthode d’accès CSMA/CD.(1 pt)
      3- Remplissez ce tableau en précisant la classe des adresses IP suivantes: (1.5 pt)

      1.png

      Dossier 3 :(13 pts)
      La base de données suivante sert à gérer les absences des stagiaires :
      • Stagiaire (idstagiaire, nom, prenom, #idFiliere, TotalAbsence)
      • Filiere (idFiliere, nomFiliere)
      • Module (idModule, nomModule, NbreHeure)
      • Fil_Module(#idFiliere, #idModule)
      • Absence (idAbsence, dateAbs, #idStagiaire, #idModule, TypeAbsence)

      NB : les champs en gras sont des clés primaires, les champs précédés par # sont des clés étrangères.

      On s’intéresse aux absences des stagiaires par module de formation. Un module est enseigné à plusieurs filières. Une absence a un type (Type absence) qui peut prendre les valeurs « justifiée » ou « non justifiée ».
      La table absence enregistre les absences à raison d’une ligne par séance. On suppose qu’une séance a une durée de 2h30mn (2,5 heures). Le champ TotalAbsence enregistre le nombre total d’absencesEN SEANCES d’un stagiaire (absence justifiée et non justifiée).

      1) Ecrire une procédure stockée qui affiche le nombre d’absences non justifiées, par stagiaire pour une filière donnée comme paramètre.(2pts)
      2) Ecrire un trigger qui empêche l’ajout d’une absence d’un stagiaire dans un module qui n’est pas enseigné à la filière de ce stagiaire. (2pts)
      3) Ecrire un trigger qui incrémente le champ TotalAbsence à chaque absence d’un stagiaire.(2pts)
      4) Ecrire une fonction qui calcule et retourne la note de discipline d’un stagiaire donné de la façon suivante : la note initiale de discipline est 20 ; à chaque absence non justifiée, on diminue cette note de -1 sans toutefois qu’elle soit inférieure à 0.(2pts)
      5) Ecrire une procédure stockée qui affiche la liste des stagiaires qui ont dépassé la limite d’absences (justifiées ou non) de 30% de la masse horaire d’un module donné. (2pts)
      6) Ecrire une requête qui affiche sans doublons les stagiaires qui ont plus de 2 absences pendant une période de moins de 15 jours. (3pts)
      Dossier 4 : (6 pts)
      Une page web contient un formulaire d’inscription ; il permet à un utilisateur de saisir son nom, son prénom, le sexe et la nationalité. Le formulaire permet aussi de choisir les intérêts de l’utilisateur sous forme de cases à cocher (Lecture, cinéma, …). Après un clic sur le bouton Afficher, le formulaire affiche un bloc de texte contenant un résumé de la saisie de l’utilisateur comme dans la figure suivante :
      2.png

      Si l’utilisateur choisit l’option Etrangère (pour la nationalité), un panneau (une balise div) devient visible ; il contient une liste pour le choix du pays d’origine de l’utilisateur. Le message affiché inclut alors le pays comme dans la figure suivante :
      3.png
      1) Ecrire le code HTML de la page web. (3 pts)
      2) Ecrire le code JavaScript (ou JQuery)du bouton afficher pour réaliser les fonctionnalités demandées, et faire l’affichage selon les contraintes suivantes : (3pts)

      • Si l’utilisateur choisi un seul intérêt, le message s’affiche comme cet exemple :
      CHOUKRI Nadia, âge 35 ans. Elle est marocaine. Son intérêt est: lecture
      • Si par contre l’utilisateur effectue plusieurs choix, les intérêts sont séparés par des virgules sauf le dernier qui est précédé par un « et » comme suit :
      CHOUKRI Nadia, âge 35 ans. Elle est marocaine. Ses intérêts sont : lecture, cinéma et sciences.
      • Le message affiché doit également tenir compte du choix du sexe : affichage de « ILest marocain » ou « Elle est marocaine » selon le choix Homme ou Femme.
      Dossier 5 :(7pts)
      Le fichier XML suivant enregistre les résultats des matchs d’un championnat de football :

      Code:
      <?xml version="1.0" ?> <FOOT DIVISION="1">
      <JOURNEE NUMERO="1" DATE="01/09/2013">
      
      <MATCH LOCAUX="WAC" VISITEURS="RCA" BUTS_LOCAUX="1" BUTS_VISITEURS="2" /> <MATCH LOCAUX="DHJ" VISITEURS="OCK" BUTS_LOCAUX="2" BUTS_VISITEURS="1" /> <MATCH LOCAUX="HUSA" VISITEURS="MAS" BUTS_LOCAUX="0" BUTS_VISITEURS="0" /> <MATCH LOCAUX="FAR" VISITEURS="WAF" BUTS_LOCAUX="1" BUTS_VISITEURS="1" /> </JOURNEE>
      
      <JOURNEE NUMERO="2" DATE="08/09/2013">
      
      <MATCH LOCAUX="RCA" VISITEURS="FAR" BUTS_LOCAUX="3" BUTS_VISITEURS="2" /> <MATCH LOCAUX="WAF" VISITEURS="HUSA" BUTS_LOCAUX="0" BUTS_VISITEURS="1" /> <MATCH LOCAUX="MAS" VISITEURS="DHJ" BUTS_LOCAUX="0" BUTS_VISITEURS="1" /> <MATCH LOCAUX="KAC" VISITEURS="WAC" BUTS_LOCAUX="1" BUTS_VISITEURS="0" /> </JOURNEE>
      
      <JOURNEE NUMERO="3" DATE="15/09/2013">
      
      <MATCH LOCAUX="ASS" VISITEURS="MAT" BUTS_LOCAUX="1" BUTS_VISITEURS="3" /> <MATCH LOCAUX="WAC" VISITEURS="WAF" BUTS_LOCAUX="3" BUTS_VISITEURS="2" /> <MATCH LOCAUX="DHJ" VISITEURS="FUS" BUTS_LOCAUX="1" BUTS_VISITEURS="0" /> <MATCH LOCAUX="MAS" VISITEURS="RCA" BUTS_LOCAUX="1" BUTS_VISITEURS="2" /> </JOURNEE>
      
      <JOURNEE NUMERO="4" DATE="22/09/2013">
      
      <MATCH LOCAUX="FUS" VISITEURS="MAS" BUTS_LOCAUX="1" BUTS_VISITEURS="0" /> <MATCH LOCAUX="MAT" VISITEURS="WAC" BUTS_LOCAUX="2" BUTS_VISITEURS="0" /> <MATCH LOCAUX="KAC" VISITEURS="DHJ" BUTS_LOCAUX="1" BUTS_VISITEURS="1" /> <MATCH LOCAUX="ASS" VISITEURS="FAR" BUTS_LOCAUX="0" BUTS_VISITEURS="0" /> </JOURNEE>
      
      </FOOT>
      
      1) Proposer un fichier XSD pour valider le fichier XML. (1pt)

      2) Que donnent les requêtes XPath suivantes :

      a) count(//MATCH[@BUTS_LOCAUX =@ BUTS_VISITEURS]). (1pt)

      b) //JOURNEE[@NUMERO < 3]. (1pt)

      c) //MATCH[@LOCAUX='DHJ']/@VISITEURS | //MATCH[@VISITEURS=’DHJ’]/@LOCAUX. (1pt)

      3) Ecrire les requêtes XPath permettant de sélectionner :


      a) la liste des matches de la 4ème journée.(1pt)

      b) la première rencontre de chacune des journées.(1pt)

      c) les matches nuls de l’équipe « KAC » jouant en locaux.(1pt)


      Cliquez sur "CORRIGE EXAMEN DE FIN DE FORMATION 2014" en haut de la apge pour voir la correction
       

      Attached Files:

      • s1.png
        s1.png
        File size:
        58.9 KB
        Views:
        314
      • s2.png
        s2.png
        File size:
        32.5 KB
        Views:
        327
      • s3.png
        s3.png
        File size:
        16.8 KB
        Views:
        318
      Last edited: Dec 25, 2016
      Loading...
      Dossier 1 : Questions 1) 2) et 3):
      [​IMG]

      4- Diagramme de classe :
      [​IMG]

      5-
      [​IMG]

      Question 6)

      • Voyage (code, Prix, Libelle, DateDebut, DateFin, #Matricule)
      • Tournee (CodeT, LibelleT, dateDebut, dateFin, #codeVoyage)
      • Lieu (codeL, libelleLieu, ville)
      • Employe (Matricule, nomEmpl, prenEmpl)
      • Client (CodeCl, nomCl, prenomCl, numPass, adresse, Tel)
      • Reservation (NumReservation, dateReservation, #CodeCl, #codeVoyage)
      • Concerne (CodeT, codeL, numeroOrdre)
      Dossier 2 : Voir cours

      Dossier 3 :
      1-

      Code:
      Create procedure question1 @idF int
      As
      Select S.idStagiaire, S.nom, S.prenom, count(idAbsence) from Stagiaire S inner join Absence A ON
      S.idStagiaire=A.idStagiaire Where TypeAbsence=’non justifiée’
      Group By S.idStagiaire, S.nom, S.prenom
      
      2-
      Code:
      Create Trigger question2 On Absence After Insert
      As
      Declare @idStagiaire int, @idModule int, @idFiliere int
      Select @idStagiaire=idStagiaire, @idModule=idModule From Inserted
      Select @idFiliere=idFiliere Stagiaire Where idStagiaire=@idStagiaire
      IF NOT EXISTS (Select idModule From Fil_Module Where idModule=@idModule And
      idFiliere=@idFiliere)
      Rollback
      
      3-
      Code:
      Create Trigger question3 On Absence After Insert
      As
      Declare @idStagiaire int
      Select @idStagiaire=idStagiaire From Inserted
      Update Stagiaire set TotalAbsence=TotalAbsence + 1 Where idStagiaire=@idStagiaire
      4-
      Code:
      Create Function Dbo.question4 (@idStagiaire int)
      Returns int
      As
      Begin
      Declare @n int, @resultat int
      Select @n=count(idAbsence) From Absence Where idStagiaire=@idStagiaire and TypeAbsence
      = ’non justifiée’
      Set @resultat = 20 - @n
      If @resultat < 0
      Set @resultat =0
      Return @resultat
      End 
      5-
      Code:
      Create procedure question5 @idModule int
      As
      Declare @limite decimal
      Select @limite = 0.3 * NbreHeure From Module Where idModule=@idModule
      Select nom,prenom From Stagiaire S inner join Absence A ON S.idStagiaire=A.idStagiaire Where
      idModule=@idModule Having 2.5*count(idAbsence) > @limite
      
      6-
      Code:
      Select distinct S.nom, S.prenom From Stagiaire S, Absence A1, Absence A2 Where A1.idStagiaire=
      S.idStagiaire and A2.idStagiaire= S.idStagiaire and A2.dateAbs > A1.dateAbs and DATEDIFF(day,
      A1.dateAbs, A2.dateAbs) <= 15
      

      Dossier 4 :
      1)
      Code:
      <html>
      <head>
      <title></title>
      </head>
      <body>
      <h1>Inscription</h1>
      <form name="f" action="">
      <p>
      Nom :&nbsp;
      <input id="nom" type="text" /> prénom :
      <input id="prenom" type="text" /></p>
      <p>
      Age :
      <input id="age" type="text" /></p>
      <p>
      Sexe :Homme
      <input id="homme" checked="checked" name="sex" type="radio" value="V1" />
      Femme
      <input id="femme" name="sex" type="radio" value="V1" /></p>
      <p>
      NationnalitéMarocaine
      <input id="marocain" checked="checked" name="nationalite" type="radio"
      value="V1" onclick="document.getElementById('lespays').style.display = 'none';"/>
      Etrangère
      <input id="etranger" name="nationalite" type="radio" value="V1" /></p>
      <p><div id="lespays">
      Pays :
      <select id="pays" name="D1">
      <option>France</option>
      <option>Espagne</option>
      <option>Tunisie</option>
      <option>Algérie</option>
      </select></p>
      </div>
      <p>
      Intérêts
      </p>
      <p>
      Lecture <input id="lecture" type="checkbox" name="interets" value="lecture"/> Cinéma
      <input id="cinema" type="checkbox" name="interets" value="cinéma" /> Sports
      <input id="sports" type="checkbox" name="interets" value="sports"/></p>
      <p>
      Théâtre
      <input id="theatre" type="checkbox" name="interets" value="théâtre" />
      Voyage
      <input id="voyage" type="checkbox" name="interets" value="voyage"/>
      Sciences
      <input id="sciences" type="checkbox" name="interets" value="sciences"/></p>
      <p>
      <input id="btAfficher" type="button" value="Afficher" onclick="Afficher();"/></p>
      <div id="aff">
      </div>
      </form>
      </body>
      </html>
      2) question 2

      Code:
      <script type="text/javascript" language="javascript">
      functionAfficher() {
      var d=document.getElementById("aff");
      var s = " Ses intérêts sont : ";
      var nom = document.f.nom.value;
      varprenom = document.f.prenom.value;
      varage = document.f.age.value;
      var homme = document.f.homme.checked;
      var marocain = document.f.marocain.checked;
      varresultat = nom + " " + prenom + ", age " + age + " ans. ";
      if (marocain)
      if (homme) resultat=resultat + "Il est" + " marocain. ";
      elseresultat=resultat + "Elle est" + " marocaine. ";
      else
      {
      if (homme) resultat = resultat + "Il est" + " étranger. ";
      elseresultat = resultat + "Elle est" + " étrangère. ";
      resultat = resultat + "Son pays d'origine est : " + document.f.pays.value + ".";
      }
      var tab = new Array;
      var j = 0;
      for (var i = 0; i <document.f.interets.length; i++)
      if (document.f.interets[i].checked)
      {
      tab[j] = document.f.interets[i].value;
      j++;
      }
      for (var i = 0; i <tab.length; i++)
      {
      if (i < tab.length-2)
      s = s + tab[i] + ", ";
      }
      if (tab.length>1)
      s = s + tab[tab.length - 2] + " et " + tab[tab.length - 1] + ".";
      else
      if (tab.length == 1)
      s = " Son intérêtest: " + tab[0];
      else
      s = " Ses intérêts sont : aucun";
      resultat = resultat + s;
      d.innerHTML = "<p>" + resultat + "</p>";
      }
      </script>

      Dossier 5 :
      1)
      Code:
      <?xml version="1.0" encoding="UTF-8"?>
      <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsd:element name="FOOT">
      <xsd:complexType>
      <xsd:sequence>
      <xsd:element name="JOURNEE" maxOccurs="unbounded">
      <xsd:complexType>
      <xsd:sequence>
      <xsd:element name="MATCH" maxOccurs="unbounded">
      <xsd:complexType>
      <xsd:attribute name="LOCAUX" type="xsd:string"></xsd:attribute>
      <xsd:attribute name="VISITEURS" type="xsd:string"></xsd:attribute>
      <xsd:attribute name="BUTS_LOCAUX" type="xsd:int"></xsd:attribute>
      <xsd:attribute name="BUTS_VISITEURS" type="xsd:int"></xsd:attribute>
      </xsd:complexType>
      </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="NUMERO" type="xsd:int"></xsd:attribute>
      <xsd:attribute name="DATE" type="xsd:string"></xsd:attribute>
      </xsd:complexType>
      </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="DIVISION" type="xsd:int"></xsd:attribute>
      </xsd:complexType>
      </xsd:element>
      </xsd:schema>
      

      2)
      a) Le nombre de matchs nuls du championnat
      b) les journées qui précédent la 3ème journée
      c) tous les adversaires de l’équipe ‘DHJ’

      3)
      a) //JOURNEE[@NUMERO=4]/MATH
      b) //JOURNEE/MATCH[1]
      c) //MATCH[@LOCAUX='KAC' and @BUTS_LOCAUX =@ BUTS_VISITEURS]




Share This Page

Share