Advertisement
fcamuso

Corso recupero C++ - video 31

Jan 5th, 2023
987
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.75 KB | None | 0 0
  1. /*
  2. Progettare e implementare in C++ una classe che rappresenta un conto corrente bancario:
  3. - la creazione di un conto corrente potrà avvenire solo specificando
  4.   almeno il saldo iniziale e il correntista (un codice di conto potra' essere specificato
  5.   anche in un secondo momento)
  6.  
  7. - in ogni momento dovrà essere possibile sapere il saldo del conto
  8.  
  9. - gestire prelievi e versamenti; i prelievi possono mandare in rosso (negativo)
  10.   il saldo del conto non oltre a una certa cifra/soglia;
  11.  
  12.   il valore della soglia viene letto da un file di testo che contiene anche
  13.   il nome della Banca
  14.  
  15. - (difficile) tenere traccia di tutti i movimenti storici; possibilità
  16.   di stampare un estratto conto (data, tipo movimento, valore movimento)
  17.   in ordine cronologico crescente o decrescente
  18. */
  19.  
  20.  
  21. #include <iostream>
  22. #include <fstream>
  23.  
  24. using namespace std;
  25.  
  26. class CC {
  27.  
  28. public:
  29.   CC(double _saldo, string _correntista, string _numero_conto="")
  30.   {
  31.     set_saldo(_saldo);
  32.  
  33.     correntista = _correntista;
  34.     numero_conto = _numero_conto;
  35.   }
  36.  
  37.   CC() {}
  38.  
  39.   //getters
  40.   double get_saldo() {return saldo;}
  41.  
  42.   //setters
  43.   void set_numero_conto(string numero) {numero_conto = numero;}
  44.  
  45.   void set_saldo(double _saldo)
  46.   {
  47.     if (_saldo<0) throw invalid_argument("Saldo negativo rifiutato");
  48.     saldo = _saldo;
  49.   }
  50.  
  51.   string get_nome_banca() { return nome_banca; }
  52.  
  53.   bool deposita(double cifra) {
  54.     if (cifra>0)
  55.     {
  56.       saldo+=cifra;
  57.       return true;
  58.     }
  59.     else return false;
  60.   }
  61.  
  62.  
  63.   bool preleva(double cifra) {
  64.     if (cifra>0 && (saldo-cifra)>= -soglia_rosso)
  65.     {
  66.       saldo-=cifra;
  67.       return true;
  68.     }
  69.     else return false;
  70.   }
  71.  
  72. private:
  73.   string numero_conto="";
  74.   double saldo = 0;
  75.   string correntista = "";
  76.  
  77.   static string nome_banca;
  78.   static double soglia_rosso;
  79.  
  80.   static bool lettura_servizio;
  81.  
  82.   static bool leggi_servizio() {
  83.     ifstream leggi = ifstream("servizio.txt");
  84.  
  85.     getline(leggi, CC::nome_banca);
  86.  
  87.     string riga="";
  88.     getline(leggi, riga);
  89.     CC::soglia_rosso=abs(stoi(riga));
  90.  
  91.  
  92.     leggi.close(); leggi.clear();
  93.     cout << CC::nome_banca << " " << CC::soglia_rosso << endl;
  94.  
  95.     return true;
  96.   }
  97.  
  98. };
  99.  
  100. string CC::nome_banca="";
  101. double CC::soglia_rosso=0;
  102. bool CC::lettura_servizio = CC::leggi_servizio();
  103.  
  104.  
  105.  
  106.  
  107.  
  108. int main()
  109. {
  110.     CC conto = CC();
  111.     try {
  112.       conto = CC(2000, "");
  113.     }
  114.     catch (invalid_argument e) {
  115.       cout << e.what() << "Impossibile continuare ...\n";
  116.     }
  117.  
  118.     cout << conto.get_saldo() << endl;
  119.  
  120.     conto.deposita(-500);
  121.     cout << conto.get_saldo() << endl;
  122.  
  123.     conto.deposita(500);
  124.     cout << conto.get_saldo() << endl;
  125.  
  126.  
  127.     conto.preleva(3501);
  128.     cout << conto.get_saldo() << endl;
  129.  
  130.  
  131.  
  132.     return 0;
  133. }
  134.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement