• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Symulator bankowy

Object Storage Arubacloud
0 głosów
504 wizyt
pytanie zadane 17 sierpnia 2017 w C i C++ przez gabi_15 Początkujący (370 p.)

Cześć,

Robię symulator bankowy i mam pytanko jak mogę zrobić, aby po wylogowaniu była opcja ponownego zalogowania się na dowolne konto. Chodzi mi o case '6' - Wyloguj się. Aby był taki jakby powrót do samego początku.
Poniżej cały kod

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>
#include <windows.h>

using namespace std;

string PIN, kwota, PIN1, osoba, kwota1;
char wybor, wybor1, wybor2;
float x, PLN, EU ;
float stankonta;

int main()
{
    cout << "Podaj numer PIN: ";
    cin >> PIN;

    {
        if (PIN=="9902")
        {

                cout << "Witaj GK!" << endl;
                cout<<endl;




                for(;;)
                {






                {

                    cout << " MENU GLOWNE " << endl;
                    cout << "-------------" << endl;
                    cout << "1. Wyplata" << endl;
                    cout << "2. Sprawdz stan konta" << endl;
                    cout << "3. Zmien PIN" << endl;
                    cout << "4. Przeslij pieniadze" << endl;
                    cout << "5. Kantor" << endl;
                    cout << "6. Wyloguj sie" << endl;
                }




    cout<< endl;
    wybor=getch();



    switch (wybor)
    {
        case '1':
            Sleep(500);
            system("cls");

                cout << "Ile chcesz wyplacic?" << endl;
                cout << endl;
                cout << "1.50PLN" << endl;
                cout << "2.100PLN" << endl;
                cout << "3.150PLN" << endl;
                cout << "4.200PLN" << endl;
                cout << "5.250PLN" << endl;
                cout << "6.300PLN" << endl;
                cout << "7.400PLN" << endl;
                cout << "8.500PLN" << endl;



                cout<<endl;
                wybor1=getch();

                switch (wybor1)
                {
                    case '1':
                        cout << "Masz zbyt malo srodkow na koncie aby wyplacic 50PLN!";

                    break;

                    case '2':
                        cout << "Masz zbyt malo srodkow na koncie aby wyplacic 100PLN!";

                    break;

                    case '3':
                        cout << "Masz zbyt malo srodkow na koncie aby wyplacic 150PLN!";

                    break;

                    case '4':
                        cout << "Masz zbyt malo srodkow na koncie aby wyplacic 200PLN!";

                    break;

                    case '5':

                        cout << "Masz zbyt malo srodkow na koncie aby wyplacic 250PLN!";

                    break;

                    case '6':

                        cout << "Masz zbyt malo srodkow na koncie aby wyplacic 300PLN!";

                    break;

                    case '7':

                        cout << "Masz zbyt malo srodkow na koncie aby wyplacic 400PLN!";

                    break;

                    case '8':

                        cout << "Masz zbyt malo srodkow na koncie aby wyplacic 500PLN!";

                    break;


                    default: cout << "Nie ma takiej opcji w menu!";


                }


                getchar(); getchar();


                break;

                case '2':

                        cout << "Na koncie masz 10PLN"<< endl;

                break;

                case '3' :

                    cout << "Podaj aktualny PIN: ";
                    cin >> PIN;
                    cout << endl;
                    cout << "Podaj nowy PIN (4-cyfrowy): ";
                    cin >> PIN1;
                    cout << "PIN zmieniono!";

                break;

                case '4':

                    cout << "Komu chcesz przeslac pieniadze: ";
                    cin >> osoba;
                    cout << "Ile chesz przeslac: ";
                    cin >> kwota1;
                    cout << "Prosze podac PIN, aby dokonczyc transakcje: ";
                    cin >> PIN;
                    if (PIN=="9902")
                    cout << "Transakcja zakonczona pomyslnie, pieniadze przeslano." << endl;
                    else
                        cout << "Niepoprawny PIN! Transakcja przerwana.";

                break;

                case '5':

                    cout << "Na jaka walute chcesz zmienic?" << endl;
                    cout << "1. euro" << endl;
                    cout << "2. funt" << endl;
                    cout << "3. jen" << endl;
                    cout << "4. dolar" << endl;
                    cout << "5. rubel" << endl;

                    cout<<endl;
                    wybor2=getch();

                    switch (wybor2)
                    {
                        case '1':

                            cout << "Ile (PLN) chcesz zamienic: ";
                            cin >> x;
                            cout << endl;
                            cout << "Otrzymujesz: " <<x/4.26710121; cout << " euro";
                        break;

                        case '2':

                            cout << "Ile (PLN) chcesz zamienic: ";
                            cin >> x;
                            cout << endl;
                            cout << "Otrzymujes: " <<x/4.6831; cout << " funtow";

                        break;

                        case '3':

                            cout << "Ile (PLN) chcesz zamienic: ";
                            cin >> x;
                            cout << endl;
                            cout << "Otrzymujesz: " <<x/0.0329172754; cout << " jenow";

                        break;

                        case '4':

                            cout << "Ile (PLN)  chcesz zamienic: ";
                            cin >> x;
                            cout << endl;
                            cout << "Otrzymujesz: " <<x/3.6252506; cout << " dolarow";

                        break;

                        case '5':

                            cout << "Ile (PLN) chcesz zamienic: ";
                            cin >> x;
                            cout << endl;
                            cout << "Otrzymujesz: " <<x/0.060983965; cout << " rubli";

                        break;




                    }
                    getchar(); getchar();


                        case '6':



                        break;
                         
                         default: cout << "Nie ma takiej opcji w menu!";




    }
 getchar(); getchar();
 system("cls");


                }
        }

        else if (PIN=="2704")
        {
            cout << "Witaj WS!" << endl;
        }

    }
    return 0;

 

komentarz 17 sierpnia 2017 przez Poczprogramista123 Bywalec (2,900 p.)
Z mojego skromnego doswiadczenia instrukcja sterujaca goto załatwi sprawę.

W case 6 ustawiasz goto (np) idz i ustawiasz etykietke  tam gdzie chcesz  (czyli idz: przed instrukcjami ktore chcesz by sie wykonaly). Pozdrawiam
komentarz 17 sierpnia 2017 przez unknown Nałogowiec (39,560 p.)

do op: zignoruj wypowiedź użytkownika Poczprogramista123 bo jak sam napisał ma skromne doświadczenie i nie wie o czym mówi. goto to zło i nie powinno się go używać

3 odpowiedzi

0 głosów
odpowiedź 17 sierpnia 2017 przez niezalogowany
wybrane 17 sierpnia 2017 przez gabi_15
 
Najlepsza

Twój kod jest strasznie zabałaganiony. Staraj się zawsze pilnować odpowiedniej edycji kodu by był czytelny. Poprawiłem trochę kod i wyrzuciłem niepotrzebne switche (i takim oto sposobem pozbyłem się prawie połowy linii). Starałem się nie wykraczać poza podstawową wiedzę - tablice czy pętlę by kod był jeszcze w miarę czytelny dla Ciebie.


Cały kod opiąłem w niekończącą się pętlę while(true). Dodałem do programu zmienną logiczną:

bool menu_glowne = true;
while(menu_glowne) // tu była wcześniej Twoja pętla for

Jak widać pętla działa tak długo jak zmienna menu_glowne jest równa true. W wspomnianym przez Ciebie case '6' jeżeli wystąpi to flaga zostanie zmieniona na wartość false. Wtedy pętla od menu głównego zakończy się, ale pętla niekończąca wykona się jeszcze raz i poprosi o podanie pinu.

Cały kod:
 

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>
#include <windows.h>

using namespace std;

int main()
{
    string PIN, kwota, PIN1, osoba, kwota1;
    char wybor, wybor1, wybor2;
    double PLN, EU ;
    double stankonta;

    while(true)
    {
        cout << "Podaj numer PIN: ";
        cin >> PIN;

        if (PIN=="9902")
        {
            cout << "Witaj GK!" << endl;
            cout<<endl;

            bool menu_glowne = true;
            while(menu_glowne)
            {
                cout << " MENU GLOWNE " << endl;
                cout << "-------------" << endl;
                cout << "1. Wyplata" << endl;
                cout << "2. Sprawdz stan konta" << endl;
                cout << "3. Zmien PIN" << endl;
                cout << "4. Przeslij pieniadze" << endl;
                cout << "5. Kantor" << endl;
                cout << "6. Wyloguj sie" << endl;

                cout<< endl;
                wybor=getch();

                switch (wybor)
                {
                    case '1':
                    {
                        Sleep(500);
                        system("cls");

                        cout << "Ile chcesz wyplacic?" << endl;
                        cout << endl;

                        const int ile_wyplat = 8;
                        int wyplaty[ile_wyplat] = {50, 100, 150, 200, 250, 300, 400, 500};

                        for(int i=0; i<ile_wyplat; i++)
                            cout << i+1 << "." << wyplaty[i] << "PLN" << endl;
                        cout<<endl;
                        wybor1=getch();

                        if(wybor1 < '1' || wybor1 > '8')
                            cout << "Nie ma takiej opcji w menu!";
                        else cout << "Masz zbyt malo srodkow na koncie aby wyplacic " << wyplaty[wybor1-49];

                        getchar(); getchar();
                    }
                    break;

                    case '2':
                        cout << "Na koncie masz 10PLN"<< endl;
                        break;

                    case '3':
                        cout << "Podaj aktualny PIN: ";
                        cin >> PIN;
                        cout << endl;
                        cout << "Podaj nowy PIN (4-cyfrowy): ";
                        cin >> PIN1;
                        cout << "PIN zmieniono!";
                        break;

                    case '4':

                        cout << "Komu chcesz przeslac pieniadze: ";
                        cin >> osoba;
                        cout << "Ile chesz przeslac: ";
                        cin >> kwota1;
                        cout << "Prosze podac PIN, aby dokonczyc transakcje: ";
                        cin >> PIN;
                        if (PIN=="9902")
                        cout << "Transakcja zakonczona pomyslnie, pieniadze przeslano." << endl;
                        else
                            cout << "Niepoprawny PIN! Transakcja przerwana.";
                        break;

                    case '5':
                    {
                        cout << "Na jaka walute chcesz zmienic?" << endl;
                        cout << "1. euro" << endl;
                        cout << "2. funt" << endl;
                        cout << "3. jen" << endl;
                        cout << "4. dolar" << endl;
                        cout << "5. rubel" << endl;

                        cout<<endl;
                        wybor2=getch();

                        const int ile_przelicznikow = 5;
                        double przeliczniki[ile_przelicznikow] = // zmienilem zmienne na double                      by bylo wiecej precyzji
                        { // to by mozna wykonac znacznie lepiej znajac struktury
                            4.26710121,
                            4.6831,
                            0.0329172754,
                            3.6252506,
                            0.060983965
                        };

                        if(wybor2 < '1' || wybor2 > '5')
                            cout << "Nie ma takiej opcji w menu!";
                        else
                        {
                            double x;
                            cout << "Ile (PLN) chcesz zamienic: ";
                            cin >> x;
                            cout << endl;
                            cout << "Otrzymujesz: " <<x/przeliczniki[wybor2-49]; cout << " rubli";
                        }
                        getchar(); getchar();

                    }
                    break;

                    case '6':
                        menu_glowne = false;
                        break;

                    default: cout << "Nie ma takiej opcji w menu!";
                }
            }

            getchar(); getchar();
            system("cls");
        }
        else if (PIN=="2704")
        {
            cout << "Witaj WS!" << endl;
        }
    }
    return 0;
}

 

+1 głos
odpowiedź 17 sierpnia 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Tak na bardzo szybko - może wsadź wszystko w jakąś pętlę i kiedy ktoś się wyloguje, to wtedy pętla zacznie się wykonywać jeszcze raz: prosić o kartę, o PIN i tak dalej.
komentarz 17 sierpnia 2017 przez gabi_15 Początkujący (370 p.)
em a w jaką najlepiej? Bo niezbyt wiem jak mam to zrobić, bo próbowałam ale z marnym skutkiem :/
0 głosów
odpowiedź 17 sierpnia 2017 przez mokrowski Mędrzec (155,460 p.)
int main() {
    for(;;) {
        // Tu Twój kod obsługi ...

        if(naprawdę_koniec) {
            break;
        }
    }
}

 

Podobne pytania

0 głosów
2 odpowiedzi 3,470 wizyt
pytanie zadane 15 lipca 2015 w C i C++ przez Pejj Nowicjusz (150 p.)
0 głosów
1 odpowiedź 1,118 wizyt
pytanie zadane 2 października 2017 w Java przez heartagram Obywatel (1,770 p.)
+1 głos
1 odpowiedź 430 wizyt
pytanie zadane 24 października 2021 w C i C++ przez mn130496 Gaduła (3,530 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...