Académique Documents
Professionnel Documents
Culture Documents
1 Examen 2017 SI Solution
1 Examen 2017 SI Solution
– – CORRECTION – –
Remarque : Ce document ne présente que des éléments de correction. Les variantes possibles sont
nombreuses.
Conn.
Gestion Gestion de
commerciale stock
Le progiciel de gestion de stock enregistre ses informations dans une base de données
PostgreSQL. Une des tables décrit les niveaux de stocks pour chaque composant :
PComposant
nocomp nom quantite_reel quantite_virtuel
Un langage de script, comme par exemple PHP, est un choix commun pour ce genre de connecteurs.
L’avantage est un temps de développement relativement court. De plus, PHP permet de lire de
fichiers Excel (avec la bibliothèque PHPExcel) et de se connecter à des bases de données Oracle et
PostgreSQL (avec PDO).
Tout d’abord, ouvrir le fichier Excel, issu de la gestion commerciale, correspondant au numéro de
commande (nocomm) pour en extraire la liste des numéros de produit et leur quantité. Ensuite, se
connecter à la base de données Oracle de la gestion des données techniques afin de constituer la liste
et quantité des composants nécessaires pour les produits. Enfin, se connecter à la base de données
PostgreSQL de la gestion de stocks pour diminuer le stock virtuel du nombre de composants qui
seront utilisés pour les produits commandés.
3) Décrivez quelles instructions de code (les fonctions, les requêtes, les tests, les calculs …) seraient
à effectuer pour chaque étape. Attention, il est demandé de décrire brièvement le code du
connecteur, mais non pas d’écrire le code complet du connecteur.
R1
R2
(X, Y, Z) H (I, J, K)
Voici un exemple d’une ligne décrivant un tel cône tronqué dans un fichier IGES :
158,8.1D0,1.7D1,8.5D0,0D0,0D0,0D0,0D0,1D0,0D0; 98P 56
L’objectif est d’écrire un connecteur qui puisse trouver dans un fichier IGES tous les troncs de cône
et en extraire les caractéristiques (H, R1, R2) afin de pouvoir les fournir à Mupad. Par exemple,
Mupad pourra alors calculer les volumes des troncs de cônes avec le code suivant :
code.mu
1 Volume := proc (hauteur, rayon1, rayon2)
2 begin
3 return (h*PI/3) * (rayon1^2 + rayon2^2 + rayon1*rayon2);
4 end_proc;
5
6 V := Volume (hauteur_IGES, rayon1_IGES, rayon2_IGES);
7
8 hauteur_IGES := 8.1 ;
9 rayon1_IGES := 17 ;
10 rayon2_IGES := 8.5 ;
11 V;
1) Ecrivez un script PHP qui lit un fichier IGES et pour chaque ligne décrivant un cône (c.-à-d.
commençant par 158) affiche trois lignes avec les caractéristiques du cône et l’appel de fonction V
(c.-à-d. comme dans les lignes 8, 9, 10 et 11 du fichier code.mu).
1 <?php
2
3 $filename = 'conception.iges' ;
4 $desc = fopen ($filename, 'r') ;
5
6 if (!$desc) {
7 die ('Erreur ouverture du fichier '.$filename.' en lecture.') ;
8 }
9
10 while (!feof ($desc)) {
11 $line = fgets ($desc) ;
12 $debut = substr ($line, 0, 3) ;
13
14 if ($debut == '158') {
15 $tab = explode (',', $line) ;
16
17 $tab_h = explode ('D', $tab[1]) ;
18 $tab_r1 = explode ('D', $tab[2]) ;
19 $tab_r2 = explode ('D', $tab[3]) ;
20
21 $h = $tab_h[0] * pow (10, $tab_h[1]) ;
22 $r1 = $tab_r1[0] * pow (10, $tab_r1[1]) ;
23 $r2 = $tab_r2[0] * pow (10, $tab_r2[1]) ;
24
25 echo 'hauteur_IGES := '.$h.' ; '."\r\n" ;
26 echo 'rayon1_IGES := '.$r1.' ; '."\r\n" ;
27 echo 'rayon2_IGES := '.$r2.' ; '."\r\n" ;
28 echo 'V; '."\r\n" ;
29 }
30 }
31
32 fclose ($desc) ;
33 ?>