Commit e954d5e6c610bd45bc203b6d17a75ed2341074b0

Authored by jdequidt
1 parent 43dfa45c

✚ ajout du cahier des charges et déliverables

Showing 1 changed file with 107 additions and 1 deletions   Show diff stats
@@ -51,7 +51,109 @@ athId,regId,divId,lastName,firstName,gender,age,weight,height,affiliateId,affili @@ -51,7 +51,109 @@ athId,regId,divId,lastName,firstName,gender,age,weight,height,affiliateId,affili
51 Le premier champ correspond à l'identifiant de l'athlète (`180541`), le 51 Le premier champ correspond à l'identifiant de l'athlète (`180541`), le
52 quatrième à son nom de famille `Vigneault`, le cinquième à son prénom `Alex`... En ce qui concerne les champs après `overallRank` ils correspondent au nom de l'épreuve (`18.1` signifiant première épreuve de l'édition 2018). Comme pour toutes les éditions, il y a 5 épreuves par compétition. Pour plus de détails sur chacun des champs, vous pouvez consulter l'annexe. 52 quatrième à son nom de famille `Vigneault`, le cinquième à son prénom `Alex`... En ce qui concerne les champs après `overallRank` ils correspondent au nom de l'épreuve (`18.1` signifiant première épreuve de l'édition 2018). Comme pour toutes les éditions, il y a 5 épreuves par compétition. Pour plus de détails sur chacun des champs, vous pouvez consulter l'annexe.
53 53
54 -## Annexe 54 +## Cahier des charges
  55 +
  56 +Il vous est demandé de réaliser un programme qui charge le fichier de données `CSV` (il est disponible dans le répertoire `data`) et qui permet d'interroger facilement ce fichier. Il doit être possible de :
  57 +
  58 +- Donner le top 50 (_i.e._ les 50 premiers)
  59 +- Donner le top 50 hommes uniquement ou femmes uniquement
  60 +- Donner le top 50 d'une région donnée
  61 +- Donner le top 50 d'une division donnée
  62 +- Donner le top 50 d'une épreuve donnée
  63 +- Rechercher un athlète via son identifiant (`athId`)
  64 +- Rechercher les athlètes par nom de famille
  65 +- Donner le classement d'une salle de CrossFit donnée via son identifiant (`affiliateId`)
  66 +- Donner le classement des adhérents des salles de la métropole lilloise
  67 +
  68 +Le volume de données est important, par conséquent un soin particulier devra être apporté aux structures de données utilisées et à la rapidité d'exécution de votre programme. Les choix algorithmiques devront obligatoirement être expliqués et justifiés dans votre rapport.
  69 +
  70 +Pour permettre d'évaluer automatiquement la performance de votre programme et permettre une utilisation automatique par redirection, votre programme devra fonctionner de la manière suivante :
  71 +
  72 +1. charger le fichier de données
  73 +2. attendre une commande
  74 +3. traiter la commande
  75 +4. afficher le résultat de cette commande
  76 +5. revenir à l'étape 2
  77 +
  78 +Les commandes seront les suivantes:
  79 +
  80 +- `1` : donne le top 50
  81 +- `2 M|F` : donne le top 50 hommes ou femmes
  82 +- `3 id` : donne le top 50 d'une région donnée par `id`
  83 +- `4 id` : donne le top 50 d'une division donnée par `id`
  84 +- `5 ep` : donne le top 50 d'une épreuve donnée (`ep` vaut entre `[1,5]`)
  85 +- `6 id` : recherche un athlète via son identifiant `id`
  86 +- `7 name` : recherche les athlètes dont le nom de famille est `name`
  87 +- `8 id` : donne le classement d'une salle de CrossFit via son identifiant `id`
  88 +- `9` : donne le classement des adhèrents des salles de la métropole lilloise
  89 +- `10` : quitte
  90 +
  91 +Ainsi si votre exécutable s'appelle `projet_pa` il doit être possible de l'utiliser de la manière suivante:
  92 +
  93 +~~~
  94 +$ ./projet_pa < data/requetes.txt
  95 +~~~
  96 +
  97 +avec le fichier `requetes.txt` qui contient par exemple:
  98 +
  99 +~~~
  100 +1
  101 +2 M
  102 +3 18
  103 +4 1
  104 +5 4
  105 +6 881332
  106 +7 Vigneault
  107 +8 12020
  108 +9
  109 +6 670954
  110 +6 553467
  111 +6 98546
  112 +6 344299
  113 +6 1033765
  114 +6 190466
  115 +6 3774
  116 +6 236854
  117 +6 1006179
  118 +6 263196
  119 +6 911088
  120 +6 236032
  121 +6 288309
  122 +6 173209
  123 +2 F
  124 +7
  125 +~~~
  126 +
  127 +## Déliverables
  128 +
  129 +> La date de fin de projet est le dimanche 3 juin 2018 23:59 CEST. Tout retard entraînera des pénalités.
  130 +
  131 +Vous n'avez rien à imprimer, ni des documents à envoyer par e-mail. Il faudra donner l'accès du dépôt à votre correcteur et celui-ci corrigera à partir de la dernière version du dépôt ou de la branche `release` (si elle existe) avant la date limite. Les `push` qui suivraient la date limite ne seront pas considérés.
  132 +
  133 +Sur votre dépôt devront figurer :
  134 +
  135 +- le code source correctement commenté et indenté
  136 +- un `Makefile` pour la compilation automatique
  137 +- un `README.md` décrivant l'utilisation de votre programme
  138 +- un rapport au format PDF ou un fichier `Rapport.md` (les autres formats ne sont pas acceptés) de 10 pages maximum qui explique vos choix de structures de données, vos choix de conception algorithmique et les principales étapes du déroulement de votre programme.
  139 +
  140 +## Annexes
  141 +
  142 +### Pour démarrer
  143 +
  144 +Pour commencer à travailler, vous pouvez faire un fork du dépôt qui contient le fichier `README.md` que vous êtes en train de lire. Ne pas oublier d'ajouter votre correcteur dans la liste des personnes ayant accès à votre dépôt (menu `Settings` à droite puis Menu `Members` puis bouton `New Projet Member`).
  145 +
  146 +On rappelle brièvement les commandes `GIT` que vous serez amené à utiliser :
  147 +
  148 +- `git help cmd` : pour avoir de l'aide sur la commande `cmd`
  149 +- `git add fichier` : pour ajouter au dépôt un nouveau fichier ou un fichier modifié
  150 +- `git commit -m "message qui explique les modifications"` : pour sauvegarder les modifications dans le dépôt local
  151 +- `git push` : pour mettre à jour le serveur avec votre version du dépôt
  152 +- `git pull` : pour récupérer la dernière version du serveur
  153 +- `git status`: pour voir l'état de votre dépôt local par rapport au serveur
  154 +- `git log --pretty=format:"%h - %an, %ar : %s"`: afficher le log des commits
  155 +
  156 +N'hésitez pas à vous référer au polycopié de programmation avancée pour les détails de chacune des commandes.
55 157
56 ### Description des champs du tableau `CSV` 158 ### Description des champs du tableau `CSV`
57 159
@@ -72,6 +174,10 @@ quatrième à son nom de famille `Vigneault`, le cinquième à son prénom `Alex @@ -72,6 +174,10 @@ quatrième à son nom de famille `Vigneault`, le cinquième à son prénom `Alex
72 - `18.x scoreDisplay` : résultat de la __x__ ième épreuve, nombre de répétitions (_reps_) ou temps ou charge (_lbs_) [`chaîne de caractères`] 174 - `18.x scoreDisplay` : résultat de la __x__ ième épreuve, nombre de répétitions (_reps_) ou temps ou charge (_lbs_) [`chaîne de caractères`]
73 - `18.x rank` : classement de la __x__ ième épreuve [`entier`] 175 - `18.x rank` : classement de la __x__ ième épreuve [`entier`]
74 176
  177 +### Liste des salles de CrossFit de la métropole lilloise
  178 +
  179 +Elle se trouve dans le répertoire `data` du dépôt `GIT.
  180 +
75 ### Détail des épreuves 181 ### Détail des épreuves
76 182
77 > A priori vous n'en avez pas besoin pour le sujet mais on ne sait jamais 😎 183 > A priori vous n'en avez pas besoin pour le sujet mais on ne sait jamais 😎