From 73900a4cabb63a5f08218a13f3d70d7855360d77 Mon Sep 17 00:00:00 2001 From: Holger Boerchers Date: Sun, 23 Dec 2018 17:45:15 +0100 Subject: [PATCH] done #1 --- src/Motorradvermietung.cpp | 105 +++++++++++++++++++++++++------------ 1 file changed, 72 insertions(+), 33 deletions(-) diff --git a/src/Motorradvermietung.cpp b/src/Motorradvermietung.cpp index 4e07253..ac53dd2 100644 --- a/src/Motorradvermietung.cpp +++ b/src/Motorradvermietung.cpp @@ -4,6 +4,38 @@ using namespace std; +/** + * \brief ask a question and get a answer. + * \tparam T return parameter + * \param question the question. + * \return the value. + */ +template +T ask_question(const string& question) +{ + cout << question << ": "; + T value; + cin >> value; + return value; +} + +bool ask_question(const string& question) +{ + while (true) + { + const auto answer = ask_question(question + " (J/N)"); + if (answer == 'j' || answer == 'J') + { + return true; + } + if (answer == 'n' || answer == 'N') + { + return false; + } + cout << "Ungueltige Eigabe. Bitte noch einmal versuchen!"; + } +} + class address final { private: @@ -34,6 +66,15 @@ public: istr >> address.city_; return istr; } + + friend ostream& operator<<(ostream& ostr, const address& customer) + { + ostr << "Strasse: " << customer.street_ << endl; + ostr << "Hausnummer: " << customer.street_no_ << endl; + ostr << "Postleitzahl: " << customer.postal_code_ << endl; + ostr << "Ort: " << customer.city_ << endl; + return ostr; + } }; class reservation final @@ -57,9 +98,7 @@ private: string phone_no_; bool has_driving_license_ = false; public: - customer() - { - } + customer() = default; customer(string&& name, string&& first_name, address&& address, unsigned short&& year_of_birth, string&& phone_no, bool&& has_driving_license) : name_(name), @@ -82,32 +121,22 @@ public: istr >> customer.address_; cout << "Telefonnumer: "; istr >> customer.phone_no_; - cout << "Fuehrerschein der Klasse A? (J/N): "; - char driving_license; - istr >> driving_license; - if (driving_license == 'j' || driving_license == 'J') - { - customer.has_driving_license_ = true; - } + customer.has_driving_license_ = ask_question("Fuehrerschein der Klasse A?"); return istr; } + + friend ostream& operator<<(ostream& ostr, const customer& customer) + { + ostr << "Name: " << customer.name_ << endl; + ostr << "Vorname: " << customer.first_name_ << endl; + ostr << "Geburtsjahr: " << customer.year_of_birth_ << endl; + ostr << customer.address_; + ostr << "Telefonnummer: " << customer.phone_no_ << endl; + ostr << "Fuehrerschein " << (customer.has_driving_license_ ? "" : "nicht ") << "vorhanden." << endl; + return ostr; + } }; -/** - * \brief ask a question and get a answer. - * \tparam T return parameter - * \param question the question. - * \return the value. - */ -template -T ask_question(const string& question) -{ - cout << question << endl; - cout << "> "; - T value; - cin >> value; - return value; -} void create_customer(); void create_reservation(); @@ -122,7 +151,8 @@ int main() while (true) { system("cls"); - cout << "Motorradvermietung (" << reservations.size() << " Reservierungen)" << endl << endl; + cout << "Motorradvermietung (" << reservations.size() << " Reservierungen; " << customers.size() << " Kunden)" + << endl << endl; cout << "Bitte w\x84hlen Sie eine Option:" << endl; cout << "1: Neuen Kunden anlegen" << endl; cout << "2: Erstellen einer Reservierung" << endl; @@ -130,7 +160,7 @@ int main() cout << "4: Reservierungen exportieren" << endl; cout << endl; cout << "0: Programm beenden" << endl; - const auto input = ask_question("Ihre Eingabe:"); + const auto input = ask_question("Ihre Eingabe"); switch (input) { @@ -157,13 +187,22 @@ int main() void create_customer() { - system("cls"); - cout << "Neuen Kunden anlegen" << endl; - cout << "------------------------------------" << endl; + while (true) + { + system("cls"); + cout << "Neuen Kunden anlegen" << endl; + cout << "------------------------------------" << endl; - customer customer; - cin >> customer; - customers.push_back(customer); + customer customer; + cin >> customer; + cout << endl << endl; + cout << customer; + if (ask_question("Angaben korrekt?")) + { + customers.push_back(customer); + return; + } + } } void create_reservation()