Compare commits

..

5 Commits
master ... JQB

Author SHA1 Message Date
Yes
71f2aba3a8 Add prototype 2019-10-14 22:19:27 +02:00
337a30db50 Zaktualizuj 'README.md' 2019-10-14 19:39:09 +00:00
194b966906 Usuń '1' 2019-10-14 19:38:36 +00:00
c2733ec6d9 Zaktualizuj '1' 2019-10-08 12:55:36 +00:00
b5f049c8f0 Dodaj 'peepeepoopoo' 2019-10-08 12:54:25 +00:00
20 changed files with 93 additions and 454 deletions

View File

@ -1 +1 @@
APO
Jakub Góralczyk

View File

@ -1,48 +0,0 @@
Opis skrócony przypadków użycia
===============================
Aktorzy procesu i ich cele
--------------------------
Aktor Cel
----------- -----------------------------
Klient Zakup produktu
Magazynier Uzupełnienie produktu
Magazynier Usunięcie zepsutego produktu
Serwisant Naprawa automatu
System obsługi płatności elektronicznej przyjmowanie płatności kartą
Przypadki użycia
----------------
### Use case 1: Zakup produktu pakowanego
Klient wybiera produkt i otrzymuje informacje o cenie. Klient dokonuje płatności gotówką. Automat wydaje wybrany produkt.
### Use case 2: Zakup produktu pakowanego za pomocą karty
Klient wybiera produkt i otrzymuje informacje o cenie. Klient dokonuje płatności kartą(UC 8). System obsługi płatności elektronicznej pobiera pieniądze z karty. Automat wydaje wybrany produkt.
### Use case 3: Zakup przygotowywanego produktu
Klient wybiera produkt i otrzymuje informacje o cenie. Klient dokonuje płatności gotówką. Automat przygotowuje produkt. Automat wydaje wybrany produkt.
### Use case 4: Zakup przygotowywanego produktu za pomocą karty
Klient wybiera produkt i otrzymuje informacje o cenie. Klient dokonuje płatności kartą (UC 8). System obsługi płatności elektronicznej pobiera pieniądze z karty Automat przygotowuje produkt. Automat wydaje wybrany produkt.
### Use case 5:Uzupełnienie automatu
W przypadku braku konkretnego produktu automat wysyła komunikat do magazyniera. Magazynier po otrzymaniu komunikatu przyjeżdża i uzupełnia automat.
### Use case 6: Wymiana przeterminowanego produktu
W przypadku przeterminowanego produktu automat wysyła komunikat do magazyniera. Magazynier po otrzymaniu komunikatu przyjeżdża i usuwa przeterminowany produkt.
### Use case 7: Naprawa automatu
Automat wysyła komunikat do serwisanta. Serwisant po otrzymaniu komunikatu przyjeżdża i naprawia automat.
### Use case 8: Płatność kartą
Klient wprowadza kartę. System obsługi płatności elektronicznej weryfikuję poprawność karty i potwierdza płatność.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,57 +0,0 @@
Zdarzenia systemowe
===================
Use case 1: Zakup produktu pakowanego
-----------------
- wybór produktu pakowanego
- wprowadzenie monety
- odbiór produktu
- anulowanie zakupu
Use case 2: Zakup produktu pakowanego za pomocą karty
-----------------
- wybór produktu pakowanego
- przyłożenie karty
- odbiór produktu
Use case 3: Zakup przygotowywanego produktu
-----------------
- wybór produktu przygotowywanego
- wprowadzenie monet
- odbiór produktu
- anulowanie zakupu
Use case 4: Zakup przygotowywanego produktu za pomocą karty
-----------------
- wybór produktu przygotowywanego
- przyłożenie karty
- odbiór produktu
Use case 5: Uzupełnienie automatu
-----------------
- przyłożenie identyfikatora magazyniera
- zamknięcie drzwi automatu
Use case 6: Wymiana przeterminowanego produktu
-----------------
- przyłożenie identyfikatora magazyniera
- zamknięcie drzwi automatu
Use case 7: Naprawa automatu
-----------------
- przyłożenie identyfikatora serwisanta
- zamknięcie drzwi automatu
Use case 8: Płatność kartą
-----------------
- przyłożenie karty

View File

