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");
Partager