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

[C++] Klasa korzystająca ze zmiennej obiektu innej klasy

Ostatnio zmodyfikowano 2015-04-17 18:59
Autor Wiadomość
JanekJr
Temat założony przez niniejszego użytkownika
[C++] Klasa korzystająca ze zmiennej obiektu innej klasy
» 2015-04-15 20:32:40
Pliki:
main.cpp
Uzytkownik.h
Uzytkownik.cpp
Meni.h
Meni.cpp
Konto.h
Konto.cpp

W main tworzę obiekt u1, klasy Uzytkownik.
W trakcie wykonywania programu w Uzytkownik.cpp program prosi o podanie loginu(string login)
Kiedy program już dojdzie do Konto.cpp i stworzy obiekt k1 klasy Konto to musi pobrać string login, podany przez użytkownika w Uzytkownik.cpp w obiekcie u1, i przypisać tą samą wartość do zmiennej login_k, która jest w obiekcie k1, klasa Konto.

Podsumowując: w u1, klasa Uzytkownik podaje login, a w k1, klasa Konto, muszę wziąć ten login i przypisać go do zmiennej login_k. (login=login_k).

Jak to zrobić aby klasa Konto, wiedziała co użytkownik wpisał do zmiennej login, obiektu u1, klasy Uzytkownik :D
Serdeczne dzięki za pomoc :D
 
P-130947
SeaMonster131
» 2015-04-15 21:02:06
konto.login = uzytkownik.login
 ?
P-130950
JanekJr
Temat założony przez niniejszego użytkownika
» 2015-04-15 21:22:13
że jak? nie. Prędzej na odwrót bo mam login uzytkownik przypisać do login konto.
Ale: to wszystko, ten cały motyw jest w klasie konto :D


main.cpp
C/C++
#include <iostream>
#include <string>
#include <fstream>
#include <conio.h>
#include <windows.h>
#include "Uzytkownik.h"

using namespace std;

int main()
{
    for(;; )
    {
        system( "cls" );
       
        char wybor;
       
        cout << "-----------" << endl;
        cout << "MENU G\235\340WNE" << endl;
        cout << "-----------" << endl << endl;
       
        cout << "1. Zaloguj" << endl;
        cout << "2. Zarejestruj " << endl;
        cout << "3. Wyj\230cie" << endl;
       
        Uzytkownik u1;
       
        wybor = getch();
       
        switch( wybor )
        {
        case '1':
            u1.zaloguj();
            u1.wczytaj();
            break;
           
        case '2':
            u1.zarejestruj();
            u1.zapisz();
            break;
           
        case '3':
            exit( 0 );
            break;
           
           
            default: cout << "Nie ma takiej opcji!";
            getchar();
        }
       
    }
   
    return 0;
}


uzytkownik.h
C/C++
#pragma once

#include <iostream>
#include "meni.h"
#include <fstream>

using namespace std;

class Uzytkownik
{
public:
    fstream konta_uzyt; //plik z loginami i haslami uzytkownikow
    fstream dokument_uzyt; //dokumenty zawierajace dane uzytkownikow
    string linia;
    string login, haslo, haslo2, spr_login, spr_haslo;
    int nr_konta;
   
    Uzytkownik();
    ~Uzytkownik();
    void zarejestruj();
    void zapisz();
    void zaloguj();
    void wczytaj();
    void sprawdz();
   
};

uzytkownik.cpp
C/C++
#include <iostream>
#include "Uzytkownik.h"
#include <fstream>
#include <windows.h>
#include <string>

using namespace std;

Uzytkownik::Uzytkownik()
{
    //
}

Uzytkownik::~Uzytkownik()
{
    //
}

void Uzytkownik::zarejestruj()
{
    system( "cls" );
   
    cout << "Podaj login" << endl;
    cin >> login;
    do {
        cout << "Podaj has\210o" << endl;
        cin >> haslo;
        cout << "Powt\242rz has\210o" << endl;
        cin >> haslo2;
       
        if( haslo != haslo2 )
             system( "cls" );
       
        cout << "Podaj login" << endl;
        cout << login << endl << endl;
        cout << "B\210\245d. Spr\242buj jeszcze raz!" << endl;
       
    } while( haslo != haslo2 );
   
}

