13 juin 2012

Examen de Passage Pratique 2012 - TDI - Variante 1

Examen de Passage Pratique 2012 - TDI - Variante 1



Dossier 1 : (2,5 pts)
1. Ecrire un programme qui permet de calculer et d’afficher la somme des trente premiers éléments de la série suivante : 25, 36, 47, 58, 69 … (S = 25 + 36 + 47 + 58 + 69 + …), sachant que la différence entre deux éléments successifs de cette série est toujours égale à 11. (1,25 pt)
2. Ecrire un programme qui permet de remplir un tableau de N entiers et qui cherche et affiche le premier élément, lorsqu’il existe, de ce tableau qui divise tous les autres éléments du tableau. Lorsqu’un tel élément n’existe pas, le programme affiche le message suivant : " Pas de solution ". (1,25 pt)
Exemples :
     a- Pour N=5 et le tableau comprenant les éléments suivants :
     20        12        16        4        2
Le nombre recherché est 2, car il divise toutes les autres valeurs.
     b- Pour N=4 et le tableau comprenant les éléments suivants :
     20        12        16        5
Dans ce cas, le programme affiche "Pas de solution", car aucun élément du tableau ne divise tous les autres.

Dossier 2 : (15,25 pts)
L’objet de cette application est la gestion informatisée des voyages organisés par une société possédant des bus. Chaque voyage est assuré par un seul chauffeur.
Recommandation : utiliser des listes génériques (List<T> : listes typées) de préférence.Mais vous pouvez utiliser des ArrayList ou des Collections.
1- Classe Chauffeur.
      a. Définir une classe Chauffeur dont les caractéristiques sont : CIN, Nom, Prénom. (0,5 pt)
      b. Écrire un constructeur avec tous les paramètres. (0,5 pt)
      c. Écrire les accesseurs des champs et la méthode toString() qui renverra tous les champs  séparés par tabulation. (0,5 pt)
2- Classe Bus.
      a. Définir une classe Bus dont les caractéristiques sont : Immatriculation, Marque,  Type.(0,5pt)
      b. Écrire un constructeur avec tous les paramètres. (0,5 pt)
      c. Écrire les accesseurs des champs. (0,5 pt)
      d. Écrire la méthode toString() qui renverra les informations du bus séparées par tabulation. (0,5 pt)
3- Classe Voyage
      a. Définir une classe Voyage dont les caractéristiques sont : (0,75 pt)
     - Numéro voyage : le numéro du 1er voyage créé est 1 et à chaque création d’un nouveau voyage, ce numéro doit être automatiquement incrémenté de 1. Faire le nécessaire (données+ code) pour y arriver.
     - Vchauffeur  : c’est le chauffeur qui a assuré le voyage courant.
     - Vbus : C’est le bus conduit par Vchauffeur au cours de ce voyage.
     - Date Voyage : date où a eu lieu ce voyage.
     - Ville de départ.
     - Ville d’arrivée.
     - Nombre de voyageurs : nombre des personnes qui ont effectué ce voyage.
     - Prix du billet : prix payé par chaque voyageur de ce voyage (le même prix pour tous).
     b. Ecrire un constructeur sans aucun paramètre permettant de définir la valeur du numéro du voyage et d’affecter la date système à Date voyage.(0,75 pt)
     c. Ecrire un constructeur permettant de définir les valeurs des autres champs. Ce constructeur doit faire d’abord appel au constructeur précédent. (0,75 pt)
    d. Écrire les accesseurs des champs. (0,5 pt)
    e.Ecrire la méthode toString() qui renverra le numéro du voyage, la date du voyage, le nom et le prénom du chauffeur, l’immatriculation et la marque du bus, ville de départ, ville d’arrivée et recette du voyage tous séparés par tabulation. (1 pt)
La recette du voyage = Nombre de voyageurs * Prix du billet du voyage en cours.
4- Programme principal
      a. Déclarer une liste de chauffeurs, une liste de bus et une liste de voyages accessibles par toutes les méthodes du programme principal. (0,5 pt)
      b. Ajouter une méthode rechercherChauffeur() qui recherche un chauffeur par son CIN. Si trouvé, elle retourne le chauffeur correspondant dans la liste des chauffeurs. Sinon, elle retourne la valeur null. (0,5 pt)
      c. Ajouter une méthode rechercherBus() qui recherche un bus par son immatriculation. Si trouvée, elle retourne le bus correspondant dans la liste des bus. Sinon, elle retourne la valeur null. (0,5 pt)
      d. Ajouter une méthode rechercherVoyage() qui recherche un voyage par son numéro. Si trouvé, elle retourne l’indice correspondant dans la liste des voyages. Sinon, elle retourne la valeur -1. (0,5 pt)
      e.Ajouter par code (en mode conception) trois chauffeurs à la liste des chauffeurs. (0,5 pt)
      f. Ajouter par code trois bus à la liste des bus. (0,5 pt)
     g. Ajouter par code deux voyages à la liste des voyages. Utiliser certains constructeurs et certaines méthodes déjà conçus. (0,75 pt)
     h. Concevoir le menu suivant : (en prenant en compte les indications ci-dessous)
