Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Lista obiektów i dostęp do konkretnego obiektu

Ostatnio zmodyfikowano 2016-05-02 16:08
Autor Wiadomość
JanekJr
Temat założony przez niniejszego użytkownika
[C++] Lista obiektów i dostęp do konkretnego obiektu
» 2016-05-02 16:08:42
Witam. Mam do rozwiązania zadanie. Klasy miałem napisać wg schematu UML. Mam napisać program, w którym stworze bank ze wszystkimi rodzajami klientów z których każdy posiada od 1 do 3 kont. Oto co do tej pory wyskrobałem:
C/C++
#include <iostream>
#include <list>
#include <conio.h>
#include <windows.h>
#include <sstream>

using namespace std;

class Konto
{
    string nr;
    double saldo;
public:
   
    Konto( string nr )
    {
        this->nr = nr;
    }
    double getSaldo()
    {
        return saldo;
    }
    string getNr()
    {
        return nr;
    }
    void wplac( double kwota )
    {
        saldo += kwota;
    }
    void wyplac( double kwota )
    {
        saldo -= kwota;
    }
};
class Klient
{
    list < Konto > konta_klienta;
public:
   
    void dodajKonto( Konto & konto )
    {
        if( konta_klienta.size() < 3 )
        {
            konta_klienta.push_back( konto );
            cout << "Dziekujemy za zalozenie konta w naszym banku!\n";
        }
       
        else
        {
            cout << "Posiadasz juz maksymalna liczbe kont!\n";
        }
       
    }
    list < Konto > getKonto()
    {
        return konta_klienta;
    }
   
};
class Firma
    : public Klient
{
    string nazwa, KRS;
   
public:
   
    Firma( string nazwa, string KRS )
    {
        this->nazwa = nazwa;
        this->KRS = KRS;
    }
   
};
class Duza_firma
    : public Firma
{
public:
   
    Duza_firma( string nazwa, string KRS )
        : Firma( nazwa, KRS )
    {
       
    }
};
class Osoba
    : public Klient
{
    string imie, nazwisko, PESEL;
   
public:
   
    Osoba( string imie, string nazwisko, string PESEL )
    {
        this->imie = imie;
        this->nazwisko = nazwisko;
        this->PESEL = PESEL;
    }
};
class WaznaOsoba
    : public Osoba
{
public:
    WaznaOsoba( string imie, string nazwisko, string PESEL )
        : Osoba( imie, nazwisko, PESEL )
    {
       
    }
};
class Bank
{
    list < Klient > lista_klientow;
public:
   
    void dodajKlienta( Klient klient )
    {
        lista_klientow.push_back( klient );
    }
   
    list < Klient > getKlienci()
    {
        return lista_klientow;
    }
};

//--------------------------------------------

char wybor_menu_glowne, wybor_klienta;
int nr_konta = 0;
Bank bank;
Konto * konto;
Klient * klient;
Firma * firma;
Duza_firma * duza_firma;
Osoba * osoba;
WaznaOsoba * wazna_osoba;


//--------------------------------------------

void menu_glowne();
void naglowek();
void dodaj_klienta();
void dodaj_osobe( Klient & klient );
void dodaj_VIPa( Klient & klient );
void dodaj_firme( Klient & klient );
void dodaj_duza_firme( Klient & klient );
void przejzyj_klientow();
//--------------------------------------------

int main()
{
    menu_glowne();
   
    return 0;
}

