Showing posts with label HTML. Show all posts
Showing posts with label HTML. Show all posts

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.

Examen Fin Formation - Théorique - 2007 - HTML - Réseaux - ADO.NET - UML - JAVA - Merise

Examen de Fin de Formation - Théorique - Session Juin 2007

Dossier 1 – Connaissance générales HTML - Réseaux - ADO.NET - SQL Server: (8Pts)


1. Soit le code HTML suivant :
<html>
<head>
</head>
<body TEXT="#000000" BGCOLOR="#ffffff" LINK="#000020" VLINK="#666666" ALINK="#660000" TOPMARGIN="0" LEFTMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
     <table align="center" border="0" cellPadding="0" cellSpacing="0" width="75%">
          <tr BGCOLOR="white"  onMouseOver="this.bgColor='red';" onMouseOut="this.bgColor='green';">
          <td align="middle"><font size="3">Ligne 1</FONT></TD></TR>
          <tr><td HEIGHT="2">Ligne 2</TD></TR>
     </TABLE>
</body>
</html>

     a. Interpréter ce code en spécifiant ce que sera affiché dans un navigateur. (0.5Pt)
     b. Que se passe t-il, quand le pointeur survole sur la ligne 1. (1Pt)
     c. Que se passe t-il, quand le pointeur quitte la ligne 1. (1Pt)
     d. Que se passe t-il, quand le pointeur survole sur la ligne 2. (0.5Pt)

2. On veut établir une connexion à une base de données SQL Server sans DSN, alors définir la chaîne de connexion qui permet de faire ce travail. (1Pt)
3. Proposer un schéma qui permet de décrire le fonctionnement du service IIS au moment de la connexion à une page Web ASP qui accède à une base de données SQL Server dans une  Architecture 3-tires. Expliquer le déroulement de ce processus. (1Pt)
4. QCM (0.25Pt/Question) – (3Pts)

Question N° 1
Donnez, parmi les classes d’objets ADO suivantes, celles qui représentent des objets fonctionnant en mode connecté :
a. SQLConnection
b. DataTable
c. SQLCommand
d. DataRow

Question N° 2
Vous souhaitez créer une application en .Net et privilégiez la performance de l’application.
Vous choisissez :
a. Le fournisseur de données géré OLEDB Provider (.NET OLEDB Data Provider)
b. Le fournisseur de données géré SQL Provider (.NET SQL Server Data Provider)
c. De maintenir les connexions à la base de données ouvertes le plus longtemps possible.
d. De minimiser le temps de connexion de l’application à la base de données et de travailler  avec des objets déconnectés.

Question N° 3
Vous souhaitez afficher dans une DataGrid des données filtrées selon un critère exprimé sur la valeur d’une colonne d’un objet DataTable. Quelle solution privilégiez-vous ?
a. Vous modifiez la commande associée à la propriété SelectCommand du DataAdapter et faîtes appel à la méthode Fill de ce dernier.
b. Vous avez recours à la méthode Select de l’objet DataTable
c. Vous créez une DataView en spécifiant le filtre adéquat.
d. Vous parcourez les lignes de la datatable et affectez la propriété false à la propriiété Visible des lignes que vous souhaitez ignorer.

Question N°4
Parmi ces affirmations concernant ADO.Net, une est fausse : Laquelle ?
a. Les objets connectés (Connection, Command, et DataAdapter) sont différenciés en fonction du fournisseur de données qui peut-être un fournisseur OLEDB, un pilote ODBC ou un fournisseur spécialisé pour une base de données particulière (SQL Server, Oracle, …).
b. L’objet DataAdapter est un « pont » qui permet de reporter les mises à jour effectuées sur les objets DataTable dans les tables de la base de données à laquelle il est connecté.
c. Un objet DataTable ne peut être constitué qu’à partir d’une seule table. Il est en effet impossible de créer une DataTable à partir d’une requête portant sur plusieurs tables.
d. La méthode Fill du DataAdapter permet de récupérer la liste des champs de la requête sous-jacente de la commande SelectCommand du DataAdapter et de récupérer les lignes de données renvoyées par cette requête.

Question N° 5
JDBC permet d’accéder aux données présentes dans un SGBDR sans se préoccuper des détails techniques et des spécificités des différents moteurs relationnels
a. VRAI
b. FAUX

Question N°6
Les données d'un ResultSet ne sont pas consultables plusieurs fois
a. VRAI
b. FAUX