1- Ajouter bus. (0,75 pt)
2- Ajouter voyage.(1 pt)
3- Lister tous les voyages. (0,75 pt)
4- Lister les voyages passés entre deux dates. (0,75 pt)
5- Nombre de voyageurs de l’année en cours. (0,75 pt)
6- Fin. (0,25 pt)
Indications concernant les traitements à réaliser dans le menu ci-dessus :
     • Ajouter bus :
Saisir les données nécessaires et faire le nécessaire pour que deux bus dans la liste n’aient pas la même immatriculation.
     • Ajouter voyage :
     - Le numéro du nouveau voyage est automatiquement affecté par programme et la date voyage correspond à la date système.
     - Saisir le CIN du chauffeur qui doit correspondre à un chauffeur de la liste des chauffeurs et si trouvé, le chauffeur ainsi trouvé correspond à Vchauffeur du voyage à ajouter, sinon le programme vous demandera de saisir un autre CIN.
     - Saisir l’immatriculation du bus qui doit correspondre à un bus de la liste des bus et si trouvée, le bus ainsi trouvé correspond à Vbus  du voyage à ajouter, sinon le programme vous demandera de saisir une autre immatriculation.
     - Saisir les autres données restantes et chaque fois qu’une donnée saisie n’est pas valide, le programme vous demandera de la saisir de nouveau.
     • Lister tous les voyages : Imprimer la liste de tous les voyages de la manière suivante :


Examens de Passage Pratique 2012 -   TDI - V1-V2-V3
Examens de Passage Pratique 2012 - TDI - V1


Indication : la date en haut à droite correspond à la date système.
     • Lister les voyages passés entre deux dates : Imprimer une liste des voyages semblable au niveau de la présentation à celle de la question précédente mais contenant uniquement  les voyages qui se sont déroulés entre deux dates que l’utilisateur de l’application devra saisir. En bas de la liste ainsi imprimée, indiquer le nombre des voyages listés.
     • Nombre de voyageurs de l’année en cours :
Le programme va calculer et afficher le nombre de voyageurs de l’année en cours (utiliser la date système pour récupérer l’année en cours). Ce nombre correspond au nombre total des voyageurs ayant utilisé les bus de la société pendant l’année en cours.

Dossier 3 : (2,25 pts)
On cherche à appliquer différentes mises en forme au contenu d’une zone de texte.


Examens de Passage Pratique 2012 -   TDI - V1-V2-V3
Examens de Passage Pratique 2012 - TDI - V1


1- Reproduire l’interface ci-dessus. (0,5 pt)
2- Ecrire le code de chaque bouton radio (couleur). (0,75 pt)
3- Ecrire le code de chaque case à cocher (style). (0,75 pt)
Les cases à cocher sont indépendantes : on peut combiner les effets de deux ou des trois cases.
4- Ajouter une case à cocher « Normal » pour que le texte de la zone de texte redevienne normal lorsqu’elle est activée.Lorsque cette case n’est pas activée, ce sont les autres cases qui sont prises en considération. (0,25 pt)

Examen Passage Pratique 2012 - TDI - Variante 6

Examen Passage Pratique 2012 - TDI - Variante 6


Dossier 1 : (1,5 pts)
a. Ecrire un programme dans un langage structuré permettant de saisir trois entiers positifs a, b et c (c>0) et d’afficher tous les multiples de c compris entre a et b. Exemples :
      pour a = 3, b = 30 et c = 5, les nombres obtenus sont : 5, 10, 15, 20, 25, 30
      et pour a = 0, b = 45 et c = 13, les nombres obtenus sont : 0, 13, 26, 39. (1 pt)
b. Modifier le programme précédent pour avoir les effets suivants :
Afficher un nombre par ligne et chaque fois que 10 de ces nombres (multiples de c) sont affichés, le programme affichera le message suivant « Tapez ENTREE pour continuer ». Quand l’utilisateur tape la touche « ENTREE », l’écran s’efface et on obtient une autre partie de ces nombres (s’il en reste). Le dit message s’affiche encore quand tous ces nombres ont été affichés. (0,5 pt)

Dossier 2 : (15,75 pts)
L’objet de cette application est la gestion informatisée des factures de clients, Elle doit permettre de mettre à jour la quantité stock de chaque accessoire facturé.
Recommandation : utiliser des listes génériques (List<T> : listes typées) de préférence. Mais vous pouvez utiliser des ArrayList ou des Collections.
1. Classe Client.  
      a. Définir une classe Client dont les caractéristiques sont : Code client, Raison sociale, Adresse, Tél, E-mail. (0,5 pt)
      b. Ecrire un constructeur à deux paramètres : Code client, Raison sociale. (0,5 pt)
      c. Écrire un deuxième constructeur avec tous les paramètres. (0,5 pt)
      d. Écrire les accesseurs des champs et la méthode toString() qui renverra la Raison sociale et l’adresse du client séparés par un retour à la ligne. (0,75 pt)
