Abend Heinz
Ist es für Dich interessant, wann der erste Kundenkontakt hergestellt wurde? usw., usw.
Ja, der erste Kontakt ist ja auch in der Tabelle.
Normalisierung ist wichtig und macht sogar Spaß, wenn man es kann [...] Dem einen Kunden wird nur Strasse, Ort, Tel zugeordnet, dem nächsten werden 3 Telnummern, 2 Strassen, 2 Orte usw. zugeordnet.
Gut zu wissen. Aber wir wollen das Einsteigerprojekt ja nicht "überpowern" ;-)
Beispiel, eine Kundenadresse ändert sich. Dann ist die Frage, ob es für Dich interessant ist, dass er schon Kurzgeschichten unter der alten Adresse geliehen hat, denn dynamisch Daten einsetzen hieße sonst, Historiendaten verfälschen.
Ja, das hab ich mir auch schon gedacht. Wenn ein Kunde , der schon länger Kunde ist, die Adresse ändert, muss ich, oder später eben die Büroangestellte daran denken, unter KD-Datum den alten Wert einzutragen. Sollte ich bei der Arbeit aus der Logik ergeben.
Ist alles lösbar, aber die Grundgedanken zu solchen Themen stehen optimalerweise vor Projektbeginn im großen und Ganzen schonmal.
Ja, und diese Grundgedanken sind noch nicht ganz fertig g. Erschwerend kommt hinzu, dass ich diesmal aus rechtlichen Gründen Perl nicht so nutzen kann, wie ich es gewohnt bin. Nämlich auf dem Server und via Browser die Ein- und Ausgabe fahren. Ich nutze hier erstmals Perl "lokal" auf einem Ubuntu-System, und die Ein- und Ausgabe erfolgt über das Terminal (Konsole-Fenster).
Hier seht ihr einen vorsichtigen Anfang, der nach meinem Geschmack mal wieder zu viele "goto"-Befehle hat. Die Menüs lassen sich alle anwählen. Die "Zurück"-Funktion geht auch überall. Nur "sämtliche" Funktionen gehen natürlich noch nicht. Da ringe ich noch, ob MySQL, CSV "nackt" oder CSV via Modul DBD::CSV. Über die Datenstruktur hab ich mir noch keinen Kopf gemacht. Hier der Programm-Test-Code "Für Konsolenausführung":
#!/usr/bin/perl
use strict;
use warnings;
my $decider;
###################################################################
HauptMenu:
###################################################################
system("clear");
print "+-----------------------------------------------------+ \n";
print "| Einschlafzeit / Daten-Verwaltungs-Programm (EZ-DVP) | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print ">> Hauptmenü << \n";
print " \n";
print "+-----------------------------------------------------+ \n";
print "| [1] Kunden anlegen... | \n";
print "| | \n";
print "| [2] Kunden suchen... | \n";
print "| | \n";
print "| [3] Kurzgeschichte anlegen... | \n";
print "| | \n";
print "| [4] Kurzgeschichte suchen... | \n";
print "| | \n";
print "| [5] Buchungsstatus abfragen... | \n";
print "| | \n";
print "| [6] Statistik aufrufen... | \n";
print "| | \n";
print "| [7] Programm beenden... | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print "Bitte Auftrag auswählen (1-7):";
$decider = <STDIN>;
chop($decider);
if ($decider eq "1") {goto KundenAnlegen;}
if ($decider eq "2") {goto KundenSuchen;}
if ($decider eq "3") {goto KurzgeschichteAnlegen;}
if ($decider eq "4") {goto KurzgeschichteSuchen;}
if ($decider eq "5") {goto BuchungsstatusAbfragen;}
if ($decider eq "6") {goto StatistikAufrufen;}
if ($decider eq "7") {goto ProgrammBeenden;}
goto HauptMenu;
###################################################################
KundenAnlegen:
###################################################################
system("clear");
print "+-----------------------------------------------------+ \n";
print "| Einschlafzeit / Daten-Verwaltungs-Programm (EZ-DVP) | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print ">> Kunden anlegen << \n";
print " \n";
print "+-----------------------------------------------------+ \n";
print "| [1] Daten eingeben... | \n";
print "| | \n";
print "| [2] Zurück... | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print "Bitte Auftrag auswählen (1-2):";
$decider = <STDIN>;
chop($decider);
if ($decider eq "1") {goto DatenEingeben;}
if ($decider eq "2") {goto HauptMenu;}
goto KundenAnlegen;
exit;
###################################################################
KundenSuchen:
###################################################################
system("clear");
print "+-----------------------------------------------------+ \n";
print "| Einschlafzeit / Daten-Verwaltungs-Programm (EZ-DVP) | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print ">> Kunden suchen << \n";
print " \n";
print "+-----------------------------------------------------+ \n";
print "| [1] Kunden suchen nach KD-Nummer... | \n";
print "| | \n";
print "| [2] Kunden suchen nach KD-Namen... | \n";
print "| | \n";
print "| [3] Zurück... | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print "Bitte Auftrag auswählen (1-3):";
$decider = <STDIN>;
chop($decider);
if ($decider eq "1") {goto SuchenKdNummer;}
if ($decider eq "2") {goto SuchenKdNamen;}
if ($decider eq "3") {goto HauptMenu;}
goto KundenSuchen;
exit;
###################################################################
KurzgeschichteAnlegen:
###################################################################
system("clear");
print "+-----------------------------------------------------+ \n";
print "| Einschlafzeit / Daten-Verwaltungs-Programm (EZ-DVP) | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print ">> Kurzgeschichte anlegen << \n";
print " \n";
print "+-----------------------------------------------------+ \n";
print "| [1] Daten erfassen... | \n";
print "| | \n";
print "| [2] Zurück... | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print "Bitte Auftrag auswählen (1-2):";
$decider = <STDIN>;
chop($decider);
if ($decider eq "1") {goto DatenErfassen;}
if ($decider eq "2") {goto HauptMenu;}
goto KurzgeschichteAnlegen;
exit;
###################################################################
KurzgeschichteSuchen:
###################################################################
system("clear");
print "+-----------------------------------------------------+ \n";
print "| Einschlafzeit / Daten-Verwaltungs-Programm (EZ-DVP) | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print ">> Kurzgeschichte suchen << \n";
print " \n";
print "+-----------------------------------------------------+ \n";
print "| [1] Kurzgeschichte suchen nach KG-Nummer... | \n";
print "| | \n";
print "| [2] Kurzgeschichte suchen nach KG-Titel... | \n";
print "| | \n";
print "| [3] Zurück... | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print "Bitte Auftrag auswählen (1-3):";
$decider = <STDIN>;
chop($decider);
if ($decider eq "1") {goto SuchenKGNummer;}
if ($decider eq "2") {goto SuchenKGTitel;}
if ($decider eq "3") {goto HauptMenu;}
goto KurzgeschichteSuchen;
exit;
###################################################################
BuchungsstatusAbfragen:
###################################################################
system("clear");
print "+-----------------------------------------------------+ \n";
print "| Einschlafzeit / Daten-Verwaltungs-Programm (EZ-DVP) | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print ">> Buchungsstatus abfragen << \n";
print " \n";
print "+-----------------------------------------------------+ \n";
print "| [1] Alle mit Status F (frei)... | \n";
print "| | \n";
print "| [2] Alle mit Status G (gebucht)... | \n";
print "| | \n";
print "| [3] Alle mit Status B (belegt)... | \n";
print "| | \n";
print "| [4] Zurück... | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print "Bitte Auftrag auswählen (1-4):";
$decider = <STDIN>;
chop($decider);
if ($decider eq "1") {goto StatusF;}
if ($decider eq "2") {goto StatusG;}
if ($decider eq "3") {goto StatusB;}
if ($decider eq "4") {goto HauptMenu;}
goto BuchungsstatusAbfragen;
exit;
###################################################################
StatistikAufrufen:
###################################################################
system("clear");
print "+-----------------------------------------------------+ \n";
print "| Einschlafzeit / Daten-Verwaltungs-Programm (EZ-DVP) | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print ">> Statistik aufrufen << \n";
print " \n";
print "+-----------------------------------------------------+ \n";
print "| [1] Werte anzeigen... | \n";
print "| | \n";
print "| [2] Zurück... | \n";
print "+-----------------------------------------------------+ \n";
print " \n";
print "Bitte Auftrag auswählen (1-2):";
$decider = <STDIN>;
chop($decider);
if ($decider eq "1") {goto WerteAnzeigen;}
if ($decider eq "2") {goto HauptMenu;}
goto StatistikAufrufen;
exit;
###################################################################
ProgrammBeenden:
###################################################################
system("clear");
exit;