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.

de_DEGerman