Compare commits

...

5 Commits

Author SHA1 Message Date
8572368494 Prześlij pliki do '' 2021-10-27 11:19:58 +02:00
4cf257cacf Usuń 'use-case-1.md' 2021-10-27 11:19:28 +02:00
c010f22c2d Prześlij pliki do '' 2021-10-27 11:18:12 +02:00
f61e322a51 Prześlij pliki do '' 2021-10-13 13:57:46 +02:00
237e46af23 init 2021-10-13 00:50:25 +02:00
7 changed files with 342 additions and 0 deletions

22
AbstractProduct.java Normal file
View File

@ -0,0 +1,22 @@
package apo;
public class AbstractProduct {
private String name;
private double price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}

11
Drink.java Normal file
View File

@ -0,0 +1,11 @@
package apo;
public class Drink extends AbstractProduct {
private int capacity;
Drink (String name, double price, int capacity) {
setName(name);
setPrice(price);
this.capacity = capacity;
}
}

9
HotMeals.java Normal file
View File

@ -0,0 +1,9 @@
package apo;
public class HotMeals extends AbstractProduct{
HotMeals (String name, double price) {
setName(name);
setPrice(price);
}
}

7
Main.java Normal file
View File

@ -0,0 +1,7 @@
package apo;
public class Main {
public static void main(String[] args) {
new VendingMachine().init();
}
}

9
Sweets.java Normal file
View File

@ -0,0 +1,9 @@
package apo;
public class Sweets extends AbstractProduct{
Sweets (String name, double price) {
setName(name);
setPrice(price);
}
}

190
VendingMachine.java Normal file
View File

@ -0,0 +1,190 @@
package apo;
import java.util.ArrayList;
import java.util.Scanner;
public class VendingMachine {
private final ArrayList<Drink> drinks = new ArrayList<>();
private final ArrayList<Sweets> sweets = new ArrayList<>();
private final ArrayList<HotMeals> hotMeals = new ArrayList<>();
private final Scanner scanner = new Scanner(System.in);
public void init() {
initProducts();
start();
}
private void start() {
System.out.println("======= MENU =======");
System.out.println("- NAPOJE -");
for (Drink drink : drinks) {
System.out.println(drink.getName() + ", " + drink.getPrice() + "zl");
}
System.out.println();
System.out.println("- SLODYCZE -");
for (Sweets sweet : sweets) {
System.out.println(sweet.getName() + ", " + sweet.getPrice() + "zl");
}
System.out.println();
System.out.println("- CIEPLE POSILKI -");
for (HotMeals hotMeal : hotMeals) {
System.out.println(hotMeal.getName() + ", " + hotMeal.getPrice() + "zl");
}
System.out.println();
System.out.println("Prosze wybrac produkt");
String userChoice = scanner.nextLine();
paymentMethod(userChoice);
}
private void paymentMethod(String userChoice) {
String payment;
switch (userChoice) {
case "Coca-cola" -> {
System.out.println("WYBRANO: " + userChoice + ", " + drinks.get(0).getPrice());
System.out.println("Prosze wybrac metode platnosci: GOTOWKA / KARTA");
payment = scanner.nextLine();
if (payment.equals("gotowka")) {
double cashFromUser = scanner.nextDouble();
cash(cashFromUser, drinks.get(0).getPrice());
} else if (payment.equals("karta")) {
creditCard();
}
}
case "Sprite" -> {
System.out.println("WYBRANO: " + userChoice + ", " + drinks.get(1).getPrice());
System.out.println("Prosze wybrac metode platnosci: GOTOWKA / KARTA");
payment = scanner.nextLine();
if (payment.equals("gotowka")) {
double cashFromUser = scanner.nextDouble();
cash(cashFromUser, drinks.get(1).getPrice());
} else if (payment.equals("karta")) {
creditCard();
}
}
case "Woda" -> {
System.out.println("WYBRANO: " + userChoice + ", " + drinks.get(2).getPrice());
System.out.println("Prosze wybrac metode platnosci: GOTOWKA / KARTA");
payment = scanner.nextLine();
if (payment.equals("gotowka")) {
double cashFromUser = scanner.nextDouble();
cash(cashFromUser, drinks.get(2).getPrice());
} else if (payment.equals("karta")) {
creditCard();
}
}
case "Snickers" -> {
System.out.println("WYBRANO: " + userChoice + ", " + sweets.get(0).getPrice());
System.out.println("Prosze wybrac metode platnosci: GOTOWKA / KARTA");
payment = scanner.nextLine();
if (payment.equals("gotowka")) {
double cashFromUser = scanner.nextDouble();
cash(cashFromUser, sweets.get(0).getPrice());
} else if (payment.equals("karta")) {
creditCard();
}
}
case "Bounty" -> {
System.out.println("WYBRANO: " + userChoice + ", " + sweets.get(1).getPrice());
System.out.println("Prosze wybrac metode platnosci: GOTOWKA / KARTA");
payment = scanner.nextLine();
if (payment.equals("gotowka")) {
double cashFromUser = scanner.nextDouble();
cash(cashFromUser, sweets.get(1).getPrice());
} else if (payment.equals("karta")) {
creditCard();
}
}
case "Lion" -> {
System.out.println("WYBRANO: " + userChoice + ", " + sweets.get(2).getPrice());
System.out.println("Prosze wybrac metode platnosci: GOTOWKA / KARTA");
payment = scanner.nextLine();
if (payment.equals("gotowka")) {
double cashFromUser = scanner.nextDouble();
cash(cashFromUser, sweets.get(2).getPrice());
} else if (payment.equals("karta")) {
creditCard();
}
}
case "Spaghetti" -> {
System.out.println("WYBRANO: " + userChoice + ", " + hotMeals.get(0).getPrice());
System.out.println("Prosze wybrac metode platnosci: GOTOWKA / KARTA");
payment = scanner.nextLine();
if (payment.equals("gotowka")) {
double cashFromUser = scanner.nextDouble();
cash(cashFromUser, hotMeals.get(0).getPrice());
} else if (payment.equals("karta")) {
creditCard();
}
System.out.println("W magazynie zostało: " + updateStorage());
}
case "Zupa" -> {
System.out.println("WYBRANO: " + userChoice + ", " + hotMeals.get(1).getPrice());
System.out.println("Prosze wybrac metode platnosci: GOTOWKA / KARTA");
payment = scanner.nextLine();
if (payment.equals("gotowka")) {
double cashFromUser = scanner.nextDouble();
cash(cashFromUser, hotMeals.get(1).getPrice());
} else if (payment.equals("karta")) {
creditCard();
}
System.out.println("W magazynie zostało: " + updateStorage());
}
case "Frytki z kurczakiem" -> {
System.out.println("WYBRANO: " + userChoice + ", " + hotMeals.get(2).getPrice());
System.out.println("Prosze wybrac metode platnosci: GOTOWKA / KARTA");
payment = scanner.nextLine();
if (payment.equals("gotowka")) {
double cashFromUser = scanner.nextDouble();
cash(cashFromUser, hotMeals.get(2).getPrice());
} else if (payment.equals("karta")) {
creditCard();
}
System.out.println("W magazynie zostało: " + updateStorage());
}
default -> System.out.println("NIEZNANY PRODUKT!");
}
}
private int updateStorage() {
int storage = 100;
return storage - 1;
}
private void cash(double cashFromUser, double price) {
if (cashFromUser == price) {
System.out.println("GOTOWKA PRZYJETA!");
System.out.println("Prosze odebrac produkt");
} else if (cashFromUser < price) {
System.out.println("Za malo gotowki!");
} else {
System.out.println("Reszta: " + (cashFromUser - price) + "zl");
}
}
private void creditCard() {
System.out.println("TRANSAKCJA ZAAKCEPTOWANA!");
System.out.println("Prosze odebrac produkt");
}
private void initProducts() {
drinks.add(new Drink("Coca-cola", 3.99, 500));
drinks.add(new Drink("Sprite", 2.99, 330));
drinks.add(new Drink("Woda", 1.49, 500));
sweets.add(new Sweets("Snickers", 1.99));
sweets.add(new Sweets("Bounty", 2.49));
sweets.add(new Sweets("Lion", 1.49));
hotMeals.add(new HotMeals("Spaghetti", 9.99));
hotMeals.add(new HotMeals("Zupa", 8.99));
hotMeals.add(new HotMeals("Frytki z kurczakiem", 19.99));
}
}