@ -1,97 +0,0 @@
Use Case 1: Zakup produktu pakowanego, płatność gotówka
=====================
**Aktor podstawowy:** Klient
Główni odbiorcy i oczekiwania względem systemu:
-----------------------------------------------
- Klient: Chce otrzymać zakupiony prodkt i resztę. Ocekuje, że cały proces przebiegnie sprawnie.
- Właściciel automatu: Oczekuje, że zostanie wydana taka ilość produktów za jaką klient zapłacił oraz, że automat wyda klientowi odpowiednią resztę.
Warunki wstępne:
----------------
Automat jest sprawny i wzystkie produkty są uzupełnione.
Warunki końcowe:
----------------
Zakup zosał poprawnie przeprowadzony. Klient dokonał zapłaty i otrzymał wybrany produkt.
Scenariusz główny (ścieżka podstawowa):
---------------------------------------
1. Klient wybiera produkt, który chce kupić.
2. Automat podaje cenę wybranego produktu i jego skład.
3. Klient dokonuje płatności gotówką.
4. System zapisuje informacje o dacie, godzinie i danych transakcji, system aktualizuje informacje o stanie automatu.
5. Automat wydaje reszte i podaje zakupiony produkt.
Rozszerzenia (ścieżki alternatywne):
------------------------------------
*a. W dowolnym czasie, dotyczy sytuacji kiedy system zawiesza się:
1. Załącza sie system awaryjny.
2. Transakcja zostaje przerwana.
3. Wpłacone pieniądze zostają zwrócone klientowi.
4. System zostaje zresetowany.
1a. Wybór przez klienta produktu nie isteniejącego, lub którego nie ma na stanie:
1. wyswietlenie informacji o błędzie i prośby o ponowny wybór na ekranie.
2a. Brak ceny produktu w systemie:
1. system informuje obraku danych o cenie i odmawia możliwości zakupu produktu.
2b. Brak danych o składzie danego produktu w systemie:
1. system informuje o braku danych o składzie i alergenach.
2. Klient kupuje produkt.
2a. Klient rezygnuje z zakupu, zakup anulowany, transakcja przerwana.
3a. Klient dokonuje płatności obcą walutą lub nie obsugiwanym nominałem:
1. System nie przyjmuje pieniędzy, zwraca je klientowi.
3b. Klient ma niewystarczająca ilość pieniędzy aby zapłącić za wybrany produkt:
1. Klient klika przycisk "anuluj zakup".
1a. Po upłunięciu 90 sekund od wybrania produktu, system przechodzi do pkt 4b2.
2. System zwraca pieniądze, przerywa transakcje.
5a. W automacie nie ma pieniędzy aby wydać reszte:
1. System informuje klienta o braku pieniędzy do wydania reszty
2. Klient zgadza sie na zapłacenie wyższej ceny.
2a. Klient rezygnuje z zakupu, klika przycisk "anuluj zakupu", system przerywa transakcje.
5b. Produkt blokuje się:
1. System informuje klienta o błędzie.
2. Automat zwraca wpłącone pieniądze.
3. System wzywa pomoc techniczną.
Wymagania specjalne:
--------------------
- System posoada informacje o składzie produktu i o alergenach.
- Możliwość interfejsu wielojęzycznego.
Wymagania technologiczne oraz ograniczenia na wprowadzane dane:
---------------------------------------------------------------
*a. Wszystkie dane wprowadzone w trakcie zakupu objete są wspólną transakcją bazodanową.
*b. Panel dotykowy, słóżący do wyboru produktu i anulowania zakupu.
*c. Ekran do wyświatlania ceny i informacji o prodkucie (skład), informacje muszą być czytalne z odległości 1m.
2a. Identyfikator produktu wprowadzony z panela dotykowego przez klienta (identyfikator w postaci dwucyfrowej od 00 do 99)
*5. Wydanie prodktu i reszy po dokonaniu płatności przez klienta w mniej niż 30 sekund w 90% przypadków.
Kwestie otwarte:
----------------
- obsługa automatu przez osoby niewidome?

View File

