diff --git a/src/Ausgabenverwaltung.cpp b/src/Ausgabenverwaltung.cpp index c8cc116..1e2b482 100644 --- a/src/Ausgabenverwaltung.cpp +++ b/src/Ausgabenverwaltung.cpp @@ -1,6 +1,135 @@ #include +#include +#include + +using namespace std; + +enum category +{ + None = 0, + Tanken = 1, + Nahrungsmittel = 2, + Reinigungsmittel = 3, + Urlaub = 4, + Haustiere = 5, + Bekleidung = 6, + Wohnen = 7, + Versicherung = 8 +}; + +class Invoice +{ +private: + int number_ = 0; + double amount_; + unsigned short month_ = 0; + category category_ = None; +public: + Invoice(int number, double amount, unsigned short month, category category) : number_(number), amount_(amount), + month_(month), category_(category) + { + } + + int get_number() const + { + return number_; + } +}; + +template +T ask_question(const string& question) +{ + cout << question << endl; + cout << "> "; + T value; + cin >> value; + return value; +} + +list invoices; + +void create_invoice(); + +void output_invoice_per_month(); + +void output_invoice_per_category(); int main() { - std::cout << "Hello World!\n"; + auto end_program = false; + while (!end_program) + { + system("cls"); + cout << "Ausgabenverwaltung (" << invoices.size() << " Rechnungen)" << endl << endl; + cout << "Bitte w\x84hlen Sie eine Option:" << endl; + cout << "1: Erfassung einer Rechnung (inkl. Abfrage der Rechnungsdaten)" << endl; + cout << "2: Alle Ausgaben, sortiert nach Monat, ausgeben" << endl; + cout << "3: Summe der Ausgaben pro Kategorie ausgeben" << endl; + cout << "4: Rechnung l\x94schen" << endl; + cout << "0: Programm beenden" << endl; + auto input = ask_question("Ihre Eingabe:"); + + switch (input) + { + case 1: + create_invoice(); + break; + case 2: + output_invoice_per_month(); + break; + case 3: + output_invoice_per_category(); + break; + case 0: + end_program = true; + break; + default: + cout << "Unerlaubte Eingabe" << endl; + system("pause"); + } + } + return 0; +} + +category get_category(); + +void create_invoice() +{ + cout << "Eine neue Rechnung erstellen." << endl << endl; + auto invoice_no = invoices.empty() ? 1 : invoices.back().get_number() + 1; + auto amount = ask_question("Bitte geben Sie den Betrag in Euro ein."); + auto month = ask_question("Bitte geben Sie den Monat ein."); + const auto category = get_category(); + const auto i = Invoice(invoice_no, amount, month, category); + invoices.push_back(i); +} + +void output_invoice_per_month() +{ +} + +void output_invoice_per_category() +{ +} + +category get_category() +{ + while (true) + { + cout << "Bitte w\x84hlen sie eine Kategorie aus:" << endl; + cout << " 1: Tanken" << endl; + cout << " 2: Nahrungsmittel" << endl; + cout << " 3: Reinigungsmittel" << endl; + cout << " 4: Urlaub" << endl; + cout << " 5: Haustiere" << endl; + cout << " 6: Bekleidung" << endl; + cout << " 7: Wohnen" << endl; + cout << " 8: Versicherung" << endl; + auto cat = ask_question(""); + if (cat > 0 && cat <= 8) + { + return static_cast(cat); + } + cout << "Ung\x81ltige Eingabe"; + } } \ No newline at end of file