void Uzytkownik::zapisz()
{
    konta_uzyt.open( "konta.txt", ios::out | ios::app );
   
    konta_uzyt << login << endl;
    konta_uzyt << haslo << endl;
   
    konta_uzyt.close();
   
    login += ".txt";
    login.insert( 0, "uzytkownicy/" );
    dokument_uzyt.open( login, ios::out | ios::app );
   
    dokument_uzyt.close();
    dokument_uzyt.clear();
}

void Uzytkownik::zaloguj()
{
    system( "cls" );
   
    cout << "Podaj login" << endl;
    cin >> login;
    cout << "Podaj has\210o" << endl;
    cin >> haslo;
   
   
}

void Uzytkownik::wczytaj()
{
    konta_uzyt.open( "konta.txt", ios::in );
   
    if( konta_uzyt.good() == false )
    {
        MessageBox( 0, "File not found", "ERROR", MB_ICONSTOP );
        getchar();
        exit( 0 );
    }
   
    int nr_linii;
    int aktualny_nr = 1;
   
    while( getline( konta_uzyt, linia ) )
    {
        if( aktualny_nr % 2 == 1 ) nr_linii = aktualny_nr;
       
        if( aktualny_nr == nr_linii ) spr_login = linia;
       
        if( aktualny_nr == nr_linii + 1 ) spr_haslo = linia;
       
        if( spr_login == login && spr_haslo == haslo )
        {
            Meni meni;
            meni.wypisz();
           
            /*("cls");
           
                        login+=".txt";
                        login.insert(0, "uzytkownicy/");
           
                        dokument_uzyt.open(login, ios::in);
                        while(getline(dokument_uzyt, linia))
                        {
                            cout<<linia<<endl;
                        }
                        getchar(); getchar();
           
                        dokument_uzyt.close();
                        dokument_uzyt.clear();
                        */
           
        }
       
        aktualny_nr++;
    }
   
    konta_uzyt.close();
}

konto.h
C/C++
#pragma once

#include <iostream>
#include <fstream>

using namespace std;

class Konto
{
    string linia;
    float kwoty[ 10000 ];
    float dodaj, odejmij;
    float suma;
   
    string login_k;
   
    fstream lokata;
   
public:
    Konto();
    ~Konto();
   
    void historia_zmian();
    void przychody();
    void wydatki();
    void stan_konta();
   
};

konto.cpp
C/C++
#include <iostream>
#include "konto.h"
#include <fstream>
#include <windows.h>
#include <iomanip>
#include <string>
#include "Uzytkownik.h"

using namespace std;

Konto::Konto()
{
    //
}

Konto::~Konto()
{
    //
}

void Konto::przychody()
{
    system( "cls" );
    cout << "To ile pieni\251dzy tym razem zyska\210e\230?" << endl;
    cin >> dodaj;
   
    u1.login = login_k;
    login_k += ".txt";
    login_k.insert( 0, "uzytkownicy/" );
   
    lokata.open( login_k, ios::out | ios::app );
   
    lokata << dodaj << endl;
   
    lokata.close();
    lokata.clear();
}

void Konto::wydatki()
{
    system( "cls" );
    cout << "Znowu wydajesz? Ile tym razem?" << endl;
    cin >> odejmij;
   
    Uzytkownik::login = login_k;
    login_k += ".txt";
    login_k.insert( 0, "uzytkownicy/" );
   
    lokata.open( login_k, ios::out | ios::app );
   
    lokata << "-" << odejmij << endl;
   
    lokata.close();
    lokata.clear();
}

