Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
8572368494 | |||
4cf257cacf | |||
c010f22c2d | |||
f61e322a51 | |||
237e46af23 |
22
AbstractProduct.java
Normal file
22
AbstractProduct.java
Normal 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
11
Drink.java
Normal 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
9
HotMeals.java
Normal 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
7
Main.java
Normal file
@ -0,0 +1,7 @@
|
||||
package apo;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
new VendingMachine().init();
|
||||
}
|
||||
}
|
9
Sweets.java
Normal file
9
Sweets.java
Normal 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
190
VendingMachine.java
Normal 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
94
use-case-4.md
Normal 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--
|
||||
|
||||
- ...
|
||||
|
||||
- ...
|
Loading…
Reference in New Issue
Block a user