Module de Programmation Android (LP PRISM AirFrance)

Projet

Le but du projet est d'écrire une application Android destinée à faciliter la prise de commandes pour le personnel d'une crêperie.

Cette application doit permettre de passer la commande via une tablette, en communiquant celle-ci directement en cuisine, afin à la fois d'avoir un service rapide et d'être immédiatement informé de la disponibilité d'un plat. Elle doit également offrir la possibilité de compléter la liste des plats au fur et à mesure que ceux-ci sont de nouveau disponibles en cuisine.

Description

Votre application va communiquer avec une application serveur qui vous est fournie. Pour la faire fonctionner, reportez-vous au TD4 (paragraphe "Pour faire le TD chez vous"). Il écoute par défaut sur le port 7777, mais vous pouvez lui passer un argument supplémentaire pour le faire tourner sur un autre port.

Ce serveur connaît une liste de plats, avec la quantité disponible pour chacun de ces plats.

Il suit le protocole suivant. Lorsqu'un (ou plusieurs) client est connecté, il effectue les réponses suivantes aux requêtes du client (tous les mots en majuscule sont des mots-clés du protocole) :

Commande envoyée par le client Réponse du serveur
LISTE Envoie un message d'entête, puis ligne par ligne chacun des plats disponibles, puis le mot-clé FINLISTE .
QUANTITE Envoie un message d'entête puis, par groupes de deux lignes, chacun des plats de la base de données suivi de la quantité, puis le mot-clé FINLISTE .
COMMANDE plat Passe la commande du plat demandé, diminue de 1 le nombre de plats disponibles de cette catégorie, et envoie un message de confirmation. Si le plat initial n'est pas connu ou plus disponible, il envoie un message d'erreur en ce sens.
AJOUT quantité plat Ajoute la quantité demandée (qui doit être un entier positif) du plat demandé, qu'il soit déjà connu de la base de données ou non, et envoie un message de confirmation.
LOGOUT Déconnecte le client.

Dans la base de données du serveur, les plats sont identifiés par des chaînes de caractères. Voici en exemple les plats présents initialement en cuisine, avec leur quantité :

Plat Quantité
"crepe au jambon" 5
"crepe vegetarienne" 10
"crepe au sucre" 6
"crepe banane-chocolat" 8

Le serveur peut communiquer avec plusieurs applications clientes en même temps.

Exemple

Voici un exemple d'échange entre un client et le serveur, alors que celui-ci vient juste d'être lancé.

Commande envoyée par le client Réponse du serveur
LISTE Liste des plats (non épuisés) :
  crepe bananes-chocolat
  crepe vegetarienne
  crepe au sucre
  crepe au jambon
FINLISTE
QUANTITE Quantité de chacun des plats :
crepe bananes-chocolat
8
crepe vegetarienne
10
crepe au sucre
6
crepe au jambon
5
FINLISTE
COMMANDE crepe au jambon Plat crepe au jambon commandé
COMMANDE crepe au jambon Plat crepe au jambon commandé
COMMANDE crepe au jambon Plat crepe au jambon commandé
COMMANDE crepe au jambon Plat crepe au jambon commandé
COMMANDE crepe au jambon Plat crepe au jambon commandé
LISTE Liste des plats (non épuisés) :
  crepe bananes-chocolat
  crepe vegetarienne
  crepe au sucre
FINLISTE
QUANTITE Quantité de chacun des plats :
crepe bananes-chocolat
8
crepe vegetarienne
10
crepe au sucre
6
crepe au jambon
0
FINLISTE
COMMANDE crepe au jambon Plat crepe au jambon épuisé
COMMANDE crepe au fromage Plat crepe au jambon inconnu
AJOUT 17 crepe au jambon Le plat crepe au jambon est maintenant en quantité 17
AJOUT 2 crepe au fromage Le plat crepe au fromage est maintenant en quantité 2
AJOUT 7 crepe au sucre Le plat crepe au sucre est maintenant en quantité 13
LISTE Liste des plats (non épuisés) :
  crepe bananes-chocolat
  crepe vegetarienne
  crepe au sucre
  crepe au jambon
  crepe au fromage
