/*Meine Adressverwaltung ---erstes größeres Projekt von Christian Reber---*/


/********************************************************************************************************
 *  Noch zu machen: (noch alles)                                                                        *
 * 1: Adressverwaltung mit Neue Adressen , Löschen, Verändern, Anzeigen.Angeben wo er das machen will.  *
 * 2: Bei Neu eingabe suchen wo erste neue Stelle.                                                      *
 * 3: Programm sucht nach Namen und gibt Stelle aus. Bei mehr als 23 bei tastendruck weiter auflisten.  *
 * 4: Programm soll alles nach namen Auflisten                                                          *
 ********************************************************************************************************/ 
//WICHTIG:
//BUGS:
//	Mann kann nix anzeigen.


/*Die Includes*/
#include <iostream>
#include <string>
using namespace std;

/*strukturen*/
struct TAdresse
{
	char *Name;
	char *Adresse;
	char *PLZ;
	char *Ort;
	char *Telefon;
	char *Vorname;
	char *Hausnummer;
};

/*Deklarationen*/
TAdresse Adresse[50];

char ende = 'n';
char auswahl;


int i = 0; //Zählervariable
int platz = 0; // Speicherplatz

/*Das Programm*/
int main()
{
	while (ende != 'j')
	{
		/*Die Auswahl anfang*/
		cout << "Was wollen Sie tun?" <<endl;
		cout << "Adresse" << endl;
		cout << "[h]inzufügen::";
		cout << "[l]oeschen::" ;
		cout << "[v]eraendern::";
		cout << "[a]nzeigen" << endl;
		//Trennstrich
		cout << "--------------------------------------------------" << endl;
		cout << "Programm [b]eenden"<< endl;
		cin >> auswahl;
		/*die Auswahl ende*/

		/*Realativierung der eingabe anfang*/
		switch(auswahl)
		{
			case 'h':
			case 'H':
				auswahl = 'h';
				break;
			case 'l':
			case 'L':
				auswahl = 'l';
				break;
			case 'v':
			case 'V':
				auswahl = 'v';
				break;
			case 'a':
			case 'A':
				auswahl = 'a';
				break;
			case 'b':
			case 'B':
				auswahl = 'b';
				break;
			default:
				cout << "Ihre Eingabe war Mist!" << endl;
				cout << "Ich gehe davon aus das Sie das Programm beenden wollen." << endl;
				ende = 'j';
				break;
		}
		/*relativierung der eingabe ende*/
		
		/*Erstellen der Arrays*/
		for(i = 0 ; i < 50 ; i++)
		{
			Adresse[i].Name       = new char[50];
			Adresse[i].Adresse    = new char[50];
			Adresse[i].Ort        = new char[80];
			Adresse[i].Telefon    = new char[30];
			Adresse[i].PLZ        = new char[15];
			Adresse[i].Vorname    = new char[50];
			Adresse[i].Hausnummer = new char [5];
		}
		if(ende != 'j')
		{
			/*Ausführung*/
			switch(auswahl)
			{
				case 'h':
					i = 1;
					platz = 2; //darf nicht 0 sein!!!
					// auswählen: mit oder ohne Suche
					cout << "Wollen Sie automatisch nach einen Freien Platz suchen lassen? (j/n)" << endl;
					cin >> auswahl;
					switch(auswahl)
					{
						case 'j':
						case 'J':
							do
							{
								//finden eines freien Platzes
								i++;
								if(platz != 0)
								{	
									platz = strlen(Adresse[i].Name);
								}
							}
							while(i < 50);
							break;
						case 'n':
						case 'N':
							cout << "Welchen Speicherplatz wollen Sie nutzen? (1-50)" << endl;
							cin >> platz;
							platz - 1;
							if(platz < 0 || platz > 49)
							{
								cout << "Ihre Auswahl war ungültig. ";
								cout <<  "Geben Sie einen neuen  Speicherplatz ein (1-50)" << endl;
								cin >> platz;
								platz - 1;
							}
							break;
						default:
							cout << "Ihre Eingabe war Mist!" << endl;
							cout << "Ich gehe davon aus das Sie das Programm beenden wollen." << endl;
							ende = 'j';
							break;
					}
					//übergabe der platznummer
					i = platz;
					//eingeben der Adresse
					cout << "Bitte geben Sie den Nachnamen des Kontaktes ein:" << endl;
					cin >> Adresse[i].Name;
					cout << "Geben sie jetz den Vornamen ein:" << endl;
					cin >> Adresse[i].Vorname;
					cout << "In welchere Straße wohnt er?" << endl;
					cin >> Adresse[i].Adresse;
					cout << "Welche Nummer hat das Haus?" << endl;
					cin >> Adresse[i].Hausnummer;
					cout << "In welchen Ort?" << endl;
					cin >> Adresse[i].Ort;
					cout << "Welche PLZ hat der Ort" << endl;
					cin >> Adresse[i].PLZ;
					cout << "Welche Telefonnummer hat der Kontakt?" << endl;
					cin >> Adresse[i].Telefon;

					//Angeben des gerade eingegebenen
					cout << "Name   : " << Adresse[i].Name << " " << Adresse[i].Vorname << endl;
					cout << "Strasse: " << Adresse[i].Adresse << " " << Adresse[i].Hausnummer << endl;
					cout << "Ort    : " << Adresse[i].PLZ << " " << Adresse[i].Ort << endl;
					cout << "Telefon: " << Adresse[i].Telefon << endl;
					cout << "Diese Angaben wurde in Platz " << platz + 1 << " geschrieben" << endl;
					break;
				case 'l':
					cout << "'Adresse loeschen' ist noch nicht initialisiert" << endl;
					break;
				case 'v':
					cout << "'Adresse veraendern' ist noch nicht initialisiert" << endl;
					break;
				case 'a':
					i = 0;
					for(i; i < 50; i++)
					{
						cout << "Platz " << i + 1 << ":" << endl;
						cout << "Name   : " << Adresse[i].Name << " " << Adresse[i].Vorname << endl;
						cout << "Strasse: " << Adresse[i].Adresse << " " << Adresse[i].Hausnummer << endl;
						cout << "Ort    : " << Adresse[i].PLZ << " " << Adresse[i].Ort << endl;
						cout << "Telefon: " << Adresse[i].Telefon << endl;
					}
					break;
				case 'b':
					/*Hier gibts nix weil man ja auch nix machen will*/
					cout << "Wollen Sie das Programm wirklich beenden? (j/n)" << endl;
					cin >> ende;
					break;
			}
		}
		/*Ausführung Ende*/

	}
	for(i = 0 ; i < 50 ; i++)
		{
			delete	Adresse[i].Name;
			delete	Adresse[i].Adresse;
			delete	Adresse[i].Ort;
			delete	Adresse[i].Telefon;
			delete  Adresse[i].PLZ;
			delete  Adresse[i].Vorname;
			delete  Adresse[i].Hausnummer;
		}
	return 0;
}


//© bei bei Christian Reber