@ -1,81 +0,0 @@
Use case 2: Zakup produktu pakowanego za pomocą karty
=====================
**Aktor podstawowy: Klient**
Główni odbiorcy i oczekiwania względem systemu:
-----------------------------------------------
- Klient: Oczekuje wydania wybranego produktu po danej cenie.
- Właściciel automatu : Oczekuje ze automat nie wyda za dużo produktów.
Warunki wstępne:
----------------
Klient posiada przy sobie kartę płatniczą. W automacie znajduja sie produkty.
Warunki końcowe:
----------------
Klient dokonał zapłaty. Produkt został wydany klientowi.
Scenariusz główny (ścieżka podstawowa):
---------------------------------------
1. Klient wybiera numer produktu.
2. System informuje klienta o cenie.
3. Klient dokonje płatności kartą.
4. Automat komunikuje sie z systemem obsługi płatności elektronicznej pobiera pieniądze z karty.
5. Automat wydaje wybrany produkt.
6. Klient odbiera wybrany produkt.
Rozszerzenia (ścieżki alternatywne):
------------------------------------
*a. W dowolnej sytuacji kiedy system zawiesza się:
Niezbędne jest aby wszystkie kluczowe dane mogły zostać odtworzone w dowolnym momencie ścieżki
podstawowej.
1. System wyświetla informację o błędzie, zapisuje błąd i resetuje się
2. System odtwarza stan przed zawieszeniem się
*b. Brak produktu:
1. System wyświetla informacje o braku produktu.
2a. Błędny identyfikator produktu:
1. System sygnalizuje bład i prosi o podanie prawidłowego identyfikatora.
5a. System nie może dokonać transakcji:
1.System sygnalizuje bład i prosi o powtórzenie procesu płatnosci.
5b. Klient ma niewystarczająca ilość pieniędzy aby zapłącić za wybrany produkt:
1. System informuje o braku wystarczającej ilości srodków i przerywa tranzakcję.
6b. Produkt blokuje sie podczas wydawania:
1. System sygnalizuje bład i automatycznie wysyła informację o błedzie do techsupportu.
Wymagania specjalne:
--------------------
- System posiada informacje o składzie produktu i o alergenach.
- Możliwość interfejsu wielojęzycznego.
Wymagania technologiczne oraz ograniczenia na wprowadzane dane:
---------------------------------------------------------------
2a. Panel dotykowy, służący do wyboru produktu i anulowania zakupu.
4a. Czytnik kart płatniczych.
1. Autoryzacja musi być dokonana w czasie 10 sekund w 95% przypadków.
3a. Ekran do wyświatlania ceny i informacji o produkcie, informacje muszą być czytalne z odległości 1m.
Kwestie otwarte:
----------------
- Obsługa automatu przez osoby niewidome?
- ...
- ...

View File

@ -1,72 +0,0 @@
Use Case 3: Zakup przygotowywanego produktu
=====================
**Aktor podstawowy:** Klient
Główni odbiorcy i oczekiwania względem systemu:
-----------------------------------------------
- Klient: Otrzyma wybrany produkt za podaną cene.
- Właściciel automatu: Wyda dokładnie jeden produkt za odpowiednią cene.
Warunki wstępne:
----------------
- W automacie są dostępne produkty.
- Klient posiada pieniądze na wybrany produkt.
Warunki końcowe:
----------------
- Klient otrzymał wybrany produkt
- W automacie są pieniądze za zakupiony produkt
Scenariusz główny (ścieżka podstawowa):
---------------------------------------
1. Klient wybiera produkt podając jego numer.
2. Automat wyświetla cene na ekranie.
3. Klient dokonuje płatności.
4. Automat wydaje reszte.
5. Automat przygotowuje produkt do wydania.
6. Automat wydaje gotowy produkt.
7. Klient odbiera produkt.
Rozszerzenia (ścieżki alternatywne):
------------------------------------
*a. W przypadku awarii dostawy prądu po ponownym uruchomieniu automat wczytuje stan z ostatniego zapisu z przed awarii.
1. Automat uruchamia sie.
2. Automat wczytuje stan z ostatniego zapisu.
2a. Klient podał niewłaściwy numer produktu.
1. Automat prosi o ponowne wpisanie numeru produktu.
4a. Klient zapłacił nieprzyjmowaną walutą.
1. Automat oddaje monete i nie zwięksa środków.
8a. Klient nie odebrał produktu przez 20 sekund.
1 Automat wydaje dźwięk przypominający o gotowym produkcie.
Wymagania specjalne:
--------------------
- Ekran ma być czytelny odległości 1m.
Wymagania technologiczne oraz ograniczenia na wprowadzane dane:
---------------------------------------------------------------
2a. Panel dotykowy do wprowadania numeru produktu.
3a. Ekran do wyświetlania ceny.
4a. System do przyjmowania i wydawania pieniędzy.
8a. Głośnik
Kwestie otwarte:
----------------
- Obsługa automatu przez osoby niewidome.

View File

