Conception d'une application pour le suivi de passagerspar Désiré BOLONGO ISP Budjala - I.G. 2021 |
3.1.2 Déploiement du systèmeDans cette partie nous allons décrire l'implantation physique de notre application grâce à un diagramme proposé par UML : le diagramme de déploiement. Le diagramme de déploiement permet de représenter l'architecture physique supportant l'exploitation du système. Cette architecture comprend des noeuds correspondant aux supports physiques (serveurs, routeurs...) ainsi que la répartition des artefacts logiciels (bibliothèques, exécutables...) sur ces noeuds. C'est un véritable réseau constitué de noeuds et de connexions entre ces noeuds qui modélise cette architecture.15( *) F Un noeud correspond à une ressource matérielle de traitement sur laquelle des artefacts seront mis en oeuvre pour l'exploitation du système. Les noeuds peuvent être interconnectés pour former un réseau d'éléments physiques. F Un artefact est la spécification d'un élément physique qui est utilisé ou produit par le processus de développement du logiciel ou par le déploiement du système. C'est donc un élément concret comme par exemple : un fichier, un exécutable ou une table d'une base de données. 3.2 Conception de la persistanceDans le premier et le deuxième chapitre nous avons eu à spécifier notre système, la question ici est de savoir comment seront stockées les informations de notre base de données. Les bases de données relationnelles sont au centre des systèmes d'information modernes. La standardisation du langage SQL en 1987 et la mise en réseaux des postes de travail mettent à la disposition de tous, les données de l'entreprise pour être analysées, mise en page, médiatisées... Pour effectuer ce passage du fichier à la relation, du programme à la requête, nous tiendrons compte des concepts de bases du modèle relationnel et sa mise en application avec le langage SQL. La notation UML (Rational Rose parle de profil UML pour les bases de données) permet de modéliser un schéma relationnel (le diagramme de classes représentant un ensemble de tables). Pour préciser qu'une classe représentera une table, on utilise le stéréotype <<Table>>. La classe contient des attributs. On peut relier plusieurs classes entre elles en prenant garde d'insérer convenablement les clés étrangères. Il est aussi possible d'utiliser les agrégations pour renforcer le couplage d'une association. 3.3 Dérivation du model logique des données.Nous décrivons dans cette phase les transformations à effectuer afin de dériver un schéma logique relationnel ou objet. Le modèle relationnel est à l'origine du succès que connaissent aujourd'hui les grands éditeurs de SGBD (système de gestion de bases de données), à savoir Oracle, IBM, Microsoft, Informix, Sybase et CA-Ingres. Le but initial de ce modèle était d'améliorer l'indépendance données/ traitements.16( *) F Chaque entité devient une relation. F L'identifiant de l'entité devient clé primaire pour la relation. F Chaque classe du diagramme UML devient une relation. F Il faut choisir un attribut de la classe pouvant jouer le rôle d'identifiant (PK). F Si aucun attribut ne convient en tant qu'identifiant, il faut en ajouter un de telle sorte que la relation dispose d'une clé primaire (les outils proposent l'ajout de tels attributs). F Transformation des associations Les règles de transformation que nous allons voir dépendent des cardinalités/multiplicités maximales des associations. Nous distinguons trois familles d'associations : · un-a-plusieurs ; · plusieurs-a-plusieurs ou classes-associations, et n-aires ; · un-a-un. Associations un-à-plusieurs Il faut ajouter un attribut de type clé étrangère(FK) dans la relation fils de l'association. L'attribut porte le nom de la clé primaire de la relation père de l'association. On peut se rappeler cette règle de la manière suivante : la clé de la relation père migre dans la relation fils. Associations un-à-un La règle est la suivante, elle permet d'éviter les valeurs NULL dans la base de données. Il faut ajouter un attribut clé étrangère dans la relation dérivée de l'entité ayant la cardinalité minimale égale à zéro. Dans le cas d'UML, il faut ajouter un attribut clé étrangère dans la relation dérivée de la classe ayant la multiplicité minimale égale à un. L'attribut porte le nom de la clé primaire de la relation dérivée de l'entité (classe) connectée à l'association. Ainsi la transformation nous donne le modèle suivant : Model physique des données (démonstration sous MySQL) Le niveau physique correspond à la définition des structures de données et à la programmation SQL nécessaires à mettre en oeuvre.17( *) Nous utiliserons une syntaxe SQL2 (MySQL) pour les scripts s'appliquant aux bases de données relationnelles. Le langage SQL Le langage SQL permet de déclarer tous les éléments d'une base de données, en particulier les tables, qui sont les conteneurs d'informations. Le succès que connaissent les grands éditeurs de SGBDR repose notamment sur SQL se base sur: · SQL peut s'interfacer avec des langages de troisième génération (C, Ada ou Cobol), mais aussi avec des langages plus évolués (C++, Java, Delphi, C#). · L'indépendance entre les programmes et les données (la modification d'une structure de données n'entraîne pas forcément une importante refonte des programmes). · Ces systèmes sont bien adaptés aux grandes applications informatiques de gestion et ont acquis une maturité sur le plan de la fiabilité et des performances, même avec de forts volumes (actuellement plusieurs dizaines de téraoctets). · Ils intègrent des outils de développement comme les pré compilateurs, les générateurs de code, d'états, de formulaires, et des outils d'administration, de réplication, de sauvegarde, de surveillance, etc. · Ils offrent la possibilité de stocker des informations non structurées (texte, images...) dans des champs appelés BLOB (Binary Large OBject). Dans cette partie nous allons détailler la structure de chaque table de notre model logique une fois créée sous MySQL Création de la Base de données CREATE DATABASE `rva_trafic`; Structure de la table manifeste CREATE TABLE `MANIFESTE` ( `nummanif` INT NOT NULL , ) ENGINE = MYISAM ; Structure de la table Vol CREATE TABLE `VOL` ( `numvol` INT NOT NULL , ) ENGINE = MYISAM ; Structure de la table Compagnie CREATE TABLE `COMPAGNIE` ( `codecomp` VARCHAR( 5 ) NOT NULL , ) ENGINE = MYISAM ; Structure de la table Rapport_control CREATE TABLE `RAPPORT_CONTROL` ( `numero` INT NOT NULL , ) ENGINE = MYISAM ; Structure de la table Passager CREATE TABLE `PASSAGER` ( `numpass` INT NOT NULL , ) ENGINE = MYISAM ; Structure de la table Bagage CREATE TABLE `BAGAGE` ( `numbag` INT NOT NULL , ) ENGINE = MYISAM ; Structure de la table Formulaire_trafic CREATE TABLE `FORMULAIRE_TRAFIC` ( `numerof` INT NOT NULL , ) ENGINE = MYISAM ; Description de l'application utilisateurs Dans cette partie nous allons donner certaines vues de notre application associées à quelques lignes de code qui les composent. Page d'accueil : Cette page est la première à voir une fois on accède à notre application ; elle permet aux différents utilisateurs de notre système de s'authentifier et ainsi avoir accès aux services rendus par le système. Extrait du Code source de la page d'accueil : <?php session_start(); $login = ""; $password = ""; if(isset($_POST['login']) and isset($_POST['mp'])){ $login = $_POST['login']; $password = $_POST['mp']; include('cnx.php'); $res = $db->prepare("SELECT id AS code, login, mot_de_passe AS pwd, qualite AS groupe, nom_user FROM compte"); $res->execute(); // print_r($res->errorInfo()); $donne = $res->fetchAll(); $flag_trouve = false; foreach($donne as $enregistrement) { if ($enregistrement['login'] == $login and $enregistrement['pwd'] == $password) { $flag_trouve = true; $_SESSION['login'] = $enregistrement['login']; $_SESSION['code'] = $enregistrement['code']; $_SESSION['groupe'] = $enregistrement['groupe']; $_SESSION['user'] = $enregistrement['nom_user']; $groupe = $enregistrement['groupe']; break; } } if ($flag_trouve == true) { /*Afficher le menu en fonction du groupe de l'utilisateur*/ header('location:index_'.$groupe.'.php'); } else { echo "<h2>Désolé ! Erreur mot de passe ! réessayez "; } } ?> NB. : Vue le nombre de ligne de code de notre application, nous allons nous limiter à donner juste les capture d'écrant de quelques pages de l'application. Capture de l'interface visible aux différentes compagnies : C'est à partir de ce formulaire que la compagnie pourra créér un manifeste et l'envoyer à la RVA,
Pour ce qui concerne les passagers, notre application apporte une nouvelle technique : celle de joindre une image (photos) du passager à son identité lors de l'élaboration du manifeste ; ainsi dans le cas de crash par exemple on peut facilement identifier les passagers en se basant sur leurs photos se trouvant dans notre base de données. Ainsi, en faisant une recherche sur base du numero du manifeste et l'identifiant du vol on retrouve facilement toutes les photos des passagers de ce vol. Illustration et extrait de code: <h1>Ecran de Recherche passager d'un manifeste </h1> <form method = "POST" action = "Manifeste_passager.php"> <fieldset> <legend>Fiche de recherche </legend> <p> <label>Chosir le maniste : </label> <select name = "manifeste" title = "Sélectionnez le manifeste"/><option = "">Choisir</option> <?php { echo '<option>Choisir</option>'; echo $m; }?></select></p> <p class="boutons"><input type="submit" value="Rechercher"/><input type="reset" value="Annuler" /></p> </fieldset> </form> Si on clique sur le numéro du passager (encerclé en rouge sur l'image ci haut), on obtient le détail sur son identité sous forme de carte d'identité. Page d'administration du système (suivi de son code source) :
<?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <link type="text/css" rel="stylesheet" href="css/design_general.css" /> <style type="text/css"> <!-- .Style1 {color: #FF0066} .Style2 {color: #0000FF} .Style3 {color: #000066} .Style6 {color: #000066; font-weight: bold; } --> </style> </head> <body> <div id="gauche"> <div id="menu"> <h3>RVA</h3> <ul> <li class="info_user">User: <?php echo $_SESSION['login'];?></li> </ul> <h3>Options</h3> <ul> <li class="item_menu"><a href="Ecran_compte.php">Créer compte utilisateur</a></li> <li class="item_menu"><a href="Liste_compte.php">Gérer compte user</a></li> <li class="item_menu"><a href="Index.php">Se Déconneter</a></li> </ul> </div> </div> <table width="484" height="362" border="1"> <tr><td width="474" height="101"><imgsrc="logo.jpg" alt="" width="473" height="106" /></td> </tr> </table> <div id="bas"><p align="center" class="Style1"><span class="Style2">© Tousdroitsréservés.Alain M</span>.</p> </div></body></html> |
|