summaryrefslogtreecommitdiffstats
path: root/Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl
downloadStudium-master.tar.gz
Studium-master.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl')
-rw-r--r--Bachelor/Systemprogrammierung in Perl/examples/buchlist.pl140
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";
+}
+