002
24.02.2005, 23:03 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft... (Operator)
|
hatte gerade langeweile... hier hast du nen ansatz
C++: |
#include <iostream> #include <string> #include <vector>
class Konto; class Bankomat;
std::ostream& operator<<(std::ostream& , Konto&); std::ostream& operator<<(std::ostream& , Bankomat&);
class Konto{ public:
Konto(unsigned int _kontoNr,std::string _pin,float _saldo=0):kontoNr(_kontoNr),pin(_pin),saldo(_saldo){gesperrt=false;} Konto(Konto& k){kontoNr=k.kontoNr;pin=k.pin;saldo=k.saldo;gesperrt=k.gesperrt;} void Buchung(float delta){saldo+=delta;} bool validPin(std::string _pin){return pin==_pin;} unsigned int getKontoNr(){return kontoNr;} void konto_entsperren(){gesperrt=false;} void konto_sperren(){gesperrt=true;} bool ist_gesperrt(){return gesperrt;} float getSaldo(){return saldo;} void changePin(std::string _pin);
friend std::ostream& operator<<(std::ostream& , Konto&); private: unsigned int kontoNr; std::string pin; float saldo; bool gesperrt;
};
std::ostream& operator<<(std::ostream& os,Konto& k){ os<<"Kontonummer: "<<k.kontoNr<<"\tPin: "<<k.pin<<"\tSaldo: "<<k.saldo<<"\tSperrung: "<<k.gesperrt<<std::endl; return os; }
void Konto::changePin(std::string pin){std::cout<<"Not yet implemented"<<std::endl;}
class Bankomat{
public: Bankomat(){angemeldet=-1;} Bankomat(std::vector<Konto*>& _kontenliste):kontenliste(_kontenliste){angemeldet=-1;} ~Bankomat(){for(int i=0;i<kontenliste.size();++i)delete kontenliste[i];} void addKonto(Konto &k){kontenliste.push_back(new Konto(k));} void Transaktion();
friend std::ostream& operator<<(std::ostream& , Bankomat&);
private: void Anmeldung(); int angemeldet; std::vector<Konto*> kontenliste; };
std::ostream& operator<<(std::ostream& os,Bankomat& b){ for(int i=0;i<b.kontenliste.size();++i) os<<*b.kontenliste[i]; return os; }
void Bankomat::Anmeldung(){
int i,j,kontoNr; std::string pin; std::cout<<"Bitte geben Sie Ihre Kontonummer ein: "; std::cin>>kontoNr;
for(i=0;i<kontenliste.size();++i){ if(kontenliste[i]->getKontoNr()==kontoNr && !kontenliste[i]->ist_gesperrt())break; } if(i==kontenliste.size()){ std::cout<<"Konto existiert nicht oder ist gesperrt"<<std::endl; return; } for(j=0;j<3;++j){ std::cout<<"Bitte Pin-Code eingeben: "; std::cin>>pin; if(kontenliste[i]->validPin(pin))break; } if(j==3){ std::cout<<"3 mal falsche Pin, Konto wird gesperrt"<<std::endl; kontenliste[i]->konto_sperren(); return; } angemeldet=i;
}
void Bankomat::Transaktion(){
int wahl; float betrag; std::string frage[2]; frage[0]="\n Bitte den abzuhebenden Betrag eingeben: "; frage[1]="\n Bitte den einzuzahlenden Betrag eingeben: ";
Anmeldung();
if(angemeldet<0)return;
for(wahl=-4711;wahl!=3;){ std::cout<<"Ihr aktueller Kontostand ist: "<<kontenliste[angemeldet]->getSaldo()<<std::endl; std::cout<<"(1)Abheben"<<std::endl; std::cout<<"(2)Einzahlen"<<std::endl; std::cout<<"(3)Ende"<<std::endl; std::cout<<"Ihre Wahl?: "; std::cin>>wahl; if(wahl==1 || wahl==2) std::cout<<frage[wahl-1]; std::cin>>betrag; kontenliste[angemeldet]->Buchung(betrag*(wahl==1?-1:1)); } std::cout<<"Feierabend"<<std::endl; angemeldet=-1;
}
int main(){
Bankomat bm; bm.addKonto(Konto(1,"abc",0)); bm.addKonto(Konto(2,"abc",100)); bm.addKonto(Konto(3,"abc",-30)); bm.addKonto(Konto(4,"abc",25)); bm.addKonto(Konto(10,"abc",-1000)); bm.addKonto(Konto(123,"abc",666666)); // std::cout<<bm;
bm.Transaktion();
}
|
-- ...fleißig wie zwei Weißbrote |