Unité d Enseignement en Informatique Année 2008-2009 Avril 2009 Page 1/6 2 ième année ESTIA CGP-MPA Examen de Système d Information (2h00, aucun document autorisé) PARTIE 1 Questions de cours Exercice 1 : (7 pts) Répondre directement sur la feuille au QCM proposé : mettre une croix pour la bonne réponse. Exercice 2 : (2 pts) Citez au moins 3 exemples d informations qu un SI peut gérer au sein de l entreprise. Exercice 3 : (2 pts) Qu y a-t-il à prendre en compte dans le coût d un SI? PARTIE 2 : Implémentation Un imprimeur propose à ses clients des réalisations d impressions dans différents formats (de A6 à A0) avec différentes résolutions possibles (75, 100, 300, 600 ou 1200 ppi) en couleur ou en niveau de gris. Afin de garantir la cohérence des prix pratiqués par cet imprimeur, entre l accueil, le standard téléphonique et le service facturation, mais aussi afin de faciliter le calcul des prix, l imprimeur souhaite mettre en place un outil de calcul informatisé commun à toutes ces personnes. De plus, disposant d un site web, les clients pourront aussi bénéficier de cet outil pour réaliser des devis en ligne. Voici comment fonctionne l outil : recherche.html devis.php
Page 2/6 Le calcul du prix HT facturé au client pour une prestation est calculé comme suit : 60000 mm² de papier coûte 0.01 10000000 px coûte 0.01 d encre 0 < quantité 10 coûte 2 de main d œuvre 10 < quantité 1000 coûte 1 de main d œuvre quantité > 1000 main d œuvre offerte Voici le code du fichier devis.php : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 <html> <head> <title>réponses</title> </head> <body> <h1>devis</h1> <?php?> include ("devis_utils.inc.php") ; Calcul des dimensions $format = $_POST['format'] ; $tab = trouver_format ($FORMATS, $format) ; $largeur_mm = $tab[1] ; $hauteur_mm = $tab[2] ; $resolution = $_POST['resolution'] ; $largeur_px = mm_to_px ($largeur_mm, $resolution) ; $hauteur_px = mm_to_px ($hauteur_mm, $resolution) ; $taille_mm = $largeur_mm $hauteur_mm ; $taille_px = $largeur_px $hauteur_px ; $en_couleur = ($_POST['couleur'] == 'oui') ; Calcul du prix if (($quantite = $_POST['quantite']) == '') $quantite = 1 ; $prix_ht = cout_total ($taille_mm, $taille_px, $en_couleur, $quantite) ; Affichage dans un tableau generer_tableau ($largeur_mm, $hauteur_mm, $format, $resolution, $largeur_px, $hauteur_px, $en_couleur, $quantite, $prix_ht) ; echo '<p><a href="recherche.html">nouveau devis</a></p>' ; </body> </html>
Voici le début du fichier devis_utils.inc.php : Page 3/6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 <?php // Format de papier (nom, L, H) avec L et H en mm $FORMATS = array ( array ('A6', 105, 148), array ('A5', 148, 210), array ('A4', 210, 297), array ('A3', 297, 420), array ('A2', 420, 594), array ('A1', 594, 841), array ('A0', 841, 1189), ) ; Cette fonction retourne les dimensions d'un format papier. ENTREE/ $tab_formats (array[array[]]) : la liste des formats. ENTREE/ $format (string) : le format demandé. SORTIE/ (array[]) : les dimensions du format demandé dans un tableau construit ainsi : (nom, largeur, hauteur). function trouver_format ($tab_formats, $format) { for ($i=0 ; $i<count($tab_formats) ; $i++) { if ($tab_formats[$i][0] == $format) return $tab_formats[$i] ; function ceiling2 ($nombre) { return ceil($nombre 100) / 100 ; function cell ($contenu) { echo '<td>'.$contenu.'</td>'."\r\n" ; function bline () { echo '<tr>' ; function eline () { echo '</tr>' ;?> Pour que le script devis.php fonctionne, il manque le code des trois fonctions suivantes dans le fichier devis_utils.inc.php : mm_to_px() : lignes 23 et 24 cout_total() : lignes 35-36 generer_tableau() : lignes 40-44 Exercice 4 : (1 pt) La fonction trouver_format() est définie dans devis_utils.inc.php et est utilisée dans devis.php à la ligne 17. Si on écrit : $tab = trouver_format ($FORMATS, 'A1') ; Combien valent $tab[0], $tab[1] et $tab[2]? Aide : La fonction array() permet de créer un tableau. Par exemple : $FORMATS[0][1] vaut 105.
Exercice 5 : (1 pt) Page 4/6 La résolution d impression se calcule en ppi (pixel per inch). Ecrivez le code de la fonction mm_to_px() qui est utilisée aux lignes 23 et 24 de devis.php telle que : Aide : Cette fonction converti en pixels une dimension en mm selon la résolution indiquée. ENTREE/ $dim_mm (int) : la dimension en mm. ENTREE/ $res (int) : la résolution en ppi (pixel per inch). SORTIE/ (int) : retourne la dimension en pixels. function mm_to_px ($dim_mm, $res) 1 inch = 25,4 mm. La fonction floor() arrondi un réel à l entier inférieur. Par exemple, floor(3.14159) vaut 3 Exercice 6 : (3 pt) Ecrivez le code de la fonction cout_total() qui calcule le prix HT avec une précision de 2 décimales. Calcule le cout total d'une impression : cout main d'oeuvre, cout du papier et cout de l'encre. ENTREE/ $surface_mm (integer) : surface à imprimer en mm2. ENTREE/ $surface_px (integer) : nombre de pixels à imprimer. ENTREE/ $en_couleur (boolean) : vrai si impression couleur, faux sinon. ENTREE/ $quantite (integer) : nombre de copies. SORTIE/ (float) : le cout total HT en euros avec 2 décimales. function cout_total ($surface_mm, $surface_px, $en_couleur, $quantite) Aide : La fonction ceiling2() définie dans devis_utils.inc.php arrondi un réel à 2 décimales supérieures près. Par exemple, ceiling2(3.14159) vaut 3.15 Pour simplifier l écriture, vous pouvez décomposer le travail en trois fonctions : Calcule le cout de la main d'oeuvre tel que : - Moins de 10 copies : 2 euros - Moins de 1000 copies : 1 euro - Plus de 1000 copies : 0 euro ENTREE/ $quantite (integer) : nombre de copies. SORTIE/ (float) : le cout de la main d'oeuvre en euros. function cout_main_oeuvre ($quantite) Calcule le cout du papier tel que 60000 mm2 = 0.01 centimes. ENTREE/ $surface_mm (integer) : surface a imprimer en mm2. SORTIE/ (float) : le cout du papier en euros. function cout_papier ($surface_mm) Calcule le cout de l'encre tel que : - Couleur : 10000000 px = 0.03 centimes d'euro - Niveau de gris : 10000000 px = 0.01 centimes d'euro ENTREE/ $nb_pixels (int) : le nombre de pixels à imprimer. ENTREE/ $couleur (boolean) : vrai si impression couleur, faux sinon. SORTIE/ (float) : le cout de l'encre en euros. function cout_encre ($nb_pixels, $couleur)
Exercice 7 : (2 pt) Ecrivez le code de la fonction generer_tableau() telle que : Page 5/6 Cette fonction produit un tableau XHTML qui affiche les informations concernant le devis d'impression. ENTREE/$largeur_mm (int) : la largeur du papier en mm. ENTREE/$hauteur_mm (int) : la hauteur du papier en mm. ENTREE/$format (string) : le format du papier. ENTREE/$resolution (int) : la résolution d'impression. ENTREE/$largeur_px (int) : la largeur du fichier en px. ENTREE/$hauteur_px (int) : la hauteur du fichier en px. ENTREE/$en_couleur (boolean) : vrai si impression couleur, faux sinon. ENTREE/$quantite (int) : le nombre d'exemplaires à imprimer. ENTREE/$prix_ht (float) : le prix HT de l'impression. function generer_tableau ($largeur_mm, $hauteur_mm, $format, $resolution, $largeur_px, $hauteur_px, $en_couleur, $quantite, $prix_ht) Aide : Lour alléger l écriture du code, vous pouvez utiliser les trois fonctions bline(), cell() et eline() définies dans devis_utils.inc.php pour générer un tableau XHTML. Le code du caractère en XHTML s écrit Exercice 8 : (2 pt) Ecrivez le code de la page recherche.html. Aide : La balise <select> permet de créer une liste déroulante d'éléments (précisés par des balises <option>). Grâce à l'attribut name, elle peut être utilisée de même que la balise <input> dans un formulaire. Par exemple : <select name="liste_a_choix"> <option>choix 1</option> <option>choix 2</option> <option>choix 3</option> <option>choix 4</option> </select>
Page 6/6 QCM NOM Prénom : : Règles pour la notation : On part de 0 point. une réponse juste : +1 point une réponse fausse : -1 point pas de réponse : 0 point Les scores négatifs seront ramenés à 0. 1) Une entreprise qui ne possède pas d ordinateur ne peut pas posséder de SI : a. vrai b. faux 2) Qu est-ce qu un ERP? a. Un Environnement Robuste de Programmation b. Un progiciel de gestion intégré (Entreprise Ressource Planning) c. Un Réacteur Pressurisé Européen 3) Pour organiser l information au sein d un SI, la mise en place d une base de données est : a. nécessaire b. inutile c. préférable 4) Pour concevoir un SI, je : a. fais des lignes de code b. fais des diagrammes UML c. fais des diagrammes pieuvres 5) Avec lequel de ces langages développe-t-on des clients lourds? a. XHTML b. PHP c. JAVA 6) PHP est un langage : a. compilé b. interprété c. compilé puis interprété d. interprété puis compilé 7) PHP s exécute : a. côté bar b. côté client c. côté serveur