.coma. [ Pretorianin ]
Osoby programujace w javie proszone o pomoc
Musze napisac projekt i nie bardzo moge dac sobie z nim rade
Zdefiniuj zestaw klas oraz metod pozwalający zarządzać firmie towarami w magazynie. Tworzony system powinien umożliwiać
przeprowadzenie następujących operacji:
· definiowanie nowego magazynu
· przyjęcie określonego towaru (w odpowiedniej ilości, typie i wadze) do wskazanego magazynu (możliwe jest podzielenie
przyjmowanego towaru na mniejsze części w celu dopełnienia slotów)
· usunięcie określonego towaru ze wskazanego magazynu
· wydanie sprzedawcy określonej ilości towaru z magazynu (jeśli sprzedawca zażądał więcej towaru niż mamy w
jednym slocie można wydać także towar z innego slotu np. sprzedawca potrzebuje 10 jednostek wina z magazynu 1, gdzie
wino jest przechowywane w slocie numer 1 (6 jednostek), slocie 3 (2 jednostki), slocie 4 (3 jednostki), co w sumie daje nam
11 jednostek w magazynie, wydając 10 jednostek zostaje nam 1 jednostka w magazynie)
· wydruk stanu magazynowego (możliwość sortowania po: ilości towaru, nazwie oraz typie) na magazyn do pliku tekstowego
i na ekran
· przesunięcie międzymagazynowe towaru
· rejestrowanie sprzedawcy
· wydruk historii zamówień wskazanego sprzedawcy według daty wydania towarów
Założenia systemu:
· maksymalnie można zdefiniować 5 magazynów w firmie
· każdy magazyn składa się z unikalnej nazwy oraz określonej liczby slotów, którą podajemy definiując magazyn, każdy ze slotów
może przechowywać towary tylko jednego typu (np. jeśli w slocie numer 1 mamy 10 jednostek masła o wadze 5 kg to
możemy ten slot dopełnić tylko i wyłącznie artykułem spożywczym – tak aby go zapełnić ale nie przekraczając przy tym ograniczeń
wagowych i ilościowych na slot)
· slot może przechowywać maksymalnie 20 jednostek towaru, które nie mogą przekroczyć w sumie 50 kg
· towar jest identyfikowany przez nazwę, dodatkowo posiada wagę oraz liczbę jednostek
· wyróżniamy trzy typy towarów
o artykuły spożywcze (posiadają dodatkowo informację o dacie przydatności do spożycia)
o chemia gospodarcza (posiadają dodatkowo typ: proszek, płyn, kostka)
o alhohole (posiadają dodatkowo rodzaj alkoholu: piwo, wino, burbon, whiskey, wódka)
· sprzedawca identyfikowany jest przez unikalną nazwę
· aplikacja MUSI ZAPAMIĘTYWAĆ SWÓJ STAN pomiędzy uruchomieniami
· mile widziane będzie menu aplikacji (np. w trybie tekstowym z listą dostępnych opcji)
· stosunek jednostka towaru do wagi dla towarów jest stały dla wszystkich magazynów (jeśli do magazynu zostanie przyjęty po raz pierwszy określony towar to wyznacza on stosunek jednostka/waga, np. jeśli do magazynu przyjmujemy 2 jednostki masła o wadze 3 kg to otrzymujemy stosunek 1/1.5 (1 jednostka waży 1,5 kg), przyjmując po raz kolejny ten sam towar stosunek wagi musi zostać zachowany czyli możemy przyjąć 4 jednostki o wadze 6 kg a nie możemy przyjąć 4 jednostek o wadze 5 kg. Kiedy wydamy cały towar z magazynu możemy wtedy przyjąć towar o innym parametrach)
· aplikacja powinna być zabezpieczona przed niedozwolonymi akcjami i stosownie informować o nich użytkownika (np. próba dodania
towaru do magazynu gdzie nie ma wolnego miejsca, wydanie sprzedawcy większej ilości towaru niż jest na stanie, usunięcie nieistniejącego
towaru z magazynu, itp.)
Narazie mam:
Klase abstrakcyjna towar, po której dziedzicza klasy: artykuły spozywcze, chemia gospodarcza i alkohole
Klase data która jest wykorzystywana przez klase arykuły spozywcze i bedzie wykorzystywana przez klase zamówienie.
Co do reszty to narazie tylko przemyslenia nie majace odzwierciedlenia w kodzie:
Wydaje mi sie, ze trzeba utworzyć klasy:
Sprzedawca
posiadajaca pola
-nazwa
-zamówienie
ListaTowarów
kolekcja obiektów typu towar
Zamównie
pola:
-data
-lista towarów
Slot
jest dynamiczna lista towarów
zawiera metody:
sumujaca wartość pól towar.waga elementów listy
metoda która przy dodawaniu elementu do listy sprawdza czy suma wartosci wagi i wartosci wagaTowarów pochodzacej z wywołania metody sumujacej nie pzrekracza 50kg
-2 powyższe metody także dla liczby jednostek
metoda CzyPełny zwracajaca true jezeli metody sumujase zwróca wartość 50kg/20 jednostek
metoda sprawdzajaca ile jednostek i kg mozna jeszcze zmiesicic
-gettery: liczba wolnych jednostek, liczba wolnych kg, typ,
-metoda zwracajaca ilosc jednostek i kg podanego towaru (wyszukuje dane elementy na liscie i sumuje ich wartość liczba jednostek i waga)
Magazyn
pola:
-nazwa
-liczba slotów
powinna to być tablica slotów???
metody:
-sprawdzajaca ile jednostek mzoe byc dodanych danego typu
-metoda sprawdzajaca ile kg moze być dodanych danego typu
Czy dobrze z tym mysle czy nie bardzo?
I teraz moje watpliwosci:
jak zrobic, zeby w przypadku braku miejsca w jednym slocie towar był dodawany do kolejnego slotu danego typu?
-jak zrealizować:
1." stosunek jednostka towaru do wagi dla towarów jest stały dla wszystkich magazynów (jeśli do magazynu zostanie przyjęty po raz pierwszy określony towar to wyznacza on stosunek jednostka/waga, np. jeśli do magazynu przyjmujemy 2 jednostki masła o wadze 3 kg to otrzymujemy stosunek 1/1.5 (1 jednostka waży 1,5 kg), przyjmując po raz kolejny ten sam towar stosunek wagi musi zostać zachowany czyli możemy przyjąć 4 jednostki o wadze 6 kg a nie możemy przyjąć 4 jednostek o wadze 5 kg. Kiedy wydamy cały towar z magazynu możemy wtedy przyjąć towar o innym parametrach)"
2."jeśli sprzedawca zażądał więcej towaru niż mamy w jednym slocie można wydać także towar z innego slotu np. sprzedawca potrzebuje 10 jednostek wina z magazynu 1, gdzie wino jest przechowywane w slocie numer 1 (6 jednostek), slocie 3 (2 jednostki), slocie 4 (3 jednostki), co w sumie daje nam 11 jednostek w magazynie, wydając 10 jednostek zostaje nam 1 jednostka w magazynie)"
3.możliwość przeniesiania towaru pomiedzy magazynami
4.drukowanie stanu magazynu.
Gdyby znalazł sie ktoś chetny do pomocy na email moge przesłac to, co juz mam.
.coma. [ Pretorianin ]
up

