kubabebe

ZarzadzanieKadrami Final? :P

Jul 25th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.89 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.             if (placaCheck(placa)) System.out.println("Płaca spoza zakresu. Wpisz kwotę z zakresu 0 - " + MAKSYMALNA_PLACA);
  80.         } while (placaCheck(placa));
  81.  
  82.         System.out.print("Płeć: ");
  83.         char plec;
  84.         do {
  85.             plec = Character.toUpperCase(in.next().charAt(0));
  86.             if (plecCheck(plec)) System.out.println("Nieprawidłowy znak płci. Podaj M lub K.");
  87.         } while (plecCheck(plec));
  88.  
  89.         System.out.print("Dział: ");
  90.         int dzial;
  91.         do {
  92.             dzial = in.nextInt();
  93.             if (dzialCheck(dzial)) System.out.println("Nieprawidłowy numer działu. Wybierz liczbe z zakresu 1 - 5");
  94.         } while (dzialCheck(dzial));
  95.  
  96.         PracownikNew pracownik = new PracownikNew(imie, nazwisko, placa, plec, dzial);
  97.         dodajPracownika(pracownik);
  98.  
  99.     }
  100.  
  101.     private boolean placaCheck(double placa) {
  102.             return placa < 0 || placa >= MAKSYMALNA_PLACA;
  103.         }
  104.  
  105.     private boolean plecCheck(char plec) {
  106.         return plec != PLEC_M && plec != PLEC_K;
  107.     }
  108.  
  109.     private boolean dzialCheck(int dzial) {
  110.         return dzial < DZIAL_MIN || dzial > DZIAL_MAX;
  111.             }
  112.  
  113.     public void importujZPlikuTekstowego(String fileName) throws IOException {
  114.  
  115.         try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
  116.             String line = reader.readLine();
  117.             while (line != null) {
  118.                 dodajPracownika(lineOnEmployee(line));
  119.                 line = reader.readLine();
  120.             }
  121.  
  122.         }
  123.  
  124.     }
  125.  
  126.     public PracownikNew lineOnEmployee(String line) {
  127.         String[] splitLine = line.split("\\s");
  128.         return new PracownikNew(splitLine[0], splitLine[1], Double.parseDouble(splitLine[2]), splitLine[3].charAt(0),
  129.                 Integer.parseInt(splitLine[4]));
  130.  
  131.     }
  132.  
  133.     public int getZatrudnienie() {
  134.         return zatrudnienie_;
  135.     }
  136.  
  137.     public double sredniZarobek() {
  138.         double sumaZarobek = 0;
  139.         for (int i = 0; i < zatrudnienie_; i++) {
  140.             sumaZarobek += pracownicy_[i].getPlaca();
  141.         }
  142.         if (zatrudnienie_ == 0) {
  143.             System.out.println("Brak pracowników w firmie");
  144.             return 0;
  145.         } else {
  146.             return (sumaZarobek / zatrudnienie_);
  147.         }
  148.     }
  149.  
  150.     public double sredniZarobek(int dzial) {
  151.         double sumaZarobek = 0;
  152.         int liczbaPracownikowWDziale = 0;
  153.         for (int i = 0; i < zatrudnienie_; i++) {
  154.             if (pracownicy_[i].getDzial() == dzial) {
  155.                 sumaZarobek += pracownicy_[i].getPlaca();
  156.                 liczbaPracownikowWDziale++;
  157.             }
  158.         }
  159.         if (liczbaPracownikowWDziale == 0) {
  160.             System.out.println("Brak pracowników we wskazanym dziale");
  161.             return 0;
  162.         } else {
  163.             return (sumaZarobek / liczbaPracownikowWDziale);
  164.         }
  165.     }
  166.  
  167.     public int[] dajDzialy() {
  168.  
  169.         HashSet<Integer> dzialySet = new HashSet<Integer>();
  170.         for (int i = 0; i < zatrudnienie_; i++) {
  171.             dzialySet.add(pracownicy_[i].getDzial());
  172.         }
  173.         int[] dzialy = new int[dzialySet.size()];
  174.         int index = 0;
  175.         for (int i : dzialySet) {
  176.             dzialy[index++] = i;
  177.         }
  178.         return dzialy;
  179.  
  180.     }
  181.  
  182.     public void pisz() {
  183.         System.out.println("|            Imie |             Nazwisko |      Placa |Plec|Dzial|");
  184.         for (int i = 0; i < zatrudnienie_; i++) {
  185.             System.out.println(pracownicy_[i]);
  186.         }
  187.         System.out.format("Średnia płaca w firmie: %.2f\n", sredniZarobek());
  188.         for (int dzial : dajDzialy()) {
  189.            
  190.                 System.out.format("Średnia płaca w dziale %d wynosi: %.2f\n", dzial, sredniZarobek(dzial));
  191.            
  192.         }
  193.     }
  194.  
  195.     public void zapiszDoPliku(String fileName, Kadry kadry) throws FileNotFoundException {
  196.  
  197.         try (FileOutputStream fos = new FileOutputStream(fileName);
  198.                 ObjectOutputStream oos = new ObjectOutputStream(fos);) {
  199.  
  200.                 oos.writeObject(kadry);
  201.                
  202.         } catch (IOException e) {
  203.             System.out.println(e);
  204.         }
  205.  
  206.     }
  207.  
  208.     public Kadry odczytajZPliku(String fileName) {
  209.  
  210.         Kadry afterSerialization = null;
  211.         try (FileInputStream fis = new FileInputStream(fileName); ObjectInputStream ois = new ObjectInputStream(fis);) {
  212.            
  213.                 afterSerialization= (Kadry) ois.readObject();
  214.            
  215.         } catch (IOException | ClassNotFoundException e) {
  216.             System.out.println(e);
  217.         }
  218.  
  219.         return afterSerialization;
  220.     }
  221. }
  222.  
  223. public class ZarzadzanieKadrami {
  224.  
  225.     public static void main(String[] args) throws IOException, ClassNotFoundException {
  226.         String fileName = "empl.txt";
  227.         String fileNameOut = "serial.txt";
  228.         Kadry kadry = new Kadry();
  229.         Kadry kadry2 = new Kadry();
  230.         System.out.println(kadry.sredniZarobek());
  231.         kadry.importujZPlikuTekstowego(fileName);
  232.         System.out.println(Arrays.toString(kadry.dajDzialy()));
  233.         kadry.pisz();
  234.  
  235.         kadry.dodajPracownikaInteraktywnie();
  236.         kadry.pisz();
  237.         System.out.println(Arrays.toString(kadry.dajDzialy()));
  238.         kadry.zapiszDoPliku(fileNameOut, kadry);
  239.         kadry2 = kadry.odczytajZPliku(fileNameOut);
  240.         kadry2.pisz();
  241.         System.out.println(Arrays.toString(kadry2.dajDzialy()));
  242.         /*
  243.          * System.out.println(kadry.getZatrudnienie());
  244.          * System.out.println(kadry.sredniZarobek());
  245.          * System.out.println(kadry.sredniZarobek(3));
  246.          * System.out.println(Arrays.toString(kadry.dajDzialy()));
  247.          * kadry.dodajPracownikaInteraktywnie();
  248.          * System.out.println(kadry.getZatrudnienie());
  249.          * System.out.println(kadry.sredniZarobek());
  250.          */
  251.     }
  252. }
Advertisement
Add Comment
Please, Sign In to add comment