void Konto::historia_zmian()
{
    system( "cls" );
   
    Uzytkownik::login = login_k;
    login_k += ".txt";
    login_k.insert( 0, "uzytkownicy/" );
   
    lokata.open( login_k, ios::in );
    if( lokata.good() == false )
    {
        MessageBox( 0, "File not found", "ERROR", MB_ICONSTOP );
        getchar();
        exit( 0 );
    }
    cout << setprecision( 20 );
    while( getline( lokata, linia ) )
    {
        int a = 0;
       
        kwoty[ a ] = strtoll( linia.c_str(), NULL, 10 );
       
        cout << kwoty[ a ] << endl;
       
        a++;
    }
   
    lokata.close();
    lokata.clear();
   
   
    getchar(); getchar();
}

void Konto::stan_konta()
{
    system( "cls" );
   
    Uzytkownik::login = login_k;
    login_k += ".txt";
    login_k.insert( 0, "uzytkownicy/" );
   
    lokata.open( login_k, ios::in );
    if( lokata.good() == false )
    {
        MessageBox( 0, "File not found", "ERROR", MB_ICONSTOP );
        getchar();
    }
   
    int a = 0;
    while( getline( lokata, linia ) )
    {
        kwoty[ a ] = strtoll( linia.c_str(), NULL, 10 );
       
        a++;
    }
   
    lokata.close();
    lokata.clear();
   
    for( int i = 0; kwoty[ i ] != NULL; i++ )
    {
        suma += kwoty[ i ];
    }
    cout << setprecision( 20 );
    cout << suma;
    suma = 0;
   
    getchar(); getchar();
}


Mam pobrać to co uzytkownik podał przy logowaniu, jeśli udało sie zalogować to w klasie konto pobierz treść loginu, przypisz ją do login_k, dodaj do loginu na koniec ".txt: a na początku ścieżkę do pliku tekstowego konta :D plik tekstowy ma nazwę jakiś_login.txt i jest w katalogu uzytkownicy :D
P-130951
JanekJr
Temat założony przez niniejszego użytkownika
» 2015-04-16 17:18:38
Dodam już resztę plików. Może jak ktoś u siebie skompiluje to będzie łatwiej :D


meni.h
C/C++
#include <iostream>

using namespace std;

class Meni
{
public:
   
    char wybor;
   
    void wypisz();
};

meni.cpp
C/C++
#include <iostream>
#include <windows.h>
#include <conio.h>
#include "meni.h"

using namespace std;

void Meni::wypisz()
{
    for(;; )
    {
        system( "cls" );
       
       
        char wybor;
       
        cout << "-----------" << endl;
        cout << "MENU G\235\340WNE" << endl;
        cout << "-----------" << endl;
        cout << endl;
        cout << "1. Stan konta" << endl;
        cout << "2. Przychody" << endl;
        cout << "3. Wydatki" << endl;
        cout << "4. Historia zmian" << endl;
        cout << "5. Wyj\230cie" << endl;
       
        wybor = getch();
       
        Konto k1;
       
        switch( wybor )
        {
        case '1':
            k1.stan_konta();
            break;
           
        case '2':
            k1.przychody();
            wybor = NULL;
            break;
           
        case '3':
            k1.wydatki();
            wybor = NULL;
            break;
           
        case '4':
            k1.historia_zmian();
            break;
           
        case '5':
            exit( 0 );
            break;
           
            default: cout << "Nie ma takiej opcji!"; getchar();
        }
       
    }
}
P-130993
Quirinnos
» 2015-04-16 17:55:53
Tak na chłopski rozum, to albo użytkownik jest przypisany do konta, albo konto do użytkownika. To nie są dwa niezależne obiekty, no nie? Nie może chyba istnieć konto bez żadnego użytkownika? Co z tego wynika? Że użytkownik/konto, powinno mieć pole konto/użytkownik.
P-130998
JanekJr
Temat założony przez niniejszego użytkownika
» 2015-04-17 18:59:36
Najpierw tworzę "uzytkownika", on tworzy "meni" ono tworzy "konto".
P-131080
« 1 »
  Strona 1 z 1