dimanche 11 juin 2017

TDM - Correction d'Examen de Fin de Formation Théorie, 2011 et 2012

TDM - Correction d'Examen de Fin de Formation Théorie, 2011 et 2012

correction-examen-fin-formation-theorie-2011-et-2012-tdm
....

Examen  de Fin de Formation - Session Juin 2011

Eléments de Correction


Filière : Techniques de Développement  Multimédia

Niveau : Technicien Spécialisé
Epreuve : Théorie
Barème  :  40 pts
Durée     :  4h30mn




Dossier 1 (8 pts)
-    Voir cours

Dossier 2 (16 pts)
1) Créer les tables  stagiaire et notation  avec des contraintes. (4 pts)
·   Create table satgiaire(numstagiaire  int primary key check (numstagiaire   <1000),
nom_stag  char(20),prenom_stag char(20),adresse char(40),email  char(40),num_groupe  int references  groupe(num_groupe ))
....

·   Create table notation(numstagiaire  int  references satgiaire  (numstagiaire  ),
Numcontrole  int  references  Contrôle(num_controle) , note int check(note  between 0 and 20),
Primary  key(numstagiaire  , num_controle))

2) Liste des Stagiaire de filière  TDM  du  groupe  nommé A et  du groupe nommé  B.  (2 pts)
Select  s.* from  stagiaire s,groupe  g where s.num_groupe=g.num_groupe
And g.nom_groupe in(’A’,’B’)
3) Le groupe (toutes les informations) ayant   le plus grand nombre  de stagiaires. (4 pts)
Select  from groupe  where num_groupe in(
Select  num_groupe from stagiaire
Group by num_groupe
Having count(num_stagiaire)>=
all(select count(num_stagiaire) from stagiaire
Group by num_groupe)

4) Liste des modules  enseignés par le(s) formateur(s)  ‘ ABDELLAOUI ‘. (1 pt)
Select m.* from  module m,formateur  f  where m.numformateurmatricule=f.numformateur
And nomf= ‘ ABDELLAOUI ‘

5) Liste des modules  déjà  terminés. (1 pt)
Select m.* from module m where masse_horaire_prevue = masse_horaire_réalisé

6) Liste des modules non terminés  et enseignés par le formateur ‘ahmadi ‘ pour la filière ‘TDM’.
(1 pt)

Select m.* from module m ,formateur form, filiere fil where
m.numformateur=form. numformateur and  nomf=‘ahmadi ‘  and  masse_horaire_réalisé < masse_horaire_prevue  and form. Num_filiere =fil.um_filere and nom_filiere=’TDM’

7) Supprimer  tous les groupes  dont le nombre de stagiaires ne dépassent pas dix.  (1 pt)
Delete  from  groupe  where num_groupe in(select num_groupe from stagiaire
                       Group by num_groupe
                       Having count(num_stagiaire <=10)
8) Affecter  la note 12/20 pour  le contrôle numéro : 2 du module  nommé « programmation 3D » pour la filière TDM  au stagiaire ayant comme numéro 3006. (2 pts)
Update notation
Set note=12 where num_controle=2  and  num_stagiare =3006
.... Dossier  3 (16 pts)
Première Partie : (8 pts)

Question  1  (6 pts) : code html et code javascript.
Page. html  (2 pts)
Voici une proposition de solution:
<html>
<head>
    <title>Page</title>
</head>
<body>
<form name="formMail" action="#">
    <pre>
   <label>numero  </label>: <input name="Text1" type="text" />
   <label>nom   </label>     :   <input name="Text2" type="text" />
  <label> prenom    </label> :   <input name="Text3" type="text" />
   <label> choisir une filiere</label>    :
       <input name="Radio1" type="radio"  value='TDM'/>TDM
       <input name="Radio1" type="radio"  value='TDI'/>TDI
       <input name="Radio1" type="radio"  value='TRI'/>TRI

   <label>adresse</label><textarea id="TextArea1" cols="20"
   rows="2"></textarea>
   <label>email</label>:<input name="email" type="text" />
     <input type="button" name="but" value="valider" onclick="controlMail(formMail)">
/><input id="Reset1" type="reset" value="reset" />
</pre>
</form>
</body>
</html>