2. Classe Accessoire. 
      a. Définir une classe Accessoire dont les caractéristiques sont Référence, Intitulé, Prix unitaire, Quantité stock. (0,5 pt)
      b. Choisir des types adaptés aux champs. (0,25 pt)
      c. Écrire un constructeur avec tous les paramètres. (0,5 pt)
      d. Écrire les accesseurs des champs. (0,5 pt)
      e. Écrire la méthode toString() qui renverra les informations de cet accessoire séparées par tabulation mais sans la quantité stock. (0,5 pt)
3. Classe Facture.
      a. Définir une classe Facture dont les caractéristiques sont : (1 pt)
- Numéro facture : le numéro de la 1ère facture créée est 3001 et à chaque création d’une nouvelle facture, ce numéro doit être automatiquement incrémenté de 1. Faire le nécessaire (données + code) pour y arriver.
- Date Facture : Date où la facture a été envoyée à Fclient. 
- Fclient : c’est le client qui recevra cette facture.
- une liste des accessoires facturés et une liste des quantités facturées. Ces deux dernières listes doivent toujours avoir le même nombre d’éléments : à chaque accessoire facturé correspond une quantité facturée dans la 2ème liste (même indice).
      b. Ecrire un constructeur sans aucun paramètre permettant de définir la valeur du numéro facture et d’affecter la date système à Date facture. (0,75 pt)
      c. Écrire les accesseurs des champs et la méthode toString() qui renverra le numéro facture, la date facture et la raison sociale séparés par tabulation. (0,5 pt)
d. Ecrire la méthode TotalFacture () qui retourne le coût global de la facture = Somme des (Prix unitaire * Quantité facturée) pour l’instance en cours. (0,5 pt)
      e. Ecrire la méthode AjouterAccessoire() ayant comme paramètres l’accessoire à facturer et la quantité facturée correspondante. Elle doit permettre la mise à jour de la liste des accessoires facturés, la liste des quantités facturées et la quantité stock de cet accessoire ajouté (Nouvelle quantité stock = Ancienne quantité stock - quantité facturée). (1 pt)
      f. Ecrire une méthode AfficherFacture() qui permet d’imprimer sur l’écran les détails d’une facture de la manière suivante : (1 pt)


Examens Passage Pratique 2012 - TDI - V4-V5-V6
Examens Passage Pratique 2012 - TDI -V6


Indication : Montant est une donnée calculée = Prix unitaire * Qté. Facturée
4. Programme principal 
      a. Déclarer une liste de clients, une liste d’accessoires et une liste de factures accessibles par toutes les méthodes du programme principal. (0,5 pt)
      b. Ajouter une méthode rechercherClient() qui recherche un client par son code. Si trouvé, elle retourne le client correspondant dans la liste des clients. Sinon, elle retourne la valeur null. (0,5 pt)
      c. Ajouter une méthode rechercherAccessoire() qui recherche un accessoire par son intitulé. Si trouvé, elle retourne l’accessoire correspondant dans la liste des accessoires. Sinon, elle retourne la valeur null. (0,5 pt)
      d. Ajouter une méthode rechercherFacture() qui recherche une facture par son numéro. Si trouvé, elle retourne l’indice correspondant dans la liste des factures. Sinon, elle retourne la valeur  1. (0,5 pt)
      e. Ajouter par code (en mode conception) trois clients à la liste des clients. (0,5 pt)
      f. Ajouter par code trois accessoires à la liste des accessoires. (0,5 pt)
      g. Ajouter par code deux factures à la liste des factures. La 1ère contenant un accessoire et la 2ème deux accessoires. Utiliser certains constructeurs et certaines méthodes déjà conçus. (0,5 pt)
      h. Concevoir le menu suivant : (en tenant compte des indications ci-dessous)
1- Ajouter client. (0,5 pt)
2- Ajouter accessoire. (0,25 pt)
3- Ajouter facture. (0,75 pt)
4- Rechercher facture par numéro facture. (0,5 pt)
5- Rechercher les factures passées à une date. (0,75 pt)
6- Fin. (0,25 pt)
Indications concernant les traitements à réaliser dans le menu ci-dessus :
      • Ajouter facture :
      - Le numéro de la nouvelle facture est automatiquement affecté par programme et la date facture correspond à la date système.
      - Saisir le code du client qui doit correspondre à un client de la liste des clients et si trouvé, le client ainsi trouvé correspond à Fclient de la facture à ajouter, sinon le programme vous demandera de saisir un autre code client.
      - Pour chaque accessoire facturé, l’utilisateur saisira son intitulé à chercher dans la liste des accessoires (même principe que celui du code client). Si trouvé, l’accessoire ainsi trouvé sera ajouté à la liste des accessoires de la facture en cours.
      - Chaque fois que l’intitulé saisi est trouvé, saisir la quantité facturée correspondante à l’accessoire trouvé. Cette dernière sera soustraite de la quantité stock de cet accessoire.
      - Après la saisie de la quantité facturée, le programme demandera à l’utilisateur s’il souhaite saisir un autre accessoire pour la facture en cours.
      • Rechercher facture par numéro facture : saisir le numéro de la facture. Si trouvé, imprimer la facture comme précisé dans la question 3. f (méthode AfficherFacture()).Sinon, afficher un message adéquat pour avertir l’utilisateur de l’inexistence de cette facture.
      • Rechercher les factures passées à une date : Imprimer la liste des factures (Numéro facture, Date facture, Raison sociale) dont la date facture est égale à la date saisie. Si aucune facture ne correspond à cette date saisie, afficher un message adéquat.

