Automat do napojów

0

Witam, jestem po jednym wykładzie z programowania C# z powodu panującej epidemii. A za tydzień muszę oddać projekt za który nie mam pojęcia jak się zabrać.
Mianowicie muszę zrobić "prosty" program konsolowy w Visual Studio C#
Jest to automat do napojów.

  • Można kupić napoje o różnej wielkości i cenie.
  • Każdy napój ma swoją cenę.
  • Za jednym razem można kupić kilka napojów.
  • Ma być możliwości wyboru sposobu płatności Karta/Gotówka
  • Wydawanie reszty

Nie proszę tutaj o zrobienie projektu za mnie, bo chciałbym się czegoś nauczyć, lecz naprowadzenia mnie w jakikolwiek sposób lub podpowiedzenia jak mogę to zrobić.

0

To zależy co było na wykładzie. To ma być obiektowe, czy nie?

0
somekind napisał(a):

To zależy co było na wykładzie. To ma być obiektowe, czy nie?

Wykładowca przedstawiał podstawy jak Console.Writeline();
Mieliśmy zadania w domu typu zrobić program który wylicza deltę, czy BMI. Typowe podstawy, więc ciężko to określić.

0

No czyli bez obiektów, czyli po prostu masz przy użyciu Console.WriteLine i podobnych wyświetlić jakieś menu, typu:

1. cola - 5zł
2. sprite - 10 zł
3. piwo - 20 zł

I spytać użytkownika o to, co wybiera. Od użytkownika z klawiatury wczytać opcje, które wybiera, zsumować koszt i wyświetlić.

0
somekind napisał(a):

No czyli bez obiektów, czyli po prostu masz przy użyciu Console.WriteLine i podobnych wyświetlić jakieś menu, typu:

1. cola - 5zł
2. sprite - 10 zł
3. piwo - 20 zł

I spytać użytkownika o to, co wybiera. Od użytkownika z klawiatury wczytać opcje, które wybiera, zsumować koszt i wyświetlić.

To akurat się domyślam. Wypisać możliwe opcje z automatu, typu wybierz napój z przypisaną do niego wartością, ewentualne wyjście poprzez Console.WriteLine();,
Potem poprzez (chyba) Console.ReadLine wczytać od użytkownika opcje którą się wybiera.
Ale co zrobić jeśli chce zakończyć ew. wybór, lub kontynuować dalej zakupy ?

0

No tu już potrzebujesz pętli, np. while bądź do-while, na której koniec będziesz pytał użytkownika, czy chce się bawić dalej.
Tylko pytanie, czy pętle były na zajęciach i już Cię obowiązują.

0

Najprościej będzie chyba to zrobić w ten sposób że wyświetlisz menu (tak jak pisali koledzy wyżej) i niech użytkownik wprowadza wartości po przecinku:

1, 2, 3, 5, 5...

i wtedy sobie robisz po prostu:

var wybory = Console.ReadLine().Trim().Split(',');

W ten sposób uzyskasz tablicę z wyborami użytkownika, i jedyne co będzie trzeba zrobić to jakiś switch i pętelka ;)

Po przetworzeniu tych danych zwracasz ile ma zapłacić, analogicznie robisz sposób płatności i na koniec możesz się zapytać czy chce zakończyć program. Sposobów na zrobienie tego jest milion :D

0
TheSpecial1 napisał(a):

Najprościej będzie chyba to zrobić w ten sposób że wyświetlisz menu (tak jak pisali koledzy wyżej) i niech użytkownik wprowadza wartości po przecinku:

1, 2, 3, 5, 5...

i wtedy sobie robisz po prostu:

var wybory = Console.ReadLine().Trim().Split(',');

W ten sposób uzyskasz tablicę z wyborami użytkownika, i jedyne co będzie trzeba zrobić to jakiś switch i pętelka ;)

