Я делаю небольшую систему банкомат-банк.
Я спрашиваю, как я могу взять значения из текстового файла (базы данных) и использовать его в некоторых переменных.
Iуже может хранить: name
, age
, money
, card number
и pin
в текстовом файле, но у меня возникают проблемы при попытке проверить имя и пин-код из файла .txt.
Вот код.Эта программа имеет 2 версии: английскую и румынскую.Я сделал только часть "ro" (часть "en" просто введение), это просто раздел чтения / записи в файл:
void ro_utilizator_nou()
{
system ("cls");
string nume;
int ziuac, lunac, anc, ziuan, lunan, ann, varsta, anbisect, bani=0;
time_t t = time(NULL);
tm* timePtr = localtime(&t);
ziuac=timePtr->tm_mday;
lunac=timePtr->tm_mon+1;
anc=timePtr->tm_year+1900;
nume_gresit:
cout<<"Introduceti numele: "<<endl;
cin>>nume;
cin.sync();
if (!string_litere(nume)){system("cls");goto nume_gresit;}
data_gresita:
cout<<"Va rugam sa va introduceti data nasterii."<<endl;
cout<<"Introduceti ziua nasterii:"<<endl;
cin>>ziuan; cin.clear(); cin.ignore();
if (ziuan<1 || ziuan>31) {system("cls"); goto data_gresita;}
cout<<"Introduceti luna nasterii:"<<endl;
cin>>lunan; cin.clear(); cin.ignore();
if (lunan<1 || lunan>12) {system("cls"); goto data_gresita;}
cout<<"Introduceti anul nasterii:"<<endl;
cin>>ann; cin.clear(); cin.ignore();
if (ann>2018 || ann<1900) {system("cls"); goto data_gresita;}
if ((ann % 4 == 0 && ann % 100 != 0 ) || ann % 400 == 0) anbisect = 1; else anbisect = 0; //stabilirea daca anul nasterii este bisect sau nu
if (ziuan<1 || (lunan==2 && anbisect==1 && ziuan>29) || (lunan==2 && anbisect==0 && ziuan>28) || ((lunan==1 || lunan==3 || lunan==5 || lunan==7 || lunan==8 || lunan==10 || lunan==12) && ziuan>31) || ((lunan==4 || lunan==6 || lunan==9 || lunan==11) && ziuan>30) )
{system("cls"); cout<<"Data nasterii incorecta!"<<endl<<endl;; goto data_gresita;}
varsta=anc-ann; //stabilirea varstei
if (lunan>lunac) varsta--;
else if (lunan==lunac) if (ziuan>ziuac) varsta--;
cout<<endl<<"Aveti "<<varsta<<" ani."<<endl;
if (varsta<14) {
cout<<"Ne pare rau, nu puteti avea un card de credit daca nu aveti minim 14 ani impliniti."<<endl<<endl;
system("pause");
main();
}
int card_number = generare_card_number();
int card_pin = generare_pin();
cout<<"Numarul cardului (si al contului) dumneavoastra este: "<<card_number<<endl;
cout<<endl<<"ATENTIE! Urmeaza sa va afisam codul secret PIN!!!"<<endl<<"(Apasati orice tasta)"<<endl;
cin.ignore(); cout<<"Pinul dumneavoastra este: "<<card_pin<<endl;cin.ignore();
ofstream new_data_base("database.txt", ios::app);
new_data_base << nume << ' ' << varsta << ' ' << bani << ' ' << card_number << ' ' << card_pin <<endl;
new_data_base.close();
}
void ro_utilizator_existent()
{
ifstream data_base("database.txt");
string nume, nume2;
int pin, optiune, inregistrat, varsta, bani, card_number, card_pin;
if (!data_base.eof()){
data_base >> nume >> varsta >> bani >> card_number >> card_pin;
}
nume_gresit:
system ("cls");
cout<<"Introduceti numele: "<<endl;
cin>>nume2;
cin.sync();
if (!string_litere(nume2)){system("cls");goto nume_gresit;}
while (data_base >> nume){
if (nume == nume2) goto pin_gresit;
else {
system("cls");
cout<<"Nume gresit! Nu sunteti inregistrat?"<<endl;
repetare:
cout<<"1 - Sunt inregistrat"<<endl<<"2 - Nu sunt inregistrat"<<endl;
cin>>inregistrat; cin.clear(); cin.ignore();
if (inregistrat==1) goto nume_gresit;
else if (inregistrat==2) ro_utilizator_nou();
else {system("cls"); goto repetare;
}
}
}
pin_gresit:
cout<<"Introduceti PIN-ul:"<<endl;
cin>>pin; cin.clear(); cin.ignore();
while (data_base >> nume >> varsta >> bani >> card_number >> card_pin){
if (pin == card_pin) goto reusit;
else {system("cls"); cout<<"PIN gresit!"; goto pin_gresit;}
}
reusit:
system("cls");
cout<<"Logare reusita!"<<endl<<endl;
optiune_gresita:
cout<<"1. Informatii cont."<<endl;
cout<<"2. Cautare utilizator."<<endl;
cout<<"3. Adaugare fonduri."<<endl;
cout<<"4. Transfer bancar."<<endl;
cout<<"5. Retragere numerar."<<endl<<endl;
cout<<"9. Delogare."<<endl<<endl;
cin>>optiune;
}
Когда я ввожу подходящее имя, оно говорит, что имя неверно;или когда имя работает, любое число считается похожим на правый штифт.
ps: со временем я вычислил возраст ("varsta");ps2: "bani" означает деньги ps3: я взял несколько примеров из https://www.youtube.com/watch?v=p3m3qLNX9zA, но это не так;мой код (весь) здесь: https://www.mediafire.com/file/zmujjs9014mej7c/BCR_ATM.cpp/file