retour sommaire des sujets logo ULP

Licence Physique et Applications
Parcours Ingénierie
3ème année, semestre 6
Contrôle continu n° 2 du 3/5/07
Programmation et bases de données

Durée : 1h40, documents autorisés. Vous devez composer sur votre propre papier. N'oubliez pas votre nom ! Ceux qui veulent que je publie leur note avant la publication officielle indiqueront en plus leur numéro d'étudiant. Le sujet fait deux pages

Dans une entreprise de production de béton, on décide de réorganiser les passerelles entre les différents traitements informatiques dans les services. Dès que deux deux services utilisent des données communes, elles doivent être partagées dans un base de données. Par exemple, il y a différentes compositions des bétons, chaque dosage (pourcentage d'eau, de ciment, de sable, de cailloux, différentes tailles de cailloux, divers additifs...) est utilisé par les commerciaux (donc en relation avec les commandes, les clients...), les acheteurs, la production (voire même l'automatisation)... La décision de changer la "recette" n'obligera qu'à modifier les données dans la base, toutes les applications seront automatiquement mises à jour.

Nous n'allons bien évidement pas traiter tout le problème, mais au moins quelques petits points.

1) généralités

En déplacement chez les clients, les commerciaux doivent pouvoir définir une nouvelle recette. Pour cela, ils le feront via une page web. Cette page devra donc être dynamique. Que veut dire "page dynamique" ? Pour cela, on peut utiliser des langages "côté serveur" ou "côté client". Quels sont les avantages et inconvénients, dans ce cas, de ces deux "côtés" ?

2) langage php

Supposons que, dans une page php, l'on ait récupéré, dans un tableau nommé $prod, la liste des produits utilisés pour un béton ($prod[0] est le premier, $prod[1] le second,... , $prod[$nb-1] le dernier). Un second tableau nommé $dose comporte quand à lui, dans le même ordre, le dosage de chaque produit (c'est un nombre, $dose[0] est la dose du premier...).

Question 2a : écrivez le morceau de code php qui affiche le nom du premier produit (n'espérez pas récupérer beaucoup de points par cette question).

Question 2b : écrivez le morceau de code php qui affiche le nom du produit de dose la plus importante. Je vous propose l'algorithme suivant : on regarde la dose du premier, on la compare à la dose du second (on se souvient du plus grand des deux), puis on le compare au troisième, etc jusqu'au dernier. (vous pouvez créer une fonction qui retourne le nom du produit à plus forte dose)

Question 2c : affichez tous les noms des produits, dans l'ordre du dosage décroissant. Si çccedil;a vous arrange, vous avez le droit de modifier, voire d'écraser, le contenu des tableaux. Vous avez aussi le droit de réutiliser ce que vous avez fait dans les deux premières parties de la question 2.

3) définition de la base de données

Pour la production, une recette n'est pas que définie par les dosages. Nous allons supposer qu'il faut savoir en plus :

Pour des raisons de niveau d'accessibilité (certains n'ont le droit qu'à accéder aux noms des composants et dosages), il faut une table contenant les noms et dosages des composants (et éventuellement une clé unique si vous en avez besoin). L'ordre et la durée ne doivent pas apparaîicirc;tre dans cette table, mais dans une autre (ou plusieurs). Proposez une structure de base de données (relationnelle) pour gérer ces recettes

4) bibliothèque php

Comme plusieurs applications accéderont aux mêmes données, souvent de la même manière, il semble judicieux de créer une bibliothèque de fonctions utiles.

Question 4.a : comment doit-on s'y prendre pour créer et utiliser cette bibliothèque ?

Question 4.b : écrivez une fonction qui permette de supprimer un composant dans le tableau $prod. On suppose que la variable $position contient l'indice du composant à supprimer (0 si c'est le 1er, 1 pour le 2ème...). Il faut pour cela déplacer d'un cran tous ceux qui suivent !

Question 4.c : écrivez une fonction qui permette d'échanger, dans n'importe quel tableau qui devra obligatoirement être donné en argument, deux valeurs dont on a donné obligatoirement l'indice en argument


retour sommaire des sujetsPatrick TRAU, ULP - IPST juillet 07