Page 1/4
ESTIA 2ième année – Épreuve d’Informatique – SI - Guillaume Rivière - CGP-MPA Estia 2014
Unité d’Enseignement en Informatique Année 2012-2013
2ième année ESTIA – CGP-MPA
Examen de Système d’Information – Première Session du 22 Mars 2013 (durée 2h00, aucun document autorisé)
Remarque : Une indication sur le niveau atteint est donnée après chaque exercice. Les exercices pourront cependant être traités indépendamment de leur ordre.
Contexte :
Depuis 1995, l’entreprise DEEP (Design Elements for Engineering in Precision) utilise pour son activité un logiciel de dessin hautement spécialisé, Preciware, qui est très peu répandu. Aujourd’hui l’entreprise DEEP connait un succès international et travaille en B2B1 avec de nombreux partenaires. Son nouvel ERP permet à l’entreprise DEEP de mieux répondre (et encore plus rapidement) à une demande croissante et de mieux satisfaire ses nouveaux partenaires. Cependant, le logiciel de dessin Preciware et le nouvel ERP installé en 2012 ne sont pas prévus pour communiquer ensemble. Cela fait plusieurs mois que les ingénieurs saisissent à la main les cotations dans le module SGDT du nouvel ERP. Cette étape est chronophage et source d’erreurs de transcription. La mission (que vous avez acceptée) est d’aider à l’automatisation de cette étape.
Heureusement, le logiciel Preciware possède une fonctionnalité d’exportation des données dans un fichier CSV2. Cela va grandement faciliter le travail, d’autant que l’ERP possède quand à lui une fonctionnalité d’import de fichiers CSV. Par contre la description des données est différente entre ces deux logiciels. Il va falloir lire le fichier CSV généré par Preciware afin de créer un autre fichier CSV respectant la description comprise par l’ERP. Pour ce faire il a été décidé de mettre en place un script PHP qui sera appelé par un formulaire HTML. La figure 1 récapitule le contexte qui vient d’être décrit.
Figure 1 : Schématisation du contexte.
1 B2B : Business to business
2 CSV : Les fichiers Comma Separated Values sont des fichiers ASCII où les données peuvent êtres stockées sur plusieurs lignes et où les colonnes sont marquées par le symbole ";". Ces fichiers peuvent êtres affichés dans un tableur.
CSV
BDD
Code matériau : Nom fichier CSV : Nom fichier CSV :
convertir.php
ERP (SGDT)
Preciware
formulaire.html Exporter
Ouvrir / Lecture
Déclencher
Ouvrir / Ecriture
Importer
CSV
Page 2/4
ESTIA 2ième année – Épreuve d’Informatique – SI - Guillaume Rivière - CGP-MPA Estia 2014
Pour une rondelle et une entretoise, les données dans les fichiers CSV sont formatées comme suit dans Preciware :
Type = Rondelle
Diamètre externe (inches;mm) Diamètre interne (inches;mm) Epaisseur (inches;mm)
Type = Entretoise
Diamètre externe (inches;mm) Largeur (inches;mm)
Longueur (inches;mm)
Ce qui donnera par exemple :
Le format correspondant dans le SGDT sera celui d’un cylindre creux dont le cercle interne est co- centré avec le cercle externe :
Type = CylindreCreux
Diamètre cercle externe (mm) Diamètre cercle interne (mm) Hauteur (mm)
Centre cercle interne (mm;mm) Code matériau
Ce qui donnera, pour les deux exemples précédents, avec le code matériau 105 : diamètre interne diamètre externe
largeur
diamètre externe
entretoise1_ERP.csv - Bloc notes
cylindrecreux 8.0
6.0 40.0 0.0;0.0 105 rondelle1_ERP.csv - Bloc notes
cylindrecreux 8.0
6.0 1.0 0.0;0.0 105
entretoise1.csv - Bloc notes
entretoise 0.31496062;8.0 0.07874015;2.0 1.57480314;40.0 rondelle1.csv - Bloc notes
rondelle
0.31496062;8.0 0.236220472;6.0 0.03937007;1.0
diamètre interne diamètre externe
épaisseur longueur
hauteur centre du cercle interne
Page 3/4
ESTIA 2ième année – Épreuve d’Informatique – SI - Guillaume Rivière - CGP-MPA Estia 2014
Vous noterez que dans le SGDT de l’ERP le matériau doit être spécifié. Cette information n’existant pas dans Preciware, elle sera établie par l’utilisateur via un champ dans le formulaire. Notez également qu’un mémento des fonctions PHP pour la manipulation de fichiers, pour la décomposition d’une chaîne de caractères et pour dialoguer avec MySQL est à votre disposition à la fin de cet énoncé.
Question 1 :
a) Qu’est-ce que MySQL ?
- Une gestion électronique de document - Un échange de données informatisé
- Un système de gestion de bases de données - Une base de données
b) Que veut dire le sigle francophone SGDT ?
c) Que veut dire le sigle anglophone ERP ? Donnez l’équivalent francophone de ce sigle.
E | Être capable de restituer les connaissances générales du domaine
Question 2 :
a) Qu’est qu’un ERP ? A quoi cela sert-il au sein de l’entreprise ?
b) Donnez les trois principales particularités qui caractérisent les logiciels ERP ? D | Être capable de répondre à des choix de mise en œuvre d’une solution logicielle
Question 3 :
Écrire le script convertir.php auquel seront transmises par méthode GET les trois valeurs suivantes : materiau : le code matériau de la pièce
csv1 : le nom du fichier CSV à lire provenant de Preciware csv2 : le nom du fichier CSV à écrire à destination de l’ERP C | Être capable d’écrire un script simple
Question 4 :
Donner le code HTML d’un formulaire qui : 1. demande de saisir le code du matériau,
2. demande de saisir le nom du fichier CSV provenant de Preciware, 3. demande de saisir le nom du fichier CSV à destination de l’ERP, 4. propose un bouton de réinitialisation des champs saisis,
5. propose un bouton pour valider le formulaire.
Le script appelé par le formulaire sera le script convertir.php de la question précédente.
Remarque : attention, il n’est pas demandé de gérer l’upload sur le serveur du fichier à lire.
B | Savoir développer une interface client
Page 4/4
ESTIA 2ième année – Épreuve d’Informatique – SI - Guillaume Rivière - CGP-MPA Estia 2014 Question 5 :
Laisser la saisie du code matériau à la discrétion des utilisateurs n’est pas une solution satisfaisante. Non seulement les utilisateurs doit connaître les code des matériaux, mais en plus le risque d’une erreur de saisie n’est pas écarté. Pour palier à cette difficulté, nous souhaitons qu’une liste de boutons radio permette à l’utilisateur de choisir le code matériau parmi les codes matériaux existant dans le SGDT de l’ERP.
Les codes matériau sont décrits dans une table, de la base de données de l’ERP, dont le schéma relationnel est le suivant :
materiaux
code (integer) nom (varchar 50) module_de_young (float) limite_elastique (float)
Écrire le code du nouveau formulaire qui récupère la liste des matériaux et génère la liste de choix avec les valeurs récupérées dans la base de données de l’ERP (nom du serveur : localhost, nom d’utilisateur : root, mot de passe : root, nom de la base de données : db_erp).
A | Savoir exploiter une base de données
MÉMENTO : Voici quelques éléments de PHP pour vous aider à mener à bien ce travail
La fonction fopen permet d’obtenir un descripteur (type resource) d’un fichier $filepath ouvert en lecture quand $mode vaut "r" et en écriture quand $mode vaut "w". La valeur retournée par fopen est le desctipteur qui a été ouvert, ou faux si l’ouverture a échoué (par exemple en cas de fichier inexistant).
resource fopen ( string $filepath , string $mode ) ; La fonction fclose permet de libérer le descripteur de fichier $fid.
bool fclose ( resource $fid ) ;
La fonction feof permet de tester si le descripteur de fichier $fid a atteint la fin du fichier. La valeur retournée est vrai si la fin de fichier a été atteinte, faux sinon.
bool feof ( resource $fid ) ;
La fonction fgets permet de lire une ligne dans le fichier décrit par le descripteur $fid. La valeur retournée est une chaîne de caractères contenant la ligne du fichier.
string fgets ( resource $fid ) ;
La fonction fputs permet d’écrire dans le fichier décrit par le descripteur $fid.
void fputs ( resource $fid , string $txt) ;
La fonction explode permet de décomposer une chaîne de caractères en plusieurs morceaux dans un tableau selon un délimiteur spécifié.
array explode ( string $delimiter, string $line ) ;
La fonction mysql_connect permet d’ouvrir une connexion avec un seveur MySQL.
resource mysql_connect ( string $host, string $user, string $password ) ; La fonction mysql_select_db permet de sélectionner la base de données à interroger.
bool mysql_select_db ( string $database ) ; La fonction mysql_query permet d’effectuer une requête SQL sur la base de données.
result mysql_query ( string $query ) ;
La fonction mysql_result permet de récupérer la valeur du champ $field de la ligne $i de la réponse $result à une requêtre SQL de type SELECT.
string mysql_result ( result $result, int $i, string $field ) ;