Application Kata „Haushaltsbuch“
Erstelle ein Programm zur Pflege eines Haushaltsbuches. Das Programm wird per Kommandozeile bedient. Mit folgendem Kommando wird eine Auszahlung getätigt:
C:>hb auszahlung 5,99 Restaurantbesuche Schokobecher Kassenbestand: 50,45 EUR Restaurantbesuche: 25,99 EUR
Der erste Parameter definiert, ob es sich um eine Auszahlung oder Einzahlung handelt. Bei einer Auszahlung wird der Betrag, die Kategorie und optional ein Memotext (hier „Schokobecher“) angegeben. Die Auszahlung kann auch mit einem anderen Datum versehen werden:
C:>hb auszahlung 01.01.2015 700 Miete Kassenbestand: 678,45 EUR Miete: 700,00 EUR
Zu Beginn, beim erstmaligen Aufruf des Programms, ist der Kassenbestand natürlich Null. Eine Einzahlung kann mit folgendem Befehl vorgenommen werden:
C:>hb einzahlung 400 Kassenbestand: 450,43 EUR
Der angegebene Betrag wird mit dem aktuellen Datum auf die Kasse gebucht. Anschließend wird der aktuelle Kassenbestand angezeigt. Auch hier kann optional wieder ein anderes Datum angegeben werden:
C:>hb einzahlung 01.01.2015 400 Kassenbestand: 450,43 EUR
Um eine Übersicht über alle Ein- und Auszahlungen des aktuellen Monats zu erhalten, ruft man das Programm mit dem Befehl „übersicht“ auf:
C:>hb übersicht März 2015 ------------------------ Kassenbestand: 34,20 EUR Miete: 600 EUR Lebenshaltung: 343,90 EUR Restaurantbesuche: 76,70 EUR Kleidung: 54,60 EUR
Um die Übersicht für einen anderen Monat anzuzeigen, können optional zwei weitere Parameter angegeben werden, nämlich Monat und Jahr:
C:>hb übersicht 12 2014 Dezember 2014 ------------------------ Kassenbestand: 125,70 EUR Miete: 600 EUR Lebenshaltung: 421,67 EUR Restaurantbesuche: 120,67 EUR Kleidung: 78,90 EUR
Variationen
Die Kategorien werden beim ersten Verwenden automatisch angelegt. Dies führt bei Tippfehlern dazu, dass Kategorien versehentlich angelegt werden. Daher soll beim erstmaligen Verwenden einer Kategorie eine Rückfrage erfolgen:
C:>hb auszahlung 7 "Bücher, Musik" Soll die Kategorie "Bücher, Musik" neu angelegt werden? (j/n):
Bei der Eingabe von „j“ wird die Kategorie angelegt und die Buchung durchgeführt. Bei Eingabe von „n“ wird der Buchungsvorgang abgebrochen.