Bonjour,

J'ai des difficultés pour exécuter les questions 4 5 et 6. Merci de bien vouloir m'aiguiller.


#Construire un programme proposant ces fonctionnalités :

#* Au chargement, on a au moins 4 abonnés dont un à 0 DVD et un à undef.
#* On boucle sur un menu proposant :
#1. afficher la DVDthéque
#2. ajouter un abonné
#3. supprimer un abonné
#4. emprunt d'un ou plusieurs DVD
#5. retour d'un ou plusieurs DVD
#6. quitter

#On aidera l'utilisateur à tout moment du mieux qu'on peut, exemples (non exhaustifs) :
#* 2 : on affiche la liste des abonnés pour lui montrer ceux qui existent déjà. On vérifie que le nouvel entrant n'existe pas sinon, message.
#* 3 : on affiche la liste des abonnés avec des numéros pour qu'il puisse indiquer rapidement celui qu'il veut supprimer. On boucle sur une saisie blindée sur ces numéros-là.
#* 4 : la liste des abonnés est affichée comme ci-dessus.
#* 5 : idem ci-dessus et on vérifie qu'un abonné ne peut pas rendre plus de DVD qu'il n'en a.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/usr/bin/perl 
 
# La liste des emprunteurs est donnée par une table de hachage %abonnes 
# Clé : indentifiant = prénom pour simplifier 
# Valeur : nb de DVD empruntés 
# Création de la table : 
 
$abonnes{"Guillaume"} = 3; 
$abonnes{"Maxime"} = 15; 
$abonnes{"Anne"} = 0; # abonné qui a déjà emprunté mais aucun emprunt en cours 
$abonnes{"Michel"} = undef; 
 
# Affichage 
print("\n\nAffichage de la DVDthèque"); 
while (($prenom,$nbDVD) = each %abonnes) { 
print "\n$prenom est abonné"; 
# si le nb de DVD n'est pas undef 
if (defined($nbDVD)) { 
print("\n\tnb de DVD empruntés : $nbDVD"); 
} else { 
print("\n\tIl n'a jamais emprunté de DVD"); 
} 
} 
 
# Ajout d'un nouvel abonné sans emprunt 
print("\n\nAjout d'un nouvel abonné sans emprunt"); 
print("\nQui souhaitez-vous ajouter ? "); 
$newAbonne =<STDIN>; 
chomp($newAbonne); # suppression du saut de ligne 
$abonnes{"$newAbonne"} = undef; # abonné sans emprunt 
 
# Affichage 
print("\n\nAffichage de la DVDthèque"); 
while (($prenom,$nbDVD) = each %abonnes) { 
print("\n$prenom est abonné"); 
# si le nb de DVD n'est pas undef 
if (defined($nbDVD)) { 
print("\n\tnb de DVD empruntés : $nbDVD"); 
} else { 
print("\n\tIl n'a jamais emprunté de DVD"); 
} 
} 
 
# Révocation d'un abonné : delete 
print("\n\nQuel User souhaitez vous supprimer?"); 
$user= <>; 
chomp($user); 
delete ($abonnes {$user}) ; 
 
# Affichage 
print("\n\nAffichage de la DVDthèque"); 
while (($prenom,$nbDVD) = each %abonnes) { 
print("\n$prenom est abonné"); 
# si le nb de DVD n'est pas undef 
if (defined($nbDVD)) { 
print("\n\tnb de DVD empruntés : $nbDVD"); 
} else { 
print("\n\tIl n'a jamais emprunté de DVD"); 
} 
} 
 
# Emprunt d'un ou plusieurs DVD 
print("\n\nCombien de DVD voulez vous emprunter?"); 
$maxDVD = -1; # le max de DVD empruntés 
while (($prenom,$nbDVD) = each %abonnes) { 
if ($nbDVD > $maxDVD) { 
$DVD = $nbDVD; 
$Emprunteur = $prenom; 
} 
} 
print("\nIl a emprunté $DVD DVD"); 
# Recherche d'un abonné 
print("\n\nQuel abonné cherchez-vous ? "); 
$abbX = <STDIN>; 
chomp($abbX); # suppression du saut de ligne 
if (exists $abonnes{$abbX}) { 
print("\n$abbX est abonné\nIl a emprunté $abonnes{$abbX} DVD"); 
} else { 
print("\n$abbX n'est pas abonné\n"); 
} 
 
# retour d'un ou plusieurs DVD 
print'"\n\nCombien de DVD coulez vous restituer?"); 
while (($prenom,$nbDVD) = each %abonnes) { 
if ($nbDVD > $maxDVD) { 
$DVD = $nbDVD; 
$restitué = $prenom; 
} 
} 
print ("\nIl a restitué $DVD DVD"); 
 
# Quitter 
print("\n\nAu revoir\n\n");