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.