Dossier 3 : (2,75 pts)
Dans cette partie, vous ferez appel à la classe Accessoire du dossier 2.
Soit l’interface suivante :


Examens Passage Pratique 2012 - TDI - V4-V5-V6
Examens Passage Pratique 2012 - TDI - V6


1- Réaliser l’interface Facture ci-dessus. (0,5 pt)
2- Ecrire une méthode possédant 2 paramètres de type ListBox, permettant d’ajouter l’élément sélectionné de la première liste à la fin de la deuxième et de supprimer cet élément de la première. (0,5pt)
3- Ecrire la procédure événementielle pour qu’au démarrage de l’application, la 1ère ListBox de l’interface Facture ci-dessus, soit chargée par les noms des accessoires contenus dans une liste d’accessoires et dont les éléments sont eux aussi ajoutés automatiquement par code. (0,75 pt)
4- Ecrire le code du 1er bouton (>) : Si un accessoire de la 1ère ListBox est sélectionné, il sera ajouté à la 2ème et son prix unitaire sera ajouté au total. Sinon un message adéquat est affiché. Utilisez une liste d’accessoires pour contenir les accessoires relatifs à la 2ème ListBox. (0,5 pt)
5- Ecrire le code du 2ème bouton (<) : Si un accessoire de la 2ème ListBox est sélectionné, il sera ajouté à la 1ère et son prix unitaire sera soustrait du total. Sinon un message adéquat est affiché. (0,5 pt)

Examen Passage Pratique 2012 - TDI - Variante 4


Examen Passage Pratique 2012 - TDI - Variante 4


Dossier 1 : (1,5 pts)
a. Ecrire un programme dans un langage structuré permettant d’afficher tous les nombres compris entre 100 et 2000 répondants au critère suivant : il y a au moins un chiffre de chacun de ces nombres qui est répété exactement deux fois. Exemples de tels nombres : 101 (le chiffre 1 est répété exactement deux fois), 1505 (le chiffre 5 est répété deux fois), 1771 (le chiffre 1 est répété deux fois ou le chiffre 7 est répété deux fois). Mais 1101 ne fait pas partie de ces nombres car le chiffre 1 est répété trois fois et le chiffre 0 une fois, et ainsi aucun des chiffres n’est répété exactement deux fois. A l’exécution, les 5 premiers nombres affichés sont : 100, 101, 110, 112, 113... (1 pt)
b. Modifier le programme précédent pour avoir les effets suivants :
Afficher un seul nombre par ligne et chaque fois que 20 de ces nombres sont affichés, le programme affichera le message suivant « Tapez ENTREE pour continuer ». Quand l’utilisateur tape la touche « ENTREE », l’écran s’efface et on obtient une autre partie de ces nombres (s’il en reste). Le dit message s’affiche encore quand tous ces nombres ont été affichés. (0,5 pt)

Dossier 2 : (15,75 pts)
L’objet de cette application est la gestion informatisée des commandes de clients, Elle doit permettre de mettre à jour la quantité stock de chaque produit commandé.
Recommandation : utiliser des listes génériques (List<T> : listes typées) de préférence. Mais vous pouvez utiliser des ArrayList ou des Collections.
1- Classe Client. 
      a. Définir une classe Client dont les caractéristiques sont : Code client, Nom, Adresse, Tél, E-mail. (0,5 pt)
      b. Ecrire un constructeur à deux paramètres : Code client, Nom. (0,5 pt)
      c. Écrire un deuxième constructeur avec tous les paramètres. (0,5 pt)
      d. Écrire les accesseurs des champs et la méthode toString() qui renverra le Nom et l’adresse du client séparés par un retour à la ligne.(0,75pt)
2- Classe Produit.
      a. Définir une classe Produit dont les caractéristiques sont Référence, Désignation, Prix unitaire, Quantité stock. (0,5 pt)
      b. Choisir des types adaptés aux champs. (0,25 pt)
      c. Écrire un constructeur avec tous les paramètres. (0,5 pt)
      d. Écrire les accesseurs des champs. (0,5 pt)
      e. Écrire la méthode toString() qui renverra les informations de ce produit séparées par tabulation mais sans la quantité stock. (0,5 pt)
3- Classe Commande.
      a. Définir une classe Commande dont les caractéristiques sont : (1 pt)
