Skocz do zawartości

[C++]Pierwszy projekt


Rekomendowane odpowiedzi

Cześć, po nauce Instrukcji warunkowej if;else if;if ,pętli for;while;do...while,pseudolosowaniu,instrukcji switch,zapisu i odczytu z pliku tekstowego.

Wymyśliłem swój projekt który ma na celu rozwinięcie moich "umiejętności" bo "Praktyka czyni mistrza".

Projekt,plan polega na "symulatorze banku".

 

Jest menu z opcjami 1.Zaloguj się/2.Załóż konto/3.Informacje o banku/4.Wyłącz konsole.

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

using namespace std;

string PIN,haslo;
int wybor;


int main()
{
    cout << "        WITAM W PANKU PKO!" << endl;
    cout << "              MENU!" << endl;
    cout << "---------------------------------" << endl;
    cout << "   1.ZALOGUJ SIE NA KONTO" << endl;
    cout << "   2.ZALOZ KONTO W BANKU" << endl;
    cout << "   3.INFORMACJE O BAKU" << endl;
    cout << "   4.WYLACZ KONSOLE" << endl;
    cout << "---------------------------------" << endl;
    cout << "CHCE: "; cin >> wybor;

1.Po wyborze opcji nr 1.@up , powinno się wyświetlić podaj pin;podaj haslo.

    switch (wybor)
    {
    case 1:

    string linia;
    int nr_linii=1;

    fstream baza_danych;

    baza_danych.open("PIN_HASLA.txt", ios::in);
    system("cls");Sleep(250);
    if(baza_danych.good()==false)
    {
     cout << "Problem z baza danych!";
    }
    else {system("cls");Sleep(250);
    cout << "Podaj PIN: "; cin >> PIN;
    cout << "Podaj haslo: "; cin >> haslo;}

    nr_linii++;
    break;
    }

    return 0;
}

jeśli nie może odczytać pliku "PIN_HASLA.txt" to wyskakuje błąd, jeżeli PIN i Hasło źle zostały wpisane wyskakuje na 1,5 sec Sleep (1500) informacja że podane hasło lub pin są niepoprawne.Po 3 nieudanych próbach wracamy do menu głównego, PIN i Hasło są wczytywane z "PIN_HASŁA".Kod zamieściłem powyżej kod, w tym momencie się zgubiłem prosił bym nakierowanie mnie na właściwą drogę.Powiedzenie jaki błąd jeszcze popełniłem.I jeżeli ktoś ma jakiś fajny projekt żebym mógł dalej coś pisać w zakresie który też wyżej wymieniłem to prosiłbym :).

Odnośnik do komentarza
Udostępnij na innych stronach

"nie rozumiem po co ci sleep"

Zabezpieczenie przed brute-force'm? Duh!

 

@TOPIC

Nie do końca rozumiem pytania. Kod wygląda poprawnie, wystarczy... zrobić to, co napisałeś, że trzeba zrobić. Pobrać od użytkownika login/hasło do zmiennych, które już masz i z nimi pracowac.

 

@EDIT
Jedyne, czego jeszcze nie masz to "menejdżing" haseł w pliku.

Proponuję każdą parę login/hasło trzymać w JEDNEJ linii, oddzielonych spacją.

Następnie używasz getline aby pobrać jedną linię.

Dzielisz tę linię na dwa stringi (google: c++ string split), spacja w pliku je oddziela.

Porównujesz z wprowadzonymi.

 

Jeśli chcesz dodać parę login/hasło ( opcja Załóż Konto ) dodajesz po prostu linię na końcu pliku.

Ta sygnatura jest pusta.

Odnośnik do komentarza
Udostępnij na innych stronach

Tak to jest mój własny kod, ale jakoś nie potrafię sb. ułożyć tak logicznie tego.

 

Wybieram opcje 1 >> ( Jeśli nie może wczytać bazy danych wyskakuje błąd,po 1,5 sec znika) Poprosić o PIN i HASŁO (Jeżeli hasło lub pin albo to i to zostało źle podane inkrementujemy zmienną 'int proby = 0 ' << Dać to w pętle while | while ( int proby == 3 ) | Gdy wyczerpiemy limit poinformować o tym i wyłączyć konsole exit () ;) >> Pobierać dane

z pliku txt. i tu się gubię że jest

 

  • 1.PIN
  • 2.HASŁO
  • 3.04362
  • 4.asdasd
  • 5.03374
  • 6.dsadsa

i jak to odczytać poprawnie.

 

 

PS. Miło że ludzie pomagają :)

 

@Edit @Up Ma ktoś jakiś poradnik,który dobrze tłumaczy 'string split' ? Szukam ale na yt. jest o C# a na necie ciężej a szczególnie po angielsku to rozgryźć