Question N° 7
Pour établir une connexion avec un SGBDR, il faut avoir un objet qui réalise l'interface Connexion
a. VRAI
b. FAUX

Question N° 8
Un Serveur IlS 5.0 sur un serveur Windows 2000 comporte comme services:
a. Serveur de vidéo en streaming
b. Serveur Web
c. Serveur de News
d. Serveur Ftp
e. Serveur de fichiers Windows

Question N° 9
IIS signifie
a. Intemet Information Service
b. Information Integral Server
c. Intranet Informatique de Service

Question N°10
Quel est le port par défaut du protocole http:
a. 21
b. 81
c. 80
d. 25

Question N° 11
Quel est le chemin physique du répertoire du site web par défaut
a. C: \Winnt\InetPub\WWWRoot
b. C:\Mes Documents\WWWRoot
c. C :\Program Files\Microsoft IIS\WWWRooot
d. C :\InetPub\WWWRoot
e. C :\Winnt\System32\Web

Question N° 12
Peut-on gérer plusieurs sites Web distinct sur IlS installé sur Windows 2000 pro
a. Qui
b. Non

Dossier 2 – UML (8Pts):

MonAuto est une entreprise qui fait le commerce, l'entretien et les réparations de voitures.
MonAuto désire un logiciel de gestion des réparations; elle dispose déjà d'un logiciel comptable. Les factures de réparations seront imprimées et gérées par le logiciel comptable.
Le logiciel de gestion des réparations devra communiquer avec le logiciel comptable pour lui transmettre les réparations à facturer.
Le logiciel de gestion des réparations est destiné en priorité au Chef d'atelier, il devra lui permettre de saisir les fiches de réparations et le travail effectué par les divers employés de l'atelier.
Pour effectuer leur travail, les mécaniciens et autres employés de l'atelier vont chercher des pièces de rechange au magasin. Lorsque le logiciel sera installé, les magasiniers ne fourniront des pièces que pour les véhicules pour lesquels une fiche de réparation est ouverte; ils saisiront directement les pièces fournies depuis un terminal installé au magasin.
Lorsqu'une réparation est terminée, le Chef d'atelier va essayer la voiture. Si tout est en ordre, il met la voiture sur le parc clientèle et bouclera la fiche de réparation informatisée. Les fiches de réparations bouclées par le Chef d'atelier devront pouvoir être importées par le comptable dans le logiciel comptable.
Une réparation est toujours relative à un véhicule, elle nécessite le travail d'un ou plusieurs employés selon leur qualification et, éventuellement, des pièces de rechange.
La facture est envoyée au propriétaire du véhicule ou à une compagnie d'assurance en cas d'accident; une compagnie d'assurance est un client pour le garage. En cas de réparation en garantie, aucune facture n'est envoyée.
Le modèle doit contenir les renseignements qui permettent de faire la facture, selon les règles suivantes :
     - Un véhicule vendu par MonAuto bénéficie d'une année de garantie à partir de la date de livraison.
     - Le montant de la facture s'obtient en additionnant :
          •    Le nombre d'heure de chacun des employés ayant participé à la réparation * taux horaire de l'employé en fonction de sa qualification (chef, mécanicien, manœuvre...)
          •    Prix unitaire * quantité de chaque pièces utilisées (4 bougies, 1 filtre à air...)
Pour bénéficier d'une réparation sous garantie, le client doit amener son véhicule à l'atelier avant l'expiration du délai de garantie. En fin de période de garantie, l'atelier peut être surchargé et le Chef d'atelier ne pourra pas toujours effectuer la réparation avant la date d'expiration. Pour résoudre ce dilemme et éviter toute réclamation, lorsqu'un client prend un rendez-vous pour effectuer une réparation en garantie le Chef d'atelier prépare une fiche de réparation "garantie" et y indique la date de la demande de rendez-vous du client, en plus des 2 dates de réception et restitution du véhicule pour la réparation; cette date de demande de rendez-vous sera utilisée comme critère de réparation en garantie.
Restrictions
Nous ne gérons pas l'historique des changements de propriétaires des voitures; chaque fois qu'une voiture change de propriétaire, un nouveau véhicule sera créé avec indication de la nouvelle immatriculation, du nouveau propriétaire et de la date de livraison s'il s'agit d'une vente de MonAuto.

