Table des matières
Exercice : gestion des employés
On veut gérer les employés d'un service dans une entreprise.
Fichier de données
Pour le service maintenance, on dispose du fichier suivant maintenance.csv
Le fichier indique pour chaque employé son matricule, son nom, son age et son salaire mensuel.
Voici le contenu des 5 premières lignes :
requested local CSV file does not existOn vous propose le fichier programme suivant pour une première extraction des données.
# fichier main.py
import csv
def load_file(filename):
'''
filename: nom du fichier csv
renvoie un tableau dont chaque item est un dictionnaire représentant une ligne
ex : [{"matricule":"MAINT0291/94", "nom":"Vincent Munier", "age":"60", "salaire":"1550"}, ...]
remarquez qu'à ce stade, toutes les données sont considérées comme du texte.
'''
file = open(filename, 'r', encoding='utf8')
reader = csv.DictReader(file, delimiter=',')
items = []
for item in reader:
items.append(item)
file.close()
return items
Classe Employe
Dans un fichier employe.py, définissez une classe Employe avec les attra les attributs :
| Employe |
|---|
| Attributs |
| + matricule: str |
| + nom: str |
| + age: int |
| + salaire: int |
| méthodes |
__init__(self, matricule, nom, age, salaire) |
__str__(self) → str |
La fonction __str__ devra renvoyer une chaîne formée ainsi : “[Matricule] nom prénom - age ans, salaire €”
Dans main.py, modifiez la fonction load_file pour qu'elle produise un tableau d'objet Employe au lieu d'un tableau de dictionnaires.
Fonctions supplémentaires
Nous souhaitons avoir des méthodes pour gérer l'ensemble des employés, pour obtenir la moyenne, etc.
Dans le fichier main.py, définissez les fonctions suivantes :
salaire_moyen(liste)qui renvoie le salaire moyen dans le service,effectif(liste)qui renvoie le nombre d'employés dans le service,doyen(liste)qui renvoie l'employé le plus âgé – le premier s'il y en a plusieurs,
Testez en ajoutant le code suivant en fin de fichier :
liste = load_file("maintenance.csv")
s = salaire_moyen(liste)
e = effectif(liste)
d = doyen(liste)
print("salaire moyen : {}".format(s))
print("effectif : {}".format(e))
print("doyen : {}".format(d))