FINLISTE
QUANTITE Quantité de chacun des plats :
crepe bananes-chocolat
8
crepe vegetarienne
10
crepe au sucre
13
crepe au jambon
17
crepe au fromage
2
FINLISTE
COMMANDE crepe au jambon Plat crepe au jambon commandé
COMMANDE crepe au fromage Plat crepe au fromage commandé
COMMANDE crepe au fromage Plat crepe au fromage commandé
COMMANDE crepe au fromage Plat crepe au fromage épuisé
LISTE Liste des plats (non épuisés) :
  crepe bananes-chocolat
  crepe vegetarienne
  crepe au sucre
  crepe au jambon
FINLISTE
QUANTITE Quantité de chacun des plats :
crepe bananes-chocolat
8
crepe vegetarienne
10
crepe au sucre
13
crepe au jambon
16
crepe au fromage
0
FINLISTE
LOGOUT

Travail demandé

Il vous est demandé dans un premier temps d'écrire une application cliente permettant de communiquer avec le serveur dans le but de passer des commandes et de réapprovisionner les plats, ainsi que d'en ajouter de nouveau. Vous devez pour cela concevoir une interface permettant de réaliser ces opérations de manière simple.

Dans un second temps, il vous est demandé de personnaliser votre application pour la rendre la plus agréable possible à utiliser. Vous êtes libres de vous investir dans différents aspects, en vous inspirant de ce qui a été vu (ou va être vu) en cours/TD (ou d'autres choses si vous le souhaitez). Voici quelques-uns des aspects possibles : Si vous souhaitez que le protocole soit complété d'une manière ou d'une autre pour accéder à plus d'informations, n'hésitez pas à me demander, et j'ajouterai vos demandes au serveur dans la mesure du possible.

Évaluation

Le projet est à faire en binôme, en se répartissant les tâches le plus possible. Les deux étudiants d'un même binôme n'auront pas forcément la même note suite à l'oral, selon la maîtrise que chacun aura du projet réalisé.

Rendu

Vous devrez me rendre votre code et un rapport aux deux-tiers et à la fin du projet : Lors de ces deux rendus, vous devez m'envoyer un rapport comportant deux parties : Vous devez également m'envoyer votre code avec des commentaires et des noms de méthodes et variables expressifs.

Présentation

Vous aurez 13 minutes pour présenter votre travail pendant la séance du jeudi 3 décembre, de 13h30 à 16h30. Vous pouvez faire une démo et détailler quelques points précis de votre implantation. Essayez de chacun intervenir pendant ces deux phases. Il y aura ensuite environ 7 minutes de questions.

Voici le planning des soutenances :
Horaire Binôme
13h00-13h20 Karim Abdou-Rabbih - Jordane Beekman
13h22-13h42 Chantal Khambounhuang - Ouarda Koute
13h44-14h04 Yann Combecave - Jacob Gustave Dit Duflo
14h06-14h26 Cécile Cazaux - Véronique Jouret
14h28-14h48 Sébastien Naji - Loharano Tomponiony
14h50-15h10 Bertrand Duthé - Loïc Gisselmann
15h12-15h34 Fabrice Fernandez - Vincent Hippeau
15h36-15h56 Cyril Constant - Frédéric Plats

Conseils

Pour travailler efficacement en binômes, je vous conseille d'utiliser un gestionnaire de suivi de version. Github offre par exemple un moyen gratuit de stocker son dépôt, et il existe de nombreux tutoriels sur le net pour l'utiliser. Même si c'est la première fois que vous en utilisez un, cela vous fera sans doute gagner du temps :

Foire aux questions


Retour à la page du cours