.coma. [ Pretorianin ]
Mógłby mi ktoś napisac, czemu zwalnianie pracownika nie chce działac?
import java.util.*;
public class Firma1
‹
HashSet<Pracownik> prac;
Firma1()
‹
prac = new HashSet<Pracownik>();
›
int sumaWyplat()
‹
int suma=0;
for (Pracownik p : prac) suma += p.placa();
return suma;
›
int sumaWyplatRobotnikow()
‹
int suma=0;
for (Pracownik p : prac)
‹
if (p instanceof Robotnik) suma+=p.placa();
›
return suma;
›
int sumaWyplatUrzednikow()
‹
int suma=0;
for (Pracownik p : prac)
‹
if (p instanceof Urzednik) suma+=p.placa();
›
return suma;
›
int liczbaUrzednikow()
‹
int liczba=0;
Iterator<Pracownik> iterator = prac.iterator();
while(iterator.hasNext())
‹
Pracownik element = iterator.next();
if (element instanceof Urzednik) liczba++;
›
return liczba;
›
int liczbaRobotnikow()
‹
int liczba=0;
Iterator<Pracownik> iterator = prac.iterator();
while(iterator.hasNext())
‹
Pracownik element = iterator.next();
if (element instanceof Robotnik) liczba++;
›
return liczba;
›
void przyjmijUrzednika(String nazw, float e)
‹
Urzednik urzednik1 = new Urzednik(nazw, e, 0);
prac.add(urzednik1);
›
void przyjmijRobotnika(String nazw, float e, int liczbaH, int nadH)
‹
Robotnik robotnik1 = new Robotnik(nazw, e, liczbaH, nadH);
prac.add(robotnik1);
›
void zwolnijPracownika(String nazw)
‹
for (Pracownik p : prac)
‹
if (p.nazwisko.equals(nazw)) prac.remove(p);
›
›
void wydrukujListePlac()
‹
for (Pracownik p : prac)
‹
System.out.println(p.nazwisko+" "+p.placa());
›
›
›
______________________________________________________
public abstract class Pracownik
‹
String nazwisko;
float etat;
Pracownik(String nazwisko, float etat)
‹
this.nazwisko=nazwisko;
this.etat=etat;
›
public abstract int placa();
public float dajEtat()
‹
return etat;
›
public String dajNazwisko()
‹
return nazwisko;
›
›
_______________________________________________________
public class Urzednik extends Pracownik
‹
int placa, procentPremii;
int podstawa;
int premia;
Urzednik(String nazwisko, float etat, int ProcentPremii)
‹
super(nazwisko, etat);
this.procentPremii=procentPremii;
›
public void ustawPodstawe(int podstawa)
‹
this.podstawa=podstawa;
›
public int dajPodstawe()
‹
return podstawa;
›
public int placa()
‹
return (int)dajEtat()*dajPodstawe()+(procentPremii/100)*premia;
›
›
__________________________________________________________________
public class Robotnik extends Pracownik
‹
int liczbaH, nadH;
static int stawkaH;
static int premiaH;
Robotnik(String nazwisko, float etat, int liczbaH, int nadH)
‹
super(nazwisko, etat);
this.liczbaH=liczbaH;
this.nadH=nadH;
›
public void ustawPremiaH(int PremiaH)
‹
this.premiaH=premiaH;
›
public void ustawStawkaH(int stawkaH)
‹
this.stawkaH=stawkaH;
›
public int placa()
‹
return stawkaH*liczbaH+premiaH*nadH;
›
›
________________________________________________