Odnośnik do komentarza
Udostępnij na innych stronach

Mój pomysł to taki :

Przekonwertować stringa na char* i potem przeczesujesz tego char'a jakąś pętelką , jeżeli podczas jednego wykonania petli nie trafi na spacje to wykonuje pętle kolejny raz a pojedyncza literke dodaje do char*.

Mam nadzieje,że rozumiesz. To moja własna interpretacja split'a.

Odnośnik do komentarza
Udostępnij na innych stronach

http://stackoverflow.com/questions/236129/how-to-split-a-string-in-c

 

Programowanie ma to do siebie, że nie jest po angielsku, a po C++owsku.

Wybierz sobie taki, który wydaje ci się najłatwiejszy. Być może ten http://stackoverflow.com/a/5208977/3202480

 

@UP
Po co? Uczmy się rozwiązań dla C++, nie C.

Ta sygnatura jest pusta.

Odnośnik do komentarza
Udostępnij na innych stronach

#include <iostream>
#include <windows.h>
#include <fstream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>
#include <string>
#include <vector>

using namespace std;

string PIN,haslo;
string bd_PIN,bd_haslo;
int wybor,proba=1;


int main()
{
    cout << "        WITAM W PANKU PKO!" << endl;
    cout << "              MENU!" << endl;
    cout << "---------------------------------" << endl;
    cout << "   1.ZALOGUJ SIE NA KONTO" << endl;
    cout << "   2.ZALOZ KONTO W BANKU" << endl;
    cout << "   3.INFORMACJE O BAKU" << endl;
    cout << "   4.WYLACZ KONSOLE" << endl;
    cout << "---------------------------------" << endl;
    cout << "CHCE: "; cin >> wybor;

switch (wybor)
{
    case 1:

while (proba==3)
{

    string linia;
    int nr_linii = 1;

    fstream baza_danych;

    baza_danych.open("PIN_HASLA.txt", ios::in);
    system("cls");Sleep(250);
    if(baza_danych.good()==false)
    {
     cout << "Problem z baza danych!";
     getch();getch();
    }
    else {system("cls");Sleep(250);
    cout << "Podaj PIN: "; cin >> PIN;
    cout << "Podaj haslo: "; cin >> haslo;}

        while (getline(baza_danych, linia))
    {
        vector<string> linia;
    if ( linia[0] == haslo && linia[1] == PIN )
    { cout << "Zalogowany: ";}
    }
/*    if ((PIN==bd_PIN)&&(haslo==bd_haslo))
    {
        cout << "ZALOGOWANY!";
    } else
    {
        cout << "Zle haslo lub kod PIN!(Prob nr " << proba << " z 3);
        proba++;
        getchar();getchar();
    } */
}

}

    return 0;

}

@EDIT

Odnośnik do komentarza
Udostępnij na innych stronach

Już się pogubiłem, dla innych to pewnie proste, ale dla mnie jako lajka pogubiłem się od wyszukiwania tego o co chodzi T-T.

Program po wpisaniu 1. wysypuje się ; /

#include <iostream>
#include <windows.h>
#include <fstream>
#include <stdio.h>
#include <cstdlib>
#include <conio.h>
#include <string>
#include <vector>

using namespace std;

string PIN,haslo;
string bd_PIN,bd_haslo;
int wybor,proba=1;


int main()
{
    cout << "        WITAM W PANKU PKO!" << endl;
    cout << "              MENU!" << endl;
    cout << "---------------------------------" << endl;
    cout << "   1.ZALOGUJ SIE NA KONTO" << endl;
    cout << "   2.ZALOZ KONTO W BANKU" << endl;
    cout << "   3.INFORMACJE O BAKU" << endl;
    cout << "   4.WYLACZ KONSOLE" << endl;
    cout << "---------------------------------" << endl;
    cout << "CHCE: "; cin >> wybor;

switch (wybor)
{
    case 1:

while (proba==3)
{

    string linia;
    int nr_linii = 1;

    fstream baza_danych;

    baza_danych.open("PIN_HASLA.txt", ios::in);
    system("cls");Sleep(250);
    if(baza_danych.good()==false)
    {
     cout << "Problem z baza danych!";
     getch();getch();
    }
    else {system("cls");Sleep(250);
    cout << "Podaj PIN: "; cin >> PIN;
    cout << "Podaj haslo: "; cin >> haslo;}

        while (getline(baza_danych, linia))
    {
        vector<string> linia;
    if ( linia[0] == haslo && linia[1] == PIN )
    { cout << "Zalogowany: ";}
    }

}

}

    return 0;

}
Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający forum [C++]Pierwszy projekt   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...