Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sklepkolekcje;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Scanner;
- import java.util.Set;
- class Pozycja implements Serializable {
- String nazwaTowaru;
- int ileSztuk;
- double cena;
- final static int RABAT_I_STOPNIA_MIN = 5;
- final static int RABAT_I_STOPNIA_MAX = 10;
- final static int RABAT_II_STOPNIA_MIN = 11;
- final static int RABAT_II_STOPNIA_MAX = 20;
- final static int RABAT_III_STOPNIA_MIN = 21;
- final static double RABAT_I_STOPNIA = 0.05;
- final static double RABAT_II_STOPNIA = 0.10;
- final static double RABAT_III_STOPNIA = 0.15;
- public Pozycja(String nazwaTowaru, int ileSztuk, double cena) {
- this.nazwaTowaru = nazwaTowaru;
- this.ileSztuk = ileSztuk;
- this.cena = cena;
- }
- public double obliczWartosc() {
- return ileSztuk * cena;
- }
- public double obliczWartoscZRabatem() {
- if (ileSztuk >= RABAT_I_STOPNIA_MIN && ileSztuk <= RABAT_I_STOPNIA_MAX) {
- return obliczWartosc() * (1 - RABAT_I_STOPNIA); // rabat 5%
- } else if (ileSztuk >= RABAT_II_STOPNIA_MIN && ileSztuk <= RABAT_II_STOPNIA_MAX) {
- return obliczWartosc() * (1 - RABAT_II_STOPNIA); // rabat 10%
- } else if (ileSztuk >= RABAT_III_STOPNIA_MIN) {
- return obliczWartosc() * (1 - RABAT_III_STOPNIA); // rabat 15%
- } else {
- return obliczWartosc();
- }
- }
- @Override
- public String toString() {
- return String.format("%-20s %10.2f zł %4d szt. %10.2f zł (Rabat: %.2f)", nazwaTowaru, cena, ileSztuk,
- obliczWartosc(), obliczWartosc() - obliczWartoscZRabatem());
- }
- }
- class Zamowienie implements Serializable {
- List<Pozycja> pozycje = new ArrayList<Pozycja>();
- int maksRozmiar = 10;
- public Zamowienie(int maksRozmiar) {
- this.maksRozmiar = maksRozmiar;
- }
- public void dodajPozycje(Pozycja p) {
- if (!pozycje.contains(p)) {
- if (pozycje.size() < maksRozmiar) {
- pozycje.add(p);
- } else {
- System.out.println("Element nie dodany. Przekroczono maksymalny romiar zamówienia");
- }
- } else {
- for (Pozycja i : pozycje) {
- if (i.nazwaTowaru.equals(p.nazwaTowaru)) {
- i.ileSztuk += p.ileSztuk;
- }
- }
- }
- }
- public double obliczWartosc() {
- double wartosc = 0;
- double wartoscZRabatem = 0;
- for (Pozycja i : pozycje) {
- wartosc += i.obliczWartosc();
- wartoscZRabatem += i.obliczWartoscZRabatem();
- }
- System.out.format("Wartość zamówienia: %.2f zł\n", wartosc);
- return wartoscZRabatem;
- }
- public void usunPozycje(int indeks) {
- pozycje.remove(indeks - 1);
- }
- public void edytujPozycje(int indeks) {
- Scanner scaner = new Scanner(System.in);
- System.out.println("Edycja pozycji " + indeks + ".");
- System.out.println(pozycje.get(indeks - 1));
- System.out.println("Podaj nazwę towaru: ");
- String nazwa = scaner.next();
- System.out.println("Podaj ilość sztuk");
- String sztuki;
- do {
- sztuki = scaner.next();
- } while (sztukiCheck(sztuki));
- if (nazwaDuplicateCheck(nazwa)) { // pozycje.contains(nazwa)
- System.out.println(
- "W zamówieniu znaleziono produkt " + nazwa + ", ilość sztuk zostanie zwiększkona o" + sztuki + ".");
- nazwaDuplicateChange(nazwa, Integer.valueOf(sztuki));
- usunPozycje(indeks);
- } else {
- System.out.println("Podaj cenę: ");
- String cena;
- do {
- cena = scaner.next();
- } while (cenaCheck(cena));
- pozycje.set(indeks - 1, new Pozycja(nazwa, Integer.valueOf(sztuki), Double.valueOf(cena)));
- }
- }
- private boolean nazwaDuplicateCheck(String nazwaTowaru) {
- for (Pozycja i : pozycje) {
- if (nazwaTowaru.equals(i.nazwaTowaru)) {
- return true;
- }
- }
- return false;
- }
- private void nazwaDuplicateChange(String nazwa, int sztuki) {
- for (Pozycja i : pozycje) {
- if (nazwa.equals(i.nazwaTowaru)) {
- i.ileSztuk += sztuki;
- }
- }
- }
- private boolean isDouble(String doubleNumber) {
- try {
- Double.parseDouble(doubleNumber);
- return true;
- } catch (NumberFormatException e) {
- return false;
- }
- }
- private boolean cenaCheck(String doubleNumber) {
- if (!isDouble(doubleNumber) || Double.valueOf(doubleNumber) < 0)
- System.out.println("Nieprawidłowy format lub przedział");
- return !isDouble(doubleNumber) || Double.valueOf(doubleNumber) < 0;
- }
- private boolean sztukiCheck(String intNumber) {
- if (!isInteger(intNumber) || Integer.valueOf(intNumber) < 0)
- System.out.println("Nieprawidłowy format lub przedział");
- return !isInteger(intNumber) || Integer.valueOf(intNumber) < 0;
- }
- private boolean isInteger(String intNumber) {
- try {
- Integer.parseInt(intNumber);
- return true;
- } catch (NumberFormatException e) {
- return false;
- }
- }
- @Override
- public String toString() {
- System.out.println("Zamówienie:");
- for (Pozycja i : pozycje) {
- System.out.println(i);
- }
- return String.format("Wartość zamówienia z rabatem: %.2f zł", obliczWartosc());
- }
- public static void zapiszZamowienie(Zamowienie z, String nazwaPliku) {
- try (FileOutputStream fos = new FileOutputStream(nazwaPliku);
- ObjectOutputStream oos = new ObjectOutputStream(fos);) {
- oos.writeObject(z);
- } catch (IOException e) {
- System.out.println(e);
- }
- }
- public static Zamowienie wczytajZamowienie(String nazwaPliku) {
- Zamowienie afterSerialization = null;
- try (FileInputStream fis = new FileInputStream(nazwaPliku);
- ObjectInputStream ois = new ObjectInputStream(fis);) {
- afterSerialization = (Zamowienie) ois.readObject();
- } catch (IOException | ClassNotFoundException e) {
- System.out.println(e);
- }
- return afterSerialization;
- }
- }
- public class Sklep {
- public static void main(String[] args) {
- String nazwaPliku = "koko.txt";
- Pozycja p1 = new Pozycja("Chleb", 1, 3.5);
- // System.out.println(p1);
- Pozycja p2 = new Pozycja("Cukier", 3, 4);
- // System.out.println(p2);
- Pozycja p3 = new Pozycja("Kakałko", 2, 7.5);
- Pozycja p4 = new Pozycja("Masło", 2, 5);
- Pozycja p5 = new Pozycja("Mleko", 3, 2.5);
- Zamowienie z = new Zamowienie(20);
- z.dodajPozycje(p1);
- z.dodajPozycje(p2);
- z.dodajPozycje(p3);
- z.dodajPozycje(p4);
- z.dodajPozycje(p5);
- System.out.println(z);
- z.dodajPozycje(p1);
- System.out.println(z);
- z.edytujPozycje(2);
- System.out.println(z);
- z.usunPozycje(1);
- System.out.println(z);
- Zamowienie.zapiszZamowienie(z, nazwaPliku);
- Zamowienie afterSerialization = null;
- afterSerialization = Zamowienie.wczytajZamowienie(nazwaPliku);
- System.out.println(afterSerialization);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment