Projet Java - Graphique - IHM Spécialité Informatique, 3ème année 2014 - 2015 « 3D Flights Map » 1. Contexte Le but du projet est de réaliser une application permettant de visualiser en 3D sur le globe terrestre les différents trajets réalisés par les avions de ligne autour de la terre. Cette application devra permettre à l’utilisateur de sélectionner une sous-partie de ces trajets afin de visualiser, par exemple, tous les trajets d’une certaine compagnie aérienne, tous les trajets au départ d’une ville donnée, tous les trajets d’un pays à un autre pays, etc. L’utilisateur pourra définir ces différents critères de recherche et ajuster les différents paramètres de visualisation à partir d’une interface 2D. L’interface graphique de l’application sera donc constituée d’une interface 2D incluant une fenêtre de visualisation 3D contenant une représentation du globe terrestre (cf. image en partie n°4). Les données utilisées seront celles disponibles sur le site internet http://openflights.org/data.html où l’on peut trouver une liste des aéroports de la planète, une liste des différentes compagnies aériennes, ainsi que la liste des vols réguliers opérés par ces compagnies aériennes dans le monde entier. L’application sera réalisée en Java, tandis que l’interface graphique utilisera Java Swing pour la partie 2D et le moteur JMonkeyEngine 3.0 (http://jmonkeyengine.org/) pour la partie 3D. Un tutoriel vous sera proposé lors de la première séance de projet afin de vous initier à l’utilisation de JMonkeyEngine en utilisant l’environnement de développement Eclipse et de vous aider à intégrer du contenu JMonkeyEngine dans une fenêtre Java Swing. 2. Déroulement du projet Le projet se compose en deux parties principales : • Une partie applicative qui devra implémenter les différentes fonctionnalités de l’application (cf. partie n°3) • Une partie interface graphique qui permettre à l’utilisateur de contrôler l’application et de visualiser les informations (cf. partie n°4). Il est important de s’assurer que ces deux parties soient le plus indépendant possible l’une de l’autre. Pour cela, il vous est demandé de réaliser, dans un premier temps, seulement la partie applicative en utilisant un affichage dans la console pour tester les différentes fonctionnalités. Une fois que la partie applicative sera fonctionnelle et qu’elle aura été validée par les encadrants de projet, vous pourrez passer à la partie interface graphique. Par ailleurs, un accent particulier sera mis sur la conception logicielle tout au long du projet : • Pour la partie applicative, il vous est demandé de rendre un diagramme UML modélisant votre application dés la 2ème séance. Ce diagramme pourra évoluer au fur à mesure si vous vous rendez compte que des choses ne vont pas, mais vous devrez en rendre une version mise à jour à la fin du projet. • Pour la partie interface graphique, il vous est demandé de rentre un court storyboard de quelques pages expliquant le fonctionnement de votre interface utilisateur avant de passer à l’implémentation (à rendre vers le milieu du projet, lorsque vous aurez fini la partie applicative). Le travail est à réaliser en binôme. L’environnement de développement conseillé est Eclipse. L’utilisation d’un outil de gestion de versions (SVN ou Git) est fortement conseillé pour faciliter le travail en groupe. 3. Partie applicative L’application « 3D Flights Map » doit être capable de : • Charger la liste des aéroports (airports.dat), des compagnies aériennes (airlines.dat) et des vols réguliers (routes.dat) et de les stocker dans des structures de données appropriées. • Permettre à l’utilisateur d’effectuer différentes requêtes sur ces données, comme sélectionner les vols en fonction de différents critères ou trouver un itinéraire (voir la liste de fonctionnalités ci-dessous). Les listes airports.dat, airlines.dat et routes.dat sont disponibles sur le site internet http://openflights.org/ data.html. Ce site fournit aussi toutes les informations nécessaires sur le format et le contenu des fichiers. Les structures de données utilisées devront, d’une part, permettre de recréer les liens existants entre les vols réguliers, les compagnies aériennes qui opèrent ces vols, ainsi que les aéroports de départ et d’arrivé. D’autre par, elles devront aussi permettre à l’application d’effectuer les fonctionnalités décrites dans le tableau cidessous de la façon la plus performante possible (i.e. en évitant, par exemple, de parcourir exhaustivement la liste de tous les aéroports du monde pour savoir lesquels appartiennent à une ville ou un pays). Les fonctionnalités demandées doivent être effectuées en fonction de l’ordre de priorité indiqué ci-dessous : Fonctionnalités Niveau de priorité Parser les fichiers "airports.dat", "airlines.dat", "routes.dat" et stocker leur contenu 1 Donner la liste des compagnies aériennes, des aéroports, des villes ou des pays commençant par une lettre ou une chaine de caractère donnée (par exemple, "A" ou "Air F"). On pensera à utiliser une solution générique qui pourra être appliquée aux 4 types de données différentes (compagnies, aéroport, ville, pays) 1 Donner la liste des villes desservies pour un pays donné 1 Donner la liste des aéroports d’une ville donnée 1 Donner la liste des vols effectués par une compagnie aérienne (afficher l’aéroport de départ et l’aéroport d’arrivé dans la console lors des tests) 2 Donner la liste des vols au départ/à l’arrivé d’un lieu donné : aéroport, ville ou pays 2 Fonctionnalités Niveau de priorité Donner la liste des vols en combinant les deux critères : lieux (aéroport, ville ou pays) + compagnie aérienne (on ré-utilisera les deux fonctionnalités précédentes) 2 Donner la liste des vols directs d’un lieu à un autre lieu (par exemple, d’une ville à une ville ou d’un pays à un pays) 3 Effectuer un itinéraire d’un lieu à un autre lieu (vols directs s’il en existe + vols avec escales) 3 Toutes ces fonctionnalités devront être testés en console avant de passer à l’implémentation de l’interface graphique. Toute fonctionnalité non listée sera comptabilisée en bonus. 4. Interface graphique Exemple d’interface graphique La partie interface graphique doit permettre à l’utilisateur accéder intuitivement aux fonctionnalités développées dans la partie applicative et de visualiser en 3D les différents vols sélectionnés grâce à l’interface 2D. Il est demandé que l’interface graphique permette de : Fonctionnalités Niveau de priorité Sélectionner une compagnie aérienne de façon intuitive (i.e. sans avoir à parcourir la liste de toutes les compagnies aériennes) 1 Sélectionner un lieu de départ ou d’arrivé de façon hiérarchique : d’abord le pays, puis la ville, puis l’aéroport (on peut imaginer que l’utilisateur puisse d’arrêter au pays ou à la ville s’il veut effectuer une requête plus générique. On peut aussi imaginer que l’utilisateur ne sélectionne que le lieu de départ ou le lieu d’arrivé s’il veut voir tous les vols au départ ou à l’arrivé de ce lieu) 1 Afficher / Masquer tous les aéroports du globe 1 Afficher en 3D sur le globe terrestre les aéroports et les vols qui sont le résultat de la requête de l’utilisateur (exemple sur l’image : tous les vols au départ de Genève) 2 Permettre à l'utilisateur de régler les paramètres d’affichage (couleur et taille des aéroports, couleur et taille des tracés représentants les vols) 2 Fonctionnalités Niveau de priorité Afficher les itinéraires entre deux lieux en 3D sur le globe 3 Permettre à l’utilisateur de sélectionner un itinéraire particulier et d’en afficher le détail dans l’interface 2D 3 Sélectionner directement des aéroports sur le globe (pour obtenir les infos d’un aéroport ou pour rechercher des itinéraires entre deux aéroports, par exemple) Bonus Proposer une représentation artistique de tous les vols autour de la terre Bonus Rappel : vous devez d’abord réaliser un court storyboard expliquant le fonctionnement de votre interface graphique avant de passer à son implémentation. Toute fonctionnalité non listée sera comptabilisée en bonus. 5. Evaluation L’évaluation du projet Java - Graphique - IHM portera sur : • un rapport à rendre au plus tard le mardi 16 juin 2015. Le rapport devra contenir une description fonctionnelle et technique du travail réalisé, les diagrammes UML mis à jour et le storyboard. • une présentation du travail réalisé et une démonstration lors des soutenances le vendredi 19 juin 2015. 6. Contacts Groupe 1 : Cédric FLEURY - [email protected] Groupe 2 : Quoc Khanh DO - [email protected]
© Copyright 2024