Alx09

fd

Oct 31st, 2021 (edited)
431
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.09 KB | None | 0 0
  1. package problema1;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.PrintStream;
  7. import java.text.ParseException;
  8. import java.text.SimpleDateFormat;
  9. import java.util.Calendar;
  10. import java.util.Date;
  11. import java.util.HashSet;
  12. import java.util.Set;
  13. import java.util.Vector;
  14.  
  15. import problema1.ContBancar.Moneda;
  16.  
  17. public class ClientiiBancilor {
  18.  
  19.     public static void main(String[] args) throws NumberFormatException, ParseException, IOException {
  20.         Vector<Banca> banci = new Vector<>();
  21.         int opt = 0;
  22.         BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
  23.        
  24.  
  25.         do {
  26.             System.out.println("0. Iesire");
  27.             System.out.println("1. Adaugare Banca/ Client/ conturi tastatura");
  28.             System.out.println("2. Afisare date in clientibancilor.txt ");
  29.             System.out.println("3. Citire din fiser");
  30.             System.out.println("4. Salveaza datele actuale in fiser");
  31.             System.out.println("5. Administreaza cont");
  32.             System.out.print("Optiunea aleasa este: ");
  33.             opt = Integer.parseInt(read.readLine().trim());
  34.             switch (opt) {
  35.             case 0:
  36.                 return;
  37.             case 1:
  38.                 adaugaEditBanca(banci, read);
  39.                 break;
  40.             case 2:
  41.                 PrintStream outputFile = new PrintStream("src\\problema1\\clientibancilor.txt");
  42.                 outputFile.print(banci);
  43.                 outputFile.close();
  44.                 break;
  45.             case 3:
  46.                 citireFiser(banci);
  47.                 break;
  48.             case 4:
  49.                 Banca.seralizare(banci, "src\\problema1\\clientiBanci.bin");
  50.                 break;
  51.             case 5:
  52.                 meniuSecundar(banci, read);
  53.                 break;
  54.             default:
  55.                 throw new IllegalArgumentException("Unexpected value: " + opt);
  56.             }
  57.  
  58.         } while (opt != 0);
  59.  
  60.     }
  61.  
  62.     static private void meniuSecundar(Vector<Banca> banci, BufferedReader read)
  63.             throws NumberFormatException, IOException {
  64.         Client c = null;
  65.         c = getClient(banci, read);
  66.         if(c == null) return;
  67.         if(c.getConturi().isEmpty()) return;
  68.         ContBancar cont = getCont(read, c);
  69.        
  70.         int opt;
  71.         do {
  72.             System.out.println("0. Revenire la meniul anterior");
  73.             System.out.println("1. Afisare cont");
  74.             System.out.println("2. Depunere o suma de bani");
  75.             System.out.println("3. Extragerea o sumă de bani ");
  76.             System.out.println("4. Transferă bani în alt cont ");
  77.             System.out.print("Optiunea aleasa este: ");
  78.             opt = Integer.parseInt(read.readLine().trim());
  79.             switch (opt) {
  80.             case 0:
  81.                 return;
  82.             case 1:
  83.                 System.out.println(cont);
  84.                 break;
  85.             case 2:
  86.                 System.out.print("Suma care va fi depusa: ");
  87.                 cont.depunere(Float.parseFloat(read.readLine().trim()));
  88.                 System.out.println("Contul dupa depunere\n" + cont);
  89.  
  90.                 break;
  91.             case 3:
  92.                 System.out.print("Suma care va fi extrasa: ");
  93.                 cont.extragere(Float.parseFloat(read.readLine().trim()));
  94.                 System.out.println("Contul dupa extragere\n" + cont);
  95.                 break;
  96.             case 4:
  97.                 if (c.getConturi().size() < 2) {
  98.                     System.out.print("Clientul trebuie sa aiba ce-l ptuin doua conturi de aceasi valuta!");
  99.                     break;
  100.                 }
  101.                 float suma = 0.f;
  102.                 do {
  103.                     System.out.print("Suma ce va fi extrasa: ");
  104.                     suma = Float.parseFloat(read.readLine().trim());
  105.                     if (cont.getSuma() < suma)
  106.                         System.out.println("Suma extrasa trebuie sa fie mai mica sau egala cu " + cont.getSuma());
  107.                 } while (cont.getSuma() < suma);
  108.                 System.out.print("Suma va fi adaugata in: ");
  109.                 getCont(read, c).depunere(suma);
  110.                 cont.extragere(suma);
  111.                 break;
  112.             default:
  113.                 break;
  114.             }
  115.  
  116.         } while (true);
  117.     }
  118.  
  119.     private static ContBancar getCont(BufferedReader read, Client c) throws IOException {
  120.         String numarCont = null;
  121.         if (c.getConturi().size() == 1) {
  122.             System.out.print("Cont: ");
  123.             for (ContBancar cont : c.getConturi()) {
  124.                 System.out.println(cont);
  125.                 return cont;
  126.             }
  127.         }
  128.         do {
  129.  
  130.             System.out.print("Conturile sunt: ");
  131.             System.out.println(c);
  132.             System.out.print("Numar Cont: ");
  133.             numarCont = read.readLine().trim();
  134.             for (ContBancar cont : c.getConturi()) {
  135.                 if (cont.getNumarCont().equals(numarCont))
  136.                     return cont;
  137.             }
  138.         } while (true);
  139.     }
  140.  
  141.     private static Client getClient(Vector<Banca> banci, BufferedReader read) throws IOException {
  142.         String numeBanca;
  143.         String numeClient;
  144.         Boolean isBanca = false;
  145.         Client c = null;
  146.         if (banci.isEmpty()) {
  147.             System.out.println("Nu se afla nicio banca in baza de date");
  148.             return null;
  149.         }
  150.         if (banci.size() == 1) {
  151.             numeBanca = banci.get(0).getDenumire_banca();
  152.             System.out.println("Banca: " + numeBanca);
  153.         } else {
  154.             for (Banca b : banci)
  155.                 System.out.print(b.getDenumire_banca() + ", ");
  156.             System.out.print("\nNume banca dorita: ");
  157.             numeBanca = read.readLine().trim();
  158.         }
  159.         for (Banca b : banci) {
  160.             if (b.getDenumire_banca().equals(numeBanca)) {
  161.                 isBanca = true;
  162.                 if (b.getClienti().size() == 1) {
  163.                     System.out.println("Cont: " + b.getClienti().get(0).getNume());
  164.                     return b.getClienti().get(0);
  165.                 } else {
  166.                     System.out.print("Clienti: ");
  167.                     for (Client client : b.getClienti())
  168.                         System.out.print(client.getNume() + ", ");
  169.                     System.out.print("\nNume Client cautat: ");
  170.                     numeClient = read.readLine().trim();
  171.                 }
  172.                 for (Client client : b.getClienti())
  173.                     if (client.getNume().equals(numeClient))
  174.                         c = client;
  175.             }
  176.  
  177.         }
  178.         if (isBanca == false)
  179.             System.out.println("Banca introdusa nu a fost gasita");
  180.         else if (c == null)
  181.             System.out.println("Clientul introdusa nu a fost gasita");
  182.         return c;
  183.     }
  184.  
  185.     private static void citireFiser(Vector<Banca> banci) {
  186.         Banca b;
  187.         Vector<?> banc = (Vector<?>) Banca.deSeralizare("src\\problema1\\clientiBanci.bin");
  188.         if (banc != null)
  189.             for (var ban : banc) {
  190.                 b = (Banca) ban;
  191.                 if (banci.indexOf(b) == -1)
  192.                     banci.add(b);
  193.                 else
  194.                     for (Client client : b.getClienti())
  195.                         b.adaugaClient(client);
  196.             }
  197.         else
  198.             System.out.println("Nu exista fiserul clientiBanci.bin");
  199.     }
  200.  
  201.     private static void adaugaEditBanca(Vector<Banca> banci, BufferedReader read) {
  202.         String numeClient;
  203.         String adresaClient = "";
  204.         Banca b;
  205.         Client c;
  206.         int i;
  207.         try {
  208.             if (!banci.isEmpty()) {
  209.                 System.out.print("Banci existente: ");
  210.                 for (Banca banc : banci)
  211.                     System.out.print(banc.getDenumire_banca() + ", ");
  212.                 System.out.println();
  213.             }
  214.             System.out.print("Nume banca: ");
  215.             b = new Banca(read.readLine().trim(), null);
  216.             System.out.print("Numar de clienti: ");
  217.             int j = Integer.parseInt(read.readLine().trim()), index = banci.indexOf(b);
  218.             while (j != 0) {
  219.                 if (index != -1 && !banci.get(index).getClienti().isEmpty()) {
  220.                     System.out.print("Clienti existenti: ");
  221.                     for (Client client : banci.get(index).getClienti())
  222.                         System.out.print(client.getNume() + ", ");
  223.                     System.out.println();
  224.                 }
  225.                 System.out.print("Nume client: ");
  226.                 numeClient = read.readLine();
  227.                 c = new Client(numeClient, " ", null);
  228.                 if (index == -1 || (banci.get(index).getClienti().indexOf(c) == -1)) {
  229.                     System.out.print("Adresa client: ");
  230.                     adresaClient = read.readLine().trim();
  231.                 }
  232.                 System.out.print("Numar de conturi: ");
  233.                 i = Integer.parseInt(read.readLine().trim());
  234.                 Set<ContBancar> conturi = new HashSet<>();
  235.                 while (i != 0) {
  236.                     System.out.println(
  237.                             "Numar cont  / suma/ Moneda(ron/eur) / data deschdieri(dd mm yyyy) / data ultimei operatiuni(dd mm yyyy)");
  238.                     conturi.add(new ContBancar(read.readLine().trim(), Float.parseFloat(read.readLine().trim()),
  239.                             Moneda.valueOf(read.readLine().trim().toUpperCase()), getCalendar(read.readLine().trim()),
  240.                             getCalendar(read.readLine().trim())));
  241.                     --i;
  242.                 }
  243.                 c = new Client(numeClient, adresaClient, conturi);
  244.                 index = banci.indexOf(b);
  245.                 if (index != -1)
  246.                     banci.get(index).adaugaClient(c);
  247.                 else
  248.                     b.adaugaClient(c);
  249.                 --j;
  250.             }
  251.             if (banci.indexOf(b) == -1)
  252.                 banci.add(b);
  253.         } catch (Exception e) {
  254.             System.out.println("A aparut o eroare la adaugare!");
  255.         }
  256.  
  257.     }
  258.  
  259.     static Calendar getCalendar(String data) throws ParseException {
  260.         SimpleDateFormat format1;
  261.         format1 = new SimpleDateFormat("dd MM yyyy");
  262.         Calendar cal = Calendar.getInstance();
  263.         cal.setTime((Date) format1.parse(data));
  264.         return cal;
  265.     }
  266. }
  267.  
Add Comment
Please, Sign In to add comment