Envoyé par
mach1974
Il faut une table pour l' historique des noms des candidats qui ont déjà candidaté et à chaque nouvelle inscription parcourir cette liste et optimiser avec un tri à fusion pour optimiser la complexité.
Le placement des candidats se réalise au dernier moment avant l’édition et l’envoi des convocations.
Les candidatures postérieures à la date limite d’inscription ne sont pas prises en compte (hors délais) mais une candidature émise avant la date limite d’inscription peut toujours être reçue accidentellement après le placement. L’application gère cette situation mais ce n’est pas le problème présentement. Pour être exhaustif, il y a également le cas des candidats dits COTOREP. Des places particulières doivent alors être attribuées à ces candidats si leur handicap nécessite un aménagement particulier. On leur attribue un numéro de place au-delà du nombre d’inscrits. Mais c’est vraiment pour l’anecdote.
Dans la BDD, il n’y a qu’une seule table des candidatures.
Le sujet que j’ai proposé est simple dans son énoncé :
Il y a une table des candidatures et une place est attribuée à chaque candidature suite à un placement par ordre alphabétique, rien de plus. Le problème consiste donc à partir des numéros de place à déterminer de nouveaux numéros de façon à ce que les candidatures triées sur ce nouveau numéro permettent d’imprimer les numéros de place en piles (4 numéros de place par page), sachant toutefois que certaines candidatures ont pu être supprimées après le placement suite à des désistements. |
L’édition des numéros de table est réalisée au dernier moment, la veille ou l’avant-veille des épreuves. Entre la date d’édition des convocations et la date d’édition des numéros de tables, il peut se passer bien des événements qui peuvent venir perturber le bel ordre initial.
Pour en dire un peu plus sur le sujet, j’ai nommé «
post_it », le nouveau numéro dans la table des candidatures. Vous en saurez davantage un peu plus tard.
Pour l’instant, le problème consiste à partir de la table des candidatures triée sur le numéro de table à générer un ficher avec :
- l’identifiant de la candidature
- le numéro de place
- le numéro de post_it
Ce fichier sera traité par une requête SQL pour renseigner l’attribut post_it dans la table des candidatures.
Le nombre d’inscrits, ou plutôt la dernière place attribuée pour le concours est renseignée dans la table des concours.
Mes deux tables sont nommées :
- ec pour examens-concours avec l’attribut :
ec.place (dernier numéro de place)
- cec pour candidatures examens-concours avec les attributs :
cec.n_cec (numéro de candidature)
cec.place (numéro de place)
cec.post_it (numéro de post_it)
Je vous fais grâce de la description complète de ces deux tables, inutile pour résoudre l’algorithme de création des nouveaux numéros.
Chacun était libre de créer ses propres noms de tables et d’attributs pour créer son algorithme, soit sous forme d’algorigramme, soit sous forme de pseudocode, ou même encore de codage dans un langage de son choix.
J’ai proposé ce sujet car je pense que c’est un excellent exercice de réflexion bien que ce ne soit pas l’avis du membre qui m’a attribué un vote négatif.
La réflexion doit prendre en compte quatre informations :
- Numéro de place,
- Numéro de post_it,
- Numéro de pile,
- Numéro de page
Envoyé par
anapurna
en fait il ne faut pas supprimer l’étudiant dans la table des Candidatures mais le marquer comme valide ou non.
Il te suffit de placer que les étudiants VALIDES.
Une suppression logique génère des complications dans la conception de tous les écrans, de tous les états et nécessiterait un traitement d'épuration au final.
La fonctionnalité
Numéros de table n'implique que 2 programmes et deux écrans.
Lorsque le placement est réalisé, toutes les candidatures sont valides. Les désistements éventuels interviennent entre la date à laquelle s'est fait le placement et la date à laquelle sont éditées les numéros de table. Les places libres font l'objet d'un numéro de table
"Place libre" de façon à ne pas perturber le chef de salle et les surveillants qui préparent les salles.
L'algorithme à réaliser a plusieurs intérêts :
- Trouver la formule pour déduire le nouveau numéro
- Gérer un nombre total de places qui ne soit pas un multiple de 4
- Gérer les places libres
Mais je vous en dis bien trop. Mon anecdote à l’origine de cette aventure aurait dû suffire à faire bouillir votre imagination et votre réflexion.
Il y avait trois ingrédients essentiels :
- des candidatures placées par ordre alphabétique,
- des désistements possibles,
- et idée farfelue : imprimer des numéros de table en piles.
À partir de là, c’est rien que du bonheur, une passion, le job du développeur… Quoi !
Merci aux 6 votes positifs qui ont compris l’intérêt de ce petit sujet d’algorithmie à la simplicité trompeuse.
Si vous souhaitez mon corrigé tout de suite, vous dites.
0 |
0 |