Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- import java.util.Scanner;
- import java.io.*;
- class PracownikNew implements Serializable {
- private String imie;
- private String nazwisko;
- private double placa;
- private char plec;
- private int dzial;
- public PracownikNew(String imie, String nazwisko, double placa, char plec, int dzial) {
- this.imie = imie;
- this.nazwisko = nazwisko;
- this.placa = placa;
- this.plec = plec;
- this.dzial = dzial;
- }
- @Override
- public String toString() {
- return String.format("| %15s | %20s | %10.2f | %c | %d |", imie, nazwisko, placa, plec, dzial);
- }
- public boolean czyPracujeWDziale(int departamentNumber) {
- return this.dzial == departamentNumber;
- }
- public double getPlaca() {
- return this.placa;
- }
- public int getDzial() {
- return this.dzial;
- }
- }
- class Kadry implements Serializable {
- private static final int MAKSYMALNE_ZATRUDNIENIE = 100;
- private static final double MAKSYMALNA_PŁACA = 100000;
- private static final int LICZBA_DZIALOW = 5;
- private static final char PLEC_M1 = 'm';
- private static final char PLEC_M2 = 'M';
- private static final char PLEC_K1 = 'k';
- private static final char PLEC_K2 = 'K';
- private PracownikNew[] pracownicy_;
- private int zatrudnienie_;
- public Kadry() {
- pracownicy_ = new PracownikNew[MAKSYMALNE_ZATRUDNIENIE];
- zatrudnienie_ = 0;
- }
- public void dodajPracownika(PracownikNew pracownik) {
- if (zatrudnienie_ < MAKSYMALNE_ZATRUDNIENIE) {
- pracownicy_[zatrudnienie_] = pracownik;
- zatrudnienie_++;
- } else {
- System.out.println("Za dużo pracowników");
- }
- }
- public void dodajPracownikaInteraktywnie() {
- System.out.println("Podaj dane pracownika:");
- Scanner in = new Scanner(System.in);
- System.out.print("Imie: ");
- String imie = in.next();
- System.out.print("Nazwisko: ");
- String nazwisko = in.next();
- System.out.print("Placa: ");
- double placa;
- do {
- placa = in.nextDouble();
- if (placa < 0 || placa >= MAKSYMALNA_PŁACA)
- System.out.println("Płaca spoza zakresu. Wpisz kwotę z zakresu 0 - 100000");
- } while (placa < 0 || placa >= MAKSYMALNA_PŁACA);
- System.out.print("Płeć: ");
- char plec;
- do {
- plec = in.next().charAt(0);
- if (plec != PLEC_M1 && plec != PLEC_M2 && plec != PLEC_K1 && plec != PLEC_K2)
- System.out.println("Nieprawidłowy znak płaci. Podaj M lub K.");
- } while (plec != PLEC_M1 && plec != PLEC_M2 && plec != PLEC_K1 && plec != PLEC_K2);
- System.out.print("Dział: ");
- int dzial;
- do {
- dzial = in.nextInt();
- if (dzial != 1 && dzial != 2 && dzial != 3 && dzial != 4 && dzial != 5)
- System.out.println("Nieprawidłowy numer działu. Wybierz liczbe z zakresu 1 - 5");
- ;
- } while (dzial != 1 && dzial != 2 && dzial != 3 && dzial != 4 && dzial != 5);
- // in.close(); //dopytać czemu nie zamykać
- PracownikNew pracownik = new PracownikNew(imie, nazwisko, placa, plec, dzial);
- System.out.println(pracownik.toString());
- dodajPracownika(pracownik);
- }
- public void importujZPlikuTekstowego(String fileName) throws IOException {
- BufferedReader file = null;
- try {
- file = new BufferedReader(new FileReader(fileName));
- String line = file.readLine();
- String[] helper = new String[5];
- while (line != null) {
- int j = 0;
- Arrays.fill(helper, "");
- for (int i = 0; i < line.length(); i++) {
- if (line.charAt(i) != ' ') {
- helper[j] += line.charAt(i);
- } else {
- j++;
- }
- }
- PracownikNew pracownik = new PracownikNew(helper[0], helper[1], Double.parseDouble(helper[2]),
- helper[3].charAt(0), Integer.parseInt(helper[4]));
- // System.out.println(pracownik.toString());
- dodajPracownika(pracownik);
- line = file.readLine();
- }
- } finally {
- if (file != null) {
- file.close();
- }
- }
- }
- public int getZatrudnienie() {
- return zatrudnienie_;
- }
- public double sredniZarobek() {
- double sumaZarobek = 0;
- for (int i = 0; i < zatrudnienie_; i++) {
- sumaZarobek += pracownicy_[i].getPlaca();
- }
- return (sumaZarobek / zatrudnienie_);
- }
- public double sredniZarobek(int dzial) {
- double sumaZarobek = 0;
- int j = 0;
- for (int i = 0; i < zatrudnienie_; i++) {
- if (pracownicy_[i].getDzial() == dzial) {
- sumaZarobek += pracownicy_[i].getPlaca();
- j++;
- }
- }
- if (j == 0) {
- System.out.println("Brak pracowników we wskazanym dziale");
- return -1;
- } else {
- return (sumaZarobek / j);
- }
- }
- public int[] dajDzialy() {
- int[] dzialy = new int[LICZBA_DZIALOW];
- int k = 0;
- for (int j = 0; j < LICZBA_DZIALOW; j++)
- for (int i = 0; i < zatrudnienie_; i++) {
- if (j == pracownicy_[i].getDzial()) {
- dzialy[k] = pracownicy_[i].getDzial();
- k++;
- i = zatrudnienie_;
- }
- }
- return dzialy;
- }
- public void pisz() {
- System.out.println("| Imie | Nazwisko | Placa |Plec|Dzial|");
- for (int i = 0; i < zatrudnienie_; i++) {
- System.out.println(pracownicy_[i]);
- }
- System.out.format("Średnia płaca w firmie: %.2f\n", sredniZarobek());
- int[] dzialy = dajDzialy();
- for (int i = 0; i < LICZBA_DZIALOW; i++) {
- if (dzialy[i] != 0) {
- System.out.format("Średnia płaca w dziale %d wynosi: %.2f\n", dzialy[i], sredniZarobek(dzialy[i]));
- }
- }
- }
- public void zapiszDoPliku(String fileName) {
- FileOutputStream fos = null;
- ObjectOutputStream oos = null;
- try {
- fos = new FileOutputStream(fileName);
- oos = new ObjectOutputStream(fos);
- int i = 0;
- while (pracownicy_[i] != null) {
- oos.writeObject(pracownicy_[i]);
- i++;
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- if (oos != null)
- oos.close();
- } catch (IOException e) {
- }
- try {
- if (fos != null)
- fos.close();
- } catch (IOException e) {
- }
- }
- }
- public Kadry odczytajZPliku(String fileName) {
- Kadry afterSerialization = new Kadry();
- FileInputStream fis = null;
- ObjectInputStream ois = null;
- try {
- int i = 0;
- fis = new FileInputStream(fileName);
- ois = new ObjectInputStream(fis);
- while (fis.available() > 0) {
- afterSerialization.pracownicy_[i] = (PracownikNew) ois.readObject();
- afterSerialization.zatrudnienie_++;
- i++;
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } finally {
- try {
- if (ois != null)
- ois.close();
- } catch (IOException e) {
- }
- try {
- if (fis != null)
- fis.close();
- } catch (IOException e) {
- }
- }
- return afterSerialization;
- }
- }
- public class ZarzadzanieKadrami {
- public static void main(String[] args) throws IOException, ClassNotFoundException {
- String fileName = "empl.txt";
- String fileNameOut = "serial.txt";
- Kadry kadry = new Kadry();
- Kadry kadry2 = new Kadry();
- kadry.importujZPlikuTekstowego(fileName);
- kadry.pisz();
- // kadry.dodajPracownikaInteraktywnie();
- kadry.pisz();
- kadry.zapiszDoPliku(fileNameOut);
- kadry2 = kadry.odczytajZPliku(fileNameOut);
- kadry2.pisz();
- /*
- * System.out.println(kadry.getZatrudnienie());
- * System.out.println(kadry.sredniZarobek());
- * System.out.println(kadry.sredniZarobek(3));
- * System.out.println(Arrays.toString(kadry.dajDzialy()));
- * kadry.dodajPracownikaInteraktywnie();
- * System.out.println(kadry.getZatrudnienie());
- * System.out.println(kadry.sredniZarobek());
- */
- }
- }
- /* Do pliku "empl.txt":
- Jan Kowalski 2010 M 3
- Agnieszka Cuber 2900 K 3
- Adam Nowak 1100 M 4
- Sylwia Zych 2100 K 3
- Beata Dudek 1900 K 4
- */
Advertisement
Add Comment
Please, Sign In to add comment