TDM - Correction d'Examen de Fin de Formation Théorie, 2011 et 2012
....
Question 1 (6 pts) : code html et code javascript.
....
....
....
....
....
document.form1.onsubmit = verifForm ;
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>
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>
</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