kubabebe

ZarzadzanieKadrami ver3

Jul 25th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.33 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.HashSet;
  3. import java.util.Scanner;
  4. import java.util.Set;
  5. import java.io.*;
  6.  
  7. class PracownikNew implements Serializable {
  8.     private String imie;
  9.     private String nazwisko;
  10.     private double placa;
  11.     private char plec;
  12.     private int dzial;
  13.  
  14.     public PracownikNew(String imie, String nazwisko, double placa, char plec, int dzial) {
  15.         this.imie = imie;
  16.         this.nazwisko = nazwisko;
  17.         this.placa = placa;
  18.         this.plec = plec;
  19.         this.dzial = dzial;
  20.     }
  21.  
  22.     @Override
  23.     public String toString() {
  24.         return String.format("| %15s | %20s | %10.2f |  %c |   %d |", imie, nazwisko, placa, plec, dzial);
  25.     }
  26.  
  27.     public boolean czyPracujeWDziale(int departamentNumber) {
  28.         return this.dzial == departamentNumber;
  29.  
  30.     }
  31.  
  32.     public double getPlaca() {
  33.         return this.placa;
  34.     }
  35.  
  36.     public int getDzial() {
  37.         return this.dzial;
  38.     }
  39. }
  40.  
  41. class Kadry implements Serializable {
  42.     private static final int MAKSYMALNE_ZATRUDNIENIE = 100;
  43.     private static final double MAKSYMALNA_PLACA = 100000;
  44.     private static final int LICZBA_DZIALOW = 5;
  45.     private static final char PLEC_M = 'M';
  46.     private static final char PLEC_K = 'K';
  47.     private static final int DZIAL_MIN = 1;
  48.     private static final int DZIAL_MAX = 5;
  49.     private PracownikNew[] pracownicy_;
  50.     private int zatrudnienie_;
  51.  
  52.     public Kadry() {
  53.         pracownicy_ = new PracownikNew[MAKSYMALNE_ZATRUDNIENIE];
  54.         zatrudnienie_ = 0;
  55.     }
  56.  
  57.     public void dodajPracownika(PracownikNew pracownik) {
  58.         if (zatrudnienie_ < MAKSYMALNE_ZATRUDNIENIE) {
  59.             pracownicy_[zatrudnienie_] = pracownik;
  60.             zatrudnienie_++;
  61.         } else {
  62.             System.out.println("Za dużo pracowników");
  63.         }
  64.  
  65.     }
  66.  
  67.     public void dodajPracownikaInteraktywnie() {
  68.         System.out.println("Podaj dane pracownika:");
  69.         Scanner in = new Scanner(System.in);
  70.         System.out.print("Imie: ");
  71.         String imie = in.next();
  72.         System.out.print("Nazwisko: ");
  73.         String nazwisko = in.next();
  74.  
  75.         System.out.print("Placa: ");
  76.         double placa;
  77.         do {
  78.             placa = in.nextDouble();
  79.         } while (placaCheck(placa));
  80.  
  81.         System.out.print("Płeć: ");
  82.         char plec;
  83.         do {
  84.             plec = Character.toUpperCase(in.next().charAt(0));
  85.         } while (plecCheck(plec));
  86.  
  87.         System.out.print("Dział: ");
  88.         int dzial;
  89.         do {
  90.             dzial = in.nextInt();
  91.         } while (dzialCheck(dzial));
  92.  
  93.         PracownikNew pracownik = new PracownikNew(imie, nazwisko, placa, plec, dzial);
  94.         System.out.println(pracownik.toString());
  95.         dodajPracownika(pracownik);
  96.  
  97.     }
  98.  
  99.     private boolean placaCheck(double placa) {
  100.         if (placa < 0 || placa >= MAKSYMALNA_PLACA) {
  101.             System.out.println("Płaca spoza zakresu. Wpisz kwotę z zakresu 0 - " + MAKSYMALNA_PLACA);
  102.             return true;
  103.         } else {
  104.             return false;
  105.         }
  106.     }
  107.  
  108.     private boolean plecCheck(char plec) {
  109.         if (plec != PLEC_M && plec != PLEC_K) {
  110.             System.out.println("Nieprawidłowy znak płaci. Podaj M lub K.");
  111.             return true;
  112.         } else {
  113.             return false;
  114.         }
  115.     }
  116.  
  117.     private boolean dzialCheck(int dzial) {
  118.         if (dzial < DZIAL_MIN || dzial > DZIAL_MAX) {
  119.             System.out.println("Nieprawidłowy numer działu. Wybierz liczbe z zakresu 1 - 5");
  120.             return true;
  121.         } else {
  122.             return false;
  123.         }
  124.     }
  125.  
  126.     public void importujZPlikuTekstowego(String fileName) throws IOException {
  127.  
  128.         try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
  129.             String line = reader.readLine();
  130.             while (line != null) {
  131.                 dodajPracownika(lineOnEmployee(line));
  132.                 line = reader.readLine();
  133.             }
  134.  
  135.         }
  136.  
  137.     }
  138.  
  139.     public PracownikNew lineOnEmployee(String line) {
  140.         String[] splitLine = line.split("\\s");
  141.         return new PracownikNew(splitLine[0], splitLine[1], Double.parseDouble(splitLine[2]), splitLine[3].charAt(0),
  142.                 Integer.parseInt(splitLine[4]));
  143.  
  144.     }
  145.  
  146.     public int getZatrudnienie() {
  147.         return zatrudnienie_;
  148.     }
  149.  
  150.     public double sredniZarobek() {
  151.         double sumaZarobek = 0;
  152.         for (int i = 0; i < zatrudnienie_; i++) {
  153.             sumaZarobek += pracownicy_[i].getPlaca();
  154.         }
  155.         if (zatrudnienie_ == 0) {
  156.             System.out.println("Brak pracowników w firmie");
  157.             return 0;
  158.         } else {
  159.             return (sumaZarobek / zatrudnienie_);
  160.         }
  161.     }
  162.  
  163.     public double sredniZarobek(int dzial) {
  164.         double sumaZarobek = 0;
  165.         int liczbaPracownikowWDziale = 0;
  166.         for (int i = 0; i < zatrudnienie_; i++) {
  167.             if (pracownicy_[i].getDzial() == dzial) {
  168.                 sumaZarobek += pracownicy_[i].getPlaca();
  169.                 liczbaPracownikowWDziale++;
  170.             }
  171.         }
  172.         if (liczbaPracownikowWDziale == 0) {
  173.             System.out.println("Brak pracowników we wskazanym dziale");
  174.             return 0;
  175.         } else {
  176.             return (sumaZarobek / liczbaPracownikowWDziale);
  177.         }
  178.     }
  179.  
  180.     public int[] dajDzialy() {
  181.  
  182.         HashSet<Integer> dzialySet = new HashSet<Integer>();
  183.         for (int i = 0; i < zatrudnienie_; i++) {
  184.             dzialySet.add(pracownicy_[i].getDzial());
  185.         }
  186.         int[] dzialy = new int[dzialySet.size()];
  187.         int index = 0;
  188.         for (int i : dzialySet) {
  189.             dzialy[index++] = i;
  190.         }
  191.         return dzialy;
  192.  
  193.     }
  194.  
  195.     public void pisz() {
  196.         System.out.println("|            Imie |             Nazwisko |      Placa |Plec|Dzial|");
  197.         for (int i = 0; i < zatrudnienie_; i++) {
  198.             System.out.println(pracownicy_[i]);
  199.         }
  200.         System.out.format("Średnia płaca w firmie: %.2f\n", sredniZarobek());
  201.         // int[] dzialy = dajDzialy();
  202.         for (int dzial : dajDzialy()) {
  203.             if (dzial != 0) {
  204.                 System.out.format("Średnia płaca w dziale %d wynosi: %.2f\n", dzial, sredniZarobek(dzial));
  205.             }
  206.         }
  207.     }
  208.  
  209.     public void zapiszDoPliku(String fileName) throws FileNotFoundException {
  210.  
  211.         try (FileOutputStream fos = new FileOutputStream(fileName);
  212.                 ObjectOutputStream oos = new ObjectOutputStream(fos);) {
  213.  
  214.             int i = 0;
  215.             while (pracownicy_[i] != null) {
  216.                 oos.writeObject(pracownicy_[i]);
  217.                 i++;
  218.             }
  219.         } catch (IOException e) {
  220.             System.out.println(e);
  221.         }
  222.  
  223.     }
  224.  
  225.     public Kadry odczytajZPliku(String fileName) {
  226.  
  227.         Kadry afterSerialization = new Kadry();
  228.         try (FileInputStream fis = new FileInputStream(fileName); ObjectInputStream ois = new ObjectInputStream(fis);) {
  229.  
  230.             // int i = 0;
  231.             while (fis.available() > 0) {
  232.                 /*
  233.                  * afterSerialization.pracownicy_[i] = (PracownikNew)
  234.                  * ois.readObject(); afterSerialization.zatrudnienie_++; i++;
  235.                  */
  236.                 afterSerialization.dodajPracownika((PracownikNew) ois.readObject());
  237.             }
  238.         } catch (IOException | ClassNotFoundException e) {
  239.             System.out.println(e);
  240.         }
  241.  
  242.         return afterSerialization;
  243.     }
  244. }
  245.  
  246. public class ZarzadzanieKadrami {
  247.  
  248.     public static void main(String[] args) throws IOException, ClassNotFoundException {
  249.         String fileName = "empl.txt";
  250.         String fileNameOut = "serial.txt";
  251.         Kadry kadry = new Kadry();
  252.         Kadry kadry2 = new Kadry();
  253.         System.out.println(kadry.sredniZarobek());
  254.         kadry.importujZPlikuTekstowego(fileName);
  255.         System.out.println(Arrays.toString(kadry.dajDzialy()));
  256.         kadry.pisz();
  257.  
  258.         kadry.dodajPracownikaInteraktywnie();
  259.         kadry.pisz();
  260.         System.out.println(Arrays.toString(kadry.dajDzialy()));
  261.         kadry.zapiszDoPliku(fileNameOut);
  262.         kadry2 = kadry.odczytajZPliku(fileNameOut);
  263.         kadry2.pisz();
  264.         System.out.println(Arrays.toString(kadry2.dajDzialy()));
  265.         /*
  266.          * System.out.println(kadry.getZatrudnienie());
  267.          * System.out.println(kadry.sredniZarobek());
  268.          * System.out.println(kadry.sredniZarobek(3));
  269.          * System.out.println(Arrays.toString(kadry.dajDzialy()));
  270.          * kadry.dodajPracownikaInteraktywnie();
  271.          * System.out.println(kadry.getZatrudnienie());
  272.          * System.out.println(kadry.sredniZarobek());
  273.          */
  274.     }
  275. }
Advertisement
Add Comment
Please, Sign In to add comment