Les véhicules qui appartiennent à MonAuto, le parc de voitures neuves et d'occasion, sont traités comme des véhicules sans propriétaire et sans indication d'immatriculation.
Les informations historiques non expressément demandées, comme les prix de pièces de rechanges, les taux horaire, les qualifications des employés, etc. ne doivent pas être traitées.
1. Concevez le diagramme de classe (5Pts).
2. Concevez le modèle de cas d'utilisation de la  gestion des réparations (3Pts)

Dossier 3 - JAVA (6Pts) :

On souhaite traiter des comptes bancaires. Un compte bancaire possède à tout moment une donnée entière, son solde. Il est caractérisé par ailleurs par un code donné sous forme de chaîne de caractères, et un titulaire qui est une personnephysique (nom,prenom). Ce solde peut être positif (compte créditeur) ou négatif (compte débiteur). Au départ, un compte bancaire a un solde nul, un code nul par défaut, et un titulaire inconnu. Il est aussi possible de créer un compte en précisant son solde initial, son titulaire et son code initial.
Utiliser son compte consiste à pouvoir y faire des dépôts et des retraits. Pour ces deux opérations, il faut connaître le montant de l'opération et vérifier que le code proposé est bien le code du compte.
L'utilisateur peut aussi consulter le solde de son compte.
1. Créer une classe PersonnePhysique, avec un constructeur , une méthode d'affichage et une méthode modification. (2Pts)
2. Créer une classe CompteBancaire prenant en compte la description précédente. Cette classe comprendra les méthodes suivantes : (2Pts)
     • Constructeurs
     • Une méthode de modification du code
     • Une méthode de consultation du solde
     • Une méthode de dépôt
     • Une méthode de retrait
3. La banque souhaite autoriser pour certains clients un découvert. Par défaut, ce découvert autorisé est nul. Une méthode decouvertAutorise permettra d'en spécifier la valeur. Un retrait est alors possible tant que le client ne dépasse pas ce découvert autorisé. Le cas échéant, le retrait est refusé. (2Pts)
     • Précisez le(s) attribut(s) à ajouter à la classe comptebancaire et modifiez le(s) constructeur(s).
     • Ecrivez la méthode decouvertautorise.
     • Modifiez la méthode de retrait.

Dossier 4 – Procédures stockées & Triggers ( 10Pts) :

Vous participez à la réalisation d’un logiciel permettant de gérer les comptes bancaires d’un particulier.
Dans un premier temps, l’utilisateur définit les différents comptes à gérer en déclarant pour chacun le numéro de compte, le nom de la banque,  …
L’utilisateur saisit ensuite chacune des opérations réalisées sur l’un de ces comptes. Une opération correspond à un débit (paiement par chèque de la facture de téléphone, retrait d’espèce à l’aide d’une carte bancaire, …) ou à un crédit (dépôt à la banque de chèque reçu par exemple).
Chaque fin de mois, l’utilisateur reçoit un relevé de compte ( un par compte bancaire). Il effectue alors le rapprochement entre les opérations qu’il a saisies et celles constatées par la banque :
     - pointage des opérations saisies apparaissant sur le relevé. Ce pointage consiste à mémoriser le fait qu’une opération a été constatée par la banque. L’opération est dite « pointée » et le numéro du relevé est mémorisé.
     - Ajout des opérations non saisies apparaissent sur le relevé (réception d’un virement correspondant au salaire mensuel par exemple). Ces opérations sont automatiquement pointées puisqu’elles ont été constatées par la banque.
Les opérations permettent de calculer le solde d’un compte, différence entre la somme des opérations de crédit et la somme des opérations de débit. En fait, chaque compte possède deux soldes :
     - le solde réel qui prend en considération toutes les opérations saisies par l’utilisateur, qu’elles aient été constatées ou non par la banque.
     - Le solde en banque qui ne prend en considération que les opérations constatées par la banque, c’est à dire ayant fait l’objet d’un pointage à partir d’un relevé.
Le calcul des soldes des comptes conduit à additionner un grand nombre d’opérations, et ce depuis la mise en service de l’application. Pour éviter ces calculs, il a été décidé de mémoriser les soldes réels et « en banque » dans la table Compte.
Dès lors se pose le problème de la cohérence entre les opérations et le solde des comptes. La solution adoptée est le recours à un ensemble de procédures stockées et de déclancheurs destinés à maintenir à jour les soldes dans la table COMPTE.

