Mini Projet Scripts¶
Ce projet vise à développer vos compétences en script shell pour manipuler, analyser, et présenter des données. Vous allez travailler sur un système de gestion des notes des élèves pour une classe donnée, en intégrant les résultats de deux semestres.
Introduction :¶
On vous fourni le programme prog qui permet de génèrer aléatoirement des notes pour toutes les matières pour chaque élève de la classe sur la sortie standard sous le format suivant :
Les matières et leurs coefficients sont :
- Mathématiques (4),
- Physique (4),
- Français (2),
- Anglais (2),
- SVT (3),
- Sport (2).
Pour chaque matière, il y a deux notes : Note de contrôle et Note d’examen.
Partie 1 : Calcul des Moyennes¶
Q1 : Calculer la moyenne par matière pour un élève¶
- Executer deux fois le programme
./prog
en redirigeant les sorties vers les fichiersnotes_S1.txt
etnotes_S2.txt
pour obtenir des notes différents pour les deux semestres. - Écrire un script shell
calcul_moyennes_eleve.sh
qui prends en entrée le nom d’un élève et qui :- Affiche les notes de cet élève,
- Calcule la moyenne pour chaque matière de cet élève pour les deux semestres suivant la formule
Indication
pour récupérer les notes de contrôle et d’examen vous pouvez utiliser :
- Proposer un script
calcul_moyennes_Semestre.sh
pour calculer la moyenne pour chaque matière de tous les élèves.
Indication
Exemple de script pour Parcourir chaque ligne du fichier
-
Sauvegarde les résultats dans deux fichiers :
moyenne_par_matiere_S1.txt
(pour le premier semestre).moyenne_par_matiere_S2.txt
(pour le deuxième semestre).
Q2 : Calculer la moyenne semestrielle pour chaque élève¶
- Écrire le script
calcul_semestrielles_eleve.sh
qui prends en entrée le nom d’un élève et le semestre et qui calcule la moyenne générale de cet élève pour le premier semestre ou le deuxième semestre selon les paramètres entrées (en tenant compte des coefficients des matières). - Proposer le script
calcul_semestrielles.sh
pour calculer la moyenne semestrielle pour tous les élèves. - Sauvegarder les moyennes semestrielles dans deux fichiers :
moyenne_semestrielle_S1.txt
moyenne_semestrielle_S2.txt
.
Q3 : Calculer la moyenne annuelle pour chaque élève¶
- Écrire le script
calcul_annuelle_eleve.sh
qui prends en entrée le nom d’un élève et calcule la moyenne annuelle en donnant un poids égal aux deux semestres.
- Écrire le script
calcul_annuelle.sh
qui calcule la moyenne annuelle de tous les élèves. - Sauvegarder les résultats dans un fichier
moyenne_annuelle.txt
.
Partie II : Analyse statistique des résultats des élèves¶
L'objectif de cette deuxième partie du projet est d'effectuer une analyse statistique approfondie des résultats des élèves. Au-delà des simples calculs de moyennes, cette analyse se concentrera sur la recherche des meilleures performances dans différentes catégories (par matière, par semestre, par élève), ainsi que sur le classement des élèves en fonction de leurs moyennes.
Q1 : Calcul de la meilleure note¶
Écrire un script meilleur_note.sh
qui détermine :
- L'élève ayant obtenu la meilleure moyenne pour le premier semestre,
- L'élève ayant obtenu la meilleure moyenne pour le deuxième semestre,
- L'élève ayant obtenu la meilleure moyenne annuelle (moyenne des deux semestres).
Indication
Vous pouvez utiliser les commandes sort
et head
. Utilisez man
ou
help
pour obtenir plus d'informations.
Q2 : Affichage des élèves ayant une moyenne supérieure à 10¶
Écrire un script admis.sh
qui affiche les noms des élèves ayant une moyenne annuelle
supérieure ou égale à 10.
Q3 : Stats selon les notes¶
Écrire un script stat.sh
qui effectue les calculs suivants :
- Déterminer le nombre d'élèves ayant une moyenne annuelle supérieure strictement à 14.
- Déterminer le nombre d'élèves ayant une moyenne annuelle comprise entre 10 et 14 (inclus).
- Déterminer le nombre d'élèves ayant une moyenne annuelle strictement inférieure à 10.
Consignes Supplémentaires¶
- Veillez à commenter vos scripts pour expliquer chaque étape.
- Assurez-vous de gérer correctement les erreurs, par exemple :
- Si un fichier attendu (ex.
notes_S1.txt
) est manquant, afficher un message d’erreur approprié.
- Si un fichier attendu (ex.
Organisation de vos scripts et fichiers :
graph LR
A[Projet]:::dir
A --> B[scripts]:::dir
B --> C[calcul_moyennes_eleve.sh]:::file
B --> D[calcul_moyennes_semestre.sh]:::file
B --> E[calcul_semestrielles_eleve.sh]:::file
B --> F[calcul_semestrielles.sh]:::file
B --> G[calcul_annuelle_eleve.sh]:::file
B --> H[calcul_annuelle.sh]:::file
B --> I[meilleur_note.sh]:::file
B --> J[admis.sh]:::file
B --> K[stat.sh]:::file
A --> L[data]:::dir
L --> M[notes_S1.txt]:::file
L --> N[notes_S2.txt]:::file
L --> O[moyenne_par_matiere_S1.txt]:::file
L --> P[moyenne_par_matiere_S2.txt]:::file
L --> Q[moyenne_semestrielle_S1.txt]:::file
L --> R[moyenne_semestrielle_S2.txt]:::file
L --> S[moyenne_annuelle.txt]:::file
classDef dir fill:#4a90e2,stroke:#2c3e50,stroke-width:1px,color:#fff,font-weight:bold;
classDef file fill:#e1e1e1,stroke:#555,stroke-width:1px,color:#000;