- Numéro commande : le numéro de la 1ère commande créée est 1001 et à chaque création d’une nouvelle commande, ce numéro doit être automatiquement incrémenté de 1. Faire le nécessaire (données + code) pour y arriver.
- Cclient : c’est le client qui a passé cette commande.
- Date Commande : date où Cclient a passé cette commande.
- une liste des produits commandés et une liste des quantités commandées : ces deux listes doivent toujours avoir le même nombre d’éléments : à chaque produit commandé correspond une quantité commandée dans la 2ème liste (même indice).
      b. Ecrire un constructeur sans aucun paramètre permettant de définir la valeur du numéro commande et d’affecter la date système à Date commande. (0,75 pt)
      c. Écrire les accesseurs des champs et la méthode toString() qui renverra le numéro commande, la date commande et le nom client séparés par tabulation. (0,5 pt)
      d. Ecrire la méthode TotalCommande() qui retourne le coût global de la commande = Somme des (Prix unitaire * Quantité commandée) pour l’instance en cours. (0,5 pt)
      e. Ecrire la méthode AjouterProduit() ayant comme paramètres le produit à commander et la quantité commandée correspondante. Elle doit permettre la mise à jour de la liste des produits commandées, la liste des quantités commandées et la quantité stock de ce produit ajouté (Nouvelle quantité stock = Ancienne quantité stock - quantité commandée). (1 pt)
      f. Ecrire une méthode AfficherCommande() qui permet d’imprimer sur l’écran les détails d’une commande de la manière suivante : (1 pt)


Examens Passage Pratique 2012 - TDI - V4-V5-V6
Examens Passage Pratique 2012 - TDI - V4


Indication : Montant est une donnée calculée = Prix unitaire * Qté. Commandée
4- Programme principal
      a. Déclarer une liste de clients, une liste de produits et une liste de commandes accessibles par toutes les méthodes du programme principal. (0,5 pt)
      b. Ajouter une méthode rechercherClient() qui recherche un client par son code. Si trouvé, elle retourne le client correspondant dans la liste des clients. Sinon, elle retourne la valeur null. (0,5 pt)
      c. Ajouter une méthode rechercherProduit() qui recherche un produit par sa désignation. Si trouvée, elle retourne le produit correspondant dans la liste des produits. Sinon, elle retourne la valeur null. (0,5 pt)
      d. Ajouter une méthode rechercherCommande() qui recherche une commande par son numéro. Si trouvé, elle retourne l’indice correspondant dans la liste des commandes. Sinon, elle retourne la valeur -1. (0,5 pt)
      e. Ajouter par code (en mode conception) trois clients dans la liste des clients. (0,5 pt)
      f. Ajouter par code trois produits dans la liste des produits. (0,5 pt)
      g. Ajouter par code deux commandes dans la liste des commandes. La 1ère contenant un produit et la 2ème deux produits. Utiliser certains constructeurs et certaines méthodes déjà conçus. (0,5 pt)
      h. Concevoir le menu suivant : (en tenant compte des indications ci-dessous)
1- Ajouter client. (0,5 pt)
2- Ajouter produit. (0,25 pt)
3- Ajouter commande. (0,75 pt)
4- Rechercher commande par numéro commande. (0,5 pt)
5- Rechercher les commandes passées à une date. (0,75 pt)
6- Fin. (0,25 pt)
Indications concernant les traitements à réaliser dans le menu ci-dessus :
      • Ajouter commande :
      - Le numéro de la nouvelle commande est automatiquement affecté par programme et la date commande correspond à la date système.
      - Saisir le code du client qui doit correspondre à un client de la liste des clients et si trouvé, le client ainsi trouvé correspond à Cclient de la commande à ajouter, sinon le programme vous demandera de saisir un autre code client.
      - Pour chaque produit à commander, l’utilisateur saisira sa désignation à chercher dans la liste des produits (même principe que celui du code client). Si trouvée, le produit ainsi trouvé sera ajouté à la liste des produits de la commande en cours.
      - Chaque fois que la désignation saisie est trouvée, saisir la quantité commandée correspondante au produit trouvé. Cette dernière sera soustraite de la quantité stock de ce produit.
      - Après la saisie de la quantité commandée, le programme demandera à l’utilisateur s’il souhaite saisir un autre produit pour la commande en cours.
      • Rechercher commande par numéro commande : saisir le numéro de commande. Si trouvé, imprimer la commande comme précisé dans la question 3.f (méthode AfficherCommande()). Sinon, afficher un message adéquat pour avertir l’utilisateur de l’inexistence de cette commande.
      • Rechercher les commandes passées à une date : Imprimer la liste des commandes (Numéro commande, Date commande, Nom client) dont la date commande est égale à la date saisie. Si aucune commande ne correspond à cette date saisie, afficher un message adéquat.

Dossier 3 : (2,75 pts)
Dans cette partie, vous ferez appel uniquement à la classe Produit du dossier 2 (ni Client ni Commande).
Soit l’interface suivante de commande :


Examens Passage Pratique 2012 - TDI - V4-V5-V6
Examens Passage Pratique 2012 - TDI - V4


1- Réaliser l’interface Commande ci-dessus. (0,5 pt)
2- Ecrire une méthode possédant 2 paramètres de type ListBox, permettant d’ajouter l’élément sélectionné de la première liste à la fin de la deuxième et de supprimer cet élément de la première. (0,5pt)
3- Ecrire la procédure événementielle pour qu’au démarrage de l’application, la 1ère ListBox de l’interface Commande ci-dessus, soit chargée par les noms des produits contenus dans une liste de produits et dont les éléments sont eux aussi ajoutés automatiquement par code. (0,75 pt)
4- Ecrire le code du 1er bouton (>) : Si un produit de la 1ère ListBox est sélectionné, il sera ajouté à la 2ème et son prix unitaire sera ajouté au total. Sinon un message adéquat est affiché. Utiliser une liste de produits pour contenir les produits relatifs à la 2ème ListBox. (0,5 pt)
5- Ecrire le code du 2ème bouton (<) : Si un produit de la 2ème ListBox est sélectionné, il sera ajouté à la 1ère et son prix unitaire sera soustrait du total. Sinon un message adéquat est affiché. (0,5 pt)

