2021-10-15 08:36:02 +02:00

303 lines
6.5 KiB
C++

#include <iostream>
#include <cstdlib>
using namespace std;
class Person {
private:
string vorname;
string name;
string strasse;
unsigned int hausnr;
string ort;
unsigned int plz;
public:
Person() {};
void datenErfassen();
void datenAusgeben();
};
void Person::datenErfassen()
{
cout << "--Datenerfassung--" << endl;
cout << "Vorname: ";
cin >> vorname;
cout << "Nachname: ";
cin >> name;
cout << "Strasse: ";
cin >> strasse;
cout << "Hausnummer: ";
cin >> hausnr;
cout << "PLZ: ";
cin >> plz;
cout << "Ort: ";
cin >> ort;
cout << endl << "Person erfasst." << endl;
}
void Person::datenAusgeben()
{
cout << vorname << " " << name << endl;
cout << strasse << " " << hausnr << endl;
cout << plz << " " << ort << endl;
}
class Buch{
private:
string titel;
string autor;
public:
Buch() {};
Buch(string t,string a) : titel(t), autor(a) {};
void datenAusgeben();
};
void Buch::datenAusgeben()
{
cout << titel << " (von " << autor << ")";
}
class Datum{
private:
short tag;
short monat;
unsigned int jahr;
public:
void datumErfassen();
void datenAusgeben();
void umEinenMonatErhoehen();
};
void Datum::datumErfassen()
{
cout << "Tag: ";
cin >> tag;
cout << "Monat: ";
cin >> monat;
cout << "Jahr: ";
cin >> jahr;
}
void Datum::datenAusgeben()
{
cout << tag << "." << monat << "." << jahr << endl;
}
void Datum::umEinenMonatErhoehen()
{
if(monat == 12)
{
jahr = jahr+1;
monat=(monat%12)+1;
}
else if(tag == 28 && monat == 2)
{
tag = 31;
monat+=1;
}
else if(tag <= 28)
{
monat+=1;
}
else if(tag > 28 && tag <= 31 && monat == 1)
{
tag = 28;
monat+=1;
}
else if(tag==31 && monat != 7)
{
switch (monat)
{
case 3:
case 5:
case 8:
case 10:
{
tag=30;
monat+=1;
break;
}
}
}
else if(tag==30)
{
switch (monat)
{
case 4:
case 6:
case 9:
case 11:
{
tag=31;
monat+=1;
break;
}
}
}
else
monat+=1;
}
class Ausleihe {
private:
Person ausleiher;
Buch ausgeliehenesBuch;
Datum rueckgabe;
bool hat_buch;
public:
Ausleihe() { hat_buch = false; };
void datenErfassen(Person,Buch,Datum);
void datenAusgeben();
void verlaengere();
void zurueckgeben();
bool get_hat_buch();
};
void Ausleihe::datenErfassen(Person p, Buch b, Datum d)
{
ausleiher = p;
ausgeliehenesBuch = b;
rueckgabe = d;
hat_buch = true;
}
void Ausleihe::datenAusgeben()
{
ausleiher.datenAusgeben();
cout << endl << "Ausgeliehenes Buch: ";
ausgeliehenesBuch.datenAusgeben();
cout << endl << "Rueckgabe bis: ";
rueckgabe.datenAusgeben();
}
void Ausleihe::verlaengere()
{
rueckgabe.umEinenMonatErhoehen();
cout << "Ausleihe um 1 Monat verlaengert." << endl;
}
void Ausleihe::zurueckgeben()
{
cout << "Buch ";
ausgeliehenesBuch.datenAusgeben();
cout << " wurde zuruckgegeben." << endl;
hat_buch = false;
}
bool Ausleihe::get_hat_buch()
{
return hat_buch;
}
int main()
{
Person p;
int auswahl;
Buch b[3] = {{"Titel 1", "Autor a"},{"Titel 2", "Autor b"},{"Titel 2", "Autor c"}};
Ausleihe a;
Datum d;
p.datenErfassen();
system("pause");
do
{
system("cls");
cout << "--MENUE--" << endl;
cout << "[1] Personendaten erfassen" << endl;
cout << "[2] Buch ausleihen" << endl;
cout << "[3] Ausleihe verlaengern" << endl;
cout << "[4] Daten ausgeben" << endl;
cout << "[5] Buch zurueckgeben" << endl;
cout << "[0] Beenden" << endl;
cout << endl << "Auswahl: ";
cin >> auswahl;
switch(auswahl)
{
case 1:
{
system("cls");
p.datenErfassen();
system("pause");
system("cls");
break;
}
case 2:
{
system("cls");
if(a.get_hat_buch() == true)
{
cout << "Ausleihe nicht moeglich. Person hat bereits ein Buch ausgeliehen" << endl;
}
else
{
cout << "Welches Buch soll ausgeliehen werden?" << endl;
for(int i=0;i<3;i++)
{
cout << "[" << i+1 << "] ";
b[i].datenAusgeben();
cout << endl;
}
cout << endl << "Auswahl: ";
cin >> auswahl;
system("cls");
cout << "Bis wann soll das Buch zurueckgegeben werden?" << endl;
d.datumErfassen();
a.datenErfassen(p,b[auswahl-1],d);
}
system("pause");
system("cls");
break;
}
case 3:
{
system("cls");
if(a.get_hat_buch() == true)
a.verlaengere();
else
cout << "Person hat kein Buch ausgeliehen." << endl;
system("pause");
system("cls");
break;
}
case 4:
{
system("cls");
if(a.get_hat_buch() == true)
a.datenAusgeben();
else
cout << "Person hat kein Buch ausgeliehen." << endl;
system("pause");
system("cls");
break;
}
case 5:
{
system("cls");
if(a.get_hat_buch() == true)
a.zurueckgeben();
else
cout << "Person hat kein Buch ausgeliehen." << endl;
system("pause");
system("cls");
break;
}
case 0:
{
cout << endl << "Auf Wiedersehen" << endl;
return 0;
}
default:
{
cout << endl << "Falsche Eingabe!" << endl;
system("pause");
}
}
}while(auswahl!=0);
return 0;
}