94
use-case-4.md Normal file
View File

@ -0,0 +1,94 @@
Use Case 4 Płatność gotówką
=====================
Aktor podstawowy: Klient
Główni odbiorcy i oczekiwania względem systemu
-----------------------------------------------
- Odbiorca1 oczekiwania ...
- Odbiorca2 oczekiwania ...
- Odbiorca3 oczekiwania ...
Warunki wstępne
----------------
...
Warunki końcowe
----------------
...
Scenariusz główny (ścieżka podstawowa)
---------------------------------------
1. Krok 1 scenariusza głównego. !-- np. 1. Klient wkłada kartę do bankomatu. --
2. Krok 2 scenariusza głównego. !-- np. 2. System prosi o podanie pinu. --
3. Krok 3 scenariusza głównego. !-- np. 3. Klient wprowadza pin.) --
4. ....
Rozszerzenia (ścieżki alternatywne)
------------------------------------
a. nazwa rozszerzenia !-- rozszerzenie a może wystąpić w dowolnym kroku --
1. krok pierwszy rozszerzenia a
2. krok drugi rozszerzenia a
3a. nazwa rozszerzenia !-- np. 3a. Nieprawidłowy pin --
1. krok pierwszy rozszerzenia 3a
2. krok drugi rozszerzenia 3a
2a. nazwa scenariusza alternatywnego dla kroku 2 rozszerzenia 3a
1. Krok pierwszy.
2. Krok drugi.
3. ...
2b. nazwa scenariusza alternatywnego dla kroku 2 rozszerzenia 3a
1. Krok pierwszy.
2. ...
3. krok trzeci rozszerzenia 3a
4. krok czwarty rozszerzenia 3a
3b. nazwa rozszerzenia
1. krok pierwszy rozszerzenia 3b
2. krok drugi rozszerzenia 3b
3. ...
3-4a. nazwa rozszerzenia !-- rozszerzenia 3-4a. może wystąpić w kroku 3 lub 4 --
Wymagania specjalne
--------------------
- ... !--np. Interfejs użytkownika musi być dostępny w języku polskim i angielskim. --
- ...
- ...
Wymagania technologiczne oraz ograniczenia na wprowadzane dane
---------------------------------------------------------------
2a. ...
2b. ...
3a. ... !-- np. 3a. Pin składa się z 4 cyfr. --
Kwestie otwarte
----------------
- ... !-- np. Czy dopuszczamy autoryzację z wykorzystaniem rozpoznawania twarzy--
- ...
- ...