Examen Passage Pratique 2012 - TDI - Variante 5

Examen Passage Pratique 2012 - TDI - Variante 5

Dossier 1 : (1,5 pts)
a. Ecrire un programme dans un langage structuré permettant d’afficher tous les nombres compris entre 100 et 999 répondants au critère suivant : la somme de deux des trois chiffres qui composent ces nombres est égale au chiffre restant. Exemples de tels nombres : 101 (1+0=1), 286 (2+6=8), 268, 862, 633 (3+3=6). A l’exécution, les 5 premiers nombres affichés sont : 101, 110, 112, 121, 123…   (1 pt)
b. Modifier le programme précédent pour avoir les effets suivants :
Afficher un nombre par ligne et chaque fois que 15 de ces nombres sont affichés, le programme affichera le message suivant « Tapez ENTREE pour continuer ». Quand l’utilisateur tape la touche « ENTREE », l’écran s’efface et on obtient une autre partie de ces nombres (s’il en reste). Le dit message s’affiche encore quand tous ces nombres ont été affichés. (0,5 pt)

Dossier 2 : (15,75 pts)
L’objet de cette application est la gestion informatisée des ventes de clients, Elle doit permettre de mettre à jour la quantité stock de chaque article vendu.
Recommandation : utiliser des listes génériques (List<T> : listes typées) de préférence. Mais vous pouvez utiliser des ArrayList ou des Collections.
1. Classe Client. 
      a. Définir une classe Client dont les caractéristiques sont : Code client, Raison sociale, Adresse, Tél, E-mail. (0,5 pt)
      b. Ecrire un constructeur à deux paramètres : Code client, Raison sociale. (0,5 pt)
      c. Écrire un deuxième constructeur avec tous les paramètres. (0,5 pt)
      d. Écrire les accesseurs des champs et la méthode toString() qui renverra la Raison sociale et l’adresse du client séparés par un retour à la ligne. (0,75 pt)
2. Classe Article. 
      a. Définir une classe Article dont les caractéristiques sont Référence, Libellé, Prix unitaire, Quantité stock. (0,5 pt)
      b. Choisir des types adaptés aux champs. (0,25 pt)
      c. Écrire un constructeur avec tous les paramètres. (0,5 pt)
      d. Écrire les accesseurs des champs. (0,5 pt)
      e. Écrire la méthode toString() qui renverra les informations de cet article séparées par tabulation mais sans la quantité stock. (0,5 pt)
3. Classe Vente.
      a. Définir une classe Vente dont les caractéristiques sont : (1 pt)
- Numéro vente : le numéro de la 1ère vente créée est 5001 et à chaque création d’une nouvelle vente, ce numéro doit être automatiquement incrémenté de 1. Faire le nécessaire (données + code) pour y arriver.
- Vclient : c’est le client qui a reçu les produits vendus.
- Date Vente : Date où a eu lieu cette vente au profit de Vclient.
- une liste des articles vendus et une liste des quantités vendues. Ces deux dernières listes doivent toujours avoir le même nombre d’éléments: 
à chaque article vendu correspond une quantité vendue dans la 2ème liste (même indice).
      b. Ecrire un constructeur sans aucun paramètre permettant de définir la valeur du numéro vente et d’affecter la date système à Date vente. (0,75 pt)
      c. Écrire les accesseurs des champs et la méthode toString() qui renverra le numéro vente, la date vente et la raison sociale séparés par tabulation. (0,5 pt)
      d. Ecrire la méthode TotalVente () qui retourne le coût global de la vente = Somme des (Prix unitaire * Quantité vendue) pour l’instance en cours. (0,5 pt)
      e. Ecrire la méthode AjouterArticle() ayant comme paramètres l’article à vendre et la quantité vendue correspondante. Elle doit permettre la mise à jour de la liste des articles vendus, la liste des quantités vendues et la quantité stock de cet article ajouté (Nouvelle quantité stock = Ancienne quantité stock - quantité vendue). (1 pt)
      f. Ecrire une méthode AfficherVente() qui permet d’imprimer sur l’écran les détails d’une vente de la manière suivante : (1 pt)


Examens Passage Pratique 2012 - TDI - V4-V5-V6
Examens Passage Pratique 2012 - TDI - V5


