diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl | |
| download | Studium-master.tar.gz Studium-master.tar.bz2 | |
Diffstat (limited to 'Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl')
| -rw-r--r-- | Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl b/Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl new file mode 100644 index 0000000..2b9dad8 --- /dev/null +++ b/Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl @@ -0,0 +1,140 @@ +#!c:/perl/bin/perl.exe
+my ( @Buchlist, $buchzeiger );
+my ($anz);
+my ($mittelwert);
+my (%mfunc) = (
+ 1 => sub {$anz = @Buchlist; print " Die Anzahl der Buecher ist $anz \n" ; },
+ 2 => sub { &mittelwert; print "Der mittlere Preis betraegt $mittelpreis \n";},
+ 3 => \&teuer,
+ 4 => \&billig,
+ 5 => \&mittel,
+ 6 => \&nextBuch,
+ 7 => \&lastBuch,
+ 8 => \&searchBuch,
+ 9 => sub {exit();}
+ );
+openfile(); # File einlesen
+menu(); # print menue
+
+while ( 1 ) {
+ chomp ($prompt = <STDIN>);
+ if ( $mfunc{$prompt} ){
+ $mfunc{$prompt}() ;
+ }
+ else {
+ &menu;
+ }
+}
+
+sub menu {
+ print <<END;
+ 1: Anzahl der Buecher
+ 2: durchschnittlicher Preis (arithmetisches Mittel)
+ 3: Anzahl der Buecher die teurer sind als der Durchschnitt
+ 4: Anzahl der Buecher, die preiswerter sind als der Durchschnitt
+ 5: Anzeige der Buchtitel und Preise die zwischen LOW und HIGH kosten.
+ 6: nächstes Buch
+ 7: letztes Buch
+ 8: Buch Titel suchen
+ 9: Exit
+END
+}
+
+sub openfile {
+ my ( $name,$Titel, $Autor, $Verlag,$Preis, $Bestell);
+ print " geben Sie den Filenamen der Buchliste ein: ";
+ $name = <STDIN>;
+ open ( FILE, $name ) or die "konnte $name nicht oeffnen";
+ while ( <FILE> ) {
+ ($Titel, $Autor, $Verlag,$Preis, $Bestell) = split ";";
+ push( @Buchlist,
+ {
+ TITEL => $Titel,
+ VERLAG => $Verlag,
+ AUTOR => $Autor,
+ PREIS => $Preis,
+ BESTELL => $Bestell
+ });
+ }
+ $anz = scalar @Buchlist;
+ mittelwert();
+ print " Es wurden $anz Buecher eingelesen \n";
+}
+
+sub mittelwert {
+ my($buch);
+ $mittelpreis = 0;
+
+ $anz = @Buchlist;
+ foreach $buch (@Buchlist) {
+ $mittelpreis += $buch->{PREIS};
+ }
+ $mittelpreis /= $anz;
+}
+
+sub billig {
+ my ($low) = 0;
+ my($buch);
+ foreach $buch (@Buchlist) {
+ if ( $buch->{PREIS} < $mittelpreis ) {
+ print "$buch->{TITEL} \n";
+ $low++;
+ }
+ }
+ print "\nDie Anzahl der Buecher billiger als der Durchschnitt ist $low \n";
+}
+
+sub teuer {
+ my ($high ) = 0;
+ my ($buch );
+ foreach $buch (@Buchlist) {
+ if ( $buch->{PREIS} > $mittelpreis ) {
+ print "$buch->{TITEL} \n";
+ $high++;
+ }
+ }
+ print "\nDie Anzahl der Buecher teurer als der Durchschnitt ist $high \n";
+}
+
+sub mittel {
+ my( $lowLimit, $highLimit );
+ my ($buch );
+ print "untere Preisschranke ? ";
+ $lowLimit = <STDIN>;
+ print "obere Preisschranke ? ";
+ $highLimit = <STDIN>;
+ foreach $buch (@Buchlist) {
+ if ( $buch->{PREIS} > $lowLimit && $buch->{PREIS} < $highLimit ) {
+ print "$buch->{TITEL} \n";
+ }
+ }
+}
+
+sub nextBuch {
+ printbuch( $Buchlist[$buchzeiger++] ) if $buchzeiger < $anz;
+}
+
+sub lastBuch {
+ printbuch( $Buchlist[$buchzeiger--] ) if $buchzeiger >= 0;
+}
+
+sub searchBuch {
+ my ($buch );
+ my ($search );
+ print "Suchbegriff : ";
+ chomp ($search = <STDIN>);
+
+ foreach $buch (@Buchlist) {
+ print "$buch->{TITEL} \n" if $buch->{TITEL} =~ /\Q$search\E/ ;
+ }
+}
+sub printbuch{
+ my ($buch ) = shift @_;
+ print " Titel = $buch->{TITEL} \n";
+ print " Verlag = $buch->{VERLAG} \n";
+ print " Autor = $buch->{AUTOR} \n";
+ print " Preis = $buch->{PREIS} \n";
+ print " Bestellnr = $buch->{BESTELL} \n";
+ print " \n";
+}
+
|
