WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Conception d'une application pour le suivi de passagers


par Désiré BOLONGO
ISP Budjala - I.G. 2021
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

3.1.2 Déploiement du système

Dans 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 persistance

Dans 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( *)

Règles de transformation :

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).

Mise en oeuvre sous MySQL :

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 ,
`datemanif` DATE NOT NULL ,
`type` VARCHAR( 10 ) NOT NULL ,
`codecomp` VARCHAR( 5 ) NOT NULL ,
`numvol` INT NOT NULL ,
`numpass` INT NOT NULL ,
PRIMARY KEY ( `nummanif` )

) ENGINE = MYISAM ;

Structure de la table Vol

CREATE TABLE `VOL` (

`numvol` INT NOT NULL ,
`datevol` DATE NOT NULL ,
`heurevol` TIME NOT NULL ,
`destination` VARCHAR( 20 ) NOT NULL ,
`villedepart` VARCHAR( 20 ) NOT NULL ,
`codecomp` VARCHAR( 5 ) NOT NULL ,
PRIMARY KEY ( `numvol` )

) ENGINE = MYISAM ;

Structure de la table Compagnie

CREATE TABLE `COMPAGNIE` (

`codecomp` VARCHAR( 5 ) NOT NULL ,
`nom` VARCHAR( 20 ) NOT NULL ,
`nrc` VARCHAR( 10 ) NOT NULL ,
PRIMARY KEY ( `codecomp` )

) ENGINE = MYISAM ;

Structure de la table Rapport_control

CREATE TABLE `RAPPORT_CONTROL` (

`numero` INT NOT NULL ,
`date` DATE NOT NULL ,
`remarque` VARCHAR( 25 ) NOT NULL ,
`numvol` INT NOT NULL ,
PRIMARY KEY ( `numero` )

) ENGINE = MYISAM ;

Structure de la table Passager

CREATE TABLE `PASSAGER` (

`numpass` INT NOT NULL ,
`nomcomplet` VARCHAR( 25 ) NOT NULL ,
`datenaiss` DATE NOT NULL ,
`lieunaiss` VARCHAR( 5 ) NOT NULL ,
`genre` VARCHAR( 3 ) NOT NULL ,
`nationalite` VARCHAR( 20 ) NOT NULL ,
`telephone` INT NOT NULL ,
`photo` BLOB NOT NULL ,
PRIMARY KEY ( `numpass` )

) ENGINE = MYISAM ;

Structure de la table Bagage

CREATE TABLE `BAGAGE` (

`numbag` INT NOT NULL ,
`numpass` INT NOT NULL ,
`poid` INT NOT NULL ,
`emballage` VARCHAR( 20 ) NOT NULL ,
`nature` VARCHAR( 15 ) NOT NULL ,
`quantite` INT NOT NULL ,
PRIMARY KEY ( `numbag` )

) ENGINE = MYISAM ;

Structure de la table Formulaire_trafic

CREATE TABLE `FORMULAIRE_TRAFIC` (

`numerof` INT NOT NULL ,
`datef` DATE NOT NULL ,
`designation` VARCHAR( 15 ) NOT NULL ,
`montanttotal` FLOAT NOT NULL ,
`taxembarquement` FLOAT NOT NULL ,
`taxaterissage` FLOAT NOT NULL ,
`taxepassager` FLOAT NOT NULL ,
`nummanif` INT NOT NULL ,
PRIMARY KEY ( `numerof` )

) 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">&copy; Tousdroitsréservés.Alain M</span>.</p>

</div></body></html>

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il y a des temps ou l'on doit dispenser son mépris qu'avec économie à cause du grand nombre de nécessiteux"   Chateaubriand