void menu_glowne()
{
    naglowek();
    cout << "MENU GLOWNE\n"
    << "-----------\n\n"
   
    << "1. Dodaj klienta\n"
    << "2. Przejzyj klientow\n"
    << "ESC. Wyjscie\n";
   
    wybor_menu_glowne = getch();
   
    switch( wybor_menu_glowne )
    {
    case '1':
        dodaj_klienta();
        menu_glowne();
        break;
    case '2':
        przejzyj_klientow();
        menu_glowne();
    case 27:
        exit( 0 );
        break;
        default: menu_glowne();
    }
}
void naglowek()
{
    system( "cls" );
    cout << "----------------------------------------------\n"
    << "                  BANK\n"
    << "----------------------------------------------\n";
}
void dodaj_klienta()
{
    naglowek();
    cout << "Dodawnie klienta\n"
    << "----------------\n\n";
    nr_konta++;
    ostringstream str_nr_konta;
    str_nr_konta << nr_konta;
   
    konto = new Konto( str_nr_konta.str() );
    klient = new Klient;
   
    cout << "1. Dodaj zwykla osobe\n"
    << "2. Dodaj VIP-a\n"
    << "3. Dodaj firme\n"
    << "4. Dodaj wazna firme\n";
   
    wybor_klienta = getch();
   
    switch( wybor_klienta )
    {
    case '1':
        dodaj_osobe( klient[ 0 ] );
        break;
       
    case '2':
        dodaj_VIPa( klient[ 0 ] );
        break;
       
    case '3':
        dodaj_firme( klient[ 0 ] );
        break;
       
    case '4':
        dodaj_duza_firme( klient[ 0 ] );
        break;
    }
   
    klient[ 0 ].dodajKonto( konto[ 0 ] );
   
    bank.dodajKlienta( klient[ 0 ] );
    getch();
   
}
void dodaj_osobe( Klient & klient )
{
    string imie, nazwisko, PESEL;
    cout << "Podaj imie: "; cin >> imie;
    cout << "Podaj nazwisko: "; cin >> nazwisko;
    cout << "Podaj PESEL: "; cin >> PESEL;
   
    osoba = new Osoba( imie, nazwisko, PESEL );
    klient = osoba[ 0 ];
}
void dodaj_VIPa( Klient & klient )
{
    string imie, nazwisko, PESEL;
    cout << "Podaj imie: "; cin >> imie;
    cout << "Podaj nazwisko: "; cin >> nazwisko;
    cout << "Podaj PESEL: "; cin >> PESEL;
   
    wazna_osoba = new WaznaOsoba( imie, nazwisko, PESEL );
    klient = wazna_osoba[ 0 ];
}
void dodaj_firme( Klient & klient )
{
    string nazwa, KRS;
    cout << "Podaj nazwe firmy: "; cin >> nazwa;
    cout << "Podaj numer KRS firmy: "; cin >> KRS;
   
    firma = new Firma( nazwa, KRS );
    klient = firma[ 0 ];
}
void dodaj_duza_firme( Klient & klient )
{
    string nazwa, KRS;
    cout << "Podaj nazwe firmy: "; cin >> nazwa;
    cout << "Podaj numer KRS firmy: "; cin >> KRS;
   
    duza_firma = new Duza_firma( nazwa, KRS );
    klient = duza_firma[ 0 ];
}
void przejzyj_klientow()
{
    naglowek();
    cout << "Klienci banku\n"
    << "-------------\n\n";
   
    if( bank.getKlienci().size() == 0 )
    {
        cout << "Bank nie ma jeszcze zadnych klientow :(\n\n"
        << "Nacisnij dowolny przycisk aby kontynuowac";
        getch();
    }
    else
    {
        int ktorego_klienta;
        cout << "Bank ma " << bank.getKlienci().size() << " klientow\n";
        cout << "Ktorego klienta pokazac: "; cin >> ktorego_klienta;
       
       
        int ktory_w_liscie = 0;
        for( list < Klient >::iterator iter = bank.getKlienci().begin(); iter != bank.getKlienci().end(); iter++ )
        {
            ktory_w_liscie++;
           
            //tutaj sie zwiesiłęm
        }
       
        getch();
    }
}

Chcę dostać się do konkretnego klienta aby móc na nim wykonywać operacje. Jak to zrobić? Z góry dzięki za pomoc.
P-147878
« 1 »
  Strona 1 z 1