Indication : Montant est une donnée calculée = Prix unitaire * Qté. Vendue
4. Programme principal
      a. Déclarer une liste de clients, une liste d’articles et une liste de ventes accessibles par toutes les méthodes du programme principal. (0,5 pt)
      b. Ajouter une méthode rechercherClient() qui recherche un client par son code. Si trouvé, elle retourne le client correspondant dans la liste des clients. Sinon, elle retourne la valeur null. (0,5 pt)
      c. Ajouter une méthode rechercherArticle() qui recherche un article par son libellé. Si trouvé, elle retourne l’article correspondant dans la liste des articles. Sinon, elle retourne la valeur null. (0,5 pt)
      d. Ajouter une méthode rechercherVente() qui recherche une vente par son numéro. Si trouvé, elle retourne l’indice correspondant dans la liste des ventes. Sinon, elle retourne la valeur  1. (0,5 pt)
      e. Ajouter par code (en mode conception) trois clients à la liste des clients. (0,5 pt)
      f. Ajouter par code trois articles à la liste des articles. (0,5 pt)
      g. Ajouter par code deux ventes à la liste des ventes. La 1ère contenant un article et la 2ème deux articles. Utiliser certains constructeurs et certaines méthodes déjà conçus. (0,5 pt)
      h. Concevoir le menu suivant : (en tenant compte des indications ci-dessous)
            1- Ajouter client. (0,5 pt)
            2- Ajouter article. (0,25 pt)
            3- Ajouter vente. (0,75 pt)
            4- Rechercher vente par numéro vente. (0,5 pt)
            5- Rechercher les ventes passées à une date. (0,75 pt)
            6- Fin. (0,25 pt)
Indications concernant les traitements à réaliser dans le menu ci-dessus :
      • Ajouter vente :
- Le numéro de la nouvelle vente est automatiquement affecté par programme et la date vente correspond à la date système.
- Saisir le code du client qui doit correspondre à un client de la liste des clients et si trouvé, le client ainsi trouvé correspond à Vclient de la vente à ajouter, sinon le programme vous demandera de saisir un autre code client.
- Pour chaque article à vendre, l’utilisateur saisira son libellé à chercher dans la liste des articles (même principe que celui du code client). Si trouvé, l’article ainsi trouvé sera ajouté à la liste des articles de la vente en cours.
- Chaque fois que le libellé saisi est trouvé, saisir la quantité vendue correspondante à l’article trouvé. Cette dernière sera soustraite de la quantité stock de ce produit.
- Après la saisie de la quantité vendue, le programme demandera à l’utilisateur s’il souhaite saisir un autre article pour la vente en cours.
      • Rechercher vente par numéro vente : saisir le numéro de la vente. Si trouvé, imprimer la vente comme précisé dans la question 3.f (méthode AfficherVente()).Sinon, afficher un message adéquat pour avertir l’utilisateur de l’inexistence de cette vente.
      • Rechercher les ventes passées à une date : Imprimer la liste des ventes (Numéro vente, Date vente, Raison sociale) dont la date vente est égale à la date saisie. Si aucune vente ne correspond à cette date saisie, afficher un message adéquat.

Dossier 3 : (2,75 pts)
Dans cette partie, vous ferez appel à la classe Article du dossier 2.
Soit l’interface suivante :


Examens Passage Pratique 2012 - TDI - V4-V5-V6
Examens Passage Pratique 2012 - TDI - V5


1- Réaliser l’interface Vente ci-dessus. (0,5 pt)
2- Ecrire une méthode possédant 2 paramètres de type ListBox, permettant d’ajouter l’élément sélectionné de la première liste à la fin de la deuxième et de supprimer cet élément de la première. (0,5pt)
3- Ecrire la procédure événementielle pour qu’au démarrage de l’application, la 1ère ListBox de l’interface Vente ci-dessus, soit chargée par les noms des articles contenus dans une liste d’articles et dont les éléments sont eux aussi ajoutés automatiquement par code. (0,75 pt)
4- Ecrire le code du 1er bouton (>) : Si un article de la 1ère ListBox est sélectionné, il sera ajouté à la 2ème et son prix unitaire sera ajouté au total. Sinon un message adéquat est affiché. Utilisez une liste d’articles pour contenir les articles relatifs à la 2ème ListBox. (0,5 pt)
5- Ecrire le code du 2ème bouton (<) : Si un article de la 2ème ListBox est sélectionné, il sera ajouté à la 1ère et son prix unitaire sera soustrait du total. Sinon un message adéquat est affiché. (0,5 pt)

12 juin 2012

Examen Passage - TDI - Pratique 2012 - Variante 8

 Examen Passage - TDI - Pratique 2012 - Variante 8


Dossier 1 : (4,5 pts)
1. Calcul facture pompiste : (1pt)
Ecrire un programme qui permet de calculer le montant de payement dans une station essence.
Les carburants disponibles sont : l’ "essence super", qui coute 10,50 dh/litre, le "diesel normal", qui vaut 7,45 dh/litre ; et le "diesel 350", à 9,30 dh/litre.
Le programme devrait permettre de saisir le type de carburant et la quantité, en nombre de litres, puis calcule et affiche le montant correspondant.
2. Suite numérique :
On considère la suite numérique définie par :
             S1=1
             S2=2  et
             Sn=Sn-1 x Sn-2  (pour n>2)
      a. Ecrire une fonction qui retourne, le nième terme de cette suite ; (0,5pt)
      b. Ecrire un programme qui calcule et affiche les termes, de cette suite, inférieurs ou égaux à un entier entré par l’utilisateur ; ainsi que leur somme. (1pt)