Po przetworzeniu tych danych zwracasz ile ma zapłacić, analogicznie robisz sposób płatności i na koniec możesz się zapytać czy chce zakończyć program. Sposobów na zrobienie tego jest milion :D

Myślę że bardziej intuicyjnym wyjściem będzie wybranie produktu, a następnie program pyta czy wybiera coś jeszcze czy nie. To bez tworzenia listy się raczej nie obejdzie.

0

Napisałeś kiedykolwiek w życiu jakiś program i czy umiesz pisać algorytmy ?

0
Zimny Krawiec napisał(a):

Napisałeś kiedykolwiek w życiu jakiś program i czy umiesz pisać algorytmy ?

Jestem na pierwszym roku zaocznie bez wcześniejszego obycia z klepaniem kodu, myślę że taka odpowiedź wystarczy.

0

Najpierw rozrysuj jak taki program ma działać a ja ci go napiszę

0
Zimny Krawiec napisał(a):

Najpierw rozrysuj jak taki program ma działać a ja ci go napiszę

Póki co zrobiłem tyle co w załączniku.
Teraz kombinuje jak wszystko wrzucić w switcha, aby program zbierał informacje na temat produktów, a następnie dodał ich wartości do siebie w celu uzyskania ceny i ew. reszty.

A pisanie programu to kusząca propozycja, ale chciałbym coś z tego wyciągnąć.

0

Nie zrozumieliśmy się . Ja ci nie każe pisać programu tylko napisz co ten program ma robić , tak krok po kroku i co ma zawierać

1

Musisz sobie najpierw wyobrazić w głowie albo na papierze jak ten program ma wyglądać i działać . Przepisanie go na konkretny język to jest pryszcz

0
Zimny Krawiec napisał(a):

Nie zrozumieliśmy się . Ja ci nie każe pisać programu tylko napisz co ten program ma robić , tak krok po kroku i co ma zawierać

  1. Wyświetlenie listy 9 napojów każdy o innej cenie.
  2. Użytkownik za jednym razem może kupić kilka napojów.
  3. Ma mieć możliwość wyboru metody płatności karta lub monetami. (10 gr, 20gr, 50 gr, 1zł, 2zł, 5zł)
  4. Ma wyświetlać resztę przy płatności gotówką.
  5. Powinien wszystkie transakcje zapisywać w pliku (jakie napoje i w jakiej ilości i za jaką kwotę)
0

Tak sobie Pan Profesor wymyślił na wyższą ocenę końcową z tym zapisywaniem w pliku. Dlatego napisałem Powinien, lecz nie musi.

0

i jak tam? Udało Ci się coś już napisać?

0
Grzegorz Świdwa napisał(a):

i jak tam? Udało Ci się coś już napisać?

Coś mam, zatrzymałem się na pętli do-while.
Nie wiem co zrobić żeby po wybraniu jakiegoś produktu z listy, jeszcze raz się ona pojawiła. Samo wyjście z pętli ogarnąłem przez while (napoje != "0");

0

Po prostu daj wyświetlanie produktów w pętli, a nie przed nią. :)

0
int n = 0;
do
{
    Console.WriteLine(n);
    n = n+1;
}while(n < 10)

Wszystko pomiędzy znakiem "{" a znakiem "}" będzie się wykonywać w kółko dopóki po każdej skończonej sekwencji pętli sprawdzanie warunku

while(n < 10)

da Ci prawdę.

0
Grzegorz Świdwa napisał(a):
int n = 0;
do
{
    Console.WriteLine(n);
    n = n+1;
}while(n < 10)

Wszystko pomiędzy znakiem "{" a znakiem "}" będzie się wykonywać w kółko dopóki po każdej skończonej sekwencji pętli sprawdzanie warunku

while(n < 10)

da Ci prawdę.

Błedy w załączniku, nie wiem może jestem jakiś głupi :D

0

W załączniku jest cała pętla

0

