Rapport de stage effectué à l’IUFM de Versailles pendant mon D.U.T. Informatique passé à l'Institut Universitaire Technologique de Vélizy. (Années 1995-1997)
1. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Frédéric Sagez
D.U.T. Informatique
Institut Universitaire Technologique de Vélizy
Années 1995-1997
RAPPORT DE STAGE
Page 1 sur 99
2. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
J'ai effectué du 5 mai au 30 juin 1997 un stage au Service Informatique de Gestion de l'Institut
Universitaire de Formation des Maîtres de l'académie de Versailles.
La tâche qui m'a été confiée pendant cette période a été de faire un programme écrit en PL/SQL s ur un
serveur de base de données Oracle. Ce programme consiste à effectuer les admissions des candidats qui
s'inscrivent en première année pour devenir professeur d'écoles (inscription au C.A.P.E.).
La première étape du stage a été de faire un cahier des charges afin de définir les besoins des différents
utilisateurs. A partir de celui-ci, j'ai conçu, réalisé et testé un programme qui répond à tous les critères
demandés.
Mais pour comprendre à quoi va servir le programme, le chapitre I présente l'I.U.F.M. de Versailles ainsi
que la structure ou j'ai effectué mon stage. Le chapitre II défini très clairement tous les objectifs qui m'ont été
demandés. Les autres chapitres comme le chapitre IV est la plus grosse partie de ce rapport, il explique la
méthodologie employée pour concevoir le programme en PL/SQL ainsi que toutes les données et informations
supplémentaires qui m'ont été apportés.
Page 2 sur 99
3. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Sommaire
1 I.U.F.M. : Institut universitaire de formation des maîtres..............................................................................5
1.1 Origine des I.U.F.M. ......................................................................................................................................................................... 5
1.2 La structure des I.U.F.M. ................................................................................................................................................................ 5
1.3 Les fonctions de l'I.U.F.M. .............................................................................................................................................................. 6
1.4 Les différents services ..................................................................................................................................................................... 6
2 Les objectifs............................................................................................................................................. 10
3 Le Cahier des charges............................................................................................................................... 13
3.1 Introduction ....................................................................................................................................................................................13
3.2 Analyse de l’existant......................................................................................................................................................................13
3.2.1 Le matériel ..........................................................................................................................................................................14
3.3 Etude du système ..........................................................................................................................................................................14
3.3.1 Analyse des besoins non-fonctionnels ..........................................................................................................................14
3.3.2 Analyse des besoins fonctionnels...................................................................................................................................15
3.4 Evolution du programme..............................................................................................................................................................17
4 Le programme ......................................................................................................................................... 19
4.1 Principe de fonctionnement ........................................................................................................................................................19
4.2 Les structures..................................................................................................................................................................................20
4.2.1 La table des candidats triés .............................................................................................................................................20
4.2.2 La table des capacités des centres .................................................................................................................................20
4.2.3 La table des erreurs sur les candidats ...........................................................................................................................21
4.2.4 La table des admissions dans les centres......................................................................................................................22
4.3 Le programme principal................................................................................................................................................................23
4.4 Description de la procédure de tri des candidats ....................................................................................................................24
4.4.1 Description de la procédure Initialise_T_CANDIDAT_DESC ......................................................................................25
4.4.2 Description de la sous procédure Inscrit_Erreur .........................................................................................................27
4.4.3 Description de la procédure Tri_par_note_de_bareme ............................................................................................28
4.4.4 Description de la fonction Nombre_de_candidat_par_note_de_bareme .............................................................28
4.4.5 Description de la procédure Selectionne_Candidat_pour_table_temporaire.......................................................28
4.4.6 Description de la procédure Tri_par_note_de_prepo ................................................................................................29
4.4.7 Description de la sous procédure Tri_par_critere_de_selection .............................................................................30
4.4.8 Description de la procédure Classement_table_trie ..................................................................................................31
4.5 Description de la procédure d'attribution des centres ...........................................................................................................31
4.5.1 Description de la procédure Test_place_Centre .........................................................................................................32
4.5.2 Description de la procédure Selection_Information_Centre ....................................................................................33
4.5.3 Description de la fonction Traite_le_Centre ................................................................................................................33
4.5.4 Description de la procédure Donne_nom_du_centre................................................................................................34
4.5.5 Description de la procédure Inserer_Candidat_dans_Centre...................................................................................34
4.5.6 Description de la procédure Mise_a_jour_des_Centres ............................................................................................35
4.6 Description des procédures de mise à jour des atypiques et des dérogataires .................................................................36
4.6.1 Description de la procédure Met_le_nombre_de_derogataire ...............................................................................36
4.6.2 Description de la procédure Met_le_nombre_d_atypique.......................................................................................37
5 Fonctionnement ...................................................................................................................................... 39
6 Utilisation du programme......................................................................................................................... 45
6.1 Lancement du script ......................................................................................................................................................................45
6.2 Erreurs..............................................................................................................................................................................................46
6.3 Vérifications ....................................................................................................................................................................................46
6.4 Optimisation ...................................................................................................................................................................................48
7 Jeux de tests ............................................................................................................................................ 50
7.1 Constations et vérifications du tri des candidats .....................................................................................................................50
7.2 Constations et vérifications sur l’admission des candidats....................................................................................................52
8 Conclusion............................................................................................................................................... 56
Page 3 sur 99
4. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
9 Annexe.................................................................................................................................................... 57
9.1 Le programme SQL (affect97.sql) ...............................................................................................................................................57
9.2 Création des tables sous Oracle (creat1_0.sql) ........................................................................................................................93
9.3 Gestion de la mémoire (space2.sql) ...........................................................................................................................................98
Page 4 sur 99
5. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
1 I.U.F.M. : INSTITUT UNIVERSITAIRE DE FORMATION DES MAITRES
1.1 Origine des I.U.F.M.
Les Instituts Universitaire de Formation des Maitres ont été créées par la loi d'orientation sur l'éducation n° 89-
486 du 10 Juillet 1989.
Les I.U.F.M. sont des établissements d'enseignement supérieur et, à ce titre, bénéficient de l'autonomie
pédagogique et administrative : ce sont des établissements publics administratifs.
Les I.U.F.M. sont rattachées aux universités des différentes académies. Des conventions sont signées ent re le
président de l'établissement de rattachement et le directeur de l'institut après avis des conseils d'administration
des deux établissements.
De part ce changement de statut des établissements de formation des enseignants, la profession a été
revalorisée et le recrutement ne s'effectue plus au même niveau.
Au mois de Septembre 1991, les I.U.F.M. ont ouverts leurs portes, en remplacement des Ecoles Normales qui
existaient par le passé car elles étaient gérées au niveau départemental (il en existait une pour chaque
département). Désormais il n'existe plus qu'un I.U.F.M. par académie, ainsi leur création a entraîné le
regroupement d'entités distinctes au sein d'un même établissement.
1.2 La structure des I.U.F.M.
Chaque I.U.F.M. a hérité au moment de sa création des locaux et du matériel des Ecoles Normales dont il est le
successeur.
Page 5 sur 99
Présentation de l'organisation d'un I.U.F.M. :
Il y a un siège qui est le centre de direction et de gestion de l'ensemble de l'établissement dont le rôle
est de répartir les ressources entre les différents centres éparpillés à l'intérieur de l'académie selon leurs
besoins. Au siège il y a un directeur qui a la charge de l'ensemble de l'institut, il est assisté par un secrétaire
général et d'un agent comptable qui ont pour mission la gestion et la répartition du budget de l'I.U.F.M.
Il y a des centres de formation dont le rôle est d'assurer la préparation des étudiants au concours de
l'Education Nationale, la formation des professeurs stagiaires pendant leur deuxième année. Ces centres de
formation sont répartis à travers l'académie administrée par l'I.U.F.M.
Chaque centre a un directeur qui est responsable avec son équipe des orientations pédagogiques suivis par
l'établissement ainsi que de son administration.
Dans l'académie de Versailles, il y a 6 centres de formations :
Versailles (au même endroit que le siège),
Antony Jouhaux,
6. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Page 6 sur 99
Antony Val de Bièvre,
Cergy,
Etiolles,
Saint Germain en Laye.
1.3 Les fonctions de l'I.U.F.M.
La fonction essentielle de l'I.U.F.M. est la sélection et la formation des futurs enseignants de l'éducation
nationale. Cette fonction s'exerce dans les centres de formation qui ont chacun leurs spécificités :
Le centre d'Antony Jouhaux forme les futurs enseignants technologiques dans les lycées et collèges, on y
prépare le Certificat d'Aptitude au Professorat Technologique (CAPET) ainsi que des enseignants pour les
Lycées Professionnels (LP) en y préparant le Certificat d'Aptitude au Professorat des Lycées
Professionnels.
Les centres d'Antony Val de Bièvre, Cergy et Etiolles accueillent les candidats pour la préparation du
Certificat d'Aptitude au Professorat des Ecoles (CAPE ou PE), de l'Enseignement Secondaire (CAPES) ainsi
que l'Education Physique et Sportive (CAPEPS).
Les centres de Saint Germain en Laye et Versailles quant à eux sont chargés de préparer les CAPE ou le
CAPES.
La personne désirant s'inscrire dans l'une des branches doit avoir obligatoirement une licence sauf pour les CAPE
ou l'on peut s'inscrire avec un diplôme équivalent au BAC+3 comme par exemple le Diplôme National Technique
Supérieur après un Diplôme Universitaire Technologique.
L'étudiant fait d'abord une démarche de préinscription. Son dossier passe alors devant une commission
d'admission qui sélectionne les personnes qui vont disposer d'une place à l'I.U.F.M.
Après son admission, l'étudiant passe une année dans un centre de l'I.U.F.M. pour préparer le concours auquel il
est candidat. A l'issue de cette première année d'enseignement pédagogique, le candidat passe son concours.
S’il l'obtient, le candidat entre en deuxième année en qualité de professeur stagiaire, sinon il peut redoubler sa
première année s’il a eu l'avis favorable de ses professeurs.
Durant la deuxième année, le professeur stagiaire est formé sur le "terrain" dans des classes. A la fin de son
année, il passe devant une commission de validation du stage qui propose sa titularisation. Si la commission de
titularisation lui donne un avis favorable alors le candidat deviendra professeur titulaire avec un poste
d'enseignement à vie comme fonctionnaire, sinon il peut redoubler en renouvelant son stage.
Chaque année, l'académie de Versailles enregistre sur l'ensemble de ses centres, plus de 15 000 demandes
de dossier de préinscription à l'I.U.F.M. Sur ces 15 000 demandes de dossier, environ 12 000 seront soumises à
la commission d'étude qui est chargée de les valider. Parmi ces dossiers, moins de 4 000 candidats pourront
suivre une formation de CAPE en première année pour l'année scolaire 1997-1998.
1.4 Les différents services
Pour coordonner ses diverses formations et assurer le bon fonctionnement de l'I.U.F.M., il y a au siège de
l'I.U.F.M. à Versailles des services administratifs. Leur principal travail est de donner aux centres de formation
les moyens matériels pour former les personnes inscrites à l'I.U.F.M.
7. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Page 7 sur 99
Ces services sont au nombre de quatre :
1. Le service comptable qui a la responsabilité du budget de l'I.U.F.M., sa mission est la gestion et la
redistribution des ressources de l'établissement,
2. Le service scolarité qui gère les préinscriptions, le suivi des dossiers inscrits à l'I.U.F.M. ainsi que le
versement des allocations aux étudiants de première et de deuxième année,
3. Le service du personnel et des moyens qui assure la gestion du personnel administrat if et enseignant de
l'I.U.F.M., des moyens nécessaires à la pédagogie et à l'enseignement dans les centres.
4. Le service informatique de gestion qui est chargé de donner aux trois autres services les moyens
informatiques (logiciels et matériels) ainsi que dans chaque centre, ses principales activités sont :
La maintenance des réseaux (il y en à trois, voir le chapitre V),
L'installation et la maintenance du matériel informatique,
L'installation et la maintenance des logiciels informatiques,
La formation du personnel des centres sur des progiciels,
Le traitement et la maintenance des bases de données,
L'achat de matériel informatique (ils ont leur propre budget).
La particularité de ce service est qu'il est autonome vis-à-vis des autres services et ne dépend que de la direction
générale. On peut le voir sur le schéma hiérarchique de la page suivante (numéro six).
8. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Equipe de Direction
Siège de Versailles
Service Comptable Service du Personnel et des Moyens Service Scolarité Service Informatique
Page 8 sur 99
Directeur de Centre
Service administratif et Financier
Administration
Centre d'Antony Jouhaux
V ) Les différents réseaux
Pédagogie
Directeur de Centre
Service administratif et Financier
Administration
Pédagogie
Directeur de Centre
Service administratif et Financier
Administration
Pédagogie
Centre d'Etiolles
Directeur de Centre
Service administratif et Financier
Administration
Pédagogie
Centre de St Germain en Laye
Centre d'Antony Val de Bièvre
Directeur de Centre
Service administratif et Financier
Administration
Pédagogie
Centre de Versailles
Directeur de Centre
Service administratif et Financier
Administration
Pédagogie
Centre de Cergy
Bien sur l'équipe de direction est en relation directe avec le directeur de chaque centre ainsi que les autres
services du siège qui sont en rapport avec le chef du service administratif et financier de chaque centre. Le
service informatique agit surtout dans les services administratifs et pédagogiques des six centres.
9. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Il existe trois réseaux pour chaque centre de l'I.U.F.M. de Versailles, les serveurs se trouvent au siège et pour
chaque service se trouve un réseau spécifique :
Le service scolarité a un réseau qui s'appuie sur une base de donnée placée dans chaque centre de l'I.U.F.M.
La base de donnée "Prothée" contient les étudiants actuellement inscrits dans ces centres mais aussi ceux
qui ont déposés leurs dossiers d'inscription pour cette année. Le nom du serveur est "Bécassine" sous
Windows NT et cette base de données est administrée sous Oracle. Le logiciel qui gère les inscriptions
s'appelle lui aussi "Prothée", et c'est à partir de ce logiciel que le personnel du service informatique et
administratif de chaque centre va gérer toutes les informations sur les candidats qui préparent un certificat
dans un centre I.U.F.M.
Le service du personnel et des moyens est équipé d'un réseau pour l'administration de son personnel
administratif et enseignant. Ce réseau fonctionne sous une application nommée "G2i" et ne peut être utilisé
que sur des ordinateurs de type Macintosh. Malheureusement ce réseau va être abandonné car il y a eu
trop de maintenance à faire.
Le service comptable s'est vu imposé une comptabilité centralisée depuis l'intervention du ministère de
l'éducation nationale en 1994. Elle a donc son propre réseau de type client/serveur dont le serveur se trouve
au siège. L'application "Gérico" utilise le système de base de données relationnel Oracle sous Unix. La
particularité de ce réseau est que les ordinateurs clients fonctionnent en émulation de terminal VT220.
Chaque opérateur dans les centres saisisse leurs dépenses sur leurs postes et la comptabilité générale du
siège de l'I.U.F.M. engage le paiement des factures.
Page 9 sur 99
10. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
2 LES OBJECTIFS
Avant d’expliquer comment j’ai procédé à l’élaboration du cahier des charges, je vais expliquer où j’interviens
dans le cycle des préinscriptions au C.A.P.E. des candidats.
Depuis que les I.U.F.M. existent, les inscriptions se font par dossier ou par concours. Comme l’I.U.F.M. de
Versailles doit gérer les candidats de l’académie de Versailles, il y a beaucoup de demandes. Depuis l’ année
dernière, les préinscriptions se font par « Minitel ». Chaque candidat s’inscrit en donnant des informations
diverses comme par exemple les diplômes qu’il a obtenus, et à partir de ces informations, le centre de Cergy va
générer un fichier et l’envoyer au siège à Versailles. Le service informatique va transformer ce fichier et
l’importer dans la base de données « Prothée » en pratiquant quelques routines de vérification (dé
doublonnage, saisie de dossier non valide, ...). A partir des données recueillies, le service scolarité prépare un
dossier pour le candidat et l’envoie par la poste en fixant un rendez -vous dans un centre pour valider le dossier
dûment rempli. Le jour ou le candidat se présente à un centre d’I.U.F.M., une personne du service scolarité va
saisir les informations sur le dossier que le candidat a rapporté ainsi qu’un justificatif des pièces demandées
(diplôme certifié, une fiche de salaire indiquant que le candidat à travailler, etc. ...). Pendant la saisie du dossier,
le candidat peut voir les informations qui sont mises par le biais d’un moniteur, un autre étant à la disposition de
la personne qui inscrit le candidat sur un logiciel nommé « Prothée » qui a été conçus pour la saisie des
préinscriptions. La saisie étant finie, ses données sont directement validées dans la base de données. Lorsque la
date d’inscription est dépassée et que chaque centre à valider tous les candidats, le service informatique va trier
tous ces candidats selon des critères de « barémage ». Une fois les candidats triés, le service va gérer les
admissions dans les centres d’après un quota de place pour chacun d’entre eux, puis des listes de chaque centre
vont être imprimées ainsi que des statistiques pour la direction du siège. Tous les candidats admissibles seron t
traités par une commission de validation et recevront une lettre indiquant que leur candidature a été acceptée
ou refusée.
L'objectif du stage à l'I.U.F.M. de Versailles dans le service informatique est de reprendre le programme du tri et
des admissions des candidats inscrits pour la préparation au C.A.P.E. de l'année 1996 en vue de l'améliorer.
Le programme "voeu.sql" dont le script se trouve au chapitre III (les scripts) ne convenait plus pour cette année
car le barémage et les voeux ont changé ainsi que les critères de sélection des différents candidats.
Donc à la demande de Monsieur Vieux-Combe, un cahier des charges 'Affect97' a été établi pour spécifier les
demandes, d'une part pour l'utilisateur du service informatique et d'autre part pour celui du service scolarité.
Le nouveau programme demandé sera écrit en PL/SQL pour être lancé sur l'outil SQL*PLUS d'Oracle.
L'un des directeurs assistants du centre de Versailles, Madame Quittet, a proposé un tri de chaque candidat très
poussé pour éviter les égalités entre eux, de plus un rang académique leur sera affecté pour les classer
hiérarchiquement.
Le principe du tri des candidats ne concerne que les inscrits qui ont une note de barème supérieur ou égale à
trente et vérifie bien si les candidats atypiques sont inclus et qu'ils ont bien obtenu une note d'entretien
différent de zéro.
Page 10 sur 99
11. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Les candidats "dérogataires" quant à eux sont gérés directement par une procédure qui les affectent dans les
centres demandés, car ils sont bien entendus prioritaire sur les autres candidats.
La première étape du stage à été de faire un planning des différentes étapes de conception du programme :
Le cahier des charges pour spécifier les besoins des utilisateurs,
La conception du programme en faisant des algorithmes,
La réalisation du programme et les divers tests de vérification,
Et la validation du programme : mise en place du programme sur le serveur NT ainsi que son
Mai Juin
mercredi 7 au jeudi 22 au jeudi 29 au mardi 17 au
mercredi 21 mercredi 28 lundi 16 jeudi 19
PLANNIFICATION du
projet 'Affect97'.
Cahier des charges
(spécifications et besoins)
(algorithmes)
Réalisation et Tests
(codage du programme)
(utilisation)
TOTAL en jour * : 29 9 5 13 2
Page 11 sur 99
exécution.
Voici la première version du diagramme de GANT du projet :
Conception
Validation
Mais suite à des modifications de critères pendant le projet et suite aux enjeux des jalons finaux, voici la
dernière version :
12. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Pour mieux distinguer les différentes étapes de conception, voici le cycle de vie :
Du 12/05 au 21/05 Du 17/06 au 19/06
Du 22/05 au 16/06
Page 12 sur 99
Spécification - Etudes des besoins
Cahier des charges
Validation
Mise en place du Programme
Conception
Algorithmes
Tests
Jeux de tests
Réalisation
Codage en PL/SQL
13. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Page 13 sur 99
3 LE CAHIER DES CHARGES
3.1 Introduction
L’Institut Universitaire de Formation des Maîtres de l’Académie de Versailles est le centre de direction
et de gestion des différentes formations des futurs enseignants. Le siège de l’I.U.F.M. de Versailles gère
six centres de formation : Cergy, Versailles, Antony Val de Bièvre, Etiolles, Saint Germain en Laye et
Antony Jouhaux qui préparent la formation au Certificat d’Aptitude de Professorat d’Enseignement
Secondaire. Leur rôle est d’assurer la préparation des étudiants au concours de l’Educa tion National
des professeurs d’écoles.
Des candidats s’inscrivent sur le Minitel pour préparer leur propre formation de professeur avant la fin
du mois de Mai. Les informations recueillies seront retranscrites dans une base de données appelée
« Prothée ».
Le service scolarité du siège de Versailles qui gère les admissions demande au service informatique
d’écrire un programme concernant les candidats de première année pour les postes de professeurs
d’écoles.
Le programme devra trier par ordre décroissant chaque candidat suivant une note de barème (un
étudiant est « barèmé » suivant les diplômes obtenus et les différents stages qu’il a effectués). Des
critères de sélection supplémentaires sont ajoutés pour traiter les égalités entre les différentes
personnes, dans un premier temps on comparera les notes obtenues à la préprofessionnalisation (un
second tri sera effectué par ordre de grandeur : de la note la plus forte à la plus faible), si on n'arrive
toujours pas à les départager dans un deuxième temps on se basera sur les critères suivants dans cet
ordre : si le candidat a fait au moins six mois de service d'enseignement ou de surveillance ou
périscolaire dans un établissement scolaire ou d'activité périscolaire; si il a eu une activité péri -
éducative ou périscolaire dans le cadre d'une institution (établissement scolaire, municipalité ou
association) avec au moins deux expériences distinctes pendant une durée de six semaines cumulées
ou de soixante heures de soutien scolaire; si il a eu une activité salariée de six mois à temps plein autre
que l'enseignement; et dans l'ordre si il a obtenu le Brevet d'Aptitude à la Formation de Directeur de
centre ou le Brevet d'Aptitude à la Formation d'Animateur de centre, ou le Brevet d'Education
Sportive ou le Brevet National de Secourisme. Si on n'arrive toujours pas à les départager, le dernier
critère sera l’âge du candidat tout en favorisant les plus jeunes (un troisième tri sera effectué toujours
par ordre de grandeur : du plus jeune au plus vieux), puis on attribuera un rang pour chaque candidat.
Une fois le tri fini, il ne reste plus qu’à affecter un centre pour chaque candidat suivant le nom de
département sélectionné (le candidat avait choisi les cinq départements par ordre de préférence),
ensuite le programme décrémentera le nombre d’inscription possible du centre où il est inscrit
provisoirement. A la fin du programme, les meilleurs élèves retenues dans les cinq départements
seront mis dans une liste à la disposition du service scolarité.
3.2 Analyse de l’existant
14. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
3.2.1 Le matériel
L’utilisation du programme se fera sur le serveur Windows NT appelé « Bécassine » qui a un
accès direct sur la base de données. Voici sa configuration actuelle :
C'est un ordinateur de type P.C. équipé de 2 processeurs Pentium 100 et qui est muni
Page 14 sur 99
d’un moniteur,
Une mémoire vive (RAM) de 64 Méga Octets,
Un disque dur d’une capacité de 2,1 Giga Octets pour disposer des différents logiciels,
Une carte réseau Ethernet (LAN) de type 3COM.
3.2.1.1 Les logiciels
L’ordinateur P.C. est muni du système d’exploitation DOS version 6.22 avec Windows NT version
3.5.1.
L’application PL/SQL sur la base de données fonctionnera sous ORACLE version 7 avec ses outils
de développements pour Windows (on aura surtout besoin du logiciel SQL*PLUS).
3.3 Etude du système
3.3.1 Analyse des besoins non-fonctionnels
3.3.1.1 Le développement
Le développement du logiciel s’effectuera sur un ordinateur P.C. de type Pentium 200 avec 32
Méga Octets de mémoire vive connecté qui est au réseau sur la base de données, un disque
dur de 2,1 Giga Octets servira de support permettant ainsi d’effectuer des tests sur des bases
fictives afin de déboguer le programme avant son utilisation finale. Cela permettra aussi au
développeur de mesurer la place mémoire requise pour les données stockées ainsi que la place
disponible pour le support de fichier. Cette évaluation servira entre autres à l’examen des
capacités d’adaptation du logiciel (par exemple la création de tables temporaires).
3.3.1.2 L’utilisateur
Il doit se trouver sous Oracle dans la base de données « Prothée » pour lancer le programme
écrit en PL/SQL qui portera le nom de « affect97.sql ».
Le programme demandera des informations à l’utilisateur afin d’optimiser le tri des candidats,
selon des critères de choix sur les différentes formations à traiter.
Des messages indiquant des erreurs à la fin du tri ou exceptionnellement pendant celui-ci
seront répertoriés dans une table.
Il se terminera par l’affichage d’informations indiquant à l’utilisateur que le tri est fini, ensuite il
pourra visualiser le résultat final.
15. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
3.3.2 Analyse des besoins fonctionnels
3.3.2.1 Services offerts à l’utilisateur du service informatique
La première étape du programme lors de son exécution sera de sélectionner les candidats dont
le numéro de dossier commencera par l’année en cours (exemple ‘97’) ainsi que le nom de la
formation (par exemple on peut demander la première lettre : ‘E’ pour PE, signifiant Professeur
d’Ecole) ce qui permettra à l’utilisateur de traiter les différents types de formation.
Le programme n’est plus interrompu lorsqu'il est lancé sauf erreur grave, par exemple aucun
moyen d’accès à une table.
Pour chaque candidat un rang lui sera attribué, donc les affectations se feront par ordre
décroissant des notes de barème obtenues par celui-ci.
Pour chaque note de barème (inclus entre 30 et 69), on va traiter les égalités entre les
candidats par des critères de sélections (le tri se fait séquentiellement) :
1er critère : on repartit chaque candidat par note de préprofessionnalisation (il y en a six
Page 15 sur 99
: 0, 3, 5, 6, 8, 10),
2ème critère : pour chaque note de préprofessionnalisation on répartira les candidats
en deux blocs : ceux qui ont fait six mois d'enseignement ou non,
3ème critère : puis de ces deux blocs on repartitionnera ceux qui ont eu une expérience
péri-éducative (ou périscolaire) ou pas,
4ème critère : puis de ces deux blocs on repartitionnera ceux qui ont eu une expérience
de salariée ou non,
5ème critère : pour départager définitivement les candidats, on regarde si ils ont obtenu
un ou plusieurs brevets (valeur possible : 1, 2, 3) et on les départage dans quatre blocs
différents (0 : pas de brevet, 1 : B.A.F.D. 2 : B.A.F.A. ou B.E.S. 3 : B.N.S.)
Le dernier critère triera les candidats suivant leur âge tout en favorisant les plus jeunes
dans chaque bloc. Puis on ajoutera tous ces derniers blocs triés dans la table des candidats
admissibles.
16. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
8 10
0
Note préprofessionalisation
candidat déjà trié :
note de barème compris
entre 47 et 69.
Tous les candidats triés :
note de barème égale à 46.
Voici un exemple de répartition du tri séquentiel par critère de sélection
Page 16 sur 99
30
31 ... 46 ... 69
70
3
5 6
0
8
0 5 0
5
Table C A NDIDATURE
Note d'enseignement
A ctiv ité péri-éducativ e
0
5
0
5
0
5
0
5
activ ité de salariée
0
1
2
3
0
1
2
3
note des brev ets
tri de chaque bloc par ordre croissant de l'âge des candidats.
on rajoute tous les bloques à la table des candidats triés.
17. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Page 17 sur 99
D'autres conditions ont été rajoutées :
Les candidats atypiques (personne qui a un diplôme de plus de cinq ans et qui veut
préparer le concours de professeur des écoles) sont inclus dans le tri, il suffira tout
simplement de vérifier un champ d'une table pour savoir s’il a passé un entretien. Bien
entendu il faudra qu'il ait une note de barème supérieur ou égale à trente.
Les candidats dérogataires (mère de trois enfants et plus ou sportif de haut niveau) vont
directement être admis dans les centres qu'ils ont souhaités à la condition d'avoir
obtenu une note d'entretien égale à soixante dix.
Si des erreurs sont constatées pendant le tri alors elles seront rapportées dans une table qui
sera créée à cet effet. L’utilisateur pourra donc les regarder pendant le programme sans
perturbation du tri.
Un scénario sera remis à la disposition de l’utilisateur afin de le guider dans les différentes
étapes possibles du programme.
3.3.2.2 Services offerts à l’utilisateur du service scolarité
Une liste finalisée sera mise à la disposition pour le service scolarité, elle comportera les
informations du candidat admissible de la façon suivante :
Le numéro de dossier,
Le numéro de candidature,
Le nom du candidat,
Le prénom du candidat,
L’adresse du candidat,
Les 5 départements qu’il a sélectionnés par ordre de préférence,
Le nom du département où il a été admis,
La formation souhaitée,
La note de barème,
Le rang définitif du candidat.
A la visualisation, l’utilisateur pourra remarquer que le nom du département qui a été attribué
au candidat est suivis d’une étoile, on pourra ainsi connaître lequel de ses voeux a été
sélectionné.
3.4 Evolution du programme
Le programme sera modulaire, ainsi l’utilisateur pourra le modifier sans gêner le coeur du programme
principal car le PL/SQL est un langage procédure, on peut ainsi ajouter des fonctions ou des
procédures.
18. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Des commentaires seront implantés dans le programme pour aider l’utilisateur à changer la
configuration du programme, ainsi des petits modules d’exemples seront rajoutés afin de faciliter la
compréhension.
Certaines erreurs seront gérées par des exceptions, ceci permettra de les répertorier dans une table en
donnant la solution.
On peut demander d'autre renseignement lors du lancement du programme.
Page 18 sur 99
19. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Page 19 sur 99
4 LE PROGRAMME
4.1 Principe de fonctionnement
Nous travaillons sur une base de données avec des tables. Comme le programme est écrit en PL/SQL et que c'est
un langage procédural nous pouvons modulariser celui-ci avec des procédures ou des fonctions. Afin de faciliter
la compréhension des algorithmes, chaque table sera représentée par un tableau contenant une structure du
type de la table employé à chaque case. Pour aller dans les cases et récupérer les informations il suffira d'un
indice alors qu'avec le langage SQL il faut tout simplement faire un 'SELECT'.
Le programme va trier les candidats par critère, dans la base on a besoin des tables qui détiennent les
informations dont on a besoin :
La table CANDIDATURE contient le numéro de dossier et de candidature, la formation souhaitée, les
cinq départements rangés par ordre de préférence ou souhaite étudier le candidat (les voeux) ainsi que
la note de barème,
La table ETUDIANT contient le nom usuel, le prénom, la date de naissance et l'adresse complète du
candidat,
La table BAREME_INDIVIDUEL contient la note de préprofessionnalisation, sensibilisation ainsi que la
note du brevet obtenu ou encore la note d'entretien pour les dérogataires. On peut savoir si des "items"
ont été cochés : si le candidat à six mois d'enseignement, une activité péri -éducative ou périscolaire, une
activité salariée de plus de six mois.
A partir de ces tables, le programme va en créer d'autres :
La table CANDIDAT_TRIE : tous les candidats validés seront triés par ordre croissant du rang avec une
note de barème compris entre 30 et 69,
La table ERREUR_CANDIDAT : elle reportera les erreurs rencontrées sur des candidats comme par
exemple l'oublie de mettre un cinquième département dans les voeux (on ne sait jamais),
Les tables ADMIS_ANTONY_VdB, ADMIS_CERGY, ADMIS_ETIOLLES, ADMIS_ST-GERMAIN et
ADMIS_VERSAILLES contiendront les informations relatives aux candidats qui sont admissibles dans
ces centres, elles formeront chacune une liste qui sera traitée par une autre personne du service
informatique,
Remarque : la table CAPACITE_CENTRE sera créée avant le programme. Elle renfermera toutes les informations
concernant les cinq centres où seront admis les candidats. Le programme aura surtout besoin du quota de
chaque centre pour y placer chaque candidat.
A la fin du programme, une mise à jour sera effectuée dans la table CANDIDATURE pour y valider le champ
'formation' qui contiendra le nom de la formation que le candidat a souhaité, 'dossier_recevable' et 'admission'
s'il a bien été admis dans un centre (O pour oui et N pour Non). La table CAPACITE_CENTRE a un champ
'quota_centre_restant' dont la valeur finale sera attribuée par le programme.
20. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Page 20 sur 99
4.2 Les structures
4.2.1 La table des candidats triés
// STRUCTURE
Type CANDIDAT_TRIE : Article
{renseignement relatif au candidat}
no_dossier : chaîne de caractère,
no_candidature : réel,
formation : caractère,
{les cinq départements choisis par le candidat}
departement1 : chaîne de caractère,
departement2 : chaîne de caractère,
departement3 : chaîne de caractère,
departement4 : chaîne de caractère,
departement5 : chaîne de caractère,
{les critères de sélection}
note_bareme : réel, { note de barème [30..69] }
preprofessionnalisation : caractère, { la note de prepro. {0,3,5,6,8,10} }
date_naissance : date, { sous la forme DD-MM-YY }
date_retour_dossier : date, {le candidat est valide si la date > 01-01-1900}
{ renseignement complémentaire sur ses autres notes obtenu par le candidat}
enseignement : caractére { 'O' pour oui ou 'N' pour non }
peri_educ_scol : caractére { 'O' pour oui ou 'N' pour non }
activite_salarie : caractére { 'O' pour oui ou 'N' pour non }
note_brevet : réel { note compris entre 0,1,2,3 }
{chaque candidat sera classé par la note de barème la plus forte à la plus faible}
rang : entier;
// TABLEAU
Type T_CANDIDAT_TRIE : tableau[1..nb_candidat] de CANDIDAT_TRIE
Chaque case du tableau T_CANDIDAT_TRIE contient la structure CANDIDAT_TRIE concernant un
candidat. Pour aller d'un candidat à un autre, il suffit de prendre un indice inclus entre un et le nombre
total de candidats inscrits dans la table.
4.2.2 La table des capacités des centres
// STRUCTURE
Type CAPACITE_CENTRE : Article
21. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
{ le code du centre est égal au nom du département pour faciliter la recherche }
code_centre : chaîne de caractère,
{ place totale dans un centre }
quota_centre_initial : réel,
{ place restante dans un centre }
quota_centre_restant : réel,
{ nombre total de candidat atypique dans chaque centre }
nbre_atypique : réel,
{ nombre total de candidat derogataire dans chaque centre }
nbre_derogataire : réel,
{ nom du centre en entier }
nom_du_centre : chaîne de caractère;
// TABLEAU
{ type énumération }
T_indice_centre = ( ANTONY_VdB, CERGY, ETIOLLES, ST-GERMAIN, VERSAILLES )
Type T_ CAPACITE_CENTRE : tableau[T_indice_centre] de CAPACITE_CENTRE
Chaque centre a son propre quota de place de candidat admissible. Le quota restant du centre sera mis
à jour lorsque tous les candidats auront été admis, donc à la fin des attributions le résultat devra être
égal à zéro. Le code pour chaque centre est :
ANTONY_VdB : "92V" (Antony Val de Bièvres)
CERGY : "95"
ETIOLLES : "91"
ST-GERMAIN : "78S" (Saint Germain en Laye)
VERSAILLES : "78V"
Page 21 sur 99
4.2.3 La table des erreurs sur les candidats
// STRUCTURE
Type ERREUR_CANDIDAT : Article message : chaîne de caractère;
// TABLEAU
Type T_ ERREUR_CANDIDAT : tableau[1..nb_erreur] de ERREUR_CANDIDAT
Le tableau contiendra toutes les erreurs rencontrées lors du tri des candidats. Par exemple un candidat a
oublié de mettre un cinquième département, le message d'erreur indiquera la position du candidat dans
la table CANDIDATURE est le type d'erreur lui concernant : département numéro cinq manquant.
22. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
4.2.4 La table des admissions dans les centres
Page 22 sur 99
// STRUCTURE
Type ADMIS_nom du centre : Article
{renseignement relatif au candidat}
no_dossier : chaîne de caractère,
no_candidature : réel,
nom_usuel : chaîne de caractère,
prénom : chaîne de caractère,
adresse : chaîne de caractère,
code_postal : chaîne de caractère,
ville : chaîne de caractère,
{les cinq départements choisis par le candidat}
departement1 : chaîne de caractère,
departement2 : chaîne de caractère,
departement3 : chaîne de caractère,
departement4 : chaîne de caractère,
departement5 : chaîne de caractère,
{détermine quel numéro de département où le candidat est affecté par une étoile}
no_departement1 : caractère,
no_departement2 : caractère,
no_departement3 : caractère,
no_departement4 : caractère,
no_departement5 : caractère,
{indique le nom du département où le candidat est admis}
departement_choisis : chaîne de caractère,
{ le nom de la formation souhaitée par le candidat }
formation : caractère,
{ on inclus les dérogataires qui ont une note de bareme > 69 }
note_bareme : réel, { note de barème [30..90] }
{chaque candidat sera classé par ordre croissant du rang}
rang : entier;
// TABLEAU
Type T_ ADMIS_nom du centre : tableau[1..nb_candidat_par_centre] de ADMIS_nom du centre
Il y aura cinq tableaux correspondant aux centres d'ANTONY Val de Bièvre, CERGY, ETIOLLES,
23. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
ST-GERMAIN et VERSAILLES (nom du centre). Chaque centre a un nombre maximum de candidat
(représenté par 'nb_candidat_par_centre'), par exemple le centre de Cergy avait une capacité de 800
places l'année dernière.
La structure donne plus de renseignements sur le candidat admissible, cela facilitera le travail de la
personne qui gérera les admissions pour chaque centre. Le programme SQL pour créer les tables se
trouve en annexe.
Affichage d'un message d'invite avec demande d'information
Saisis des valeurs demandées à l'affichage
{On va se servir des tables CANDIDATURE, ETUDIANT et BAREME_INDIVIDUEL
pour prendre les informations de chaque candidat}
Appel de la procédure de tri des candidats
{la table CANDIDAT_TRIE est créée contenant les candidats valides à l'admission}
{une table ERREUR_CANDIDAT sera créée s'il y a eu une ou des erreurs sur les
candidats inscrits}
{on ajoute les dérogataires dans les centres en leur mettant un rang égal à zéro}
Appel de la procédure d'ajout des dérogataires
{les cinq tables pour les centres seront créées}
Appel de la procédure d'attribution des centres
{les cinq tables pour les centres sont remplies}
{les champs 'formation', 'dossier_recevable' et 'admission' de la table CANDIDATURE
seront modifiés par l'utilisateur du service informatique}
Mise à jour des candidats admissibles
{met à jour le nombre total de dérogatiare et d'atypique dans chaque centre}
Appel de la procédure Met_le_nombre_de_derogataire
Appel de la procédure Met_le_nombre_d_atypique
Page 23 sur 99
4.3 Le programme principal
Le programme principal fonctionnera de la façon suivante :
DECLARATION des variables globales.
DEBUT
FIN
Comme on peut le constater, le programme suit des étapes. Les principales sont le tri des candidats et
l'attribution de candidats dans chaque centre. L'utilisateur peut ainsi en ajouter d'autres comme par
exemple l'affichage de table entre les diverses procédures pour vérifier que tous c’est bien déroulé.
Ou sinon, il peut effectuer un tri dans un premier temps et plus tard, relancer le programme en ne
faisant que les admissions.
Le programme SQL du programme principal se trouve en annexe.
24. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
4.4 Description de la procédure de tri des candidats
Cette procédure va trier tous les candidats inscrits qui se trouvent dans la table CANDIDATURE par ordre
décroissant des notes de barème selon les critères suivant :
La note de barème compris entre 30 et 69,
La date de retour de dossier supérieur au 01-01-1900,
Tous les renseignements que le programme a besoin sur le candidat sont biens mis,
On traite les égalités entre chaque candidat par la note de préprofessionnalisation, les critères de
sélection ainsi que de l'âge en cas d'égalité persistante.
Page 24 sur 99
Procédure TRI_CANDIDAT( affiche_erreur : booléen )
Précondition : le tableau T_CANDIDATURE existe et remplit avec au moins un candidat
la saisie du numéro de dossier ainsi que de la formation doit être validé
Effet : le tableau T_CANDIDAT_TRIE est créée et remplit selon des critères de sélection
si des erreurs sont rencontrées alors affiche_erreur prendra la valeur VRAI pour
indiquer qu'il y a eu des erreurs sur certain candidat
Variables auxiliaires : indice : 1..nb_candidat {nombre total de candidat inscrit}
indice_note_bareme : 30..69 {la note de barème doit être >= 30}
test_erreur : booléen {indique que des erreurs existent}
{variable indiquant le nombre total de candidat valide pour l'admission}
nb_candidat_total : nb_candidat - nb_candidat_non_valide
{variable indiquant le nombre total de candidat qui ont la même note de
barème}
nb_candidat_par_note_de_bareme : entier
indice_DESC : 1..nb_candidat_total {nombre total de candidat inscrit}
{Le tableau contient tous les candidats valident pour l'admission}
Type T_CANDIDAT_DESC :
tableau[1..nb_candidat_total] de CANDIDAT_TRIE
{Le tableau contient tous les candidats qui ont la même note de barème pour
effectuer des opérations de tri sur les égalités}
Type T_CANDIDAT_TEMP :
tableau[1..nb_candidat_par_note_de_bareme] de
CANDIDAT_TRIE
Début
// Ici création de la table temporaire CANDIDAT_DESC
test_erreur := FAUX {aucune erreur avant de commencer le traitement}
indice_DESC := 0 {initialise l'indice du tableau destination}
Pour indice de 1 à nb_candidat Faire
{on traite tous les candidats et test si il n'y a pas d'erreur}
Initialise_T_CANDIDAT_DESC(indice, saisie_numero_dossier,
saisie_formation,test_erreur, indice_DESC)
Fin Pour
{on tri chaque candidat par sa note de barème par ordre décroissant dans le tableau
T_CANDIDAT_DESC }
Tri_par_note_de_bareme(saisie_numero_dossier, saisie_formation)
{on commence le tri par la note de barème la plus grande du tableau
T_CANDIDAT_DESC jusqu'à la plus petite}
Pour indice_note_bareme de 69 à 30 Faire
{il faut au moins un candidat sinon on ne traite pas}
Si ( Nombre_de_candidat_par_note_de_bareme(indice_note_bareme) ) Alors
// Ici création de la table temporaire CANDIDAT_TEMP
{on sélectionne tous les candidats qui ont la même note de barème et on les
range dans le tableau T_CANDIDAT_TEMP}
Selectionne_Candidat_pour_table_temporaire(indice_note_bareme,
saisie_numero_dossier, saisie_formation)
25. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
{tri les candidats dans le tableau T_CANDIDAT_TEMP par la note de
Page 25 sur 99
preprofessionnalisation}
Tri_par_note_de_prepo(saisie_numero_dossier, saisie_formation)
// on supprime ici la table temporaire CANDIDAT_TEMP
Fin Si
Fin Pour
{affecte un rang pour chaque candidat}
Classement_table_trie(saisie_numero_dossier, saisie_formation)
{si il s'est produit une erreur lors de l'appel de la procédure
Initialise_T_CANDIDAT_DESC, 'affiche_erreur' aura la valeur 'VRAI' }
affiche_erreur := test_erreur
// On supprime ici la table temporaire CANDIDAT_DESC
Fin TRI_CANDIDAT;
L'objectif de cette procédure et d'épurer tous les candidats non valident et de les rangés par ordre de
classement. Comme le nombre de candidat est grand (plus de 9000), l'algorithme est optimisé pour ne pas
perdre de temps, par exemple il ne traite que les candidats qui ont une note de barème supérieur ou égale à
trente (c’est le minimum pour s'inscrire en 1ère année de P.E. car trente points équivaut à une licence).
Remarque: les variables 'saisie_numero_dossier' et 'saisie_formation' sont des variables globales du programme
principal, on les appels dans la procédure TRI_CANDIDAT afin d'optimiser la recherche des candidats.
4.4.1 Description de la procédure Initialise_T_CANDIDAT_DESC
Elle va trier chaque candidat de la table CANDIDATURE et les mettre dans la table
CANDIDAT_TRIE : on effectue un premier tri des candidats admissibles. S'il y a des erreurs sur un
candidat alors on indiquera sa position exacte dans la table CANDIDATURE et les types d'erreurs
rencontrées.
Procédure Initialise_T_CANDIDAT_DESC(Entrée : l_indice : 1..nb_candidat,
le_numero_dossier : réel,
la_formation : chaîne de caractère,
Sortie : test_l_erreur : booléen,
Entrée/Sortie : mon_indice : 1..nb_candidat_total)
Précondition : le début du numéro de dossier <> 0,0
le début du nom de la formation <> d'une chaîne vide
mon_indice > 0
Effet : le candidat valide se trouve dans le tableau T_CANDIDAT_DESC
si une erreur existe alors la procédure renvoie 'VRAI' pour indiquer au programme
principal qu'il devra afficher le contenu du tableau T_ERREUR_CANDIDAT
lorsque le programme est fini.
Variables auxiliaires :
verifie : booléen {test si il y a eu une erreur pour ne pas incrementer le compteur
'mon_indice' du tableau T_CANDIDAT_DESC qui reçoit les valeurs}
{il faut initialiser les variables avant de les affecter pour déterminer une erreur}
Constante
carac_no_dossier : chaîne de caractère := "##########"
carac_no_candidature : réel := 0.0
carac_formation : chaîne de caractère := "####"
carac_departement : chaîne de caractère := "###"
carac_note_bareme : réel := 0.0
carac_note_prepo : caractère := '#'
carac_date_naissance : chaîne de caractère := "##-##-##"
carac_date_retour_dossier : chaîne de caractère := "##-##-##"
26. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Page 26 sur 99
Début
verifie := FAUX {aucune erreur avant de commencer le traitement}
{initialise mes variables qui vont recevoir les données}
T_CANDIDAT_DESC[mon_indice].no_dossier := carac_no_dossier
T_CANDIDAT_DESC[mon_indice].no_candidature := carac_no_candidature
T_CANDIDAT_DESC[mon_indice].formation := carac_formation
T_CANDIDAT_DESC[mon_indice].departement1 := carac_departement
T_CANDIDAT_DESC[mon_indice].departement2 := carac_departement
T_CANDIDAT_DESC[mon_indice].departement3 := carac_departement
T_CANDIDAT_DESC[mon_indice].departement4 := carac_departement
T_CANDIDAT_DESC[mon_indice].departement5 := carac_departement
T_CANDIDAT_DESC[mon_indice].note_bareme := carac_note_bareme
T_CANDIDAT_DESC[mon_indice].note_prepo := carac_note_prepo
T_CANDIDAT_DESC[mon_indice].date_naissance := carac_date_naissance
T_CANDIDAT_DESC[mon_indice].date_retour_dossier := carac_date_retour_dossier
{traite le bon candidat et vérifie si il a bien retourné son dossier rempli}
Si ( T_CANDIDATURE [l_indice].no_dossier = le_numero_dossier ET
T_CANDIDATURE [l_indice].formation = la_formation ET
T_CANDIDATURE[l_indice].date_retour_dossier > '01-01-1900' ) Alors
T_CANDIDAT_DESC[mon_indice].no_dossier := T_CANDIDATURE [l_indice].no_dossier
T_CANDIDAT_DESC[mon_indice].no_candidature := T_CANDIDATURE
[l_indice].no_candidature
T_CANDIDAT_DESC[mon_indice].formation := T_CANDIDATURE [l_indice].formation
T_CANDIDAT_DESC[mon_indice].departement1 := T_CANDIDATURE [l_indice].departement1
T_CANDIDAT_DESC[mon_indice].departement2 := T_CANDIDATURE [l_indice].departement2
T_CANDIDAT_DESC[mon_indice].departement3 := T_CANDIDATURE [l_indice].departement3
T_CANDIDAT_DESC[mon_indice].departement4 := T_CANDIDATURE [l_indice].departement4
T_CANDIDAT_DESC[mon_indice].departement5 := T_CANDIDATURE [l_indice].departement5
T_CANDIDAT_DESC[mon_indice].note_bareme := T_CANDIDATURE [l_indice].note_bareme
T_CANDIDAT_DESC[mon_indice].note_prepo := T_CANDIDATURE [l_indice].note_prepo
T_CANDIDAT_DESC[mon_indice].date_naissance := T_CANDIDATURE
[l_indice].date_naissance
T_CANDIDAT_DESC[mon_indice].date_retour_dossier := T_CANDIDATURE
[l_indice].date_retour_dossier
// On test les erreurs une par une d'un candidat si il y en a
{indique une erreur sur le numéro de dossier d'un candidat}
Si (T_CANDIDAT_DESC[mon_indice].no_dossier = carac_ no_dossier ) Alors
{indique le n ième candidat de la table pour verifier ses données}
Inscrit_Erreur("Le candidat numéro "+ l_indice+" n'a pas de
numéro de dossier"); verifie :=
VRAI Fin Si
{indique une erreur sur le numéro de candidature d'un candidat}
Si (T_CANDIDAT_DESC[mon_indice].no_candidature = carac_ no_candidature )
Alors Inscrit_Erreur("Le candidat numéro "+ l_indice+" n'a pas de
numéro de candidature"); verifie := VRAI
Fin Si
{indique une erreur sur la formation d'un candidat}
Si (T_CANDIDAT_DESC[mon_indice].formation = carac_ formation ) Alors
Inscrit_Erreur("Le candidat numéro "+ l_indice+" n'a pas de formation ")
verifie := VRAI
Fin Si
{indique une erreur sur le 1er departement d'un candidat}
Si (T_CANDIDAT_DESC[mon_indice]. departement1 = carac_ departement ) Alors
Inscrit_Erreur("Le candidat numéro "+ l_indice+" n'a pas de 1er voeu")
verifie := VRAI
Fin Si
{indique une erreur sur le 2ème departement d'un candidat}
Si (T_CANDIDAT_DESC[mon_indice]. departement2 = carac_ departement ) Alors
Inscrit_Erreur("Le candidat numéro "+ l_indice+" n'a pas de 2eme voeu")
verifie := VRAI
Fin Si
{indique une erreur sur le 3ème departement d'un candidat}
Si (T_CANDIDAT_DESC[mon_indice]. departement3 = carac_ departement ) Alors
Inscrit_Erreur("Le candidat numéro "+ l_indice+" n'a pas de 3eme voeu")
27. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
verifie := VRAI
Fin Si
{indique une erreur sur le 4ème departement d'un candidat}
Si (T_CANDIDAT_DESC[mon_indice]. departement4 = carac_ departement ) Alors
Inscrit_Erreur("Le candidat numéro "+ l_indice+" n'a pas de 4ème voeu")
verifie := VRAI
Fin Si
{indique une erreur sur le 5ème departement d'un candidat}
Si (T_CANDIDAT_DESC[mon_indice]. departement5 = carac_ departement ) Alors
Inscrit_Erreur("Le candidat numéro "+ l_indice+" n'a pas de 5ème voeu")
verifie := VRAI
Fin Si
{indique une erreur sur la note de barème d'un candidat}
Si (T_CANDIDAT_DESC[mon_indice].note_bareme = carac_note_bareme ) Alors
Inscrit_Erreur("Le candidat numéro "+ l_indice+" n'a pas de note de
Page 27 sur 99
barème ")
verifie := VRAI
Fin Si
{indique une erreur sur la note de prepro. d'un candidat}
Si (T_CANDIDAT_DESC[mon_indice].note_prepo = carac_note_prepo ) Alors
Inscrit_Erreur("Le candidat numéro "+ l_indice+" n'a pas de
note de preprofessionnalisation "); verifie :=
VRAI Fin Si
{indique une erreur sur la date de naissance d'un candidat}
Si (T_CANDIDAT_DESC[mon_indice].date_naissance = carac_date_naissance )
Alors Inscrit_Erreur("Le candidat numéro "+ l_indice+" n'a pas de
date de naissance "); verifie := VRAI
Fin Si
{indique une erreur sur la date de retour du dossier d'un candidat}
Si (T_CANDIDAT_DESC[mon_indice].date_retour_dossier = carac_date_retour_dossier
Alors Inscrit_Erreur("Le candidat numéro "+ l_indice+" n'a pas de date de retour
de dossier "); verifie := VRAI
Fin Si
Fin Si
Si ( verifie ) Alors test_l_erreur := VRAI {erreur(s) de saisie sur un candidat}
Sinon mon_indice := mon_indice + 1 {le candidat est enregistré dans le
tableau}
Fin Si
Fin Initialise_T_CANDIDAT_DESC;
4.4.2 Description de la sous procédure Inscrit_Erreur
La procédure Inscrit_Erreur est une sous procédure. Elle est appelée lorsque l'on a besoin d'écrire une
ou des erreurs relatives à un candidat dans le tableau T_ERREUR_CANDIDAT.
Procédure Inscrit_Erreur(Entrée: message : chaîne de caractère)
Précondition : message : chaîne de caractère non vide
Effet : met dans le tableau T_ERREUR_CANDIDAT le message d'erreur rencontré
sur un candidat
Variable auxiliaire : ind : 0..nb_erreur {indice du tableau}
Début
T_ERREUR_CANDIDAT[ind + 1].erreur_candidat := message
Fin Inscrit_Erreur;
28. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
4.4.3 Description de la procédure Tri_par_note_de_bareme
Dans un premier temps, on tri chaque candidat par ordre décroissant des notes de barèmes
obtenues par celui-ci.
Procédure Tri_par_note_de_bareme(Entrée : le_numero_dossier : réel,
la_formation : chaîne de caractère)
Précondition : le tableau T_CANDIDAT_DESC existe avec au moins 1 candidat
Effet : le tableau T_CANDIDAT_DESC est triée par ordre décroissant des notes de barème
Page 28 sur 99
Début
Sélectionner TOUS
Depuis le tableau T_CANDIDAT_DESC
Ou T_CANDIDAT_DESC.no_dossier = le_numero_dossier
Et T_CANDIDAT_DESC.formation = la_formation
Par Ordre DECROISSANT note_de_bareme
Fin Tri_par_note_de_bareme;
4.4.4 Description de la fonction Nombre_de_candidat_par_note_de_bareme
Ensuite on regarde s’il existe bien des candidats avec la note de barème demandée, cela évite de faire
des traitements inutiles.
Fonction Nombre_de_candidat_par_note_de_bareme(Entrée: l_indice_note_bareme : 30..69) retourne booléen
Précondition : 30 < la note de barème <69
le tableau T_CANDIDAT_DESC existe
Effet : retourne la valeur VRAI si il y a bien des candidats à la note de barème indicée sinon
elle retourne FAUX
Variables auxiliaires : test_bareme : booléen
{va indiquer le nombre total de candidat dans le tableau
T_CANDIDAT_DESC}
compteur : entier := 0
Début
Sélectionne compteur := compteur + 1
Depuis le tableau T_CANDIDAT_DESC
Ou note_bareme = l_indice_note_bareme
Si ( compteur = 0 ) Alors test_bareme := FAUX {aucun candidat}
Sinon test_bareme := VRAI {au moins un candidat}
Fin Si
Retourne test_bareme
Fin Nombre_de_candidat_par_note_de_bareme;
4.4.5 Description de la procédure Selectionne_Candidat_pour_table_temporaire
Chaque candidat avec la même note de barème vont être mis dans une table temporaire
CANDIDAT_TEMP pour effectuer un autre tri plus sélectif.
Procédure Selectionne_Candidat_pour_table_temporaire(Entrée: l_indice_note_bareme : 30..69,
le_numero_dossier : réel,
la_formation : chaîne de caractère)
29. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Précondition : le tableau temporaire T_CANDIDAT_TEMP doit être créé
Effet : le tableau temporaire T_CANDIDAT_TEMP contient que les candidats qui ont
tous la même note de barème provenant du tableau T_CANDIDAT_DESC
Page 29 sur 99
Début
Insérer dans le tableau T_CANDIDAT_TEMP
Sélectionne TOUS
Depuis le tableau T_CANDIDAT_DESC
Ou T_CANDIDAT_DESC.no_dossier = le_numero_dossier
Et T_CANDIDAT_DESC.formation = la_formation
Et note_bareme = l_indice_note_bareme
Fin Selectionne_Candidat_pour_table_temporaire;
4.4.6 Description de la procédure Tri_par_note_de_prepo
Dans cette table temporaire CANDIDAT_TEMP on départage les égalités en rajoutant un critère :
la note de préprofessionnalisation, on range les candidats par ordre décroissant.
Procédure Tri_par_note_de_prepo(Entrée : le_numero_dossier : réel,
la_formation : chaîne de caractère)
Précondition : le tableau temporaire T_CANDIDAT_TEMP existe et non vide
Effet : le tableau temporaire T_CANDIDAT_TEMP contient les candidats triés qui ont la
meme note de bareme
le tableau temporaire T_CANDIDAT_TEMP_SELECT contient les candidats triés
qui ont la meme note de préprofessionnalisation
Ce tableau une fois trié, ses valeurs seront ajoutées à la suite du tableau
T_CANDIDAT_TRIE
Variables auxiliaires :
// Ce sont des caractères qui vérifient si la case est cochée 'O'ui ou 'N'on dans la table
BAREME_INDIVIDUEL (leurs notes ne varient pas)
Constantes
{deux valeurs possibles du critère d'enseignement}
note_enseignementOUI : caractère := 'O'
note_enseignementNON : caractère := 'N'
{deux valeurs possibles du critère de l'activité éducative}
note_peri_educativeOUI : caractère := 'O'
note_peri_educativeNON : caractère := 'N'
{deux valeurs possibles du critère d'activité salariée}
note_activite_salarialeOUI : caractère := 'O'
note_activite_salarialeNON : caractère := 'N'
enum_note_prepro : entier {0,3,5,6,8,10}
Début
//on selctionne ce que l'on a besoin dans un curseur que l'on créait
Pour indice_prepro inclus dans enum_note_prepro Faire
{on selectionne les candidats par note de pré-professionnalisation d'ordre décroissant
et on les ajoute dans un autre tableau temporaire T_CANDIDAT_TEMP_SELECT}
Insérer le tableau T_CANDIDAT_TEMP_SELECT
Sélectionne TOUS
Depuis le tableau T_CANDIDAT_TEMP
Ou T_CANDIDAT_TEMP.no_dossier = le_numero_dossier
Et T_CANDIDAT_TEMP.formation = la_formation
Et T_CANDIDAT_TEMP.note_prepro = indice_prepro
Fin Pour
// On effectue le tri selectif séquentiel par ordre de grandeur
{tri de la première branche : la note d' enseignement est égale à huit}
30. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Tri_par_critere_de_selection(note_enseignementOUI,note_peri_educativeOUI,
note_activite_salarialeOUI)
Tri_par_critere_de_selection(note_enseignementOUI,note_peri_educativeOUI,
note_activite_salarialeNON)
Tri_par_critere_de_selection(note_enseignementOUI,note_peri_educativeNON,
note_activite_salarialeOUI)
Tri_par_critere_de_selection(note_enseignementOUI,note_peri_educativeNON,
note_activite_salarialeNON)
{tri de la deuxième branche : la note d' enseignement est égale à zéro}
Tri_par_critere_de_selection(note_enseignementNON,note_peri_educativeOUI,
note_activite_salarialeOUI)
Tri_par_critere_de_selection(note_enseignementNON,note_peri_educativeOUI,
note_activite_salarialeNON)
Tri_par_critere_de_selection(note_enseignementNON,note_peri_educativeNON,
note_activite_salarialeOUI)
Tri_par_critere_de_selection(note_enseignementNON,note_peri_educativeNON,
note_activite_salarialeNON)
Page 30 sur 99
Fin Tri_par_note_de_prepo;
4.4.7 Description de la sous procédure Tri_par_critere_de_selection
Dans la table temporaire CANDIDAT_TEMP_SELECT, on départage les égalités persistantes entre chaque
candidat : pour chaque type de brevet obtenu ou non, on range les candidats par ordre croissant de leur
date de naissance (du plus jeune au moins jeune).
Procédure Tri_par_critere_de_selection(Entrée : note_enseigne,
note_peri_edu, note_sal : caractère)
Précondition : le tableau temporaire T_CANDIDAT_TEMP_SELECT existe et non vide
Effet : le tableau T_CANDIDAT_TRIE contiendra les candidats triés par ordre croissant
des dates de naissances
Variable auxiliaire : note_brevet : 0..3 { la note de brevet {0,1,2,3}}
Début
Pour note_brevet de 3 à 0 Faire
Insérer dans tableau T_CANDIDAT_TRIE
Sélectionne TOUS
{tableaux contenant les informations dont on a besoin}
Depuis les tableaux T_CANDIDAT_TEMP_SELECT, T_BAREME_INDIVIDUEL
{lien pour les items}
Ou T_CANDIDAT_TEMP_SELECT.no_dossier =
T_BAREME_INDIVIDUEL.no_dossier
{renseignement supplémentaire sur l'age de l'étudiant}
Et T_CANDIDAT_TEMP_SELECT.no_dossier = T_ETUDIANT.no_dossier
{on précise que l'on s'occupe des PE}
Et T_BAREME_INDIVIDUEL.code_bareme = "PE97"
{test la note d'enseignement > 6 mois}
Et (T_BAREME_INDIVIDUEL.code_critere = 3 ET
T_BAREME_INDIVIDUEL.choix = note_enseigne)
{test la note d'activité educative}
Et (T_BAREME_INDIVIDUEL.code_critere = 5 ET
T_BAREME_INDIVIDUEL.choix = note_peri_edu)
{test la note d'activité salariale}
Et (T_BAREME_INDIVIDUEL.code_critere = 6 ET
T_BAREME_INDIVIDUEL.choix = note_sal)
{test la note du ou des brevets obtenus}
Et (T_BAREME_INDIVIDUEL.code_critere = 8 ET
T_BAREME_INDIVIDUEL.choix = note_brevet)
31. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Par Ordre CROISSANT T_ETUDIANT.date_naissance
Page 31 sur 99
Fin Pour
Fin Tri_par_date_de_naissance;
4.4.8 Description de la procédure Classement_table_trie
On effectue une mise à jour du rang pour chaque candidat dans la table CANDIDAT_TRIE pour
effectuer un classement.
Procédure Classement_table_trie(Entrée: le_numero_dossier : réel,
la_formation : chaîne de caractère)
Précondition : le tableau T_CANDIDAT_TRIE est déjà créé et existe
Effet : le tableau temporaire T_CANDIDAT_TRIE contient tous les candidats qui sont
finalement triés et filtrés
Début
Mise à jour du tableau T_CANDIDAT_TRIE
De la valeur rang := COMPTEUR(no_dossier)
Ou T_CANDIDAT_TRIE.no_dossier = le_numero_dossier
Et T_CANDIDAT_TRIE.formation = la_formation
Par Ordre DECROISSANT note_de_bareme
Fin Classement_table_trie;
4.5 Description de la procédure d'attribution des centres
Pour effectuer les admissions des candidats dans chaque centre, on a besoin de deux tables :
CANDIDAT_TRIE et CAPACITE_CENTRE. Des variables témoins seront consultées pour savoir s'il reste de
la place dans les divers centres, cela permettra de ne pas parcourir la liste des candidats triés en entier
d'où un gain de temps. Les listes finalisées de chaque centre permettent de visualiser tous les candidats
admissibles (car ils ne sont pas encore admis) avec tous les renseignements les concernant.
Procédure Attribution_des_Centres
Précondition : le tableau T_CANDIDAT_TRIE existe et remplit
le tableau T_CAPACITE_CENTRE existe et initialisé avant la procédure
Attribution_des_Centres
Création des cinq centres d'admission
Effet : Les tableaux T_ADMIS_ANTONY_VdB, T_ADMIS_CERGY, T_ADMIS_ETIOLLES, T_ADMIS_ST-GERMAIN et
T_ADMIS_VERSAILLES contiennent des listes de candidats admissibles.
Chaque quota de centre restant sera mis à jour à la fin de la procédure Attribution_des_Centres
Variables auxiliaires :
// renseignement relatif de chaque centre
{initialisation des quotas pour chaque centre, ce sont des entiers}
CentreA_quota := T_CAPACITE_CENTRE[ANTONY_VdB].quota_centre_initial
CentreC_quota := T_CAPACITE_CENTRE[CERGY].quota_centre_initial
CentreE_quota := T_CAPACITE_CENTRE[ETIOLLES].quota_centre_initial
CentreS_quota := T_CAPACITE_CENTRE[ST-GERMAIN].quota_centre_initial
CentreV_quota := T_CAPACITE_CENTRE[VERSAILLES].quota_centre_initial
{déclaration des tableaux pour les cinq centres}
Type T_ADMIS_ANTONY_VdB : tableau[1.. CentreA_quota] de ADMIS_ANTONY_VdB
Type T_ADMIS_CERGY : tableau[1.. CentreC_quota] de ADMIS_CERGY
Type T_ADMIS_ETIOLLES : tableau[1.. CentreE_quota] de ADMIS_ETIOLLES
Type T_ADMIS_ST-GERMAIN : tableau[1.. CentreS_quota] de ADMIS_ST-GERMAIN
32. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Type T_ADMIS_VERSAILLES : tableau[1.. CentreV_quota] de ADMIS_VERSAILLES
{initialisation des codes de chaque centre, ce sont des chaines de caractères}
Code_CentreA := T_CAPACITE_CENTRE[ANTONY_VdB].code_centre
Code_CentreC := T_CAPACITE_CENTRE[CERGY].code_centre
Code_CentreE := T_CAPACITE_CENTRE[ETIOLLES].code_centre
Code_CentreS := T_CAPACITE_CENTRE[ST-GERMAIN].code_centre
Code_CentreV := T_CAPACITE_CENTRE[VERSAILLES].code_centre
{détermine si le quota de chaque centre n'est pas dépassé, variable booléenne initialisée}
CentreA_libre := booléen := VRAI
CentreC_libre := booléen := VRAI
CentreE_libre := booléen := VRAI
CentreS_libre := booléen := VRAI
CentreV_libre := booléen := VRAI
// renseignement relatif a un département sélectionné
nom_departement : caractère {contiendra le nom d'un département}
quota_du_departement : entier {place restante du centre}
code_du_departement : chaîne de caractère {code du centre}
attribution : booléen {indiquera si la candidat a trouvé un centre}
no_departement : 1..5 {indique le numéro de departement du candidat}
no_candidat : 1..nb_candidat_total {indice du tableau T_CANDIDAT_TRIE}
Page 32 sur 99
Début
// Il faut créer les cinq tables d'admission des centres
no_candidat := 1 {on commence par traité le 1er candidat par ordre croissant du rang}
{on va traiter chaque candidat un par un en commençant par la note de barème la plus forte jusqu'à
la plus faible et on test si il reste de la place dans l'un des cinq centres}
Tant Que ( ( CentreA_libre ET CentreC_libre ET CentreE_libre ET CentreS_libre
ET CentreV_libre ) OU ( T_CANDIDAT_TRIE NON vide ) ) Faire
{test si chaque centre a encore de la place; si il n'y en a plus, le booléen passe à FAUX}
CentreA_libre := Test_place_Centre(CentreA_quota)
CentreC_libre := Test_place_Centre(CentreC_quota)
CentreE_libre := Test_place_Centre(CentreE_quota)
CentreS_libre := Test_place_Centre(CentreS_quota)
CentreV_libre := Test_place_Centre(CentreV_quota)
{initialisation de valeurs}
attribution := FAUX {le candidat n'a pas de centre}
no_departement := 1
{on va traiter les cinq voeux du candidat}
Pour nom_departement de T_CANDIDAT_TRIE[no_candidat].departement1 à
T_CANDIDAT_TRIE[no_candidat].departement5 Faire
{on prend les informations du centre demandé}
Selection_Information_Centre(nom_departement,quota_du_departement,
code_du_departement)
{on attribue un centre si son quota est supérieur à zéro}
Si ( NON attribution ) Alors
attribution := Traite_le_Centre(nom_departement,
no_departement,quota_du_departement, code_du_departement)
Fin Si
{passe au numéro de département suivant du candidat}
no_departement := no_departement + 1
Fin Pour
no_candidat := no_candidat + 1 {on traite le candidat suivant}
Fin Tant Que
{mise à jour des quotas restants de chaque centre}
Mise_a_jour_des_Centres
Fin Attribution_des_Centres;
4.5.1 Description de la procédure Test_place_Centre
Elle a pour objet de vérifier le quota du centre sélectionné et indique s'il reste de la place de libre.
33. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Fonction Test_place Centre(Entrée : le_quota : entier) retourne booléen
Précondition : le quota du centre est supérieur ou égal à zéro
Effet : retourne FAUX si il n'y a plus de place dans un centre
Variables auxiliaires : tel_valeur : booléen := VRAI {on suppose qu'il y a de la place dans
Page 33 sur 99
un centre par défaut}
Début
Si ( le_quota <= 0 ) Alors tel_valeur := FAUX
Fin Si
Retourne tel_valeur
Fin Test_place Centre;
4.5.2 Description de la procédure Selection_Information_Centre
Cette procédure va servir à initialiser les variables ‘quota_du_departement’ et ‘code_du_departement’
pour ensuite vérifier si le candidat est admissible dans le centre désigné.
Procédure Selection_Information_Centre(Entrée : le_nom_departement : caractère,
Sortie : le_quota_du_departement : entier,
le_code_du_departement : chaîne de caractère)
Précondition : le_nom_departement : caractère non vide
Effet : les variables quota_du_departement et code_du_departement contiennent les
renseignements sur le centre
Début
Si ( le_nom_departement = 'A' ) Alors {Antony}
quota_du_departement := CentreA_quota
code_du_departement := Code_CentreA
Fin Si
Si ( le_nom_departement = 'C' ) Alors {Cergy}
quota_du_departement := CentreC_quota
code_du_departement := Code_CentreC
Fin Si
Si ( le_nom_departement = 'E' ) Alors {Etiolles}
quota_du_departement := CentreE_quota
code_du_departement := Code_CentreE
Fin Si
Si ( le_nom_departement = 'S' ) Alors {St-Germain}
quota_du_departement := CentreS_quota
code_du_departement := Code_CentreS
Fin Si
Si ( le_nom_departement = 'V' ) Alors {Versailles}
quota_du_departement := CentreV_quota
code_du_departement := Code_CentreV
Fin Si
Fin Selection_Information_Centre;
4.5.3 Description de la fonction Traite_le_Centre
Elle va administrer les cinq centres et ajouter des candidats dans leurs listes.
Fonction Traite_le_Centre(Entrée : le_nom_departement : caractère,
le_no_departement : entier,
34. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
le_code_du_departement : chaîne de caractère,
Sortie : le_quota_du_departement : entier)
Précondition : les paramètres de la fonction sont bien initialisés
Effet : Ajoute un candidat dans la table ADMIS_nom du centre
Variables auxiliaires : tel_valeur : booléen {indique que l'on peut attribuer le centre}
tel_nom_du_centre : chaîne de caractère {nom du tableau de
Page 34 sur 99
destination}
Début
tel_valeur := FAUX
Donne_nom_du_centre(le_code_du_departement, tel_nom_du_centre)
Si ( le_quota_du_departement > 0 ) Alors
Inserer_Candidat_dans_Centre(le_nom_departement, le_no_departement, tel_nom_du_centre)
le_quota_du_departement := le_quota_du_departement - 1 {on décrémente le quota du centre}
tel_valeur := VRAI
Fin Si
Retourne tel_valeur
Fin Traite_le_Centre;
4.5.4 Description de la procédure Donne_nom_du_centre
Grâce au code du département la procédure donne le nom du tableau sur lequel le candidat veut
s'inscrire.
Procédure Donne_nom_du_centre(Entrée : un_code_du_departement : chaîne de caractère,
Sortie : un_nom_du_centre : chaîne de caractère)
Précondition : code du departement non vide
Effet : retourne le nom de la table du departement ayant le même code
Début
Si (un_code_du_departement = Code_CentreA ) Alors {Antony}
un_nom_du_centre = "T_ADMIS_ANTONY_VdB"
Fin Si
Si (un_code_du_departement = Code_CentreC ) Alors {Cergy}
un_nom_du_centre = " T_ADMIS_CERGY"
Fin Si
Si (un_code_du_departement = Code_CentreE ) Alors {Etiolles}
un_nom_du_centre = " T_ADMIS_ETIOLLES"
Fin Si
Si (un_code_du_departement = Code_CentreS ) Alors {St-Germain}
un_nom_du_centre = " T_ADMIS_ST-GERMAIN"
Fin Si
Si (un_code_du_departement = Code_CentreV ) Alors {Versailles}
un_nom_du_centre = " T_ADMIS_VERSAILLES"
Fin Si
Fin Donne_nom_du_centre;
4.5.5 Description de la procédure Inserer_Candidat_dans_Centre
Elle va remplir la table ADMIS_nom du centre en y ajoutant les renseignements sur le candidat ainsi
que mettre une étoile dans le numéro de département où est admis le candidat.
Procédure Inserer_Candidat_dans_Centre(Entrée : the_nom_departement : caractère,
35. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Page 35 sur 99
the_no_departement : entier,
the_nom_du_centre : chaîne de caractère)
Précondition : le tableau ADMIS_nom du centre existe
'no_candidat' indique le candidat sélectionné
Effet : ajoute un candidat dans le tableau de destination
Début
Si (the_no_departement = 1 ) Alors
the_nom_du_centre[no_candidat].no_departement1 := '*'
Fin Si
Si (the_no_departement = 2 ) Alors
the_nom_du_centre[no_candidat].no_departement2 := '*'
Fin Si
Si (the_no_departement = 3 ) Alors
the_nom_du_centre[no_candidat].no_departement3 := '*'
Fin Si
Si (the_no_departement = 4) Alors
the_nom_du_centre[no_candidat].no_departement4 := '*'
Fin Si
Si (the_no_departement = 5 ) Alors
the_nom_du_centre[no_candidat].no_departement5 := '*'
Fin Si
Insérer Dans the_nom_du_centre
Sélectionner trie.no_dossier, trie.no_candidature, etudiant.nom_usuel, etudiant.prenom,
etudiant.adresse, etudiant.code_postal, etudiant.ville, formation, departement1,
departement2, departement3, departement4, departement5, the_nom_departement,
note_bareme, rang
Depuis les tableaux T_CANDIDAT_TRIE trie, T_ETUDIANT etudiant
Ou trie.no_dossier = etudiant.no_dossier
Fin Inserer_Candidat_dans_Centre;
4.5.6 Description de la procédure Mise_a_jour_des_Centres
Elle effectue une mise à jour des places restantes dans les cinq centres.
Procédure Mise_a_jour_des_Centres
Précondition : les tableaux ADMIS_nom du centre existent
Effet : met à jour le champ 'quota_centre_restant' dans chaque tableau
Début
{mise à jour du quota restant d'Antony}
Changer le tableau T_ADMIS_ANTONY_VdB
La valeur quota_centre_restant := CentreA_quota
Ou T_ADMIS_ANTONY_VdB.code_centre = Code_CentreA
{mise à jour du quota restant de Cergy}
Changer le tableau T_ADMIS_CERGY
La valeur quota_centre_restant := CentreC_quota
Ou T_ADMIS_CERGY.code_centre = Code_CentreC
{mise à jour du quota restant d'Etiolles}
Changer le tableau T_ADMIS_ETIOLLES
La valeur quota_centre_restant := CentreE_quota
Ou T_ADMIS_ETIOLLES.code_centre = Code_CentreE
{mise à jour du quota restant de Saint-Germain}
Changer le tableau T_ADMIS_ST-GERMAIN
La valeur quota_centre_restant := CentreS_quota
Ou T_ADMIS_ST-GERMAIN.code_centre = Code_CentreS
36. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
{mise à jour du quota restant de Versailles}
Changer le tableau T_ADMIS_VERSAILLES
La valeur quota_centre_restant := CentreV_quota
Ou T_ADMIS_VERSAILLES.code_centre = Code_CentreV
Page 36 sur 99
Fin Mise_a_jour_des_Centres;
4.6 Description des procédures de mise à jour des atypiques et des dérogataires
Les atypiques et les dérogataires sont des cas particulier, on les distinguera de chaque centre en y indiquant le
nombre total de chacun des deux. On peut les différencier facilement : un dérogataire un rang égal à zéro parce
qu'il ne compte pas dans la hiérarchie des candidats triés alors que l'atypique lui, en plus d'avoir une note de
barème supérieur ou égale à trente, il doit passer un entretien.
4.6.1 Description de la procédure Met_le_nombre_de_derogataire
Elle effectue une mise à jour du champ 'nbre_derogataire' de la table CAPACITE_CENTRE. Les
dérogataires ont le champ 'rang' de la table CANDIDATURE_TRIE à 0.
Procédure Met_le_nombre_de_derogataire
Précondition : les tableaux ADMIS_nom du centre existent
Effet : met à jour le champ 'nbre_derogataire' de chaque centre
Début
{Met le nombre total de dérogataire d'Antony}
Mise à jour dans le tableau T_CAPACITE_CENTRE
La valeur nbre_derogataire = nbre_derogataire + 1
(
Selectionne no_dossier
De la table T_ADMIS_ANTONY_VdB
OU rang = 0
)
{Met le nombre total de dérogataire de Cergy }
Mise à jour dans le tableau T_CAPACITE_CENTRE
La valeur nbre_derogataire = nbre_derogataire + 1
(
Selectionne no_dossier
De la table T_ADMIS_CERGY
OU rang = 0
)
{Met le nombre total de dérogataire d'Etiolles }
Mise à jour dans le tableau T_CAPACITE_CENTRE
La valeur nbre_derogataire = nbre_derogataire + 1
(
Selectionne no_dossier
De la table T_ADMIS_ETIOLLES
OU rang = 0
)
{Met le nombre total de dérogataire de Saint-Germain }
Mise à jour dans le tableau T_CAPACITE_CENTRE
La valeur nbre_derogataire = nbre_derogataire + 1
(
Selectionne no_dossier
De la table T_ADMIS_ST-GERMAIN
OU rang = 0
)
{Met le nombre total de dérogataire de Versailles }
Mise à jour dans le tableau T_CAPACITE_CENTRE
37. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
La valeur nbre_derogataire = nbre_derogataire + 1
(
Selectionne no_dossier
De la table T_ADMIS_VERSAILLES
OU rang = 0
)
Page 37 sur 99
Fin Met_le_nombre_de_derogataire;
4.6.2 Description de la procédure Met_le_nombre_d_atypique
Elle effectue une mise à jour du champ 'nbre_atypique' de la table CAPACITE_CENTRE. Les atypiques ont le
champ 'condition_requise' de la table CANDIDATURE à 10 et le champ 'libre10' de la table ETUDIANT à 1.
Procédure Met_le_nombre_d_atypique
Précondition : les tableaux ADMIS_nom du centre existent
Effet : met à jour le champ 'nbre_atypique' de chaque centre
Début
{Met le nombre total d'atypique d'Antony}
Mise à jour dans le tableau T_CAPACITE_CENTRE
La valeur nbre_atypique = nbre_atypique + 1
(
Selectionne no_dossier
De la table T_ADMIS_ANTONY_VdB, T_ETUDIANT, T_CANDIDATURE
OU T_ADMIS_ANTONY_VdB.no_dossier = T_ETUDIANT.no_dossier
AND T_ADMIS_ANTONY_VdB.no_dossier = T_CANDIDATURE.no_dossier
AND T_ADMIS_ANTONY_VdB.no_candidature =
T_CANDIDATURE.no_candidatute
AND T_ETUDIANT.libre10 = 1
AND T_CANDIDATURE.condidtion_requise = '10'
)
{Met le nombre total d'atypique de Cergy }
Mise à jour dans le tableau T_CAPACITE_CENTRE
La valeur nbre_atypique = nbre_atypique + 1
(
Selectionne no_dossier
De la table T_ADMIS_CERGY, T_ETUDIANT, T_CANDIDATURE
OU T_ADMIS_CERGY.no_dossier = T_ETUDIANT.no_dossier
AND T_ADMIS_CERGY.no_dossier = T_CANDIDATURE.no_dossier
AND T_ADMIS_CERGY.no_candidature =
T_CANDIDATURE.no_candidatute
AND T_ETUDIANT.libre10 = 1
AND T_CANDIDATURE.condidtion_requise = '10'
)
{Met le nombre total d'atypique d'Etiolles }
Mise à jour dans le tableau T_CAPACITE_CENTRE
La valeur nbre_atypique = nbre_atypique + 1
(
Selectionne no_dossier
De la table T_ADMIS_ETIOLLES, T_ETUDIANT, T_CANDIDATURE
OU T_ADMIS_ETIOLLES.no_dossier = T_ETUDIANT.no_dossier
AND T_ADMIS_ETIOLLES.no_dossier = T_CANDIDATURE.no_dossier
AND T_ADMIS_ETIOLLES.no_candidature =
T_CANDIDATURE.no_candidatute
AND T_ETUDIANT.libre10 = 1
AND T_CANDIDATURE.condidtion_requise = '10'
)
{Met le nombre total d'atypique de Saint-Germain }
Mise à jour dans le tableau T_CAPACITE_CENTRE
38. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
La valeur nbre_atypique = nbre_atypique + 1
(
Selectionne no_dossier
De la table T_ADMIS_ST-GERMAIN, T_ETUDIANT, T_CANDIDATURE
OU T_ADMIS_ST-GERMAIN.no_dossier = T_ETUDIANT.no_dossier
AND T_ADMIS_ST-GERMAIN.no_dossier = T_CANDIDATURE.no_dossier
AND T_ADMIS_ST-GERMAIN.no_candidature =
T_CANDIDATURE.no_candidatute
AND T_ETUDIANT.libre10 = 1
AND T_CANDIDATURE.condidtion_requise = '10'
)
{Met le nombre total d'atypique de Versailles }
Mise à jour dans le tableau T_CAPACITE_CENTRE
La valeur nbre_atypique = nbre_atypique + 1
(
Selectionne no_dossier
De la table T_ADMIS_VERSAILLES, T_ETUDIANT, T_CANDIDATURE
OU T_ADMIS_VERSAILLES.no_dossier = T_ETUDIANT.no_dossier
AND T_ADMIS_VERSAILLES.no_dossier = T_CANDIDATURE.no_dossier
AND T_ADMIS_VERSAILLES.no_candidature =
T_CANDIDATURE.no_candidatute
AND T_ETUDIANT.libre10 = 1
AND T_CANDIDATURE.condidtion_requise = '10'
)
Page 38 sur 99
Fin Met_le_nombre_d_atypique;
39. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
5 FONCTIONNEMENT
Pour passer de l’algorithme au programme, certains changements ont été utiles. Une description de chaque
table est obligatoire pour connaître l’organisation des données traitées, la référence des tables se trouve dans
les pages suivantes.
Toutes les tables vont être dans la base de données, pour reconnaître très facilement celles utilisées pour
l’affectation des PE, le nom des tables commencera par le préfixe « SIG97 ».
Ainsi la table SIG97_ERREUR_CANDIDAT indiquera très clairement les candidats avec leur numéro de dossier
que l’on ne prend pas en considération dans le tri, soit qu’il manque des éléments pour la poursuite du tri du
candidat, soit que c’est un candidat atypique qui n’a pas rempli les conditi ons à l’entretien, soit parce qu’un
candidat est dérogataire : si il a une note d’entretien égale à 70 on ne l'inclut pas dans le tri car il est prioritaire
sur les autres, sinon on indique qu’il a eu une note inférieur à 70 voir nulle.
Page 39 sur 99
Voici ce que cela peut donner :
Message
PAS PRIS EN COMPTE : MAUVAIS dérogataire numéro 97300047, Cond. Req. = 2, Note Ent. = 0
PAS PRIS EN COMPTE : A-typique numéro 97300121, Condition_Requise = 10, Libre10 = 0
PAS PRIS EN COMPTE : MAUVAIS dérogataire numéro 97300176, Cond. Req. = 2, Note Ent. = 0
PAS PRIS EN COMPTE : BON dérogataire numéro 97300177, Condition_Requise = 2, Note_Entretien = 70
PAS PRIS EN COMPTE : MAUVAIS dérogataire numéro 97300191, Cond. Req. = 2, Note Ent. = 0
PAS PRIS EN COMPTE : MAUVAIS dérogataire numéro 97300195, Cond. Req. = 2, Note Ent. = 0
PAS PRIS EN COMPTE : MAUVAIS dérogataire numéro 97300303, Cond. Req. = 2, Note Ent. = 0
PAS PRIS EN COMPTE : MAUVAIS dérogataire numéro 97300317, Cond. Req. = 2, Note Ent. = 0
PAS PRIS EN COMPTE : MAUVAIS dérogataire numéro 97300338, Cond. Req. = 2, Note Ent. = 0
PAS PRIS EN COMPTE : BON dérogataire numéro 97300412, Condition_Requise = 2, Note_Entretien = 70
PAS PRIS EN COMPTE : BON dérogataire numéro 97300471, Condition_Requise = 2, Note_Entretien = 70
PAS PRIS EN COMPTE : A-typique numéro 97300496, Condition_Requise = 10, Libre10 = 0
PAS PRIS EN COMPTE : BON dérogataire numéro 97300530, Condition_Requise = 2, Note_Entretien = 70
PAS PRIS EN COMPTE : MAUVAIS dérogataire numéro 97300599, Cond. Req. = 2, Note Ent. = 0
PAS PRIS EN COMPTE : MAUVAIS dérogataire numéro 97300619, Cond. Req. = 2, Note Ent. = 0
PAS PRIS EN COMPTE : MAUVAIS dérogataire numéro 97300705, Cond. Req. = 2, Note Ent. = 0
PAS PRIS EN COMPTE : BON dérogataire numéro 97300773, Condition_Requise = 2, Note_Entretien = 70
40. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
La table SIG97_ COMMENTAIRE_PRG indique très clairement ce que fait le programme, quelle procédure ou
fonction est terminée, s’il y a eu des erreurs durant le programme tel que la réécriture dans une table. Voici la
trace d'une table une fois le tri terminé :
Page 40 sur 99
Message
La procédure Initialise_Candidat_Desc est FINIE.
La procédure Tri_par_note_de_bareme est FINIE.
La procédure Mise_a_jour_table_TRIE est FINIE.
La procédure Tri_par_selection est FINIE.
La procédure Ajout_des_derogataires est FINIE.
La procédure Met_la_capacite_initiale du centre 92V est FINIE.
La procédure Met_la_capacite_initiale du centre 95 est FINIE.
La procédure Met_la_capacite_initiale du centre 91 est FINIE.
La procédure Met_la_capacite_initiale du centre 78S est FINIE.
La procédure Met_la_capacite_initiale du centre 78V est FINIE.
La procédure Mise_a_jour_des_quotas_restant est FINIE.
La procédure Attribution_des_Centres est FINIE.
La procédure Met_admission_dans_CANDIDATURE est FINIE.
La procédure Met_le_Nombre_Atypique est FINIE.
La procédure Met_le_Nombre_Derogataire est FINIE.
Regarder la table SIG97_ERREUR_CANDIDAT : candidats qui ne sont pas pris en compte.
Aucune erreur durant le programme.
Le booléen « arret_du_programme » est initialisé à FAUX, si une erreur s’est produite au cours du programme, il
passe à VRAI et le programme n’exécute plus les principales procédures et fonctions qui suivent l’erreur.
Trois principales exceptions sont traitées : l’un test si une table est déjà remplie (on n'a pas effacé les champs de
la table), les deux autres indiquent clairement ce qui s’est passé et invite l’utilisateur à lire les scripts pour agir
en conséquence : les dépassements des extensions de « roll back ».
Voici une brève explication de chaque procédure et fonction :
La procédure Efface_contenu_des_tables : elle permet d’effacer le contenu des tables, très utile lorsque
l’on veut refaire un tri.
La procédure Message_Utilisateur : insère dans la table SIG97_COMMENTAIRE_PRG la chaîne de
caractère « mon_message ».
La procédure Inscrit_Erreur : insère dans la table SIG97_ERREUR_CANDIDAT la chaîne de caractère
« mon_message ».
41. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
La procédure Initialise_Candidat_Desc : on effectue un tri des candidats ou plutôt on « purge » les
candidats qui ne sont pas pris en compte dans le tri. On prend déjà des renseignements sur les « bons »
candidats : le numéro de dossier, le numéro de candidature, la formation désirée, les cinq voeux du
candidat (les départements), la note de barème ainsi que la date de retour du dossier. Chaque
information prise dans la table CANDIDATURE va être placée dans une table temporaire
SIG97_CANDIDAT_TMP.
La procédure Tri_par_note_de_bareme : elle va chercher la date de naissance du candidat dans la table
ETUDIANT et sa note de préprofessionnalisation dans la table BAREME_INDIVIDUEL puis des
informations de la table SIG97_CANDIDAT_TMP pour tout mettre dans la table
SIG97_CANDIDAT_SELECT_TMP.
La procédure Mise_a_jour_table_TRIE : étape importante, c’est là que l’on prend les notes de «
barémage » pour trier les candidats. On prend les notes d'activité d'enseignement, l’activité éducative et
salariale puis la note de brevet de la table BAREME_INDIVIDUEL pour les mettre dans la table
SIG97_CANDIDAT_TRIE_TMP.
La procédure Candidature_trie : tri les candidats pour leur attribuer un rang. La fonction
Test_le_nbre_de_candidat retourne VRAI s’il y a au moins un candidat à trier car cela évite dans la
procédure Tri_par_selection d’appeler huit fois la procédure Candidature_trie. Bien sur toutes les
informations recueillies de la table SIG97_CANDIDAT_TRIE_TMP seront mises dans la table
SIG97_CANDIDAT_TRIE : tous les candidats triés pourront être visualisés ici.
La procédure Ajout_des_derogataires : Prend tous les candidats de la table CANDIDATURE qui sont des
dérogataires. On les met directement dans les centres et on incrémente le quota initial de chaque
centre par le nombre de dérogataire placé dedans. Pour le quota des centres on utilise la table
SIG97_CAPACITE_CENTRE. Pour admettre chaque candidat dans les centres, on utilise les tables
SIG97_ADMIS_nom du centre. Comme on ne peut leur mettre un rang académique, ils auront un rang
égale à zéro pour indiquer qu'ils ne sont pas classés dans la hiérarchie. Ainsi on pourra mieux les repérer
dans les listes d'admission de chaque centre.
La procédure Met_la_capacite_initiale : permet d’initialiser les variables globales de la procédure
Page 41 sur 99
Attribution_centre.
La procédure Test_place_centre : retourne VRAI si le quota du centre est supérieur à zéro.
La procédure Donne_information_centre : lorsqu’un candidat a sélectionné un département, cette
procédure donne les informations que l’on a besoin, elles seront traitées dans la fonction
Traite_le_centre qui va mettre à jour la liste de chaque centre.
La procédure Attribution_centre : attribue au candidat un centre dont il a fait le voeu. On prend les
dernières informations du candidat : son nom, son prénom et son adresse de la table ETUDIANT ainsi
que celles de SIG97_CANDIDAT_TRIE.
La procédure Mise_a_jour_quota_restant : elle est prévue lorsqu’il y a plus de place dans le centre que
de candidats. Lorsque l'on impose des quotas dit de "surbooking" (c'est le nombre de place total plus le
nombre de candidat inscrit sur la liste complémentaire), on peut distinguer très nettement les places
restantes.
La procédure Met_admission_dans_candidature : prend les informations de chaque candidat admis
dans les centres, puis fait une mise à jour des champs indiquant que le candidat est admissible dans la
table CANDIDATURE.
Les procédures Met_le_nombre_atypique et Met_le_nombre_derogataire : mise à jour des champs de
la table SIG97_CANDIDAT_TRIE pour indiquer le nombre exact de dérogataires et d’atypique de chaque
centre.
Voici la table SIG97_CAPACITE_CENTRE lorsque le programme est terminé :
42. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
code_centre quota_centre_ini tial quota_centre_res tant nbre_atypique nbre_derogata i re nom_du_centre
92V 767 0 53 3 Antony Val de Bievre
91 940 0 7 20 Etiolles
95 902 0 45 18 Cergy
78S 580 0 16 0 St-Germain en Laye
78V 245 0 11 3 Versailles
Les tables qui ont le suffixe « TMP » peuvent être effacées à la fin du programme. Elles ont servis à contenir des
informations sur les candidats et éviter de créer une table unique et de faire soit la saisie des informations en un
bloque (très coûteux en temps) ou par une mise à jour avec des « UPDATE » (dépassement de capacité de la
mémoire et très coûteux en temps).
Page 42 sur 99
Table SIG97_CAPACITE_CENTRE
Nom de la colonne Type Longueur SQL Description
code_centre chaine de
caractère
3 CHAR numéro de code du centre
quota_centre_initial réel 22 FLOAT quota de place d' entrée du centre initial
quota_centre_restant réel 22 FLOAT quota de place d' entrée du centre restant
nbre_atypique réel 22 FLOAT indique le nombre total d'atypique du centre
nbre_derogataire réel 22 FLOAT indique le nombre total de dérogataire du centre
nom_du_centre chaine de
caractère
25 CHAR nom du centre en entier
Table SIG97_CANDIDAT_TRIE
Nom de la colonne Type Longueur SQL Description
no_dossier chaine de
caractère
10 CHAR numéro de dossier du candidat
no_candidature réel 22 FLOAT numéro de candidature du candidat
formation chaine de
caractère
4 CHAR nom de la formation demandée
departement1 chaine de
caractère
3 CHAR premier voeu du candidat
departement2 chaine de
caractère
3 CHAR deuxième voeu du candidat
departement3 chaine de
caractère
3 CHAR troisième voeu du candidat
departement4 chaine de
caractère
3 CHAR quatrième voeu du candidat
43. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
Page 43 sur 99
departement5 chaine de
caractère
3 CHAR cinquième voeu du candidat
note_bareme réel 22 FLOAT note du bareme du candidat
note_prepo réel 22 FLOAT note de preprofessionalisation
date_naissance date 7 DATE date de naissance du candidat
date_retour_dossier date 7 SYSDATE date de retour du dossier
enseignement caractère 1 CHAR indique si la case est cochée pour
l'enseignement
peri_educ_scol caractère 1 CHAR indique si la case est cochée pour l'activité
éducative
activite_salarie caractère 1 CHAR indique si la case est cochée pour l'activité de
salarié
note_brevet réel 22 FLOAT note totale des brevets obtenus
rang nombre 22 FLOAT rang attribue au candidat
Table SIG97_ADMIS_nom du centre
Nom de la colonne Type Longueur SQL Description
no_dossier chaine de
caractère
10 CHAR numéro de dossier du candidat
no_candidature réel 22 FLOAT numéro de candidature du candidat
nom_usuel chaine de
caractère
25 CHAR nom usuel du candidat
prenom chaine de
caractère
20 CHAR prénom du candidat
adresse chaine de
caractère
255 CHAR adresse complète du candidat
code_postal chaine de
caractère
5 CHAR code postal du candidat
ville chaine de
caractère
25 CHAR ville du candidat
departement1 chaine de
caractère
3 CHAR premier voeu du candidat
departement2 chaine de
caractère
3 CHAR deuxième voeu du candidat
departement3 chaine de
caractère
3 CHAR troisième voeu du candidat
departement4 chaine de
caractère
3 CHAR quatrième voeu du candidat
departement5 chaine de
caractère
3 CHAR cinquième voeu du candidat
no_departement1 caractère 1 CHAR repère du premier voeu du candidat
44. Rapport de stage à l’IUFM de Versailles Frédéric Sagez
no_departement2 caractère 1 CHAR repère du deuxième voeu du candidat
no_departement3 caractère 1 CHAR repère du troisième voeu du candidat
no_departement4 caractère 1 CHAR repère du quatrième voeu du candidat
no_departement5 caractère 1 CHAR repère du cinquième voeu du candidat
Page 44 sur 99
departement_choisis chaine de
caractère
3 CHAR voeu du candidat où il est admis
formation chaine de
caractère
4 CHAR nom de la formation demandée
note_bareme réel 22 FLOAT note du bareme du candidat
rang nombre 22 FLOAT rang attribue au candidat
Table SIG97_ERREUR_CANDIDAT
Nom de la colonne Type Longueur SQL Description
erreur_candidat chaine de
caractère
100 CHAR phrase indiquant l' erreur trouvé sur le candidat
Table SIG97_COMMENTAIRE_PRG
Nom de la colonne Type Longueur SQL Description
message chaine de
caractère
120 CHAR phrase indiquant le déroulement du programme