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
./progen redirigeant les sorties vers les fichiersnotes_S1.txtetnotes_S2.txtpour obtenir des notes différents pour les deux semestres. - Écrire un script shell
calcul_moyennes_eleve.shqui 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.shpour 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.shqui 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.shpour calculer la moyenne semestrielle pour tous les élèves. - Sauvegarder les moyennes semestrielles dans deux fichiers :
moyenne_semestrielle_S1.txtmoyenne_semestrielle_S2.txt.
Q3 : Calculer la moyenne annuelle pour chaque élève¶
- Écrire le script
calcul_annuelle_eleve.shqui 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.shqui 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;