Etude de Cas
Vous êtes nouvellement embauché dans le secrétariat de scolarité d'une université. Votre travail
est d'optimiser la gestion des étudiants, des enseignants, des matières enseignées, des
inscriptions des étudiants à ces dernières et des résultats obtenus. À votre arrivée, une collègue
vous fournit les fichiers tableurs permettant d'accomplir ces tâches (au format CSV).
Liste des étudiants : etudiants.csv
Liste des enseignants : enseignants.csv
Liste des matières : matieres.csv
Liste des inscriptions : inscriptions.csv
Liste des résultats : resultats.csv
Tous ces programmes utiliseront la même base de données SQLite3. Toutes les moyennes auront
deux décimales.
Voici le schéma UML de la base de données de l'université :
1. Écrivez un programme permettant de créer une base de données SQLite3
nommée universite.db et de créer la structure de table adaptée au stockage des
données. Importez le contenu des fichiers CSV dans cette base.
Chaque table aura le même nom que le fichier CSV source. Et aura les mêmes champs
donnés dans le diagramme UML.
2. Écrivez un programme permettant de générer des statistiques pour l'université au format
JSON dans un fichier nommé statistiques.json dont nous stockerons les moyennes
par matière moyenneMatiere, la moyenne maximale moyenneMax et
minimale moyenneMin par matière, le nombre d'étudiants inscrits par
matière nbEtudiants, la moyenne de toutes les matières moyenneTotale et le nombre
d'étudiants par département nbEtudiantsParDepartement (code postal).
Exemple :
{
"nbEtudiantsParDepartement":{
"56035":4,
"74019":5,
…
},
"moyenneMax":{
"CF19":14.96,
"VS02":12.14,
…
},
"moyenneMatiere":{
"CF19":13.37,
"VS02":14.4,
…
},
"moyenneMin":{
"CF19":3.99,
"VS02":4.21,
…
},
"nbEtudiants":{
"CF19":8,
"VS02":17,
…
},
"moyenneTotale":12.41
}
3. Écrivez un programme permettant de générer un bulletin de notes par étudiant sous la
forme d'un courrier stocké dans un fichier texte individuel. Chaque fichier aura pour nom le
nom et le prénom de l'étudiant, séparés par un trait d'union (-) et pour extension .txt et
sera stocké dans un dossier nommé courriersEtudiants créé pour cela. Chaque
courrier adoptera ce modèle :
Université Claude Chappe
15 avenue de Moulincourbe
28094 Clairecombe
Lionel Paulin
48 Ruelle de Locvaux
74019 Mivran
Madame, Monsieur,
Veuillez trouver dans le récapitulatif ci-dessous les résultats de vos exam
ens.
Matière Moyenne
AI90 16.93
PQ84 12.7
UE21 12.0
VO38 12.49
XO83 13.05
ZI51 16.33
Moyenne générale 13.92
Ce document constitue les résultats officiels. Pour toute contestation, con
tactez le service scolarité.
4. Écrivez un programme permettant l'inscription d'un nouveau étudiant à l'université et son
inscription aux matières.
Exemple :
Entrez le nom du nouvel étudiant : Durand
Entrez le prénom du nouvel étudiant : Michel
Entrez l'adresse du nouvel étudiant : 15 rue Jean Moulin
Entrez le code postal du nouvel étudiant : 18543
Entrez la ville du nouvel étudiant : Moulincourbe
Entrez le téléphone fixe du nouvel étudiant : 0574960180
Entrez le téléphone portable du nouvel étudiant : 0641238074
Entrez le code de matière dans laquelle inscrire l'étudiant (laissez vide
pour arrêter, tapez '?' pour afficher la liste) : ?
AD23
AF04
…
Entrez le code de matière dans laquelle inscrire l'étudiant (laissez vide
pour arrêter, tapez '?' pour afficher la liste) : LK27
Entrez le code de matière dans laquelle inscrire l'étudiant (laissez vide
pour arrêter, tapez '?' pour afficher la liste) : AD24
La matière n'existe pas
Entrez le code de matière dans laquelle inscrire l'étudiant (laissez vide
pour arrêter, tapez '?' pour afficher la liste) : ZB17
Entrez le code de matière dans laquelle inscrire l'étudiant (laissez vide
pour arrêter, tapez '?' pour afficher la liste) :
Voulez-vous saisir un nouvel étudiant (O/N) ? n
5. Écrivez un programme permettant la saisie des notes obtenues aux examens.
Exemple :
Entrez le code de matière de l'examen (laissez vide pour arrêter, tapez '?'
pour afficher la liste) : AF04
Entrez la note obtenue par Maxime Bey : 17
…
Entrez la note obtenue par Margot Ferrero : 14
Voulez-vous saisir un nouveau résultat (O/N) ? n