3. Calcul sur le temps :
      a. Ecrire une fonction qui admet en paramètre une durée, sous forme d’un nombre d’heures, de minutes et de secondes, et retourne une valeur logique indiquant  si elle est valide (valeur vrai), ou erronée (valeur faux).  (0,5pt)
      b. Ecrire une fonction qui converti un nombre quelconque de secondes en minutes et secondes (le nombre de secondes restant en plus des minutes).  (0,5pt)
      c. Ecrire une fonction qui converti un nombre minutes en heures et minutes (le nombre de minutes restant en plus des heures).  (0,5pt)
      d. Ecrire un programme qui permet de calculer la somme de deux durées, exprimées en heures, minutes et secondes. Le programme vérifie si les données sont valables ; autrement, il demandera de les corriger.   (0,5pt)

Dossier 2 : (5,5 pts)
On voudrait réaliser une application orientée objet,  pour la gestion d’un tour de cyclisme. On s’intéressera spécialement à l’enregistrement des temps réalisés par les coureurs, durant les étapes.
Les cycliste sont, d’autre part, organisés en équipes.
Il vous est demandé d’implémenter :
1. Classe « Etape » : (1,5pt)
      a. Créer la classe
      b. Ajouter à cette classe les attributs :
            et_num (entier), comme numéro d’étape ;
            et_distance (entier), distance sur parcours de l’étape en Km ;
            et_villeD (chaine), ville de départ ;
            et_villeA (chaine), ville d’arrivé ;
            et_type (1 - Etape de pleine, 2 - Etape de montagne, 3 - Etape contre la montre) ;
      c. Ajouter les accesseurs, ou méthodes propriétés pour ces attributs ;
      d. Ajouter les constructeurs ;
      e. Aouter une méthode toString, qui retourne une forme affichable, d’une instance de « Etape ».
2. Classe générique « Equipe » : (1,5pt)
      a. Créer la classe ;
      b. Ajouter à cette classe les attributs :
            aq_num (entier), numéro attribué à chaque équipe.
            eq_nom (chaine) ;
      c. Ajouter les accesseurs, ou méthodes propriétés pour ces attributs ;
      d. Ajouter les constructeurs ;
      e. Aouter une méthode toString, qui retourne une forme affichable, d’une instance de « Equipe ».
3. Classe « Cycliste » : (2,5pts)
      a. Créer la classe ;
      b. Ajouter à cette classe les attributs :
            c_num (entier), numéro d’un cycliste participant à la course ;
            c_nom (chaine) ;
            c_prenom (chaine) ;
            c_nationnalite (chaine) ;
            c_age (entier) ;
            c_chrono (temps en format mm-ss) ;
            c_equipe (instance de la classe « Equipe ») ;
            c. Ajouter les accesseurs, ou méthodes propriétés pour ces attributs ;
            d. Ajouter les constructeurs ;
            e. Aouter une méthode toString, qui retourne une forme affichable, d’une instance de « Cycliste ».

Dossier 3 : (10 pts)
Dans cette partie, on vous demande de réaliser une interface graphique, pour la gestion des étapes d’une course cycliste, qui seront stockées dans un premier temps dans une collection.




EP - Examens Passage - TDI - Pratique 2012 - V7-V8-V9
EP - Examens Passage - TDI - Pratique 2012 - V8


1. Réaliser cette interface. (2pts)
2. Déclarer une collection d’instance de la classe « Etape », implémentée dans le dossier 2. (0,5pt)
3. Ecrire le code du bouton « Ajouter » qui permet d’instancier une candidature, et de l’ajouter à la collection.  (1pt)
4. Ecrire le code du bouton « Modifier » qui permet de reporter le contenu des contrôles sur les attributs de l’instance en cours, de la collection. (1pt)
5. Ecrire le code du bouton « Supprimer », qui supprime l’étape en cours d’affichage de la collection.  (1pt)
6. Ecrire le code du bouton « Rechercher », qui doit afficher un deuxième formulaire, pour entrer les critères et valeurs de recherche, et d’effectuer après validation,  la recherche. Autrement, d’afficher un message indiquant qu’aucun résultat n’a été trouvé pour cette recherche  et rétablit l’écran à son état précédent. (1,5pt)
7. Ajouter le code des boutons de déplacement, "Prem." (premier), "Prec" (précèdent),  "Suiv." (suivant) et "Der." (dernier), qui affichent l’« Etape » correspondante.  (1pt)
8. Lors du défilement entre étapes, on voudrait afficher, au milieu de boutons de déplacement, le rang de l’étape en cours, sur le nombre total d’étapes. Ecrire le code nécessaire pour réaliser cet affichage : (1pt)




EP - Examens Passage - TDI - Pratique 2012 - V7-V8-V9
EP - Examens Passage - TDI - Pratique 2012 - V8


9. Modifier ce formulaire, en lui ajoutant un contrôle approprié pour présenter le type de l’étape ; et le code en conséquences. Enregistrer ce deuxième formulaire sous un autre nom. (1pt)