daily pastebin goal
75%
SHARE
TWEET

Untitled

a guest Jan 14th, 2018 56 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //POP 2017-01-17 projekt 2 Klimowska Alicja IBM 2 171883 Visual Studio
  2.  
  3. #include <fstream>
  4. #include <cstdlib>
  5. #include <iostream>
  6. #include <ctime>
  7. #include <string>
  8. #include <cmath>
  9. using namespace std;
  10. string pobierzgodzine()
  11. {
  12.     char wynik[80];
  13.     time_t rawtime;//zmienna zasowa
  14.     tm * timeinfo;//zmienna na strukture tm
  15.     time(&rawtime);
  16.     timeinfo = localtime(&rawtime);
  17.     strftime(wynik, sizeof(wynik), "%I:%M:%S", timeinfo);
  18.     string w(wynik);
  19.     return w;
  20. }
  21. string pobierzdate()
  22. {//pobierazemy aktualna date
  23.     char wynik[80];
  24.     time_t rawtime;//zmienna zasowa
  25.     tm * timeinfo;//zmienna na strukture tm
  26.     time(&rawtime);
  27.     timeinfo = localtime(&rawtime);
  28.     strftime(wynik, sizeof(wynik), "%d-%m-%Y", timeinfo);
  29.     string w(wynik);
  30.     return w;
  31. }
  32. void addkonto()
  33. {
  34.     fstream konto;//zmienna plikowa
  35.     string imie, nazwisko;
  36.     int debet, transakcja, stankonta, numerkonta;
  37.     konto.open("konto.txt", ios::app | ios::out);//w przeciwnym razie zwyczajnie otwieramy plik
  38.     system("CLS");//czyscimy ekran
  39.     cout << "Podaj numer konta" << endl;
  40.     cin >> numerkonta; konto << numerkonta;//wczytujemy numer konta i przesylamy go do pliku
  41.     konto << " ";
  42.     cout << "Podaj nazwisko" << endl;//dalej analogicznie
  43.     cin >> nazwisko; konto << nazwisko;
  44.     konto << " ";
  45.     cout << "Podaj imie" << endl;
  46.     cin >> imie; konto << imie;
  47.     konto << " ";
  48.     cout << "Podaj maksymalny debet" << endl;
  49.     cin >> debet; konto << debet;
  50.     konto << " ";
  51.     cout << "Podaj maksymalna kowte transakcji" << endl;
  52.     cin >> transakcja; konto << transakcja;
  53.     konto << " ";
  54.     cout << "Podaj stan konta" << endl;
  55.     cin >> stankonta; konto << stankonta;
  56.     konto << " ";
  57.     konto << pobierzdate();
  58.     konto << endl;
  59.     konto.close();
  60. }
  61. void addtransakcja()
  62. {
  63.     fstream transkacje, konta;
  64.     int numerkonta, kwota, nrbankomatu, maxdebet, maxtransakcja, stankonta;
  65.  
  66.     transkacje.open("transakcje.txt", ios::app | fstream::out);//
  67.     if (!transkacje.is_open()) {
  68.         cout << "Nie udalo sie wczytac transakcje.txt" << endl;
  69.         return;
  70.     }
  71.  
  72.     konta.open("konto.txt", ios::in);//otwieramy tez plik z kontami
  73.     if (!konta.is_open()) {
  74.         cout << "Nie udalo sie wczytac konto.txt" << endl;
  75.         return;
  76.     }
  77.  
  78.     cout << "Podaj numer konta:" << endl;
  79.     cin >> numerkonta;
  80.     cout << "Kwota (jesli wyplata nalezy podac kwote na minusie na przyklad -300)" << endl;
  81.     cin >> kwota;
  82.     cout << "Numer bankomatu " << endl;
  83.     cin >> nrbankomatu;
  84.     //wyszukamy teraz plik z kontami w poszukiwaniu naszych limitow
  85.     bool czykontozostaloznalezione = 0;
  86.     int wczytanie;
  87.     string wczytanies;//zmienne do wczytywania z pliku
  88.     do
  89.     {
  90.         konta >> wczytanie;
  91.         if (wczytanie == numerkonta)
  92.         {
  93.             czykontozostaloznalezione = 1;//znalezlismy konto
  94.             break;
  95.         }
  96.         if (czykontozostaloznalezione == 0) {
  97.             //pomijamy rezste danych
  98.             for (int i = 0; i < 6; i++)
  99.             {
  100.                 konta >> wczytanies;
  101.             }
  102.         }
  103.     } while (!konta.eof());
  104.     if (czykontozostaloznalezione == 0)
  105.     {
  106.         cout << "Blad nie ma konta" << endl;
  107.         transkacje.close();//zamykamy wtedy plik
  108.         konta.close();
  109.         system("pause");
  110.         return;//srpawdzami czy istenieje plik z kontami jesli nie to zwracamy blad i nic nie przysylamy
  111.  
  112.     }
  113.     konta >> wczytanies; konta >> wczytanies;//wzytujemy niepotrzebne dane
  114.     konta >> maxdebet;//wczytujemy max debet
  115.     konta >> maxtransakcja;
  116.     konta >> stankonta;
  117.  
  118.     if (kwota < 0 && maxtransakcja < abs(kwota))
  119.     {
  120.         cout << "Przekroczony limit transakcji, transakcja nieprzyjeta" << endl;
  121.         fstream limity;
  122.         limity.open("limity.txt", ios::app | ios::out);
  123.         limity << numerkonta;
  124.         limity << " ";
  125.         limity << kwota;
  126.         limity << " ";
  127.         limity << pobierzdate();
  128.         limity << " ";
  129.         limity << pobierzgodzine();
  130.         limity << " ";
  131.         limity << nrbankomatu;
  132.         limity << endl;
  133.         limity.close();
  134.     }
  135.     if (stankonta + kwota < 0 - maxdebet)
  136.     {
  137.         cout << "Przekroczony debet,transakja nieprzyjeta" << endl;
  138.         fstream debety;
  139.         debety.open("debety.txt", ios::app | ios::out);
  140.         debety << numerkonta;
  141.         debety << " ";
  142.         debety << kwota;
  143.         debety << " ";
  144.         debety << pobierzdate();
  145.         debety << " ";
  146.         debety << pobierzgodzine();
  147.         debety << " ";
  148.         debety << nrbankomatu;
  149.         debety << endl;
  150.         debety.close();
  151.     }
  152.     transkacje << numerkonta;
  153.     transkacje << " ";
  154.     transkacje << kwota;
  155.     transkacje << " ";
  156.     transkacje << pobierzdate();
  157.     transkacje << " ";
  158.     transkacje << pobierzgodzine();
  159.     transkacje << " ";
  160.     transkacje << nrbankomatu;
  161.     transkacje << endl;
  162.     //}
  163.     transkacje.close();
  164.     konta.close();
  165. }
  166. int konwertujnaint(string a)//nasza funkcja do przekonwertowania string na int
  167. {
  168.     int p, wynik = 0;//bedziemy kolejne liczby mnozyc przez potege 10 i dodawac do wwyniku (minus ascii bo string to tablica charow)
  169.     for (int j = 0, i = a.size() - 1; i >= 0; i--, j++)
  170.     {
  171.         p = pow(10, static_cast<double>(j));
  172.         wynik += (a[i] - 48)*p;
  173.     }
  174.     return wynik;
  175. }
  176.  
  177. bool datastarsza(string a, string b)//funckja do sprawdzania czy data b jest starsza od daty a
  178. {
  179.     string roka, rokb, miesa, miesb, dziena, dzienb;//zmienne do przechowywania poszczegolnych skladowych daty
  180.     roka = a.substr(6, 4);//przepisujemy od pozycji 6 4 znaki
  181.     rokb = b.substr(6, 4);
  182.     miesa = a.substr(3.2); miesb = b.substr(3.2);
  183.     dziena = a.substr(0, 2); dzienb = b.substr(0, 2);
  184.     if (konwertujnaint(roka) < konwertujnaint(rokb))//musimy przekonwertowac za pomoca naszej funkcji date ze string na liczbe int i porownac ja
  185.         return 0;
  186.  
  187.     if (konwertujnaint(roka) > konwertujnaint(rokb))return 1;
  188.     //jesli nie jest ani mniejsze ani wieksze to znaczy, ze jest rowne i sprawdzamy dalej miesiac i potem analgoicznie dzien jesli miesiace beda rowne
  189.     if (konwertujnaint(miesa) < konwertujnaint(miesb))return 0;
  190.     if (konwertujnaint(miesa) > konwertujnaint(miesb))return 1;
  191.     //analogicznie
  192.     if (konwertujnaint(dziena) < konwertujnaint(dzienb))return 0;
  193.     if (konwertujnaint(dziena) > konwertujnaint(dzienb))return 1;
  194.  
  195.     return 1;//jesli data jest taka sama to zakladamy ze transakcja wykonala sie wczesniej niz ostatnia aktualizacja danych
  196. }
  197. void update()
  198. {
  199.     fstream konto, transakcje, save;
  200.     konto.open("konto.txt", ios::in);
  201.     save.open("save.txt", ios::out);//otworzymy plik do ktorego przepiszemy uaktualnione konta
  202.     string imie, nazwisko, wczytanie, data;
  203.     int debet, transakcja, stankonta, numerkonta;
  204.     do
  205.     {
  206.         transakcje.open("transakcje.txt", ios::in);
  207.         konto >> numerkonta;
  208.         konto >> nazwisko;
  209.         konto >> imie;
  210.         konto >> debet;
  211.         konto >> transakcja;
  212.         konto >> stankonta;
  213.         konto >> data;//pobieramy pojedyncze konto
  214.         if (konto.eof() == 0) {//sprawdzamy w tym miejscu czy nie skonczyl sie plik by wykluczyc przepisanie ostatniego pustego wiersza
  215.             do
  216.             {
  217.                 string datat, godzinat;
  218.                 int numerkontat, kwotat, nrbankomatut;//zmienne do transakcji
  219.                 transakcje >> numerkontat;
  220.                 transakcje >> kwotat;
  221.                 transakcje >> datat;
  222.                 transakcje >> godzinat;
  223.                 transakcje >> nrbankomatut;
  224.                 if (transakcje.eof() == 0) {//sprawdzamy w tym miejscu czy nie skonczyl sie plik by wykluczyc przepisanie ostatniego pustego wiersza
  225.                     if (numerkontat == numerkonta && datastarsza(datat, data) == 1)//jesli numerykonta sa takie same i data jest starsza od daty transakcji uaktualniamy
  226.                     {
  227.                         cout << "Aktualizacja dla konta: " << numerkonta << ", kwota:" << kwotat << endl;
  228.                         stankonta += kwotat;
  229.                     }
  230.                 }
  231.             } while (!transakcje.eof());
  232.             transakcje.close();
  233.             save << numerkonta << " ";
  234.             save << nazwisko << " ";
  235.             save << imie << " ";
  236.             save << debet << " ";
  237.             save << transakcja << " ";
  238.             save << stankonta << " ";
  239.             save << pobierzdate() << endl;//zapisujemy aktualne dane do pliku save
  240.         }
  241.         else
  242.             break;
  243.     } while (true);
  244.     //przepiszemy teraz plik save do pliku konta
  245.     save.close(); konto.close();//zamykamy pliki
  246.     save.open("save.txt", ios::in); konto.open("konto.txt", ios::out);//otwieramy ponownie pliki z nowymi uprawnieniami
  247.     int j = 0;//damy licznik by co 7 przepisan dopisac endl
  248.     konto << save.rdbuf();//kopiujemy plik save do konto (metoda rdbuf)
  249.     save.close(); konto.close();//zamykamy pliki
  250. }
  251. int main()
  252. {
  253.  
  254.     int wejscie;
  255. do
  256.     {
  257.         system("CLS");
  258.         cout << "[1] Dodaj konto" << endl;
  259.         cout << "[2] Dodaj transakcje" << endl;
  260.         cout << "[3] Aktualizuj dane" << endl;
  261.         cout << "[4] Wyjscie" << endl;
  262.         cin >> wejscie;
  263.         switch (wejscie)//wybieramy odpowiednia funckje dla danego wejscia
  264.         {
  265.         case 1:
  266.         {
  267.             addkonto();
  268.             break;
  269.         }
  270.         case 2:
  271.         {
  272.             addtransakcja();
  273.             break;
  274.         }
  275.         case 3:
  276.         {
  277.             update();
  278.             break;
  279.         }
  280.         case 4:
  281.         {
  282.             return 0;
  283.         }
  284.         break;
  285.         }
  286.     } while (true);
  287.  
  288.  
  289.     return 0;
  290. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top