Konsolowy bankomat - prośba o code review.

0

Byłoby mi bardzo miło gdybyś ktoś z was spojrzał choć poglądowo na mój kod i podpowiedział mi co powinienem był zmienić żeby zwiększyć jakość kodu. Nigdy wcześniej nie miałem styczności z c++, to moje pierwsze kroki.
https://github.com/xsiir/projektZaliczeniowy.git

2

Zakładam, że działa. Jak na pierwszy program jest spoko, ale:

  1. korzystasz ze zmiennych globalnych (zalogowano)
  2. takie se formatowanie. Nie ma tragedii, ale nie jest jednolite (polecam http://format.krzaq.cc jak sam nie umiesz)
  3. zmienne klasy możesz wewnątrz niej używać bez poprzedzania ich nazwą klasy. Np. Bankomat::zalogowanyUzytkownikzalogowanyUzytkownik

Tyle po pobieżnym obejrzeniu kodu.

1
  1. Wcięcia. No chyba, że to tylko u mnie wyglądają tak słabo metody typu
void Menu::utworzKonto()
  1. Wiesz, że w metodzie
bool Bankomat::sprawdzListeKart(int karta){

gdzie masz for(int i=0; i<uzytkownicy.size(); i++){
if(karta==uzytkownicy[i].getNumerKarty()){
return true;
}else{
return false;
}
}

pętla for zakończy swoje działanie na pierwszym sprawdzeniu? Bo jeśli po pierwszym sprawdzeniu warunek będzie prawdziwy to zwróci true, a jeżeli nie to zwróci false i tyle. Nie przejdzie do i=1. "return false" zapewne miał być za pętlą.
0

dzięki kq. skorzystam z tej strony.

Tulio, masz rację. return true miał być za pętlą. dzięki!:D

0

post pod postem, przepraszam ale nie jestem w stanie edytować będąc na gościu.
w jaki sposób mógłbym zapisać vector przechowujący obiekty klasy Użytkownicy do pliku w taki sposób, żeby przy kolejnym uruchomieniu programu bez problemu go wczytać?

1

Serializuj go jakoś. csv jest trywialnym formatem do implementacji, json jeśli chcesz się bardziej pobawić (wtedy też użyj jakiejś libki do jsona).

2
  1. Nie wrzucaj .exe i .o do repozytorium.
    Do .exe GitHub ma coś takiego jak releases, a .o nie jest nikomu potrzebne.

  2. Po wpisaniu jako numeru karty tekstu zawierającego litery program nie pyta o pin tylko wypisuje 00.

  3. Podobnie gdy numer pin nie jest liczbą.

5. Po „zalogowaniu się” trudno program obsługiwać. Nie wiadomo, kiedy program oczekuje na wpisanie kwoty, a kiedy na wpisanie cyfry jako pozycji z menu.

  1. Jeśli przy „tworzeniu konta” podamy tekst jako pin a następnie zalogujemy się, program szaleje i wyświetla kwoty z kosmosu.
0

W zasadzie to myślałem nad tym, żeby zrobić jakieś zabezpieczenie przeciwko wpisywaniu liter do inta. Długo nie musiałem googlować żeby dowiedzieć się, że takim sposobem na bezpieczne wprowadzanie danych jest

int zmienna;
while(!(cin>>zmienna))
{
  cin.clear();
  cin.sync();
} 

zacząłem się tylko zastanawiać w jaki sposób to zastosować zgodnie z regułą DRY.

Jeśli chodzi o używanie menu wyszedłem z takim rozwiązaniem, że po każdej wykonanej operacji program śpi sobie przez 2 sekundy po czym czyści ekran i drukuje menu na nowo. Tak rzeczywiście jest bardziej przejrzyście i intuicyjnie.
Dzięki za każde spostrzeżenie

0

A mi powtarza się menu główne no a potem... wiadomo żadna z innych pozostałych funkcji nie działa.
Jeśli chłopakom u góry działa, to znaczy że ja mam jakiś problem

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