Wrzucaj kod w poście, a nie jako screen.
Przede wszystkim, zgrupuj wypisywanie pozycji poza switchem.
Console.WriteLine(cos)
Console.WriteLine(cos)
Console.WriteLine(cos)
Console.WriteLine(cos)

Niech to będzie pierwszy krok w pętli.
Następnie zapytaj użytkownika o to co wybiera, wczytaj dane i w zależności od tego co wybrał, wypisz coś na konsolę(w instrukcji switch).

0
Tenonymous napisał(a):

Wrzucaj kod w poście, a nie jako screen.
Przede wszystkim, zgrupuj wypisywanie pozycji poza switchem.
Console.WriteLine(cos)
Console.WriteLine(cos)
Console.WriteLine(cos)
Console.WriteLine(cos)

Niech to będzie pierwszy krok w pętli.
Następnie zapytaj użytkownika o to co wybiera, wczytaj dane i w zależności od tego co wybrał, wypisz coś na konsolę(w instrukcji switch).

Opanowałem kłopot z pętlą.

            string napoje;
            do
            {

                napoje = Console.ReadLine();
                switch (napoje)
                {
                    case "1":
                        Console.WriteLine("1. PEPSI 0,25ml / CENA : 1,90 zł");
                        break;

                    case "2":
                        Console.WriteLine("2. MIRINDA 0,25ml / CENA : 1,70zł");
                        break;

                    case "3":
                        Console.WriteLine("3. 7UP 0,25ml / CENA : 1,50 zł");
                        break;

                    case "4":
                        Console.WriteLine("4. PEPSI 0,5l / CENA : 2,90 zł");
                        break;

                    case "5":
                        Console.WriteLine("5. MIRINDA 0,5l / CENA : 2,70 zł");
                        break;

                    case "6":
                        Console.WriteLine("6. 7UP 0,5l / CENA : 2,50 zł");
                        break;

                    case "7":
                        Console.WriteLine("7. PEPSI 1l / CENA : 3,90 zł");
                        break;

                    case "8":
                        Console.WriteLine("8. MIRINDA 1l / CENA : 3,70 zł");
                        break;

                    case "9":
                        Console.WriteLine("9. 7UP 1l / CENA 3,50 zł");
                        break;

                    case "0":
                        Console.WriteLine("0. PRZECHODZĘ DO PŁATNOŚCI");
                        break;

                }

            } while (napoje != "0");
        }

I zastaniam się, w jaki sposób mogę wrzucić wybrane przez użytkownika produkty w listę. I co gorsze jak przypisać wartość np. do Console.WriteLine("7. PEPSI 1l / CENA : 3,90 zł"); żeby program wiedział że akurat to kosztuje 3,90

0

Najpierw na ekranie wyświetl same napoje : numer - nazwa - cena
potem
Wyświetl pytanie : Co chcesz kupić . Klient podaje cyfrę
Potem drugie pytanie : Ile sztuk
Następnie instrukcja switch wyszukuje cenę
Potem po wyjściu z instrukcji switch oblicz kwotę końcową : cena x liczba sztuk
Następnie całą transakcję zapisz to pliku tekstowego - tak jak na paragonie za sklepu

0

Dane pobierasz za pomocą instrukcji:

int wybor;
int.TryParse(Console.ReadLine(), out wybor);

albo

int wybor;
int.Parse(Console.ReadLine());

Ta druga instrukcja spowoduje wyjątek , jeśli konwersja się nie powiedzie
Metoda TryParse próbuje skonwertować tekst na liczbę typu int . Jeśli operacja się powiedzie to zwracana jest wartość true w przeciwnym razie - false
Możesz całą instrukcję wstawić np. do instrukcji if np.


            int wybor;
          
            Console.WriteLine("Co chcesz kupić?");
            if(int.TryParse(Console.ReadLine(), out wybor))
            {

                // wykonaj instrukcję switch jeśli klient wprowadził liczbę
            }
            else
            {
                // błąd 
            }
0

https://pastebin.com/0xqU93Bm - Część kodu do poczytania

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