[C++] Lista obiektów i dostęp do konkretnego obiektu
Ostatnio zmodyfikowano 2016-05-02 16:08
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: #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++; } getch(); } } Chcę dostać się do konkretnego klienta aby móc na nim wykonywać operacje. Jak to zrobić? Z góry dzięki za pomoc. |
|
« 1 » |