@ -1,98 +0,0 @@
Use case 5: Uzupełnienie automatu
=====================
**Aktor podstawowy:** Magazynier
Główni odbiorcy i oczekiwania względem systemu:
-----------------------------------------------
- Magazynier: Oczekuje ,że nie będzie musiał ręcznie wpisywać stanów ilości produktów.
- Właściciel automatu: Oczekuje, że automat zostanie całkowicie uzupełniony
Warunki wstępne:
----------------
-Brak jednego z produktów
-Magazynier otrzymał powiadomienie o braku produktu.
-Automat jest sprawny
Warunki końcowe:
----------------
-Automat zostaje uzupełniony.
Scenariusz główny (ścieżka podstawowa):
---------------------------------------
1. Magazynier otwiera automat korzystając ze swojego identyfikatora.
2. Magazynier uzupełnia automat wkładając produkty na odpowienie półki.
3. W czasie uzupełniania automat nie może wydawać produktów.
4. Magazynier zamyka automat zatrzaskując drzwi.
5. Automat skanuje ilość produktów i ponownie może wydawać produkty.
Rozszerzenia (ścieżki alternatywne):
------------------------------------
1a. Magazynier źle przyłożył identyfikator.
1. Skaner wyświetla komunikat "przyłóż ponownie kartę".
2. System przechodzi do kroku 1 scenariusza głównego.
1b. System zawiesza się i drzwi się nie otwierają.
1. System wydaje sygnał dźwiękowy o restarcie i resetuje się.
2. System przechodzi do kroku 1 scenariusza głównego.
2a-4a System zawiesza się.
1. System wydaje sygnał dźwiękowy o restarcie i prosi o zamknięci drzwi.
2. Magazyier zamyka drzwi.
3. System sprawdza czy drzwi są zamknięte i resetuje się.
4. System przechodzi do kroku 1 scenariusza głównego.
4b. Drzwi nie zostały domknięte dłużej niż 5min.
1. Automat nadaje charakterystyczny sygnał dźwiękowy
2. System przechodzi do kroku 4 scenariusza głównego.
5a. Automat podczas skanowania wykrył źle włożony produkt.
1. Automat nadaje sygnał dźwiękowy "Źle włożony produkt"
2. Magazynier otwiera automat i odpowiednio układa produkty.
3. System przechodzi do kroku 4 scenariusza głównego.
5b. System zawiesza się.
1. System wydaje sygnał dźwiękowy o restarcie i resetuje się.
2. System przechodzi do kroku 5 scenariusza głównego.
Wymagania specjalne:
--------------------
- Możliwość interfejsu wielojęzcznego.
Wymagania technologiczne oraz ograniczenia na wprowadzane dane:
---------------------------------------------------------------
*a. System dźwiękowy
1a. Czytnik indentyfikatorów
5a. Automat posiada skanner, który stwierdza ilość produktów.
Kwestie otwarte:
----------------
- Obsługa automatu przez osoby niewidome.

View File

@ -0,0 +1,92 @@
import time
class Product:
def __init__(self, number, name, price, quantity):
self.number = number
self.name = name
self.price = price
self.quantity = quantity
def buyProduct(self):
if self.quantity == 0:
print('\nBrak ' + self.name + '!\nPoczekaj na uzupełnienie!')
time.sleep(5)
self.quantity += 5
print('\nUzupełniono :)')
self.quantity -= 1
class VendingMachine:
def __init__(self):
self.amount = 0
self.items = []
def addProduct(self, item):
self.items.append(item)
def showProducts(self):
print('\n'+'|{:<10}|{:<10}|{:<10}|{:<10}'.format('Numer:','Nazwa:','Cena:','Ilosc:')+'\n-----------------------------------------')
for item in self.items:
print('|{:<10}|{:<10}|{:<10}|{:<10}'.format(item.number, item.name, item.price, item.quantity))
def buyProduct(self, item):
self.amount -= item.price
item.buyProduct()
print('\nWydano: ' + item.name + '\nReszta: ' + str(self.amount))
self.amount = 0
def containsProduct(self, wanted):
get = False
for item in self.items:
if item.number == int(wanted):
get = True
break
return get
def getProduct(self, wanted):
get = None
for item in self.items:
if item.number == int(wanted):
get = item
break
return get
def insertCash(self, item):
price = item.price
print()
while self.amount < price:
self.amount = self.amount + float(input('Wrzuć ' + str(price - self.amount) + ' : '))
def payCard(self):
print("\nZbliz kartę!")
time.sleep(5)
input("Podaj pin: ")
print("\nPlatnosc zaakceptowana!")
def choosePayment(self, number, item):
if number == 1:
VendingMachine.payCard(self)
else: VendingMachine.insertCash(self, item)
def main():
vend = VendingMachine()
vend.addProduct(Product(12, 'Cola', 1.5, 5))
vend.addProduct(Product(23, 'Kitkat', 1.75, 10))
vend.addProduct(Product(34, 'Mleko', 2.0, 2))
vend.addProduct(Product(45, 'Kawa', 2.50, 5))
vend.addProduct(Product(56, 'Chipsy', 3.15, 5))
vend.addProduct(Product(67, 'Obiad', 29.99, 1))
while(1):
vend.showProducts()
selected = input('\nPodaj numer produktu: ')
if vend.containsProduct(selected):
item = vend.getProduct(selected)
vend.choosePayment(int(input("\n( 1.Karta 2.Gotówka )\nWybierz rodzaj platnosci: ")),item)
vend.buyProduct(item)
print('\nDziekujemy za zakupy!\n')
else:
print('Nie ma takiego produktu. Podaj inny numer.')
continue
main()