Schéma de la base de données :
     Banque (Bid, Bnom)
     Compte ( Cid, Cnuméro, Clibelle, CsoldeReel, CsoldeBanque, #Cbanque)
     Operation (Oid, Odate, Omantant, Osens, #Oreleve, #Ocompte)
     Releve (Rid, Rdate, #Rcompte)

Le MCD correspondant au schéma de la base de données est :
Examen Fin Formation - Théorique - 2007 - HTML - Réseaux - ADO.NET - UML - JAVA - Merise
Examen Fin Formation - Théorique - 2007

Remarques :
- CsoldeReel et CsoldeBanque représentent respectivement le solde réel et le sole en banque du compte.
- Osens est un caractère mémorisant la nature de l’opération (D : Débit, C : Crédit)
- Oreleve contient le numéro de relevé Rid ayant permis de pointer l’opération. Cet attribut contient la valeur NULL si l’opération n’a pas encore été pointée.

Rédiger l’ensemble des procédures stockées et des déclencheurs nécessaires à la gestion des informations calculées CsoldeReel et CsoldeBanque :
- PROCEDURE MAJSOLDEBANQUE (2Pts)
- PROCEDURE MAJSOLDEREEL (2Pts)
- TRIGGER INSERTION OPERATION (2Pts)
- TRIGGER MISE A JOUR OPERATION (2Pts)
- TRIGGER SUPPRESSION OPERATION (2Pts)


Dossier 5 – MERISE ( 8Pts) :

Le service de formation d'une entreprise souhaite gérer ses actions de formation. Afin d'adresser des convocations aux employés,  on enregistre les agents avec leur numéro,  leur nom,  prénom ainsi que l'établissement auquel ils appartiennent (l'entreprise est implantée dans différents lieux géographiques). De cet établissement on connaît le code,  le nom et l'adresse.
Un certain nombre de cours sont offerts aux employés qui peuvent s'y inscrire. Ces cours sont connus dans un catalogue,  où ils figurent avec un code et un intitulé. Tous les cours sont animés par des employés internes à
l'entreprise. On s’assurera des cours que les personnes affectées à l'animation ne sont pas sujettes à une inscription à ce même cours. Personne dans cette entreprise n'ayant le don d'ubiquité.
On désire établir des convocations aussi bien pour le personnel inscrit que pour le personnel enseignant. A ce sujet,  il faut savoir que tout cours ( initiation informatique,  anglais débutant,  espagnol perfectionnement, ...) est planifié plusieurs fois par an et que l'on parle plus volontiers de session. Une session est repérée par un numéro et a un intitulé (printemps, été, ...). La planification consistera à décider quels cours seront offerts dans une session, et pour chacun d’entre eux quelle en sera la date et la durée, puis de les inscrire au catalogue. Les inscriptions ou animations ou convocations se font par référence aux cours et aux sessions.
Lors de la convocations on fait savoir la liste des ouvrages (dont on donne le numéro, la référence et l'intitulé) qu’il est conseillé de consulter pour un cours donné.

1- Construire le modèle conceptuel de données. (4Pts)
2- En déduire :
     a- Le modèle logique de données (2Pts)
     b- Le modèle physique de données (2Pts)

Examens de fin de module : Développement et déploiement de sites Web dynamiques Asp.net (Vb.net, Csharp), (Sql server, Oracle), XML, DTD, XSD, XPATH, XSLT


Développement et déploiement de sites Web dynamiques Asp.net (Vb.net, Csharp), (Sql server, Oracle), XML, DTD, XSD, XPATH, XSLT

Examen Fin Module 1 :


Sujet : Gestion des reservation en ligne des chambres d'hotel
Soit la base de données présentée par le modèle relationnel suivant :
          CHAMBRE(NUM_CHAMBRE,TYPE_CHAMBRE, PRIX)
          CLIENT(ID_CLIENT, NOM_CLIENT, LOGIN, PASSWORD)
          RESERVATION(#NUM_CHAMBRE, #ID_CLIENT, DATE_RESERVATION, NOMBRE_JOUR)
1) Créer la base de données « GESTION DES RESERVATIONS D’HOTEL », en implémentant les différentes contraintes d’intégrité possibles.
2) Créer une page d’authentification des clients avec gestion des erreurs d’authentification.
3) Créer une page qui affiche la liste des chambres d’hôtel par catégorie (type de chambre);
Explication : sur la même page et à partir d’une liste déroulant contenant les différentes type de catégorie de chambre ; afficher la liste des chambres par catégorie.
4) Modifier la page précédente afin qu’elle puisse nous renvoyer vers une autre page contenant le détail sur la chambre sélectionnée ; avec la possibilité d’effectuer une réservation en ligne (ajouter la page de réservation).
5) Créer la page qui permet à un client, une fois authentifie, de consulter l’historique de ses réservations ainsi que leur montant total.
6) Ajouter à la dernière page le nombre d’utilisateur authentifie, qui ont visité notre site de réservation en ligne.
7) Ajouter un web service permettant d’offrir au programmeur d’application dynamique la possibilité d’intégrer le catalogue des chambres dans n’importe quel site web dynamique.
8) Ajouter dans la page de la question 5 une option qui permet de générer un fichier XML contenant les réservations du Client connecté.
9) Créer un document XSL qui permet de transformer le document XML de la question précédant en un document HTML. Le résultat à produire doit contenir un titre ainsi qu’un tableau contenant les informations des réservations.

