Problème au niveau de la restitution et de l'emprunt
Citation:
Envoyé par
Philou67430
Pas tout fait :
Code:
1 2 3 4 5 6 7
| $ perl -E 'use strict; use warnings; print $a'
Name "main::a" used only once: possible typo at -e line 1.
Use of uninitialized value $a in print at -e line 1.
philou67430@localhost //home/philou67430
$ perl -E 'use strict; use warnings; my $a; print $a'
Use of uninitialized value $a in print at -e line 1. |
;)
OK, je t'accorde que ces deux états sont très proches.
J'ai répondu à ton problème sur $maxDVD : as-tu compris et corrigé ?
J'ai toujours un soucis pour les étapes 4 et 5. En effet, le code ne s'"exécute pas comme je le voudrais. Je demande à l'utilisateur de saisir l'utilisateur. Ensuite, je lui demande combien de dvd il voudrais emprunter.. J'ai seulement besoin que vous m'aidiez à optimiser ce code
Code:
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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
| #!/usr/bin/perl
use strict;
use warnings;
my $i=0;
my @DVD;
my $emprunteur;
my $prenom;
my $n=0;
my %abonnes;
my $nbDVD;
my $newAbonne;
my $user;
my $maxDVD=-1;
my $restituer;
my $abonnes;
my $DVD;
# 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;
while (1){
print "################## Menu ##################\n";
print "# #\n";
print "# 1 - Affichage de la DVDthéque #\n";
print "# 2 - Ajoute d'un abonné #\n";
print "# 3 - Suppression d'un abonné #\n";
print "# 4 - Emprunt de DVD #\n";
print "# 5 - Retour de DVD #\n";
print "# 6 - Quitter #\n";
print "# #\n";
print "##########################################\n";
print "choix : ";
my $choix=<STDIN>;
if ( $choix == 1 ){
print("\n\nAffichage de la DVDthèque" );
while (($prenom,$nbDVD) = each %abonnes) {
print "\n$prenom est abonne";
# si le nb de DVD n'est pas undef
if (defined($nbDVD)) {
print("\n\tnb de DVD empruntes : $nbDVD" );
} else {
print("\n\tIl n'a jamais emprunte de DVD" );
}
}
}
elsif ( $choix == 2 ){
# 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
}
elsif ( $choix == 3 ){
# Révocation d'un abonné : delete
print("\n\nQuel User souhaitez vous supprimer?" );
$user= <>;
chomp($user);
delete ($abonnes {$user}) ;
}
elsif ( $choix == 4 ){
# Emprunt d'un ou plusieurs DVD
sub select_a_subscriber {
my (%hash) = @_;
my @arr;
my $n;
my $select = 0;
foreach my $key (sort keys %hash) {
push @arr, $key;
print ++$n . ". $key\n";
}
while (($select < 1) || ($select > $n)) {
print "Sélection (1 à $n) ? \n";
$select = <>;
chomp($select);
}
return $arr[$select - 1];
}
my $ab = select_a_subscriber(%abonnes);
print("\n\nCombien de DVD voulez vous emprunter?" );
{
if ($nbDVD > $maxDVD) {
$DVD = <>;
$DVD[$i]=$user;
$i++;
$emprunteur = $prenom;
$abonnes{$emprunteur} = $abonnes{$emprunteur} + $n;
}
}
print("\nil a emprunte $DVD DVD" );
}
elsif ( $choix == 5 ){
# retour d'un ou plusieurs DVD
sub select_a_subscriber {
my (%hash) = @_;
my @arr;
my $n;
my $select = 0;
foreach my $key (sort keys %hash) {
push @arr, $key;
print ++$n . ". $key\n";
}
while (($select < 1) || ($select > $n)) {
print "Sélection (1 à $n) ? \n";
$select = <>;
chomp($select);
}
return $arr[$select - 1];
}
my $ab = select_a_subscriber(%abonnes);
print"\n\nCombien de DVD voulez vous restituer?";
{
if ($nbDVD > $maxDVD) {
$DVD = <>;
$DVD[$i]=$user;
$i--;
$DVD = $nbDVD;
$restituer = $prenom;
$abonnes{$restituer} = $abonnes{$restituer} - $n;
}
}
print ("\nil a restitue $DVD DVD" );
}
elsif ( $choix == 6 ){
exit 0;
}
else{
print "Votre choix n'est pas dans ceux proposes\n";
}
} |