#include <iostream>
#include <conio.h> // getch
using namespace std;

class Person{
    private: // Membervariablen, Attribute, Eigenschaften
        string Vorname;
        string Nachname;
        bool Geschlecht;
        int Alter;
    public: // Memberfunktionen, Methoden
        string getName(){
            string Name = Vorname + " " + Nachname;
            return Name;
        }

        void setName(string Vorname, string Nachname){
            this->Vorname = Vorname;
            this-> Nachname = Nachname;
        }

        string getGeschlecht(){
            if(Geschlecht)
                return "maennlich";
            else
                return "weiblich";
        }

        void setGeschlecht(bool Geschlecht){
            this->Geschlecht = Geschlecht;
        }

        int getAlter(){
            return Alter;
        }

        void setAlter(int Alter){
            this->Alter = Alter;
        }

        Person(){
           Vorname = "Peter";
           Nachname = "Pfosten";
           Geschlecht = true;
           Alter = 0;
        }

        Person(string Vorname, string Nachname, bool Geschlecht, int Alter){
           this->Vorname = Vorname;
           this->Nachname = Nachname;
           this->Geschlecht = Geschlecht;
           this->Alter = Alter;
        }
};

int main()
{
	// Speicher reservieren
	Person person[5];
	char Taste, TasteGeschlecht;
	int i;
	string Vorname, Nachname;
	int Alter;

    do{
        // Ausgabe
        system("cls");
        cout << "\t\t*****************" << endl;
        cout << "\t\t* Personenliste *" << endl;
        cout << "\t\t*****************\n" << endl;
        for(i=0; i<5; i++)
            cout << "\t" << i+1 << ". "
                 << person[i].getName() << ", "
                 << person[i].getAlter() << " Jahre, "
                 << person[i].getGeschlecht() << endl;

        // Menue
        cout << endl;
        cout << "\t\t(d)atensatz aendern" << endl;
        cout << "\t\t(s)ortieren" << endl;
        cout << "\t\t(b)eenden" << endl;
        // Taste einlesen
        Taste = getch();

        // Verzeigung
        switch(Taste){
            case 'd':
                // ***************************
                // **** Datensatz aendern ****
                // ***************************
                // Nummer einlesen
                cout << "\n\t\tNummer (1-5): ";
                // cin >> i;
                //fflush(stdin);
                do{
                    i=getch()-'0';
                }while(i<1 || i>5);

                // Datensatz ausgeben
                cout << "\t" << i << ". "
                 << person[i-1].getName() << ", "
                 << person[i-1].getAlter() << " Jahre, "
                 << person[i-1].getGeschlecht() << endl;

                // Neuen Namen einlesen
                cout << "\n\tNeuer Vorname: ";
                getline(cin,Vorname);
                cout << "\tNeuer Nachname: ";
                getline(cin,Nachname);
                person[i-1].setName(Vorname, Nachname);

                // Neues Alter einlesen
                cout << "\tNeues Alter: ";
                cin >> Alter;
                fflush(stdin);
                person[i-1].setAlter(Alter);

                // Neues Geschlecht einlesen
                cout << "\tNeues Geschlecht (m/w): ";
                do{
                    TasteGeschlecht = getch();
                }while(TasteGeschlecht!='m' && TasteGeschlecht!='w');
                if(TasteGeschlecht=='m')
                    person[i-1].setGeschlecht(true);
                else
                    person[i-1].setGeschlecht(false);
                break;
            case 's':
                // sortieren
                int og, pos;
                for(og=4; og>=1; og--)
                {
                    for(pos=0; pos<=og-1; pos++) // FEHLER WAR og -1 !!!
                    {                        
                        if(person[pos].getName()>person[pos+1].getName())
                        {
                           Person tmp = person[pos];
                           person[pos] = person[pos+1];
                           person[pos+1] = tmp;
                        }
                    }
                }

                break;
        }
    }while(Taste!='b');
	return 0;
}

