Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<ctime>
- #include<stdlib.h>
- #include <unistd.h>
- #include<conio.h>
- #include <windows.h> // za cls funkciju
- #include <fstream> // za cuvanje podataka
- using namespace std;
- int n=1;
- struct brr{
- int broj_racuna;
- double pare;
- };
- struct prijava{
- prijava **prijave;
- int d,m,g;
- char ime[20];
- char prezime[20];
- char sifra[20];
- brr racun;
- // Ukoliko se unese pogresan datum: 37:14:1500
- bool provjera_datuma(){
- int dani[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
- if(this->g % 4 == 0) dani[1]++;
- if(this->d <= 0 || this->d >= dani[this->m-1]) return false;
- if(this->m <= 0 || this->m >= 13) return false;
- if(this->g <= 1900 || this->g >= 2100) return false;
- return true;
- }
- };
- void potvrda_unesene_sifre(prijava A){
- string pw ="";
- char d;
- /*
- do{
- pw=' ';
- cout <<"Potvrdite password: ";
- while ((d=_getch()) != 13){
- pw.push_back(d);
- putch('*');
- }
- cout<<endl;
- }while(A.sifra!=pw);*/
- int brojac = 0;
- while(1){
- system("cls");
- cout<<"Potvrdite sifru: ";
- for(int i(0); i<brojac; ++i) _putch('*');
- d = getch();
- if(d == 13) break;
- if(brojac > 0 && d == 8){
- pw = pw.substr(0, pw.size()-1);
- --brojac;
- continue;
- }else{
- if(brojac == 0 && d == 8) continue;
- pw += d;
- ++brojac;
- continue;
- }
- }
- if(pw == A.sifra){
- cout <<"\nUspjesno ste se registrovali ";
- return;
- }
- else{
- cout << "\nPogresno unesena lozinka, molimo vas pokusajte ponovo\n";
- Sleep(3000);
- potvrda_unesene_sifre(A);
- }
- }
- prijava prijava_racuna(){
- prijava rez;
- prijava *kraj;
- while(1){
- cout<<"Unesite dan rodenja: ";cin>>rez.d;
- while(!std::cin) {
- std::cout << "Pogresan unos!. Unesite ponovo dan rodenja: ";
- std::cin.clear(); // Oporavak toka
- std::cin.ignore(10000, '\n'); // Brisanje spremnika
- std::cin >> rez.d;
- }
- cout<<"Unesite mjesec rodenja: ";cin>>rez.m;
- while(!std::cin) {
- std::cout << "Pogresan unos!. Unesite ponovo mjesec rodenja: ";
- std::cin.clear(); // Oporavak toka
- std::cin.ignore(10000, '\n'); // Brisanje spremnika
- std::cin >> rez.m;
- }
- cout<<"Unesite godinu rodenja: ";cin>>rez.g;
- while(!std::cin) {
- std::cout << "Pogresan unos!. Unesite ponovo godinu rodenja: ";
- std::cin.clear(); // Oporavak toka
- std::cin.ignore(10000, '\n'); // Brisanje spremnika
- std::cin >> rez.g;
- }
- //Dodano, provjera datuma...
- if(!rez.provjera_datuma()){
- cout << "Pogresno unesen datum, molimo vas unesite ponovo!\n";
- } else break;
- }
- while(1){
- bool breakaj = false; //pomocna varijabla ukoliko je korisnik zadovoljan unosom imena da program ide na unos sifre
- cout<<"Unesite ime: ";cin>>rez.ime;
- cout<<"Unesite prezime: ";cin>>rez.prezime;
- cout << "Kreirati racun na ime " << rez.ime << " " << rez.prezime << "? (D/N): ";
- char dn;
- while(1){
- cin >> dn;
- if(dn == 'd' || dn == 'D') {
- breakaj = true;
- break;
- }
- else if(dn == 'n' || dn == 'N') break;
- else cout << "Unesite \"D\" za DA ||| Unesite \"N\" za NE: ";
- }
- if(breakaj) break;
- }
- char c;
- int brojac = 0;
- strcpy(rez.sifra, "");
- string password;
- while(1){
- system("cls");
- cout << rez.ime << " " << rez.prezime;
- cout<<"\nUnesite sifru: ";
- for(int i(0); i<brojac; ++i) _putch('*');
- c = getch();
- if(c == 13) break;
- if(brojac > 0 && c == 8){
- --brojac;
- password = password.substr(0, password.size()-1);
- continue;
- }else{
- if(brojac == 0 && c == 8) continue;
- password += c;
- ++brojac;
- continue;
- }
- }
- strcpy(rez.sifra, password.c_str());
- cout<<endl;
- potvrda_unesene_sifre(rez);
- cout<<endl;
- cout<<"=======================================================\n";
- cout<<"Za aktivaciju racuna unesite minimalno 5[KM]: ";
- cin>>rez.racun.pare;
- cout<<"=======================================================\n";
- kraj=&rez;
- return *kraj;
- }
- //template <class T>
- void dodijeli_broj_racuna(prijava *A, prijava racuni[], int vel){
- bool ima_isti = false;
- int ID;
- do{
- ID = rand()%10000+999;
- for(int i(0); i<vel; ++i){
- if((racuni+i)->racun.broj_racuna == ID){ //Ukoliko ima neki drugi racun koji ima isti ID, dodaj novi ID
- ima_isti = true;
- break;
- }
- }
- }while(ima_isti);
- A->racun.broj_racuna=ID;
- cout<<A->racun.broj_racuna;
- }
- //template <class T>
- void potvrda(prijava *A, prijava prijave[], int vel){
- // sleep(3);
- cout<<"==========================================================================\n";
- cout<<"Uspjesno ste kreirali svoj korisnicki racun. Broj vaseg racuna je: ";
- dodijeli_broj_racuna(A, prijave, vel);
- cout<<endl;
- cout<<"==========================================================================\n";
- }
- void ispis(prijava *A){
- cout<<"=============================\n";
- cout<<"Ime i prezime: "<<A->ime<<" "<<A->prezime<<endl;
- cout<<"Datum rodenja: "<<A->d<<"."<<A->m<<"."<<A->g<<endl;
- cout<<"Novcano stanje: "<<A->racun.pare<<" [KM]"<<endl;
- cout<<"=============================\n";
- }
- void ispis_prijavljenih_korisnika(prijava A[],int a){
- cout<<"=========================================\n";
- for(int i=0;i<a;i++){
- cout<<A[i].ime<<" "<<A[i].prezime<<" == Broj racuna["<<A[i].racun.broj_racuna<<"]"<<endl;
- }
- cout<<"=========================================\n";
- }
- void stanje_racuna_uneseni_broj_racuna(prijava *A,int a,int y){
- prijava *NOVI;
- for(int i=0;i<a;i++){
- if(y==(A+i)->racun.broj_racuna)
- NOVI=(A+i);
- }
- ispis(NOVI);
- }
- void uplata_novca_na_racun(prijava *A,int y,int n){
- double novac;
- string sifra;
- cout <<"Unesite sifru: ";
- char f;
- sifra="";
- while ((f=_getch()) != 13){
- sifra.push_back(f);
- putch('*');
- }
- cout<<"Provjera ..."<<endl;
- //sleep(2);
- for(int i=0;i<n;i++){
- if(y==(A+i)->racun.broj_racuna){
- if(sifra!=A[i].sifra){
- do{
- char c;
- sifra=' ';
- // sleep(2);
- cout <<"[GRESKA]Unesite ispravnu sifru : ";
- // sleep(2);
- while ((c=_getch()) != 13){
- sifra.push_back(c);
- putch('*');
- }
- }while(sifra!=A[i].sifra);
- }
- // sleep(2);
- cout<<"Provjera ... "<<endl;
- cout<<"Uspjesan unos sifre. "<<endl;
- cout <<"Unesite koliko zelite novca da uplatite na racun: ";
- cin>>novac;
- (A+i)->racun.pare=(A+i)->racun.pare+novac;
- // sleep(2);
- cout<<"===========================\n";
- cout<<"Transakcija izvrsena."<<endl;
- cout<<"Stanje racuna: "<<(A+i)->racun.pare<<" [KM]"<<endl;
- cout<<"===========================\n";
- }
- }
- }
- void uplata_novca_na_drugi_racun(prijava *A,int n){
- double novac2;
- string sifra2;
- int z,k;
- cout<<"Unesite broj svog racuna: ";
- cin>>z;
- cout <<"Unesite sifru: ";
- char l;
- sifra2="";
- while ((l=_getch()) != 13){
- sifra2.push_back(l);
- putch('*');
- }
- cout<<"Provjera ..."<<endl;
- sleep(2);
- prijava jedan;
- prijava novi;
- for(int i=0;i<n;i++){
- if(z==(A+i)->racun.broj_racuna){
- jedan=A[i];
- do{
- sleep(2);
- cout <<"[GRESKA]Unesite ispravnu sifru : ";
- sleep(2);
- char t;
- sifra2="";
- while ((t=_getch()) != 13){
- sifra2.push_back(t);
- putch('*');
- }
- }while(sifra2!=A[i].sifra);
- }
- }
- cout<<"Provjera ... "<<endl;
- sleep(2);
- cout<<"Uspjesan unos sifre. "<<endl;
- cout <<"Unesite koliko zelite novca da uplatite na racun: ";
- cin>>novac2;
- cout<<"Unesite broj racuna na koji zelite uplatiti novac: ";
- cin>>k;
- for(int i=0;i<n;i++){
- if(k==(A+i)->racun.broj_racuna){
- novi=A[i];
- }
- }
- if(k==novi.racun.broj_racuna){
- if(jedan.racun.pare>novac2){
- jedan.racun.pare=jedan.racun.pare-novac2;
- novi.racun.pare+=novac2;
- sleep(2);
- cout<<"========================================\n";
- cout<<" Transakcija izvrsena."<<endl;
- cout<<"Za stanje na racunu pritisnite opciju 2."<<endl;
- cout<<"========================================\n";
- for(int i=0;i<n;i++){
- if(k==(A+i)->racun.broj_racuna){
- A[i]=novi;;
- }
- }
- for(int i=0;i<n;i++){
- if(z==(A+i)->racun.broj_racuna){
- A[i]=jedan;
- }
- }
- }else{
- if(jedan.racun.pare<novac2)
- do{
- cout<<"Nemate dovoljno sredstava za ovu transakciju.Unesite manji iznos:";
- cin>>novac2;
- }while(jedan.racun.pare<novac2);
- else
- sleep(2);
- cout<<"========================================\n";
- cout<<" Transakcija izvrsena."<<endl;
- cout<<"Za stanje na racunu pritisnite opciju 2."<<endl;
- for(int i=0;i<n;i++){
- if(k==(A+i)->racun.broj_racuna){
- A[i]=novi;
- }
- }
- cout<<"========================================\n";
- for(int i=0;i<n;i++){
- if(z==(A+i)->racun.broj_racuna){
- A[i]=jedan;
- }
- }
- }
- }
- }
- void digni_pare_sa_racuna(prijava *A,int n){
- double novac3;
- string sifra4;
- int o,p;
- cout<<"Unesite broj svog racuna: ";
- cin>>o;
- cout <<"Unesite sifru: ";
- for(int i=0;i<n;i++){
- if(o==(A+i)->racun.broj_racuna){
- char l;
- sifra4="";
- while ((l=_getch()) != 13){
- sifra4.push_back(l);
- putch('*');
- }
- if(sifra4==A[i].sifra){
- cout<<"\nProvjera ... "<<endl;
- sleep(2);
- cout<<"Uspjesan unos sifre. "<<endl;
- cout <<"Unesite koliko zelite novca da dignete sa racuna: ";
- cin>>novac3;
- (A+i)->racun.pare=(A+i)->racun.pare-novac3;
- sleep(2);
- cout<<"==============================\n";
- cout<<"Uspjesno ste podigli novac."<<endl;
- cout<<"Stanje racuna: "<<(A+i)->racun.pare<<" [KM]"<<endl;
- cout<<"==============================\n";
- }else{
- do{
- cout<<"\nProvjera ..."<<endl;
- Sleep(1000);
- cout <<"[GRESKA]Unesite ispravnu sifru : ";
- char g;
- sifra4=' ';
- while ((g=_getch()) != 13){
- sifra4.push_back(g);
- putch('*');
- }
- sleep(2);
- }while(sifra4!=A[i].sifra);
- cout<<"Uspjesan unos sifre. "<<endl;
- cout <<"Unesite koliko zelite novca da dignete sa racuna: ";
- cin>>novac3;
- (A+i)->racun.pare=(A+i)->racun.pare-novac3;
- sleep(2);
- cout<<"==============================\n";
- cout<<"Uspjesno ste podigli novac."<<endl;
- cout<<"Stanje racuna: "<<(A+i)->racun.pare<<" [KM]"<<endl;
- cout<<"==============================\n";
- }
- }
- }
- }
- //template <class T>
- int get_index_from_id(prijava korisnici[], int vel, int ID){
- for(int i(0); i<vel; ++i){
- if(korisnici[i].racun.broj_racuna == ID) return i;
- }
- return -1;
- }
- //template <class T>
- void brisi_korisnika(prijava korisnici[], int &vel, int ID){
- int x = get_index_from_id(korisnici, vel, ID);
- for(int i(x); i<vel - 1; ++i){
- korisnici[i] = korisnici[i + 1];
- }
- strcpy(korisnici[vel-1].ime, "");
- strcpy(korisnici[vel-1].prezime, "");
- --vel;
- }
- //template <class T>
- void sacuvaj_stanje(prijava p[], int n){
- std::ofstream _broj("broj_prijava.dat", std::ios::binary);
- _broj.write(reinterpret_cast<char*>(&n), sizeof(int));
- _broj.close();
- std::ofstream pisanje("korisnici.dat", std::ios::binary);
- for(int i(0); i<n; ++i){
- pisanje.write(reinterpret_cast<char*>(&p[i]), sizeof(prijava));
- }
- pisanje.close();
- }
- int main(){
- srand(time(0));
- int izbor;
- std::ifstream broj("broj_prijava.dat", std::ios::binary);
- int n = 0;
- if(!broj){
- Sleep(1);
- } else{
- broj.read(reinterpret_cast<char*>(&n), sizeof(int));
- broj.close();
- }
- //std::cout <<n<<" <- n\n"; //TEST BRISATI POSLIJE
- prijava p[100];
- std::ifstream citanje("korisnici.dat", std::ios::binary);
- for(int i(0); i<n; ++i){
- citanje.read(reinterpret_cast<char*>(&p[i]), sizeof(prijava));
- }
- citanje.close();
- do{
- system("cls");
- cout << "ID\tOPTION" << endl;
- cout << "1)\tIspis prijavljenih korisnika" << endl << "2)\tInformacije o korisniku " << endl;
- cout << "3)\tUplata novca na racun" <<endl << "4)\tUplata novca na drugi racun" <<endl;
- cout << "5)\tDizanje novca sa racuna" <<endl << "6)\tIzradi novi racun" <<endl;
- cout << "7)\tBrisanje akaunta korisnika\n"<<"8)\tSacuvaj i izadji" << endl;
- cout << endl << "---Odaberite opciju: ";
- cin >> izbor;
- while(!std::cin) {
- std::cout << "Pogresan unos!. Unesite broj: ";
- std::cin.clear(); // Oporavak toka
- std::cin.ignore(10000, '\n'); // Brisanje spremnika
- std::cin >> izbor;
- }
- cout << endl;
- if(izbor==1){
- ispis_prijavljenih_korisnika(p,n);
- system("pause");
- //cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
- }
- if(izbor==2){
- int x;
- ispis_prijavljenih_korisnika(p,n);
- cout<<"Unesite broj racuna za ispis informacija: ";
- cin>>x;
- while(!std::cin) {
- std::cout << "Pogresan unos!. Unesite ID korisnika: ";
- std::cin.clear(); // Oporavak toka
- std::cin.ignore(10000, '\n'); // Brisanje spremnika
- std::cin >> x;
- }
- stanje_racuna_uneseni_broj_racuna(p,n,x);
- sacuvaj_stanje(p, n);
- system("pause");
- // cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
- }
- if(izbor==3){
- cout<<"===========================\n";
- for(int i=0;i<n;i++){
- cout<<(p+i)->ime<<" "<<(p+i)->prezime<<" "<<"["<<(p+i)->racun.broj_racuna<<"]"<<endl;
- }
- cout<<"===========================\n";
- int x;
- cout<<endl;
- cout<<"Unesite broj racuna: ";
- cin>>x;
- while(!std::cin) {
- std::cout << "Pogresan unos!. Unesite broj racuna: ";
- std::cin.clear(); // Oporavak toka
- std::cin.ignore(10000, '\n'); // Brisanje spremnika
- std::cin >> x;
- }
- uplata_novca_na_racun(p,x,n);
- sacuvaj_stanje(p, n);
- system("pause");
- //cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
- }
- if(izbor==4){
- cout<<"===========================\n";
- for(int i=0;i<n;i++){
- cout<<(p+i)->ime<<" "<<(p+i)->prezime<<" "<<"["<<(p+i)->racun.broj_racuna<<"]"<<endl;
- }
- cout<<"===========================\n";
- uplata_novca_na_drugi_racun(p,n);
- sacuvaj_stanje(p, n);
- system("pause");
- //cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
- }
- if(izbor==5){
- cout<<"===========================\n";
- for(int i=0;i<n;i++){
- cout<<(p+i)->ime<<" "<<(p+i)->prezime<<" "<<"["<<(p+i)->racun.broj_racuna<<"]"<<endl;
- }
- cout<<"===========================\n";
- digni_pare_sa_racuna(p,n);
- sacuvaj_stanje(p, n);
- system("pause");
- //cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
- }
- if(izbor==6){
- p[n]=prijava_racuna();
- potvrda(p+n, p, n);
- ++n;
- sacuvaj_stanje(p, n);
- system("pause");
- //cout << endl << endl << "---Odaberite opciju: "; cin >> izbor;
- }
- if(izbor == 7){
- ispis_prijavljenih_korisnika(p,n);
- std::cout << "Unesite ID korisnika za brisanje. Ukolike ne zelite izbrisati korisnika unesite -1: ";
- int ID;
- std::cin >> ID;
- while(!std::cin) {
- std::cout << "Pogresan unos!. Unesite broj: ";
- std::cin.clear(); // Oporavak toka
- std::cin.ignore(10000, '\n'); // Brisanje spremnika
- std::cin >> ID;
- }
- int index = -1;
- index = get_index_from_id(p, n, ID);
- if(index != -1){
- brisi_korisnika(p,n, ID);
- sacuvaj_stanje(p, n);
- ispis_prijavljenih_korisnika(p,n);
- system("pause");
- }
- }
- }while(izbor!=8);
- sacuvaj_stanje(p, n);
- /*std::ofstream _broj("broj_prijava.dat", std::ios::binary);
- _broj.write(reinterpret_cast<char*>(&n), sizeof(int));
- _broj.close();
- std::ofstream pisanje("korisnici.dat", std::ios::binary);
- for(int i(0); i<n; ++i){
- pisanje.write(reinterpret_cast<char*>(&p[i]), sizeof(prijava));
- }
- pisanje.close();*/ //ovo je sada u funkciji sacuvaj_stanje, testira se jos, ne brisi
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement