Program do obsługi zamówień, pomoc w napisaniu

Odpowiedz Nowy wątek
2015-02-19 23:33
aguska1604
0

Witam,

Mam problem z pewnym zadaniem, jako że dopiero zaczynam swoją przygodę z programowaniem chciałabym prosić o pomoc/ wyjaśnienie jak rozwiązać w pełni to zadanie:

Napisać program do obsługi zamówień. Program powinien składać się z dwóch
klas: Zamowienie oraz Pozycja , przy czym każde zamówienie zawierać może
jedną lub więcej pozycji.
Klasa Pozycja powinna zawierać następujące pola:
• nazwaTowaru (String)
• ileSztuk (int) – liczba zamówionych sztuk
• cena (double) – cena pojedynczej sztuki
oraz metody:
• konstruktor z parametrami umożliwiającymi ustalenie wartości pól klasy,
• metodę double obliczWartosc() zwracającą wartość pozycji zamówienia,
• metodę String toString() zwracającą łańcuch w formacie: nazwa towaru
(20 znaków), cena (10 znaków), liczba sztuk (4 znaki), wartość zamówienia
(10 znaków), przykład:
Cukier 4,00 zł 3 szt. 12,00 zł
Klasa Zamowienie powinna zawierać następujące pola:
• pozycje (tablica obiektów kl. Pozycja) – pozycje składowe zamówienia,
• ileDodanych (int) – liczba pozycji w zamówieniu,
• maksRozmiar (int) – maksymalna liczba pozycji w zamówieniu
oraz metody:
• konstruktor bezparametrowy – maksRozmiar ustalany na wartość 10,
• konstruktor z parametrem określającym maksymalną liczbę pozycji w zamó-
wieniu,
• metodę void dodajPozycje(Pozycja p) , która dodaje podaną pozycję do
zamówienia,
• metodę double obliczWartosc() zwracającą wartość zamówienia
metodę String toString() , która zwraca łańcuch zawierający spis pozycji
zamówienia oraz łączną wartość zamówienia.

Tutaj przedstawię to co zdołałam zrobić :

public class Pozycja
    {

        String nazwaTowaru;
        int ileSztuk; //lb.zamówionych sztuk
        double cena; //cena pojedyńczej sztuki
        double wartosc;
        String a;

        Pozycja(String nazwaTowaru, int ileSztuk, double cena)
        {
            this.nazwaTowaru = nazwaTowaru;
            this.ileSztuk = ileSztuk;
            this.cena = cena;
        }
        //metoda double obliczWartosc() zwracającą wartość pozycji zamówienia,
        public double obliczWartosc()
        {
            wartosc = ileSztuk * cena;
            return wartosc;
        }
        //metodę String toString() zwracającą łańcuch w formacie: nazwa towaru
        //(20 znaków), cena (10 znaków), liczba sztuk (4 znaki), wartość zamówienia
        //(10 znaków).

        public String toString(String nazwaTowaru, String cena,
                String ileSztuk, String wartoscZamowienia)
        {
            this.nazwaTowaru = nazwaTowaru;
            this.cena = Double.Parse(cena);
            this.ileSztuk = int.Parse(ileSztuk);
            this.wartosc = Double.Parse(wartoscZamowienia);
            a = nazwaTowaru + " " + cena + " " + ileSztuk + " " + wartosc;
            return a;
        }

    }

 public class Zamowienie
    {

        int ileDodanych;
        int maxRozmiar;
       Pozycja[] pozycje = new Pozycja[10]; //?

        Zamowienie()
        {
            maxRozmiar = 10;
        }

        Zamowienie(int maxRozmiar)
        {
            this.maxRozmiar = maxRozmiar;
        }

        public void DodajPozycje(Pozycja[] p) //??
        {
            this.pozycje = p; //??
        }

        public double ObliczWartosc()
        {
            double wartoscZam = 10; //??
            return wartoscZam;
        }

       // public String toString()
       // {

       // }
    }

Nie bardzo wiem jak powinny wyglądać metody klasy Zamówienie.. byłabym bardzo wdzięczna za pomoc.

edytowany 1x, ostatnio: msm, 2016-12-13 18:26
Tytuł wątku. Gdyby nie to że są już odpowiedzi to wątek by od razu poszedł do kosza. I tagi <code>. - msm 2015-02-20 00:41

Pozostało 580 znaków

2015-02-20 00:08
Empej
0

Skorzystaj z klasy Array lub lepiej Listy - List<pozycja> Pozycje = new List<pozycja>() i potem przy dodawaniu pozycji: Pozycja.Add(new Pozycja(){właściwości}

Pozostało 580 znaków

2015-02-20 00:27
0

Te konstruktory moim zdaniem powinny wyglądać tak:

         Pozycja[] pozycje; //?
         int maxRozmiar;
        public Zamowienie() : this(10)
        {
        }

        public Zamowienie(int maxRozmiar)
        {
            this.maxRozmiar = maxRozmiar;
            pozycje = new Pozycja[maxRozmiar];
        }

Metoda DodajPozycje powinna przeszukać tablicę i w pierwszym wolnym indexie dodać obiekt

if(pozycje[i] ==nul)
    pozycje[i] = new Pozycja();

ObliczWartość wydaje mi sie że też powinna iterować po tablicy dodając do siebie pozycja.obliczWartość();

Też poleciłbym listę zamiast tablicy, ale to pewnie musi być tak jak w zadaniu. Jestem ciekaw kto wymyślił że nazwy metod mają być z małej litery i pola zamiast właściwości.

edytowany 4x, ostatnio: dam1an, 2015-02-20 00:33
"Jestem ciekaw kto wymyślił że nazwy metod mają być z małej litery i pola zamiast właściwości." pewnie ktoś kto ostatni raz programował w C# 1.0 i nie poznał nowszych wersji. Mnie najbardziej bawi(a może smuci?) to - "napisać metodę String toString() zwracającą łańcuch", czyli rozumiem, że nie chodzi o nadpisanie ToString() tylko o napisanie swojego toString()... - some_ONE 2015-02-20 00:48
@some_ONE a co w tym złego? serio pytam bo mnie też tak uczą, żeby metody i pola klasy pisać z małej i notacją węgierską a nazwy klas i stałych zaczynać od dużej litery z tym, że w klasach dalej jedziemy notacją węgierską a w stałych używamy '_'. i co z tym toString() ? : > edit: jakich znaczników użyć w komentarzu, żeby oznaczyć kod? - pedegie 2015-02-20 01:07
@some_ONE: co ma do tego C# 1.0? gdyby w 1.0 była inna konwencja to by się to ciągnęło do dziś, a nie widać we Frameworku żadnych metod z małej litery. - Azarien 2015-02-20 01:23
@pedegie Taka konwencja po prostu. W bibliotekach wbudowanych w .Net masz metody z dużych liter więc pisz tak samo. Co do toString, to tego nie zauważyłem, a powinno być override ToString. Kod umieszczasz pomiędzy ` masz ten znak pod tyldą ~ na klawiaturze. - dam1an 2015-02-20 09:10
@dam1an zamuliłem - ja w Javie pisze a tu temat o .NET :P - pedegie 2015-02-20 12:40

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0