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

Symulator bankowy

Cloud VPS
0 głosów
850 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 (158,900 p.)
int main() {
    for(;;) {
        // Tu Twój kod obsługi ...

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

 

Podobne pytania

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

93,487 zapytań

142,422 odpowiedzi

322,773 komentarzy

62,908 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

Kursy INF.02 i INF.03
...