Développement et déploiement de sites Web dynamiques Asp.net (Vb.net, Csharp), (Sql server, Oracle), XML, DTD, XSD, XPATH, XSLT

Examen Fin Module 2 :


Exercice 1 :
On souhaite gérer le parc automobile d’une entreprise.
La base de données se présente ainsi :
          Marque(code_marque, nom_marque)
          Vehicule(numero_serie, immatriculation, date_sortie, #code_marque)
          Employe(matricule, nom, prenom, login, passe)
          Mission(Numero_mission, date_mission, #matricule, #numero_serie)
1) Créer la base de données.
2) Ajouter des déclencheurs qui empêchent la modification ou la suppression dans les tables « Marque ».
3) Créer un style pour votre site ainsi que la page master.
4) Ajouter un menu avec les options suivantes :
          • Chercher un véhicule par marque (page publique)
          • Chercher un employé (page publique)
          • Chercher une mission (page accessible uniquement aux utilisateurs inscrits)
          • Ajouter une mission (page accessible uniquement aux utilisateurs inscrits)
5) Développer la page de mise à jour des véhicules.
6) Développer les deux pages de recherche.
7) Ajouter la page d’inscription des utilisateurs.
8) Ajouter un fournisseur de sécurité et développer le code de la fonction « ValidateUser ».
9) Ajouter la page de connexion des utilisateurs.
10) Dans la page master, ajouter un loginStatus et un loginView.
11) Configurer la sécurité sur le fichier web.config.
12) Créer la page permettant d’ajouter une mission.

Exercice 2 :
Créer la DTD correspondant au fichier XML suivant :

efm-Développement-et-déploiement-de-sites-Web-dynamiques-Asp.net-Vb.net-Csharp-Sql server-Oracle-XML-DTD-XSD-XPATH-XSLT-1



Développement et déploiement de sites Web dynamiques Asp.net (Vb.net, Csharp), (Sql server, Oracle), XML, DTD, XSD, XPATH, XSLT

Examen Fin Module 3 :


