Programmation en Java

Transcription

Programmation en Java
Université de Nice Sophia-Antipolis
Licence 3 MASS
Année 2005/2006
Programmation en Java
Projet à rendre (au plus tard le 21/4)
Nous allons écrire une application permettant à des utilisateurs de consulter des listes de trains
disponibles entre deux villes données, et de choisir parmi ces trains.
Les trains existants, avec leurs horaires de départ et d'arrivée, et leurs prix habituels sont
rassemblés dans une base de données. Nous utiliserons une table sous Oracle (pour simplifier on
utilise une seule table, récupérer le fichier trains.sql disponible sur la page web, dans lequel
vous pourrez rajouter des données supplémentaires si vous le souhaitez). La dernière information
de chaque colonne indique de plus si le train fait l'objet d'une action promotionnelle
exceptionnelle ("REDUC" indique qu'il bénéficie de 20% de réduction) ou d'un supplément
exceptionnel ("SUPPL" indique que le prix est augmenté de 10%).
Votre application devra offrir aux utilisateurs les services suivants :
- faire saisir la ville de départ et la ville d'arrivée et fournir la liste de tous les trains
satisfaisant ces critères (avec comme informations la durée du trajet et le prix, réduction
ou supplément éventuel compris). Pour ce faire, les trajets solutions seront placés dans un
tableau,
- donner la possibilité de sauvegarder ces informations dans un fichier Excel (dans le
répertoire courant) en utilisant un nom de fichier au choix de l'utilisateur (avec les
colonnes suivantes : nom de ville de départ, nom de ville d'arrivée, temps de trajet, prix),
- donner la possibilité de demander à l'application de sélectionner un trajet parmi tous les
trajets possibles, selon l'un des critères suivants :
- le trajet au meilleur prix,
- le trajet de durée optimum,
- le trajet offrant le meilleur compromis entre temps et prix,
- le trajet offrant le meilleur compromis entre temps et prix, en privilégiant toutefois
le prix,
- le trajet offrant le meilleur compromis entre temps et prix, en privilégiant toutefois
la durée.
Pour calculer un compromis satisfaisant entre durée d (en minutes) et prix p, nous utiliserons par
exemple une fonction de coût qui fait correspondre 0.15 euros à chaque minute, c'est à dire que
le coût du trajet sera estimé à 0.15 * d + p. Dans le cas où l'utilisateur veut toutefois privilégier le
prix par rapport à la durée, nous associerons 0.1 euros à chaque minute, et dans le cas inverse
nous lui associerons 0.3 euros.
Ceci est une suggestion, vous êtes libres d'utiliser toute autre fonction de coût qui vous paraîtrait
plus judicieuse (en expliquant pourquoi).
On remarque que les trajets possibles ont tous les mêmes caractéristiques, la seule chose qui les
différencie est d'être à tarif normal, avec réduction, ou avec supplément (c'est à dire que le prix
est calculé d'une façon ou d'une autre). Votre modélisation devra tenir compte de cet aspect.
Vous devrez fournir deux versions de votre application :
- une version qui travaille 100% avec les entrées/sorties standards,
- une version munie d'une interface graphique avec boutons et zones de texte, qui pourra par
exemple se présenter sous une forme proche de ceci :
Les champs "Ville de départ", "Ville d'arrivée" et "Nom du fichier Excel" seront des zones
de saisie, la zone de texte donnant tous les trajets possibles devra être munie d'une
scrollbar.
Votre application devra être conçue de façon lisible et modulaire, ne mettez pas tout dans une
même fonction !
Remise :
Vous devrez remettre un fichier tar contenant au moins :
- un petit rapport de quelques pages (en postscript ou pdf) sur votre projet : explications
succinctes et claires sur le choix de la hiérarchie d'héritage, architecture de l'application,
choix de programmation et utilisation de classes de la bibliothèque Java, structure de
l'interface graphique...
- tous vos sources correctement commentés
La création du fichier tar se fait de la façon suivante : si votre travail se trouve dans un sousrépertoire projet (par exemple), se placer dans le répertoire immédiatement au-dessus et faire
tar cvf projet.tar projet
C'est alors le fichier projet.tar que vous devrez transmettre.
La remise se fera via un formulaire disponible sur
http://deptinfo.unice.fr/~lpierre/Remise_projets_MASS/index.php