....
code javascript : Voici une proposition de solution: (4 pts)
<script language="JavaScript">
        function controlMail(formS)
        {
var adresse=formS.email.value;
            
            var aro=adresse.charAt(3);
            var point=adresse.charAt(8);
if(aro!="@" || point!="." ||adresse.length!=12||(adresse.indexOf("@")<>adresse.lastIndexOf("@"))||(adresse.indexOf(".")<>adresse.lastIndexOf(".")))
            {
alert("adresse incorrecte");
            }
            else
            {
            alert("adresse correcte");formMail.submit();alert("donnees envoyées") ;
            }
</script>

....
Question 2 : (2 pts)
On doit ajouter dans la balise head du fichier « page.html »  la ligne suivante :
<link rel="stylesheet" type="text/css" href="style.css">

Tous les titres doivent être balisés dans la balise label :
Code Source du fichier externe :  style.css
input{
color:green;
font-size:14pt;}
label { color:red;
font-size:10pt;}

Deuxième Partie : (8 pts)
Question 1 :    (4 pts)
Design
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="q1.aspx.vb" Inherits="OFPPT.q1" %>
<html >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <center>Ajout d'un Stagiaire</center>
    <form id="form1" runat="server">
    <div>
    <pre>
numero :    <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
nom:   <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
prenom:     <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
adresse:    <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
email: <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
numero groupe<asp:DropDownList ID="DropDownList1" runat="server"
       DataSourceID="SqlDataSource1" DataTextField="num_groupe"></asp:DropDownList>    
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
       ConnectionString="<%$ ConnectionStrings:OFPPTConnectionString %>"
       SelectCommand="SELECT [num_groupe] FROM [groupe]"></asp:SqlDataSource>
    <asp:Button ID="Button1" runat="server" Text="ajouter" /
   </pre>
    </form>
</body>
</html>
CodeBehind
  Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim ConnectionString As String = "server=.\netsdk2;database=ofppt;trusted_connection=true"
   Dim CommandText As String = "insert into stagiaire values( " & TextBox5.Text & " ,'" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "'," & DropDownList1.SelectedValue & ")"
   Dim myConnection As New SqlConnection(ConnectionString)
   Dim myCommand As New SqlCommand(CommandText, myConnection)
   Try
       myConnection.Open()

       myCommand.ExecuteReader()
       myConnection.Close()
   Catch ex As Exception
       MsgBox(ex.Message)
   End Try
   Response.Write("ajout effectué"
  End Sub

Question-2 : liste des stagiaires par filière (4 pts)
design
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="OFPPT._Default" %>
<html>
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="Form2" runat="server">
   <p>
       Selection d'une filiere:
            <asp:DropDownList id="DropDownList1" runat="server" AutoPostBack="True"
     DataSourceID="SqlDataSource1" DataTextField="num_filiaire"></asp:DropDownList>
       &nbsp;
       </p>
   <asp:datagrid id="DataGrid1" runat="server" CellSpacing="1" GridLines="None" CellPadding="3" BackColor="White" ForeColor="Black" EnableViewState="False">
       <HeaderStyle font-bold="True" forecolor="white" backcolor="#4A3C8C"></HeaderStyle>
       <ItemStyle backcolor="#DEDFDE"></ItemStyle>
   </asp:datagrid>
   <asp:SqlDataSource ID="SqlDataSource1" runat="server"
       ConnectionString="<%$ConnectionStrings:OFPPTConnectionString%>"
       SelectCommand="SELECT [num_filiaire] FROM [filiaire]"></asp:SqlDataSource>
    </form>
</body>
</html>
CodeBehind
Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DropDownList1.SelectedIndexChanged
   Dim ConnectionString As String = "server=.\netsdk2;database=ofppt;trusted_connection=true"
   Dim CommandText As String
   Dim filtre As String = DropDownList1.SelectedValue
   CommandText = "select s.* from stagiaire s,groupe g where g.num_groupe=s.num_groupe and g.num_filiere=" & filtre
   Dim myConnection As New SqlConnection(ConnectionString)
   Dim myCommand As New SqlCommand(CommandText, myConnection)
   myConnection.Open()
   DataGrid1.DataSource = myCommand.ExecuteReader()
   DataGrid1.DataBind()
   myConnection.Close()
    End Sub

....

Examen  de Fin de Formation - Session Juin 2012

Eléments de Correction


Filière : Techniques de Développement  Multimédia

Niveau : Technicien Spécialisé
Epreuve : Théorique
Barème  :  20 pts
Durée     :  4h30mn




Dossier 1 (4 pts)
-          Voir cours
Dossier 2 (8 pts)
1.    Créer les tables Clients, Commandes et DetailsCommande en précisant les clés primaires et étrangères. (2 pts)
CREATE TABLE Clients(
      CodeClt int PRIMARY KEY IDENTITY(1,1) NOT NULL,
      Société varchar(50) ,
      Adresse varchar(50) ,
      CodePostal int ,
      Ville varchar(50) ,
      Tel varchar(50)
 )
CREATE TABLE Commandes(
      NumCmd int PRIMARY KEY NOT NULL,
CodeClt int NOT NULL FOREIGN KEY REFERENCES Clients(CodeClt) ON DELETE CASCADE ON UPDATE CASCADE ,
      DateCmd datetime ,
      DateLivraison datetime ,
      Destinataire varchar(50) ,
      AdresseLivraison varchar(50)
)
CREATE TABLE DetailsCommande(
NumCmd int NOT NULL FOREIGN KEY REFERENCES Commandes(NumCmd) ON DELETE CASCADE ON UPDATE CASCADE ,
      RefProd varchar(50) NOT NULL FOREIGN KEY REFERENCES  
      Produits(RefProd) ON DELETE CASCADE ON UPDATE CASCADE,
      Quantité int NULL,
      PRIMARY KEY (NumCmd, RefProd)
)
2.    Mettre en place les contraintes d’intégrité suivantes :
a.   Le code postal doit être un numéro de 5 chiffres. (0,5 pt)
....
ALTER TABLE Clients ADD CONSTRAINT ck_codePos check(CodePostal like'[0-9][0-9][0-9][0-9][0-9]')
b.   La date de commande doit être antérieure à la date de livraison. (0,25 pt)
ALTER TABLE Commandes ADD CONSTRAINT ck_Date
check(DateCmd < DateLivraison)
c.   La référence de produit doit comporter au moins 3 caractères et doit commencer par 2 caractères alphabétiques et non numériques. (0,75 pt)
ALTER TABLE Produits ADD CONSTRAINT ck_refProd
check(RefProd like'[a-zA-Z][a-zA-Z].%')

3.    Lister les commandes entre les deux dates 20/05/2011 et 19/05/2013. (0,25 pt)
Select * from Commandes where DateCmd between '20/05/2011' and '19/05/2013'

4.    Lister les produits de la catégorie « Informatique » (triés par RefProd).  (0,5 pt)
Select Produits.* from Produits, Categories Where Produits.CodeCat = Categories.CodeCat and NomCat = 'Informatique' order by RefProd

5.    Donner le nombre de commandes par produit.  (0,5 pt)
Select RefProd, count(NumCmd) as 'Nombre de commandes' From DetailsCommande group by RefProd
6.    Lister les clients qui n’ont pas fait une commande depuis 5 ans. (1 pt)
Select Clients.* from Clients Where CodeClt not in (Select CodeClt from Commandes Where datediff(year, DateCmd, getdate())<5)
7.    Supprimer les produits appartenant à la catégorie « Sport ».  (0,5 pt)
Delete from Produits Where Produits.CodeCat = (Select Categories.CodeCat from Categories Where NomCat = 'Sport')
8.    Modifier la structure de la table Clients afin d'ajouter un champ email. (0,5 pt)
ALTER TABLE Clients ADD email varchar(50)
9.    Afficher le montant total de chaque commande. (1,25 pts)
Select NumCmd, sum(P.PrixUnitaire * Dc.Quantité) As 'Montant Total' From DetailsCommande Dc, Produits P where Dc.RefProd=P.RefProd group by NumCmd

....
Dossier  3 (8 pts)
Partie 1 : (4 pts)
1- Ecrire le code HTML correspondant au formulaire. (2 pts)
<html>
<head>
  <title>Demande d'emploi</title>
  <meta http-equiv="Content-Type" content="text/html; utf-8" />
</head>
<body>
  <form name="form1" enctype="multipart/form-data" method="post">
    <h2>Demande d'emploi</h2>
    <div>DevelopInfo  Sarl.</div>
    <p>
      <label for="elt1">Nom complet <span>*</span></label> <br />
<input name="elt1" type="text" size="25" />
    </p>
    <p>
<label for="elt2">Adresse Email <span>*</span></label> <br />
<input name="elt2" type="text" maxlength="255" />
    </p>
    <p>
<label for="elt3">Téléphone<span>*</span></label> <br />
<input name="elt3" type="text" value="05" size="2" maxlength="2" />
-
<input name="elt3_1" type="text" size="8" maxlength="8" />
    </p>
    <p>
<label for="elt4">Profil de compétences<span>*</span></label> <br />
<select name="elt4">
<option value="" selected="selected"></option>
<option>Infographiste</option>
<option>Ingénieur Logiciel</option>
<option>Administrateur Système</option>
<option>Développeur Web</option>
</select>
    </p>
    <p>
<label for="elt5">Etes-vous prêt à déménager ?</label>    <br />
<input name="elt5" type="radio" value="Oui" checked="checked" /> Oui <br />
<input name="elt5" type="radio" value="Non" /> Non <br />
    </p>
    <p>
<label for="elt6">Salaire souhaité</label> <br />
<input name="elt6" type="text" size="10" />
    </p>
    <p>
<label for="elt7">Quand pouvez-vous commencer? <span>*</span></label> <br />
<input name="elt7" type="text" size="12" maxlength="10" />
    </p>
    <p>
<label for="elt8">Joindre une copie de votre CV</label> <br />
<input name="elt8" type="file" size="12" /> <br />
<small>Documents Word ou PDF seulement</small>
    </p>
    <p>
<label for="elt9">Questions et commentaires</label> <br />
<textarea name="elt9" rows="10" cols="50">Entrer vos questions et vos  
commentaires...</textarea>
    </p>
    <p>
<input name="btnEnvoyer" type="submit" value="Envoyer" />
<input name="btnEffacer" type="reset" value="Effacer" />
    </p>
  </form>
</body>
</html>

2- Ecrire le code CSS pour la présentation afin de mettre :

a.    La page à une couleur de fond grise, avec le nom de police « Lucida Grande » et une taille de 95% ; (0,75 pts)
body{
            background-color : #ccc ;
            font-family: "Lucida Grande" ;
            font-size: 95%;
}

b.    Le formulaire au centre de la page web, à une couleur de fond blanche, avec une largeur de 50% de la page, une marge intérieure de 20px et une bordure en gris clair de taille 1px ; (0,5 pt)
form{
            margin: 0 auto;
            background-color : #fff ;
            width: 50%;
            padding: 20px;
            border: 2px solid #ccc;
}

c.    Les étiquettes (labels) en gras ; (0,25 pt)
label{
            font-weight: bold;
      }

d.    Les étoiles (*) en rouge ; (0,25 pt)
span{
            color: #ff0000;
      }

e.    Une bordure qui sépare le titre et les éléments du formulaire. (0,25 pt)
form div{
            border-bottom: 1px dotted #000;
      }

Partie 2 : (4 pts)
1- Créer une fonction JavaScript qui contrôle la saisie : (2,75 pt)
function verifForm()
{
  var nom = document.form1.elt1.value;
  var mail = document.form1.elt2.value;
  var tel1 = document.form1.elt3.value;
  var tel2 = document.form1.elt3_1.value;
  var profil = document.form1.elt4.value;
  var salaire = document.form1.elt6.value;
  var dateDebut = document.form1.elt7.value;

  var msg = "";

....
  //Question a
  if(nom == "" || mail == "" || tel1 == "" || tel2 == "" || profil == "" ||     
  dateDebut == "")
msg += "Les champs marqués en (*) sont obligatoires !\n" ;
           
  //Question b
  if(mail.indexOf("@") == -1)
      msg += "L'adresse E-mail est invalide\n" ;
     
  //Question c - il n’est pas demandé de vérifier la validité de la date
  if (dateDebut.length > 0)
  {
      var tabDate = dateDebut.split('/');
      var annee = parseInt(tabDate2]) ;
var mois = parseInt(tabDate1]) ;
var jour = parseInt(tabDate0]) ;
      var dateAujourdhui = new Date();
      var dateTest = new Date(annee, mois-1, jour);

      if (tabDate.length != 3 || (jour <= 0 || jour > 31) || (mois <= 0 ||  
      mois > 12) || dateTest.toString() == 'Invalid Date' )
            msg += "Le format de la date est incorrect (JJ/MM/AAAA) \n" ;

      if(dateTest <= dateAujourdhui)
            msg+="La date doit être postérieure à la date d'aujourd'hui\n";
  }
     
  //Question d
  if(salaire != "" && (isNaN(salaire) || (salaire <999 || salaire >99999)))
      msg += "Le salaire doit être un nombre compris entre 999 et 99999\n";
     
  //Question e - On peut utiliser les RegExp
  if(isNaN(tel1) || isNaN(tel2) || tel1.length != 2 || tel2.length != 8 || 
  tel1.charAt(0) != 0 || (tel1.charAt(1) != 5 &&  tel1.charAt(1) != 6))
      msg += "Le numero de téléphone doit respecter le format marocain \n";
           
  if(msg != "")
  {
      alert(msg)
      return false ;
  }
  return true ;
}

2-  La deuxième fonction JavaScript. (0,75 pt)
function resetTxt()
{
      var txt = document.form1.elt9;

      if(txt.value == 'Entrer vos questions et vos commentaires...')
      {
            txt.value = ''; 
      }
      else if (txt.value == '') {
            this.value = 'Entrer vos questions et vos commentaires...';
      }
     
}


3- Appeler les deux fonctions (des 2 questions précédentes 1 et 2) dans votre script en utilisant les événements appropriés. (0,5 pt)      

      document.form1.onsubmit = verifForm ;
      document.form1.elt9.onfocus = resetTxt ;
      document.form1.elt9.onblur = resetTxt ;
....

Enregistrer un commentaire

 

Vous pouvez nous contacter via notre compte Instagram