EFF - Examen de Fin de Formation TDI Pratique 2012 Variante 1 (Vb.net, Csharp), (ADO.Net, LINQ), (Sql server, Oracle)
Dossier 1 (6 pts) Les élections législatives au Maroc se déroulent selon un découpage en circonscriptions électorales. Une province ou préfecture contient une ou
plusieurs circonscriptions électorales ; une région contient plusieurs provinces et/ ou préfectures. Un candidat appartient à un seul Parti politique et
représente une seule circonscription électorale. Les électeurs votent dans la circonscription électorale ouu ils sont inscrits. Une application de gestion
des élections législatives utilise la base de données suivante: N.B. les champs marqués en gras et soulignés représentent les clés primaires des tables et les champs marqués par # représentent les clés étrangères. Region (idRegion, nomRegion) ProvincePrefecture (idProvPref, nomProvPref, #idRegion) Circonscription (idCirconscription, nomCir, NombreSiege, #idProvPref) Parti (idParti, nomParti) Candidat (CINcandidat, nomCandidat, prenomCandidat, DateNC, adrCandidat, #idCirconscription, #idParti) Electeur (CINelecteur, nomElecteur, dateNE,adrElecteur, #idCirconscription)
-Structure des tables :
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
Travail à faire : Enregistrer sur un fichier texte qui porte le nom « dossier1.txt » les requêtes SQL qui répondent aux questions suivantes. Donner les requêtes qui permettent de : 1) Créer la base de données et remplir les tables par un jeu d’essai. (1 pt) 2) Créer une procédure stockée qui affiche la liste des candidats qui représentent une circonscription donnée comme paramètre et appartenant à un parti donné comme paramétre. (1 pt) (Le code de la procédure doit être sauvegardé dans le fichier dossier1.txt) 3) Créer une procédure stockée qui affiche le nombre d'électeur inscrits dans chaque province d'une région donnée (idRegion transmis en paramètre). (1 pt) 4) Créer une procédure stockée qui affiche les partis politiques qui ne participent pas dans une circonscription donnée. (1 pt) 5) Créer un trigger qui empêche l’ajout d’une circonscription avec une valeur de la colonne NombreSiege inférieure à 0 ou supérieure à 6. (1 pt) 6) Créer un trigger, qui lors de l'ajout d'un candidat à la table candidat, ajoute également ce candidat à la table Electeur : en effet un candidat est aussi un électeur qui va voter dans la même circonscription. (1 pt)
Dossier 2 (7 pts) Créer une application « client/serveur » qui se base sur la base de données du dossier 1 permettant d’assurer les fonctionnalités suivantes : 1. Créer un menu pour cette application permettant de réaliser les opérations demandées par les questions qui suivent. (0,25 pt) 2. Créer un formulaire de mise à jour des circonscription avec les éléments suivants : (1,25 pt) • Des boutons de navigation. • Les boutons Ajouter, Modifier, Supprimer et Enregistrer. • La province est choisie dans une liste déroulante. 3. a- Créer un formulaire contenant une grille qui affiche la liste des partis d'une circonscription avec, pour chaque parti, le nombre total de candidats enregistrés; la circonscription est choisie dans une liste déroulante. (1 pt) b- Ajouter à côté de chaque parti une case à cocher. Ajouter en bas de la grille, un bouton de commande qui permet de supprimer le ou les partis sélectionnés avec tous les enregistrements connexes. (1 pt) 4. Créer un formulaire permettant d'afficher la liste des candidats d'une circonscription pour un parti donné; la circonscription ainsi que le parti sont choisis dans deux listes déroulantes. (1,5 pt) 5. Créer un état qui imprime les circonscriptions de la région « GRAND-CASABLANCA » avec les informations : nom de la circonscription, nombre de sièges affectés. (1 pt) 6. Créer un état graphique de type secteur montrant pour chaque région, le nombre d'électeurs. (1 pt)
Dossier 3 (7 pts) On souhaite développer un site web dynamique permettant aux utilisateurs d’effectuer des recherches et afficher des statistiques relatives aux élections législatives marocaines. On utilise la base de données du dossier 1. 1. Créer la page web d’accueil avec un menu de navigation entre les pages demandées dans les questions qui suivent. (0,5 pt) 2. Créer une page web qui affiche la liste des électeurs inscrits dans une circonscription donnée. La circonscription doit être sélectionnée dans une liste. L'affichage comprend le nom, le prénom et la date de naissance des électeurs classés par nom en ordre croissant. (1 pt) 3. a- Créer une page web contenant une grille à deux colonnes qui affiche dans la 1er colonne, le nom de chaque parti et dans la 2ème colonne, le nombre total de candidats par parti au niveau national. en bas de la page, on affiche le nombre total de condidats. (1 pt) b- Insérer à gauche de chaque parti une case à cocher, et en bas de la pages web, un lien hypertexte nommé "générer" qui permet, lorsqu'on clique dessus, de générer un fichier texte contenant le ou les partis sélectionnés ainsi que leurs candidats dans l’ordre de leur apparition sur la page. (1 pt) 4. Créer une page web de mise à jour des électeurs avec : a) Des boutons permettant d’ajouter, modifier et supprimer des électeurs. (0,5 pt) b) Ajouter des validateurs : les champs de saisi ne doivent pas être vides. (0,5 pt) c) Une grille affichant les électeurs. (0,5 pt) 5. On veut effectuer une recherche plus fine d’une circonscription afin d’afficher des statistiques sur les candidats et les électeurs. Créer une page web avec les fonctionnalités suivantes : a) Pour le choix d’une circonscription, on affiche en haut de la page une ligne contenant les lettres qui sont les initiales des circonscriptions (uniquement pour celles existantes dans la base de données) sous forme de liens hypertextes : (1 pt) A B E F G H J ….. b) Lorsque l’utilisateur clique sur une lettre, la page affiche le nom de toutes les circonscriptions qui commencent par cette lettre sous forme de liens hypertextes. (0,5pt) c) Un clic sur une circonscription affiche le nombre total de candidats de cette circonscription ainsi que le nombre total d'électeur et le poucentage de candidats par rapport aux électeurs. (0,5 pt)
EFF - Examen de Fin de Formation TDI Pratique 2012 Variante 2 (Vb.net, Csharp), (ADO.Net, LINQ), (Sql server, Oracle)
Dossier 1 (6 pts) Les élections législatives au Maroc se déroulent selon un découpage en circonscriptions électorales. Une province ou préfecture contient une ou plusieurs circonscriptions électorales ; une région contient plusieurs provinces et/ ou préfectures. Un candidat appartient à un seul Parti politique et représente une seule circonscription électorale. Un candidat appartient à une tranche d’âge (« moins de 35 ans », « entre 35 et 45 ans » …). Un candidat possède un numéro d’ordre (un classement) parmi les candidats du même parti de la même circonscription (liste électorale). Un candidat possède un niveau scolaire (« primaire », « secondaire » « supérieur »…). Une application de gestion des élections législatives utilise la base de données suivante : N.B. les champs marqués en gras et soulignés représentent les clés primaires des tables et les champs marqués par # représentent les clés étrangères. Region (idRegion, nomRegion) ProvincePrefecture (idProvPref, nomProvPref, #idRegion) Circonscription (idCirconscription, nomCir, NombreSiege, #idProvPref) Parti (idParti, nomParti) TrancheAge (idTranche, tranche) Candidat (CINcandidat, nomCandidat, prenomCandidat, DateNC, niveauScolaire, NumOrdreListe, adrCandidat, #idCirconscription,# idParti, #idTrancheAge)
-Structure des tables :
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
Travail à faire : Enregistrer sur un fichier texte qui porte le nom « dossier1.txt » les requêtes SQL qui répondent aux questions suivantes. Donner les requêtes qui permettent de : 1) Créer la base de données et remplir les tables par un jeu d’essai. (1 pt) 2) Créer une procédure stockée qui affiche le nombre de candidats par province pour une région donnée comme paramètre. (1 pt) (Le code de la procédure doit être sauvegardé dans le fichier dossier1.txt) 3) Créer une fonction qui retourne le nombre total de sièges affectés à une région donnée (idRegion transmis en paramètre). (1 pt) 4) Créer une procédure stockée qui affiche le parti politique qui a enregistré le plus grand nombre de candidat dans une circonscription donnée. (1 pt) 5) Créer un trigger qui empêche l’ajout d’une circonscription avec une valeur de la colonne NombreSiege inférieure à 0 ou supérieure à 6. (1 pt) 6) Créer un trigger, qui après suppression d’un candidat qui est 1er dans la liste (ayant la colonne numOrdreListe=1), le 2ème candidat prend sa place ie : son numOrdreListe est modifié en prenant la valeur 1. (1 pt)
Dossier 2 (7 pts) Créer une application « client/serveur » qui se base sur la base de données du dossier 1 permettant d’assurer les fonctionnalités suivantes : 1. Créer un menu pour cette application permettant de réaliser les opérations demandées par les questions qui suivent. (0,25 pt) 2. Créer un formulaire de mise à jour des candidats avec les éléments suivants : (1,25 pt) • Des boutons de navigation. • Les boutons Ajouter, Modifier, Supprimer et Enregistrer. • La circonscription, le parti et la tranche d’âge sont choisis dans des listes déroulantes. 3. Créer un formulaire contenant une grille qui affiche le pourcentage des candidats par tranche d’âge pour une circonscription choisie dans une liste déroulante. La 1ère colonne de la grille affiche la tranche d’âge et la 2ème colonne affiche le pourcentage. (1 pt) 4. a- Créer un formulaire permettant d’afficher la liste des candidats d’une circonscription pour un parti donné ; la circonscription ainsi que le parti sont choisis dans une liste déroulante. L’affichage est trié selon la colonne numOrdreListe en ordre croissant. (1,5 pt) b- Ajouter à côté de chaque candidat une case à cocher. Ajouter en bas de la grille, un bouton de commande qui permet de supprimer le ou les candidats sélectionnés. (1 pt) 5. Créer un état qui imprime les circonscriptions de la région « DOUKKALA-ABDA » avec les informations : nom de la circonscription, nombre de sièges affectés. (1 pt) 6. Créer un état graphique de type histogramme montrant pour chaque niveau scolaire, le nombre de candidats. (1 pt)
Dossier 3 (7 pts) On souhaite développer un site web dynamique permettant aux utilisateurs d’effectuer des recherches et afficher des statistiques relatives aux élections législatives marocaines. On utilise la base de données du dossier 1. 1. Créer la page web d’accueil avec un menu de navigation entre les pages demandées dans les questions qui suivent. (0,5 pt) 2. Créer une page web qui affiche la liste des candidats qui ont le niveau scolaire « supérieur ». L’affichage comprend le nom, le prénom et la date de naissance des candidats classés par nom en ordre croissant. (1 pt) 3. a- Créer une page web permettant d’afficher tous les candidats d’une circonscription donnée qui sont en tête des listes électorales de cette circonscription (ayant numOrdreListe=1) ; la circonscription est choisie dans une liste déroulante. (1 pt) b- Insérer à côté de chaque candidat une case à cocher, et en bas de la page web, un lien hypertexte nommé « produire » qui permet, lorsqu’on clique dessus, de produire un fichier texte contenant le ou les candidats sélectionnés ainsi que leurs niveaux scolaires dans l’ordre de leur apparition sur la page. (1 pt) 4. Créer une page web de mise à jour des circonscriptions avec : a) Des boutons permettant d’ajouter, modifier et supprimer des circonscriptions. (0,5 pt) b) Ajouter des validateurs : les champs de saisi ne doivent pas être vides. (0,5 pt) c) Une grille affichant les circonscriptions. (0,5 pt) 5. On veut effectuer une recherche plus fine d’une circonscription afin d’en afficher les partis. Créer une page web avec les fonctionnalités suivantes : a) Pour le choix d’une circonscription, on affiche en haut de la page une ligne contenant les lettres qui sont les initiales des circonscriptions (uniquement pour celles existantes dans la base de données) sous forme de liens hypertextes : (1 pt) A B E F G H J ….. b) Lorsque l’utilisateur clique sur une lettre, la page affiche le nom de toutes les circonscriptions qui commencent par cette lettre sous forme de liens hypertextes. (0,5pt) c) Un clic sur une circonscription affiche la liste des partis qui représentent cette circonscription ainsi que le nombre total de partis (à la fin de la page). (0,5 pt)
EFF - Examen de Fin de Formation TDI Pratique 2012 Variante 3 (Vb.net, Csharp), (ADO.Net, LINQ), (Sql server, Oracle)
Dossier 1 (6 pts) Les élections législatives au Maroc se déroulent selon un découpage en circonscriptions électorales. Une province ou préfecture contient une ou plusieurs circonscriptions électorales ; une région contient plusieurs provinces et/ ou préfectures. Un candidat appartient à un seul parti politique et représente une seule circonscription électorale. Pour le résultat des élections, on compte le nombre de voix obtenu par les partis dans chaque circonscription électorales. Les électeurs votent dans la circonscription électorale où ils sont inscrits. Une application de gestion des élections législatives utilise la base de données suivante : N.B. Les champs marqués en gras et soulignés représentent les clés primaires des tables et les champs marqués par # représentent les clés étrangères. Region (idRegion, nomRegion) ProvincePrefecture (idProvPref, nomProvPref, #idRegion) Circonscription (idCirconscription, nomCir, NombreElecteur, #idProvPref) Parti (idParti, nomParti) Candidat (CINcandidat, nomCandidat, prenomCandidat, DateNC, adrCandidat, #idCirconscription,# idParti) Resultat (idCirconscription, idParti, nombreVoix)
-Structure des tables :
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3
Travail à faire : Enregistrer sur un fichier texte qui porte le nom « dossier1.txt » les requêtes SQL qui répondent aux questions suivantes : Donner les requêtes qui permettent de : 1) Créer la base de données et remplir les tables par un jeu d’essai. (1 pt) 2) Créer une procédure stockée qui permet d’ajouter une ligne à la table Resultat en prenant comme paramètres un idCirconscription, un idParti et le nombre de voix. (1 pt) (Le code de la procédure doit être sauvegardé dans le fichier dossier1.txt) 3) Créer une procédure stockée qui affiche le nombre total de voix obtenu par parti dans chaque province d’une région donnée (idRegion transmis en paramètre). (1 pt) 4) Créer une procédure stockée qui affiche les partis politiques qui n’ont pas atteint le seuil de 6% des voix nécessaires pour avoir un siège dans une circonscription donnée (idCirconscription comme paramère). Le test se fait à l’aide du quotient : nombre de voix obtenu par le parti dans une circonscription, divisé par, le nombre d’électeurs de la circonscription. (1 pt) 5) Créer un trigger qui empêche l’ajout d’une ligne à table Resultat si la valeur de la colonne nombreVoix est supérieure à la valeur de la colonne nombreElecteur de la table Circonscription pour la même circonscription. (1 pt) 6) Créer un trigger, qui refuse l’ajout d’un candidat si son âge est inférieur à 18 ans ; âge minimum pour être éligible. (1 pt)
Dossier 2 (7 pts) Créer une application « client/serveur » qui se base sur la base de données du dossier 1 permettant d’assurer les fonctionnalités suivantes : 1. Créer un menu pour cette application permettant de réaliser les opérations demandées par les questions qui suivent. (0,25 pt) 2. Créer un formulaire de mise à jour de la table Resultat avec les éléments suivants : (1,25 pt) • Des boutons de navigation. • Les boutons Ajouter, Modifier, Supprimer et Enregistrer. • La circonscription et le parti sont choisis dans une liste déroulante. 3. a- Créer un formulaire contenant une grille qui affiche la liste des partis d’une circonscription avec, pour chaque parti, le nombre total de voix obtenues classées en ordre décroissant sur le nombre de voix ; la circonscription est choisie dans une liste déroulante. (1 pt) b- Ajouter à côté de chaque parti une case à cocher. Ajouter en bas de la grille, un bouton de commande qui permet de supprimer le ou les partis sélectionnés avec tous les enregistrements connexes. (1 pt) 4. Créer un formulaire contenant une grille qui affiche, la liste des candidats du parti qui a obtenu le plus grand nombre de voix dans une circonscription donnée ; la circonscription est choisie dans une liste déroulante. (1,5 pt) 5. Créer un état qui imprime les circonscriptions de la région « SOUSS » avec les informations : nom de la circonscription, nombre d’électeurs. (1 pt) 6. Créer un état graphique de type histogramme montrant pour chaque région, le nombre total de voix obtenu par un parti donné. (1 pt)
Dossier 3 (7 pts) On souhaite développer un site web dynamique permettant aux utilisateurs d’effectuer des recherches et d’afficher des statistiques relatives aux élections législatives marocaines. On utilise la base de données du dossier 1. 1. Créer la page web d’accueil avec un menu de navigation entre les pages demandées dans les questions qui suivent. (0,5 pt) 2. Créer une page web permettant d’afficher la liste des candidats inscrits dans une circonscription donnée. La circonscription doit être sélectionnée dans une liste. L’affichage comprend le nom, le prénom et la date de naissance des candidats classés par nom en ordre croissant. (1 pt) 3. a- Créer une page web contenant une grille à deux colonnes qui affiche dans la 1ère colonne, le nom de chaque parti et dans la 2ème colonne, le nombre de voix par parti au niveau d’une circonscription choisie dans une liste. En bas de la page, on affiche le nombre total de voix. (1pt) b- Insérer à gauche de chaque parti une case à cocher, et en bas de la page web, un lien hypertexte nommé « engendrer » qui permet, lorsqu’on clique dessus, de créer un fichier texte contenant le ou les partis sélectionnés ainsi que le nombre de voix dans l’ordre de leur apparition sur la page. (1 pt) 4. Créer une page web de mise à jour des candidats avec : a) Des boutons permettant d’ajouter, modifier et supprimer des candidats. (0,5 pt) b) Ajouter des validateurs : les champs de saisi ne doivent pas être vides. (0,5 pt) c) Une grille affichant les candidats. (0,5 pt) 5. On veut effectuer une recherche plus fine d’une circonscription afin d’en afficher les résultats des élections. Créer une page web avec les fonctionnalités suivantes : a) Pour le choix d’une circonscription, on affiche en haut de la page une ligne contenant les lettres qui sont les initiales des circonscriptions (uniquement pour celles existantes dans la base de données) sous forme de liens hypertextes : (1 pt) A B E F G H J ….. b) Lorsque l’utilisateur clique sur une lettre, la page affiche le nom de toutes les circonscriptions qui commencent par cette lettre sous forme de liens hypertextes. (0,5pt) c) Un clic sur une circonscription affiche la liste des résultats de vote par parti de cette circonscription : on affiche le nom du parti et le nombre de voix obtenues classées par ordre décroissant par nombre de voix. (0,5 pt)
Télécharger Les EFF - Examen de Fin de Formation TDI Pratique 2012 V1-V2-V3 :
Dossier 1 : (4,5 pts) 1. Calcul du coût d’un trajet : (1pt) Ecrire un programme qui permet de calculer le coût engendré, pour un transporteur, par un voyage. Le programme devrait permettre de saisir la distance du trajet et le coût au Km, puis calcule le montant correspondant, auquel il faut ajouter un montant forfaitaire de frais divers (indépendant du kilométrage), pour calculer le coût globale engendré par le voyage. 2. Somme des termes d’une suite : Soit la suite définie par : U1=a U2=b et Un=Un-1+Un-2 (pour n>2) avec a et b deux nombres réels. a. Ecrire une fonction qui retourne, le nième terme de cette suite ; (0,5pt) b. Ecrire une fonction qui calcule la somme des termes, de cette suite, inférieurs ou égaux à un entier donné ; (0,5pt) c. Ecrire une programme qui utilise cette fonction, pour calculer la somme des entiers impairs, inférieurs ou égaux à un entier donné. (0,5pt) 3. Calculs sur les dates : a. Ecrire une fonction qui retourne le nombre de jours d’un mois donné. (0,5pt) (On rappelle que : Les mois de janvier, mars, mai, juillet, août et décembre font 31 jours ; Les mois d’avril, juin, octobre et novembre font 30 jours ; et le mois février fait 29 jours pour les années bissextiles (divisibles par 4) ; et 28 jours pour les autres. b. Ecrire une fonction qui permet de vérifier si une année, donnée en paramètre est bissextile ou non. La fonction retournera une valeur logique : vrai si l’année est bissextile et faux sinon. (On rappelle qu’une année est bissextile, si elle est divisible par 4, sans être un multiple de 100, sauf si elle est un multiple de 400). Exemples : 2011 n’est pas bissextile, car elle n’est pas divisible pas 4 ; 2012 est bissextile, car elle est divisible par 4, et ne l’est pas par 100 ; 2000 est bissextile car elle est divisible par 4, et même si elle est divisible par 100, elle l’est aussi par 400). (0,5pt) c. Ecrire une fonction qui admet en paramètre une date, sous forme d’un jour, d’un mois et d’une année, et qui retourne une valeur logique indiquant si la date est valide (valeur vrai), ou erronée (valeur faux). (0,5pt) d. Ecrire un programme qui permet à l’utilisateur d’entrer une date, vérifie si elle est valide ; et si c’est le cas, calcule et affiche le nombre de jours écoulés depuis le début de cette année. (0,5pt)
Dossier 2 : (10 pts) On voudrait réaliser une application orientée objet, pour la gestion des inscriptions d’entrée dans les établissements de formation professionnelle. Dans cette partie, on s’intéressera essentiellement au dépôt, du dossier de candidature. Comme vous l’aviez vous-même vécu, vous aviez rempli, sur le dossier de candidature, vos informations personnelles, des données sur votre scolarité; puis aviez effectué des choix concernant le niveau et la filière (spécialités). Il vous est demandé d’implémenter : 1. Une classe « Niveau », représentant les niveaux de formation offerts (Technicien Spécialisé (TS), Technicien (T), Qualification (Q), Formation (F)). a. Créer la classe. b. Ajouter à cette classe les attributs : numNiv (entier), pour le numéro du niveau ; intitNiv (chaine), pour son intitulé ; c. Ajouter les accesseurs, ou méthodes propriétés pour ces attributs ; d. Ajouter les constructeurs ; e. Ajouter une méthode toString, qui retourne une forme affichable, d’une instance de « Niveau ». 2. Une classe « Filière », représentant les spécialités de formation offertes : (2pts) a. Créer la classe ; b. Ajouter à cette classe les attributs : codeFil (entier), pour le numéro de filière ; intitFil (chaine), pour son intitulé ; 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 « Filière ». 3. Une classe « Candidat » : (3pts) a. Créer la classe ; b. Ajouter à cette classe les attributs : cne (entier), pour le code national de l’étudiant ; nom (chaine) ; prenon (chaine) ; dateNaiss (date) ; sexe (M/F) ; nivScolaire (chaine de caractère) ; 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 « Candidat ». 4. Une classe « Inscription » : (3pts) a. Créer la classe ; b. Ajouter à cette classe les attributs : numDossier (entier), numéro du dossier de candidature ; dateInscription (date) ; candidat (instance de la classe « Candidat ») ; niveau (instance de la classe « Niveau ») ; filieres(tableau de 3 instances de la classe « Filiere ») ; 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 « Inscription ».
Dossier 3 : (5,5 pts) Dans cette partie, on vous demande de réaliser une interface graphique, pour la gestion des dossiers de candidature, qui seront stockés dans un premier temps dans une collection.
1. Réaliser cette interface. (1,5pt) 2. Déclarer une collection d’instance de la classe « Dossier », implémentée dans le dossier 2. (0,25pt) 3. Ecrire le code du bouton « Nouveau », qui permet d’initialiser, la fenêtre pour la saisie d’une nouvelle candidature. La Date sera affectée de la date système. (0,25pt) 4. Ecrire le code du bouton « Enregistrer » qui permet d’instancier une candidature, et de l’ajouter à la collection. (0,75pt) 5. Ecrire le code du bouton « Supprimer », qui supprime la candidature en cours d’affichage de la collection. (0,75pt) 6. Ecrire le code du bouton « Rechercher », qui permet, après avoir choisi un ou plusieurs critères de recherche et saisi les champs relatifs dans le formulaire, d’effectuer la recherche de la candidature qui correspond à ces critères et de l’afficher ; ou le cas échéant d’afficher un message indiquant qu’aucun candidat ne correspond à cette recherche et rétablit l’écran à son état précédent. (1pt) 7. Ajouter le code des boutons de déplacement (|< premier, < précédent, > suivant et >| dernier), qui affichent le dossier correspondant. (1pt)
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.
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)
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)
Dossier 1 : (4,5 pts) 1. Calcul facture pompiste : (1pt) Ecrire un programme qui permet de calculer la quantité de carburant achetée dans une station essence. Les carburants disponibles sont : L’ "essence super", qui coute 11,35 dh/litre, le "diesel normal", qui vaut 7,42 dh/litre ; et le "diesel 350", à 10,1 dh/litre. Le programme devrait permettre de saisir le type de carburant et du montant de payement, puis calcule et affiche la quantité de carburant correspondante. 2. Suite numérique : On considère la suite numérique définie par : U1=1 U2=2 et Un=2(Un-1 + Un-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 les distances : Dans un atelier de menuiserie, on manipule des planchés dont les dimensions sont exprimées en mètres (m), centimètre (cm) et millimètres (mm). a. Ecrire une fonction qui admet en paramètre une distance, sous forme d’un nombre de mètres, centimètre et de millimètres, 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 millimètres en centimètres et millimètres (le nombre de millimètres restant en plus du nombre entier de centimètres). (0,5pt) c. Ecrire une fonction qui converti un nombre quelconque de centimètres en mètres et centimètres (le nombre de centimètres restant en plus d’un nombre entier de mètres). (0,5pt) d. Ecrire un programme qui permet de calculer la somme de deux distances, exprimées en mètres (m), centimètre (cm) et millimètres. Le programme vérifie si les données sont valables ; autrement, il demandera de les corriger. (0,5pt)
Dossier 2 : (6,5 pts) On voudrait réaliser une application orientée objet, pour la gestion, simplifiée d’une agence bancaire. Dans cette agence les clients peuvent disposer de comptes bancaires, qui sont soit des « comptes courants » ou des « comptes sur carnet ». Dans les deux cas les clients pourront effectuer des « dépôts » ou des « retraits ». Enfin un client est pris en charge par un employé, de cette agence, qui est ainsi son interlocuteur et conseillé. Il vous est demandé d’implémenter : 1. Une classe « Client », pour modéliser un client de cette agence : (1,25pt) a. Créer la classe. b. Ajouter à cette classe les attributs : numCli (entier), pour le numéro du client ; nomCli (chaine), pour le nom du client ; prenomCli (chaine), pour le prénom du client ; AdrsCli (chaine), pour l’adresse du client ; c. Ajouter les accesseurs, ou méthodes propriétés pour ces attributs ; d. Ajouter les constructeurs ; e. Ajouter une méthode toString, qui retourne une forme affichable, d’un client. 2. Une classe abstraite « Compte », pour modéliser un compte créé au niveau de l’agence : (1,25pt) a. Créer la classe. b. Ajouter à cette classe les attributs : numCompte (entier), pour le numéro du compte ; dateCompte (date), pour la date d’ouverture du compte ; soldeCompte(réel), pour le montant du solde du compte ; propCompte (instance de la classe « Client »), pour représenter le client propriétaire de ce compte) c. Ajouter les accesseurs, ou méthodes propriétés pour ces attributs ; d. Ajouter les constructeurs ; e. Ajouter une méthode toString, qui retourne une forme affichable, d’un compte. f. Ajouter une méthode « depot », qui permet d’ajouter un montant, au solde d’un compte. g. Ajouter une méthode « retrait », qui permet d’enlever un montant, du solde d’un compte. 3. Une classe « CompteCourant », pour modéliser un compte courant, par héritage de la classe « Compte » : (2pts) a. Créer la classe. b. Ajouter à cette classe l’attribut : decouvert (réel), pour le montant du découvert accordé à ce compte, soit le montant maximum à retirer dans un compte débiteur (négatif) ; c. Ajouter les accesseurs, ou méthodes propriétés pour cet attribut ; d. Ajouter les constructeurs ; e. Ajouter une méthode toString, qui retourne une forme affichable, d’une instance de « compteCourant ». f. Réécrire la méthode « retrait », en prenant compte du découvert, et empêcher de faire un retrait au-delà de cette limite. 4. Une classe « CompteCarnet », pour modéliser un compte sur carnet, par héritage de la classe « Compte » : (2pts) a. Créer la classe. b. Ajouter à cette classe l’attribut : tauxInteret (réel), pour exprimer, sous forme d’un pourcentage, le taux d’intérêt attribué annuellement à ce compte. c. Ajouter les accesseurs, ou méthodes propriétés pour cet attribut ; d. Ajouter les constructeurs ; e. Ajouter une méthode toString, qui retourne une forme affichable, d’une instance de « CompteCarnet ». f. Réécrire la méthode « retrait », le solde d’un compte sur carnet, ne pouvant être négatif.
Dossier 3 : (9 pts) Dans cette partie, on vous demande de réaliser une interface graphique, pour le suivi des comptes de cette agence.
Suivant le type du compte, l’un des deux boutons radio sera activé. Si le compte est de type « compte courant », la fenêtre présente le découvert accordé à ce compte ; et une mention « Créditeur » est ajoutée devant le solde s’il est positif, ou « Débiteur » s’il est positif négatif. Si le compte est de type « compte sur carnet », la fenêtre présente le taux d’intérêt qui lui est accordé (au lieu de découvert accordé, qui est caché) ; et la mention (Créditeur/Débiteur) n’ayant plus lieu d’être est aussi cachée. Le formulaire se présenterait, dans ce deuxième cas, plutôt ainsi :
1. Réaliser cette interface. (2pts) 2. Déclarer une collection d’instance de la classe « Compte », implémentée dans le dossier 2. (0,5pt) 3. Ecrire le code du bouton « Ajouter » qui permet d’instancier un compte, 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, dans la collection. (1pt) 5. Ecrire le code du bouton « Supprimer », qui supprime le compte 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 "Dern." (dernier), qui affichent le « compte » correspondant ; (1pt) 8. Lors du défilement entre comptes, on voudrait afficher, au milieu de boutons de déplacement, l’indice du compte en cours sur le nombre total des comptes de la collection. Ecrire le code nécessaire pour réaliser cet affichage : (1pt)
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
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
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
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
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
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)
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
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
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)