Exercice 1 :
Le système d'achat groupé, également appelé "deal" consiste à réunir plusieurs personnes souhaitant acheter un même produit ou service. Les clients fidèles du site peuvent bénéficier des bons de réductions lors des achats en lignes.
Les concepteurs de la base de données ont élaborés le modèle logique de données suivants :
          Consommateur (CIN, Prénom, Nom, Téléphone, Adresse, Ville, Date_ naissance, email)
          BonReduction (Code_Bon, montant, date_validité, #CIN)
1. Créer la base de données de l’application ajouter quelques enregistrements dans les tables.
2. Développer une page d’accueil et le menu du site qui incluse les opérations demandées par les questions suivantes (le menu doit être accessible au niveau du site).
3. Créer une page permettant d’ajouter un consommateur, tous les champs sont obligatoires et un message d’erreur doit être affiché si le format de l’adresse mail est invalide.
4. Développer une page de connexion au site, le consommateur doit spécifier son adresse mail et son mot de passe pour accéder au site. Un message d’erreur doit être affiché si ces informations ne sont pas correctes, le site doit être sécurisé.
5. Une fois l’utilisateur est connecté son nom doit être affiché au niveau de l’ensemble des pages du site ainsi que le nombre des visiteurs actuellement connectés au site.
6. Créer une page web permettant de rechercher et d’imprimer les bons de réduction supérieur à un montant saisit par un utilisateur.
7. créer un service web permettant de vérifier si un bon d’achat est valide ou pas (une valeur booléenne doit être retournée).
8. Créer une page web permettant de consommer le service web : l’utilisateur saisie le numéro de bon de réduction. Le message « bon de réduction valide » si la réponse du service web est true, sinon afficher le message « bon de réduction invalide».

Exercice 2 :
On dispose de la DTD deal.dtd :

efm-Développement-et-déploiement-de-sites-Web-dynamiques-Asp.net-Vb.net-Csharp-Sql server-Oracle-XML-DTD-XSD-XPATH-XSLT-2


Créez un document XML vérifiant cette DTD en incluant la DTD dans le document.

Autres EFM (s) sur le lien suivant :
t-d-info-Télécharger Examen de fin de module :  Développement et déploiement de sites Web dynamiques Asp.net (Vb.net, Csharp), (Sql server, Oracle), XML, DTD, XSD, XPATH, XSLT

Examens de fin de module : les applications hypermédias (HTML, CSS, JavaScript)


Application hypermédias

Examen Fin Module 1 :


Exercice 1 :
Créez un tableau de 600 pixels de large contenant cinq lignes et trois colonnes avec des bordures de 4 pixels, un espacement entre cellules de 10 pixels.

Exercice 2 :
Nous allons réaliser un mini-site. Réalisez une page index.html sur le modèle donné ci-dessous.
t-d-info-efm-Application-hypermédias-3


Exercice 3 : Nombre Mystérieux
• Il s'agit de faire trouver un nombre entier nbInconnu à l'utilisateur. Ce nombre sera obtenu au hasard, entre 0 et 100, par exemple.
• On n'accorde qu'un nombre d'essais limités maxEssai, fixé en constante au début du programme.
• A chacun des essais dans le composant Proposition, le joueur donne un nombre NbEssai et par appel d'une fonction provoquée par l'événement onChange, il obtiendra dans le composant Message, « c'est plus » ou « c'est moins ».
• Deux conditions peuvent donc arrêter la répétition des essais :
           1. Le joueur a découvert nbInconnu
           2. OU il a épuisé le nombre total d'essais permis maxEssai
• Si le nombre inconnu a été trouvé avant le nombre maximum d'essais, le programme affichera le message dans le composant Réponse "Vous avez trouvé en ... essais", sinon il affichera "Le nombre à touver était : ......".
• Prévoir la possibilité pour le joueur de recommencer une partie (bouton Nouveau jeu).
• A tout moment, le joueur peut demander la réponse (bouton Réponse).
Voici l'interface souhaitée :
t-d-info-efm-Application-hypermédias-8

Application hypermédias

Examen Fin Module 2 :


Exercice 1 :
1- Créez le tableau suivant en fusionnant les colonnes.
t-d-info-efm-Application-hypermédias-1

2- Créez le tableau suivant en fusionnant les lignes.
t-d-info-efm-Application-hypermédias-2


Exercice 2 :
Pour s'inscrire dans un forum, un utilisateur doit remplir le formulaire suivant :
t-d-info-efm-Application-hypermédias-4

1- Ecrire le code HTM de la page web du formulaire.
2- Ecrire le permettant de respecter les règles :
           a- Tous les champs sont obligatoires.
           b- La date de naissance doit être vaide : 1<= jour <=31, 1<= mois <=12, année>=1910,
           c- Le champ (Mot de passe) et e champ (Confirmer le mot de passe) doivent être égaux.
3- Ajouter le code JavaScript qui permet de fermer automatiquement la fenêtre du navigateur au bout de 20 secondes.

Exercice 3 :
• On entre une expression arithmétique dans une ligne de texte nommée calcul. (On pourra par la suite en fournir au hasard)
• L'enfant doit proposer une réponse dans le champ nommé reponse
• Prévoir un 3ème champ, nommé message, pour accueillir un message.
• Si la saisie dans reponse est vide, alors afficher dans message "Propose une réponse", sinon comparer la réponse à la valeur (avec la fonction eval () qui évalue une chaîne de caractère).
• Le message sera suivant le cas "réponse fausse .. corrige" ou bien "bonne réponse" .
• Un bouton marqué résultat devrait permettre à tout moment d'obtenir la réponse exacte dans le champ message.
• La partie d'analyse de la réponse sera programmée dans une fonction verif() Voici l'interface souhaitée :
t-d-info-efm-Application-hypermédias-9

Application hypermédias

Examen Fin Module 3 :


Exercice 1 :
Créer un menu horizontal en HTML et CSS.

Exercice 2 : Créez un formulaire divisé en trois groupes.
Le premier groupe permet d’obtenir les coordonnées du visiteur. Il contient trois zones de texte pour la saisie du nom, du prénom et de l’e-mail et une zone de mot de passe.
Ces champs sont suivis d’un groupe de boutons radio pour indiquer le sexe de la personne.
Enfin, ce groupe se termine par une liste de sélection qui contient trois groupes d’options pour le choix du pays.
Le deuxième groupe permet de saisir des informations sur les goûts du visiteur. Il comprend trois cases à cocher et une zone de texte multilignes de 50 caractères de large et de 5 lignes de haut.
Le troisième groupe contient un composant d’envoi de fichier et un champ caché indiquant la taille maximale des fichiers fixée à 10 Ko. Le formulaire se termine bien évidemment par l’insertion des boutons d’envoi et de réinitialisation.
t-d-info-efm-Application-hypermédias-10


Exercice 3 :
On se propose d'écrire une page HTML et des fonctions Javascript permettant de jouer le Sudoku. (sans en expliquer les règles ici) Pour cela :
1- Ecrire les lignes HTML permettant d'obtenir le tableau suivant : les cellules sont des zones de texte d'un formulaire. Bien sûr, les cellules qui contiennent des chiffres au départ sont non modifiables par l'utilisateur. Aucun style ne devra apparaître dans les balises mais dans une feuille de style.
- Alors répondre à cette question revient à créer deux fichiers ; html et un autre css.
Remarque : pour mettre de la bordure pour le tableau ou des cases du tableau; utilisez les propriétés :
border-bottom: pour la bordure en bas du tableau ou de la case.
border-left: pour la bordure à gauche du tableau ou de la case.
border-right: pour la bordure à droite du tableau ou de la case.
border-top: pour la bordure en haut du tableau ou de la case.
t-d-info-efm-Application-hypermédias-5

2 – L'utilisateur doit entrer un chiffre dans chaque case vide. Lorsqu'il a fini, il a deux possibilités offertes par deux boutons :
Vérifier que la grille est correctement remplie ou charger la solution sur une autre page html.l.
Ecrire les lignes html permettant d'ajouter ces deux boutons au formulaire précédent sans écrire les fonctions.
t-d-info-efm-Application-hypermédias-6

Remarque :le texte des boutons est écrit en police Times new roman, de taille 10 points. La couleur du texte est rouge pour le premier et bleue pour le second ; l'aspect des boutons est en relief, l'épaisseur de leurs bordures est de 4 pixels et la couleur de fond jaune. La largeur des boutons est de 200 pixels pour le premier et 100 pixels pour le second Aucun style ne devra apparaître dans les balises mais dans la feuille de style. N’oublier pas de mettre tout le contenu de cette page dans un formulaire !!


3– Mise en place des fonctions liées aux deux boutons :
           a –Le bouton "vérifier ma grille" permet de vérifier que la grille est complètement remplie (plus aucune cellule vide et chaque cellule est remplie par le chiffre correcte). Dans le cas favorable il faut afficher un message « vous avez réussi » sinon « c’est incorrecte réessayez encore :!!! »
           b- le premier bouton permet d'ouvrir une page HTML "grille2.html" qui contient la solution. Ecrire les lignes HTML et javascript permettant d’ afficher la page html grille2. html lors du clic sur le bouton "solution dans nouvelle page". on ne demande pas d’écrire le code de la page html grille2.html.
Proposition : vous nommez chaque cellule par C11, C12, C13…. ; avec C13 est la case de la première ligne et la troisième colonne, C34 est la case de la troisième ligne et la quatrième colonne, La figure suivante montre la réponse de cette grille, alors lors de la vérification il faut vérifier si chaque case contienne me chiffre convenable alors si C11 contient par exemple le chiffre 3 alors dans ce cas on affiche message( c’est incorrecte réessayez ) ; on ne demande pas de spécifier dans les messages alert quelle est la cellule qui contient un chiffre incorrecte le message précédent suffit. .
t-d-info-efm-Application-hypermédias-7


Autres EFM (s) sur le lien suivant :
t-d-info-Télécharger Examen de fin de module : Application hypermédias

Retrouvez-nous sur Facebook
×Facebook Les Filières Informatiques