diff --git a/README.md b/README.md index fe4ca0ee30e16f5ba306a2c8c5515734518b6310..eb0dca98cbef17ad502b8e706273ee7871a00693 100644 --- a/README.md +++ b/README.md @@ -71,17 +71,31 @@ Un certain nombre d'amis (appelés participants) font une sortie. L'application * Afficher au fur et à mesure le montant total des dépenses par poste (il y a 5 postes: TRANSPORT, HEBERGEMENT, RESTAURATION, LOISIRS, AUTRES) * Au final afficher pour chaque participant le montant qu'il doit payer (ou recevoir) pour que chacun ait participé équitablement. -L'exemple du jeu d'essai fourni est le suivant: +L'exemple du jeu d'essai fourni est le suivant (<b>les valeurs calculées par le modèle sont en bleu</b>): + +<style> +b { color: blue } +api { color: blue; font-familly: monospace; } +</style> + +<div style="float:left; width:35%"> liste des participants -| Participants | -|:-------------| -| Ahmed | -| Bruno | -| Celine | -| Déborah | +| Participants | <b> Solde | <b> Détail du calcul | +|:-------------|----------------:|:-----------------------| +| Ahmed | <b> 10.50 € | <b> 37.50 - 27.00 | +| Bruno | <b> -27.50 € | <b> 37.50 + 27.50 | +| Celine | <b> -6.00 € | <b> 37.50 - 43.50 | +| Déborah | <b> 23.00 € | <b> 37.50 - 14.50 | + +**_NOTE_** Calcul: + +cumul_total / nb_participants - cumul_participant + +</div> +<div style="float:left;width:35%"> liste des opérations | Participant | Poste | Montant | @@ -92,27 +106,23 @@ liste des opérations | Ahmed | AUTRES | 12.00 € | | Déborah | RESTAURATION | 14.50 € | -Les calculs sont effectués par le modèle déjà fourni. -Le cumul par poste donne: +</div> -| Poste | Cumul | -|:-------------|-------------:| -| TRANSPORT | 58.50 € | -| HEBERGEMENT | 65.00 € | -| RESTAURATION | 14.50 € | -| LOISIRS | 0.00 € | -| AUTRES | 12.00 € | -| **TOTAL** | **150.00 €** | +<div style="float:left;width:30%"> +liste des postes +| Poste | <b> Cumul | +|:-------------|--------------------:| +| TRANSPORT | <b> 58.50 € | +| HEBERGEMENT | <b> 65.00 € | +| RESTAURATION | <b> 14.50 € | +| LOISIRS | <b> 0.00 € | +| AUTRES | <b> 12.00 € | +| **TOTAL** | <b> **150.00 €** | +</div> -Et le solde par participant: (calculé comme 150/4 - ce qui a été payé par le participant) -| Participant | Solde | Détail du calcul | -|:-------------|---------:|:-----------------| -| Ahmed | 10.50 € | 37.50 - 27.00 | -| Bruno | -27.50 € | 37.50 + 27.50 | -| Celine | -6.00 € | 37.50 - 43.50 | -| Déborah | 23.00 € | 37.50 - 14.50 | +<div style="clear:both"></div> ## Interface de l'application @@ -145,41 +155,35 @@ La seconde activité présente la liste des opérations et permet d'afficher Le modèle complet de données vous est fourni (vous n'aurez donc à priori à modifier aucune des classes `ModelApplication`, `Operation` ou `Participant`. Ce modèle est intégré dans la version initiale (et partielle) de l'application android. -Vous pouvez utiliser les méthodes suivantes du modèle (la classe `ModelApplication`). - -* `addParticipant(String)`: ajouter un participant. -* `getParticipant(int)`: accès à un participant par sa position. -* `removeParticipant(String)`: supprimer un participant. -* `getNbParticipants`: lire le nombre de participants. -* `addOperation(String, String, double)`: ajouter une opération. -* `getOperation(int)`: accès à une opération par son numéro. -* `removeOperation(int)`: supprimer une opération. -* `getNbOpérations`: lire le nombre d'opérations. -* `getSum(String)`: lire le cumul pour un poste (désigné par son nom). -* `computeBalance()`: calcule les soldes et totaux. -* `getNbOperations()`: affiche le nombre d'opérations totales. -* `getNbOperations(string)`: affiche le nombre d'opérations pour un poste. -* `getSumOperation()`: affiche le cumul des montants. -* `getSumOperations(string)`: affiche le cumul des opérations pour un poste. - -## Tâches à réaliser - -L'application qui vous est fournie avec ce projet est incomplète. -Dans le cadre de ce DS, vous devez réaliser les tickets suivants: -1. Afficher le cumul des dépenses par poste. -2. Completer les classes internes `ParticipantAdapter` et `ParticipantViewHolder` pour afficher les noms des participant dans `R.id.text1`. -3. Afficher le solde par participant en dessous de chaque nom. - Utiliser le champ `TextView` dont l'id est `R.id.text2` - et la méthode `getBalance(String participant)` de l'application. -4. Ajouter un participant. L'`EditText` `R.id.new_participant` permet la saisie du pseudo. - Le bouton `R.id.add_participant` effectuera l'ajout. -5. Si l'ajout de participant est impossible (si un participant de même pseudo existe déjà) une exception est levée. +## Tâches à réaliser. + +L'application qui vous est fournie avec ce projet est incomplète. +Dans le cadre de ce DS, vous devez réaliser les tickets suivants: +(pour chaque ticket et en bleu, les méthodes vous fournissant les données) +1. Afficher le cumul des dépenses par poste. + <api>getSumOperations(string)`: affiche le cumul des opérations pour un poste.</api> +2. Completer les classes internes `ParticipantAdapter` et `ParticipantViewHolder` pour afficher les noms des participant dans `R.id.text1`. + <api>getNbParticipants: lire le nombre de participants.</api> + <api>getParticipant(int)`: accès à un participant par sa position.</api> + <api>Participant.getName()`: accesseur sur le nom du paticipant.</api> +3. Afficher le solde par participant en dessous de chaque nom (utiliser le champ `TextView` dont l'id est `R.id.text2`) + <api>getBalance(String participant): accesseur sur le solde du participant</api> +4. Ajouter un participant. + L'EditText `R.id.new_participant` permet la saisie du pseudo. + Le bouton `R.id.add_participant` effectuera l'ajout. + <api>addParticipant(String): ajouter un participant.</api> +5. Si l'ajout de participant est impossible (si un participant de même pseudo existe déjà) une exception est levée. Compléter la question précédente pour que ces exceptions soient récupérées et affichent une annonce (`Toast`) affichant le message lié à l'exception. -6. Ajouter un menu contextuel sur la liste des participants qui comporte un seul item qui permet de supprimer un participant. -7. Créer une seconde activité qui sera lancée par n'importe lequel des boutons libellé `STATS...` - Cette activité se présentera sous la forme affichée ci-dessus (faire le layout complet) mais seul les statistiques générales seront présentées. +6. Ajouter un menu contextuel sur la liste des participants qui comporte un seul item qui permet de supprimer un participant. + <api>removeParticipant(String): supprimer un participant.</api> +7. Créer une seconde activité qui sera lancée par n'importe lequel des boutons libellé `STATS...` + Cette activité se présentera sous la forme affichée ci-dessus (faire le layout complet) mais seul les statistiques générales seront présentées. + <api>getNbOperations(): affiche le nombre d'opérations totales</api> + <api>getSumOperation(): affiche le cumul des montants.</api> 8. Faire en sorte que l'appui sur le bouton `Fermer` fasse revenir sur l'activité initiale. -9. Complétez le projet de sorte que les statistiques propres à un poste soient affichées sur la partie inférieure (selon le bouton `STATS...` choisi). +9. Complétez le projet de sorte que les statistiques propres à un poste soient affichées sur la partie inférieure (selon le bouton `STATS...` choisi). + <api>getSum(String): lire le cumul pour un poste (désigné par son nom)</api> + <api>getNbOperations(string): affiche le nombre d'opérations pour un poste</api> diff --git a/img/Screenshot_1.png b/img/Screenshot_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d326986c977bed9fe6d892b4bb617f6e105ff96d Binary files /dev/null and b/img/Screenshot_1.png differ diff --git a/img/Screenshot_2.png b/img/Screenshot_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b3ae13a280e41c400377d1135a1f3176c35aefaa Binary files /dev/null and b/img/Screenshot_2.png differ diff --git a/img/offlline.png b/img/offlline.png new file mode 100644 index 0000000000000000000000000000000000000000..1642af5a99ada585f0101651aea73dee490392b9 Binary files /dev/null and b/img/offlline.png differ