mirror of
https://inf-git.fh-rosenheim.de/studavrije7683/cplusplus-training.git
synced 2025-04-19 22:49:55 +00:00
303 lines
6.5 KiB
C++
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;
|
|
}
|