Symulacja bankomatu, dodawanie klientow i logowanie

0

Witam! Mam problem ze stworzeniem symulacji bankomatu. Program zaczyna się, że pojawia się zapytanie ile osób chcesz dodać do bazy bankomatu. Podaje się np. 2 i potem podaje ich imię, nazwisko i PIN. Następnie chciałbym napisać, aby te osoby, które dodałem do bankomatu mogły się tymi danymi zalogować. Potem sam już zrobię sprawdzanie środków na koncie, wpłacanie, wypłacanie itd. Próbowałem if`em, ale nie wiem jak odnosić się do konkretnych pól w tablicy. Nie chce na razie dane o użytkownikach trzymać w osobnych plikach tekstowych.

#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
int ile_osob, wybor, nr_klienta;

string imie[100];
string nazwisko[100];
int PIN[100];
int srodki_na_koncie[100];

cout << "Ile osob chcesz dodac do bazy bankomatu?: ";
cin >> ile_osob;

for(int i = 0; i < ile_osob; i++)
{
    cout << "Podaj imie: ";
    cin >> imie[i];
    cout << "Podaj nazwisko: ";
    cin >> nazwisko[i];
    cout << "Podaj PIN: ";
    cin >> PIN[i];
}

system("cls");

cout << "Kim jestes?: " << endl << endl;

for(int i = 0; i < ile_osob; i++)
{
    cout << i + 1 << ". " << imie[i] << endl;
}

cout << "Podaj swoj numer klienta:  ";
cin >> nr_klienta;






return 0;

}

0

Lekcja na dziś: struktury i klasy.

0

Taką klasę mam zrobić? Jestem jeszcze początkujący i nie ogarniam. Jak napisać instrukcje warunkową, aby sprawdzało czy w tablicy imie istniej pole o wartości np. "Jonki".

#include <iostream>

using namespace std;

class Klient
{
public:
string imie[100];
string nazwisko[100];
int PIN[100];
};

int main()
{
int ilu_k;

Klient klienci;

cout << "Witaj w naszym banku!";

cout << "Ilu klientow chcesz dodac?: ";
cin >> ilu_k;

for(int i =0; i < ilu_k; i++)
{
    cout << "Podaj imie: ";
    cin >> klienci.imie[i];
    cout << "Podaj nazwisko: ";
    cin >> klienci.nazwisko[i];
    cout << "Podaj PIN: ";
    cin >> klienci.PIN[i];
}


return 0;

}

0

Not even close. Klasa ma przechowywać dane jednego klienta i masz mieć tablicę obiektów tej klasy.

0

A teraz dobrze to zrobiłem?

#include <iostream>

using namespace std;

class Klient
{
public:
string imie;
string nazwisko;
int PIN;

void dodaj_klienta()
{
        cout << "Podaj imie: ";
        cin >> imie;
        cout << "Podaj nazwisko: ";
        cin >> nazwisko;
        cout << "Podaj PIN: ";
        cin >> PIN;
}

};

int main()
{
int ilu_k;

cout << "Ilu klientow chcesz dodac?: ";
cin >> ilu_k;

Klient klient[ilu_k];

for(int i = 0; i < ilu_k; i++)
{
    klient[i].dodaj_klienta();
}

return 0;

}

1

Nie bardzo, to nie jest poprawny kod C++ - nie możesz dynamicznie zmieniać wielkości tablicy. W tym celu powinieneś użyć jakiegoś kontenera, n.p. std::vector.

Przy okazji: pakuj kod w tagi <​c​od​e>, jest to zdecydowanie czytelniejsze.

0

@Jonki1997 jest poprawnie, ale nazwa metody dodaj_klienta jest myląca. Bo przecież ta metoda służy do wprowdzenia danych klienta a nie "dodania" go gdzieś? ;)

2
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>

class client {
  std::string name;
  std::string last_name;
  unsigned pin;
  
  friend std::ostream& operator<<(std::ostream& out, const client& c) {
    return out << "Imie: " << c.name << "\n"
                  "Nazwisko: " << c.last_name << "\n"
                  "Pin: " << c.pin;
  }
  
  friend std::istream& operator>>(std::istream& in, client& c) {
  	return in >> c.name >> c.last_name >> c.pin;
  }
};

int main() {
  std::vector<client> clients { std::istream_iterator<client>(std::cin),
                                std::istream_iterator<client>() };
  std::copy(clients.begin(), clients.end(),
            std::ostream_iterator<client>(std::cout, "\n"));
  return 0;
}

http://ideone.com/vRDidI

Eh, nie strzelaj sobie po kolanach jak nie ma takiej potrzeby.

1

Można też bardziej tradycyjnie:

#include <iostream>
#include <vector>

using namespace std;

class Klient{
public:
    void wypelnij(){
        cout << "Podaj imie: "; cin >> imie;
        cout << "Podaj nazwisko: "; cin >> nazwisko;
        cout << "Podaj PIN: "; cin >> pin;
    }

    void wypisz(){
        cout << "Imie: " << imie << "\n";
        cout << "Nazwisko: " << nazwisko << "\n";
        cout << "PIN: " << pin << "\n";
    }

private:
    string imie;
    string nazwisko;
    unsigned pin;
};

int main(){
    vector<Klient> klienci;
    unsigned ilosc=0;
    cout << "Ilu klientow chcesz dodac? ";
    cin >> ilosc;
    for(unsigned i=0;i<ilosc;i++){
        klienci.push_back(Klient());
        klienci[i].wypelnij();
    }
    for(unsigned i=0;i<klienci.size();i++)
        klienci[i].wypisz();
    return 0;
}

0

Zastosowałem te dynamiczne alokowanie pamięci itd., ale co dalej, bo chce zrobić, że te dane które podałem to są dane kont. Chce się nimi tak jakby logować i dokonywać różnych operacji na pieniądzach. Jak zrobić instrukcje warunkową if. Chce zrobić np. coś takiego:

  1. Jacek
  2. Adam
  3. Kamil
    i jak odpowiem, że chcę zalogować się jako Adam to będę musiał podać prawidłowe nazwisko i PIN. Jak if`em porównywać odpowiedź do konkretnego pola w tablicy.
0

W bankomacie posługujesz się nie imieniem i nazwiskiem zaś numerem karty oraz PIN'em które są zapisane w postaci elektronicznej na karcie.
Tworzysz sobie tablicę takich klientów i normalnie używasz.

0
n0name_l napisał(a):
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>

class client {
  std::string name;
  std::string last_name;
  unsigned pin;
  
  friend std::ostream& operator<<(std::ostream& out, const client& c) {
    return out << "Imie: " << c.name << "\n"
                  "Nazwisko: " << c.last_name << "\n"
                  "Pin: " << c.pin;
  }
  
  friend std::istream& operator>>(std::istream& in, client& c) {
  	return in >> c.name >> c.last_name >> c.pin;
  }
};

int main() {
  std::vector<client> clients { std::istream_iterator<client>(std::cin),
                                std::istream_iterator<client>() };
  std::copy(clients.begin(), clients.end(),
            std::ostream_iterator<client>(std::cout, "\n"));
  return 0;
}

http://ideone.com/vRDidI

Eh, nie strzelaj sobie po kolanach jak nie ma takiej potrzeby.

Wow, nauczyłeś się przeciążać operatory widzę! Tylko, że to jest dodatek składniowy i normalnie w programach mało się tego używa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1