GRY-Online.pl --> Archiwum Forum

Osoby programujace w javie proszone o pomoc

06.01.2008
16:59
[1]

.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.

06.01.2008
22:39
[2]

.coma. [ Pretorianin ]

up

09.01.2008
12:35
smile
[3]

.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;



________________________________________________

© 2000-2026 GRY-OnLine S.A.