Inteligentní hospoda https://www.assembla.com/spaces/si-kozel-2014/wiki
Řešitelé:
Jakub Kameniar
Roman Kuchár Lukáš Figura
Zkratka: SI_KOZEL_2014
Email:
[email protected]
Cvičící: Ing. Ondřej Macek
zimní semestr 2014/15, pondělí, 12:45
Datum odevzdání: 12. 01. 2015
Tabulka verzí Datum 5. 10. 2014 7. 10. 2014 16. 10. 2014 22. 10. 2014 23. 10. 2014 3. 11. 2014 14. 11. 2014 28. 11. 2014 12. 12. 2014 16. 12. 2014 10. 01. 2015 11. 01. 2015
Verze v1.0 – 1.iterace V1.1 – 1.iterace finální úprava V1.2 – 1.iterace oprava dle oponentury V1.3 – 2.iterace doplnění dle požadavků cvičícího V2.0 – 2.iterace dokumentace V2.1 – vize - vysvětlení financí V3.0 – 3.iterace dokumentace V4.0 – 4.iterace dokumentace V5.0 – 5.iterace dokumentace V6.0 – úprava Deployment diagramu V6.1 – zpráva o implementaci, sequence diagrams, manuál V6.2 – testy
Obsah Vize .......................................................................................................................................................... 1 Abstrakt ............................................................................................................................................... 1 Zainteresované osoby ......................................................................................................................... 1 Zadavatel ......................................................................................................................................... 1 Správci systému ............................................................................................................................... 1 Uživatelé systému............................................................................................................................ 1 Cíle projektu ........................................................................................................................................ 1 Přínosy pro zákazníka: ..................................................................................................................... 1 Přínosy pro majitele (manažera): .................................................................................................... 1 Přínosy pro obsluhu:........................................................................................................................ 1 SWOT ................................................................................................................................................... 2 Silné stránky .................................................................................................................................... 2 Slabé stránky ................................................................................................................................... 2 Příležitosti ........................................................................................................................................ 2 Hrozby ............................................................................................................................................. 2 FURPS .................................................................................................................................................. 2 Funkcionalita ................................................................................................................................... 2 Použitelnost ..................................................................................................................................... 2 Spolehlivost ..................................................................................................................................... 3 Výkon ............................................................................................................................................... 3 Finance ................................................................................................................................................ 3 Harmonogram ..................................................................................................................................... 3 Přínos projektu .................................................................................................................................... 3 Požadavky ................................................................................................................................................ 4 Requirements Model ........................................................................................................................... 4 Funkcní požadavky .............................................................................................................................. 5 Obecné (nefunkcní) požadavky ........................................................................................................... 9 Use cases ............................................................................................................................................... 11 Use Case Model ................................................................................................................................. 11 Actors ................................................................................................................................................ 11 Primary Uses Cases................................................................................................................................ 12 Obsluha.............................................................................................................................................. 12 Editovat rezervaci .......................................................................................................................... 12 Vyuctování zákazníka..................................................................................................................... 13
Vedoucí/Manažer .............................................................................................................................. 14 Editace jídla/pití............................................................................................................................. 14 Editace uživatelskýho úctu ............................................................................................................ 15 Editovat nabídku restaurace ......................................................................................................... 15 Odebrat jídla/pití ........................................................................................................................... 16 Pridat jídla/pití ............................................................................................................................... 16 Pridat reklamu ............................................................................................................................... 17 Vytvorení novýho uživatelskýho úctu ........................................................................................... 17 Zobrazit hodnocení........................................................................................................................ 18 Zákazník ............................................................................................................................................. 19 Hodnotit jídla/pití .......................................................................................................................... 19 Hodnotit restauraci ....................................................................................................................... 20 Objednat jídlo ................................................................................................................................ 20 Objednat pití.................................................................................................................................. 20 Přivolat obsluhu............................................................................................................................. 21 Rezervovat stúl .............................................................................................................................. 21 Zaplatit pomocí NFC ...................................................................................................................... 21 Zaplatit u obsluhy .......................................................................................................................... 22 Zobrazení nabídky jídla .................................................................................................................. 22 Zobrazení nabídky pití ................................................................................................................... 22 Zobrazit úcet .................................................................................................................................. 22 BPMN 1.1 Business Process View .......................................................................................................... 23 Processes ........................................................................................................................................... 23 Editace nabídky restaurace ........................................................................................................... 24 Editace rezervace .......................................................................................................................... 26 Editace uživatelskýho úctu ............................................................................................................ 28 Hodnocení jídla a pití ..................................................................................................................... 30 Hodnocení restaurace ................................................................................................................... 32 Objednávka jídla ............................................................................................................................ 33 Objednávka pití ............................................................................................................................. 35 Prihlášení k rezervaci ..................................................................................................................... 37 Přivolání obsluhy ........................................................................................................................... 39 Vkládaní reklamy/akční nabídky.................................................................................................... 40 Vytvorení kombinaci jídel .............................................................................................................. 41 Vytvorení nového uživatelského úctu ........................................................................................... 43 Zaplacení........................................................................................................................................ 44
Zobrazení hodnocení ..................................................................................................................... 46 Zobrazení účtu ............................................................................................................................... 47 Rezervace stolu.............................................................................................................................. 49 BDM ....................................................................................................................................................... 51 Hodnocení ..................................................................................................................................... 51 Jídlo................................................................................................................................................ 52 Kategorie ....................................................................................................................................... 52 Pití .................................................................................................................................................. 52 Položka na úcte.............................................................................................................................. 52 Položka pití na úcte ....................................................................................................................... 52 Reklama ......................................................................................................................................... 53 Rezervace ...................................................................................................................................... 53 Role ................................................................................................................................................ 54 Stul ................................................................................................................................................. 54 Uživatelský úcet ............................................................................................................................. 54 Úcet ............................................................................................................................................... 55 Úctovatelná položka ...................................................................................................................... 55 Analytic Domian Model ......................................................................................................................... 56 Hodnocení ..................................................................................................................................... 56 Jídlo................................................................................................................................................ 57 Kategorie ....................................................................................................................................... 57 Pití .................................................................................................................................................. 57 Položka na úcte.............................................................................................................................. 57 Položka pití na úcte ....................................................................................................................... 57 Reklama ......................................................................................................................................... 57 Rezervace ...................................................................................................................................... 58 Role ................................................................................................................................................ 59 Stul ................................................................................................................................................. 59 Uživatelský úcet ............................................................................................................................. 59 Úcet ............................................................................................................................................... 60 Úctovatelná položka ...................................................................................................................... 60 State diagram .................................................................................................................................... 61 Položka na úcte.............................................................................................................................. 61 Reklama ......................................................................................................................................... 62 Rezervace ...................................................................................................................................... 63 Stul ................................................................................................................................................. 64
Uživatelský úcet ............................................................................................................................. 65 Úcet ............................................................................................................................................... 66 Component model................................................................................................................................. 67 Azure.................................................................................................................................................. 67 inteligetni_hospoda....................................................................................................................... 67 Hibernate ........................................................................................................................................... 68 inteligetni_hospoda....................................................................................................................... 68 Deployment Model................................................................................................................................ 70 Azure.................................................................................................................................................. 70 Hibernate ........................................................................................................................................... 71 Diagram balíčků a tříd ........................................................................................................................... 72 database ............................................................................................................................................ 73 dao ................................................................................................................................................. 74 entity ............................................................................................................................................. 78 util .................................................................................................................................................. 82 gui .................................................................................................................................................. 83 hospoda ......................................................................................................................................... 87 service............................................................................................................................................ 88 Sequence diagrams ............................................................................................................................... 91 Objednat jidlo .................................................................................................................................... 91 Objednat piti...................................................................................................................................... 93 Zaplatit ucet....................................................................................................................................... 94 Zobrazit nabidku jidla ........................................................................................................................ 96 Zobrazit nabidku piti.......................................................................................................................... 97 Plán testování případů užití ................................................................................................................... 98 Zobrazení nabídky jídla nebo pití ...................................................................................................... 98 Optimální průběh .......................................................................................................................... 98 Objednat pití...................................................................................................................................... 98 Optimální průběh .......................................................................................................................... 98 Objednat jídlo .................................................................................................................................... 98 Optimální průběh .......................................................................................................................... 98 Výsledky testů TestComplete ................................................................................................................ 99 FindBugs Report .................................................................................................................................. 100 Metrics............................................................................................................................................. 100 Metric .......................................................................................................................................... 100 Total ............................................................................................................................................. 100
Density* ....................................................................................................................................... 100 Summary ......................................................................................................................................... 100 Warning Type .............................................................................................................................. 100 Number........................................................................................................................................ 100 Warnings ......................................................................................................................................... 100 Malicious code vulnerability Warnings ....................................................................................... 100 Warning ....................................................................................................................................... 100 Priority ......................................................................................................................................... 100 Details .......................................................................................................................................... 100 Dodgy code Warnings ..................................................................................................................... 103 Warning ....................................................................................................................................... 103 Priority ......................................................................................................................................... 103 Details .......................................................................................................................................... 103 Zpráva o implementaci ........................................................................................................................ 104 Uživatelský manuál .............................................................................................................................. 105 Navigační panel ............................................................................................................................... 105 Nabídka pití ..................................................................................................................................... 105 Nabídka jídla .................................................................................................................................... 106
Vize Abstrakt Inteligentní systém pro hospody nového věku. Umožňuje přehledné a praktické vytvoření objednávky, bez čekání na příchod číšníka, velmi pohodlnou tvorbu rezervací a také neustálou kontrolu nad svou útratu. Přináší moderní UI pro dotykové rozhraní a velmi šikovnou funkci pro cizince, která zabrání objednat nesprávnou přílohu k pokrmu či naopak. Restaurace s tímto systémem velmi ocení možnost, že uživatel může ohodnotit kvalitu jídla či celého podniku. Manažer restaurace má možnost zákazníka přímo kontaktovat přes terminál na stole, například reklamou na vlastní akci, či slevou pro loajální zákazníky. Díky NFC čipům může obsluha ovládat terminály s vyšším právem jako zákazník a tím pádem mu pomoc s platbou či editací rezervace.
Zainteresované osoby Zadavatel Tento projekt vzniká jako startup týmu Kozel a.s., zastupující Roman Kuchár, Lukáš Figura a vedoucím skupiny je Jakub Kameniar. Firma Pilsner Urquel má ve vlastnictví 25% akcií. Konzultant projektu: Ing. Ondřej Macek
Správci systému Do systému bude mít přístup firma Kozel a.s., v rámci softwarové podpory a množnosti upgradu systému.
Uživatelé systému
Zákazník podniku - uživatel, který může objednat, zadat rezervaci, ohodnotit nabídku nebo celý podnik, zaplatit bez obsluhy pomocí NFC Potencionální kupec (Restaurace/Hospoda): Obsluha - zaměstnanec podniku (obsluha), zaplacení účtu, edituje rezervaci Vedoucí/Manažer podniku - bude moc upravovat nabídku restaurace, reklamní pole, zobrazovat hodnocení jídel/pití/restaurace, vytvořit kombinace jídel pro chytrý filtr
Cíle projektu Přínosy pro zákazníka:
Nečeká na obsluhu (zkrácení doby čekání o 20 - 50%) Neustálý přehled svého účtu, také možnost platit pomocí NFC Odstranění chyb lidského faktoru ze strany číšníka Možnost přehledné rezervace Viral efekt - zobrazení zajímavých statistik uživateli a možnost soutěže mezi stoly Dotykové moderní UI - krok s dobou, příjemné ovládání
Přínosy pro majitele (manažera):
Dostává zpětnou vazbu od zákazníků - 8/10 zákazníků zanechá recenzi Má možnost přímého kontaktu se zákazníkem pomocí aplikace Díky velkému počtu přínosů pro zákazníka, zvýší se návštěvnost o 30%
Přínosy pro obsluhu:
Zjednodušení a zrychlení práce o 50% - odpadá přijímání objednávky a zákazník má možnost platit pomocí NFC Úbytek stresu na pracovišti (nepokazí objednávku, nevystaví zlý účet, nezvedá telefony kvůli rezervaci)
1
SWOT Analýza silných (ang: Strengths) a slabých (ang: Weaknesses) stránek, příležitostí (ang: Opportunities) a hrozeb (ang: Threats) našeho týmu.
Silné stránky
rozvíjející se kolektiv, plný mladých nadšených lidí schopnost přizpůsobit se rychle a pružně požadavkům zákazníka vzdělání, všichni v týmu studují VŠ nápaditost, vznikají nové a kreativní nápady
Slabé stránky
kolektiv plný převážně programátorů, slabší analytická část zkušenost managementu, věkový průměr nezastupitelnost lidí a kapacity
Příležitosti
nové trhy, modernizace neustálým zkvalitňováním výrobku být vždy krok před konkurencí nové technologie
Hrozby
zlepšení nabídky ze strany stávající konkurence nedostatečné kapacity členů při rozvoji nedostačující zkušenosti při vedení projektů
FURPS Definuje kvalitu systému ze 4 hledisek (Funkcionalita, Použitelnost, Spolehlivost, Výkon).
Funkcionalita
Uživatel si tvoří vlastní objednávku přímo na terminálu. Systém zamezí špatné kombinaci při objednání jídla (např. nelze objednat hranolky ke koprové omáčce). Systém umožní zákazníkovi rezervaci. Systém umožní zákazníkovi ohodnotit jídlo či celou restauraci a zobrazit si hodnocení jiných uživatelů. Systém nabídne manažerovi/vedoucímu restaurace zpětnou vazbu od zákazníků (zobrazení hodnocení). Systém v reálném čase informuje zákazníka o jeho stavu účtu. Systém umožňuje uživateli zaplatit pomocí NFC. Systém umožňuje správu uživatelských účtů. Systém nabízí manažerovi/vedoucímu editovat a spravovat uživatelské účty obsluhy. Systém umožňuje manažerovi/vedoucímu vkládání reklam, které uvidí zákazník na obrazovce. Systém nabízí možnost soutěžení mezi stoly.
Použitelnost
Snadné ovládání díky modernímu a intuitivnímu UI Dotykové ovládání - více přirozené pro uživatele Chytrý filtr při výběr jídel, který nepovolí objednat nesprávnou kombinaci příloha-jídlo
2
Spolehlivost
Na databázi je použitý Microsoft Azure server, který nabízí maximální spolehlivost, všechna data jsou zálohována. Při výpadku se automaticky použije záložní server, který je plně synchronizovaný. Odezva systému se nikdy nezvýší více než o 0.5s, díky možnosti nastavení výkonu Azure server. Střední doba výskytu chyby je 90dní. Doba výpadku je maximálně 2minuty.
Výkon
Při průměrné návštěvnosti podniku (200lidí) je 0.5s. Díky nastavitelnosti výkonu Azure serveru, je systém schopný přijmout 400 objednávek naráz, bez znatelného zvýšení odezvy (max. 1s). Aplikace je málo náročná na hardware. Doporučená konfigurace terminálu (např. tablet): 512Mb RAM, 2jádrový procesor 1.2GHz, 50MB místa na disku, standardní integrovaný grafický čip
Finance
hodnota projektu 200 000 Kč - Analýza: 50MD x 130,-Kč/hod, Vývoj: 90MD x 170,-Kč/hod, Testování: 35MD. X 90,-Kč/hod požadovaný minimální zisk 300 000 Kč
Aplikace bude prezentována u více potencionální zákazníků. Pokud se nalezne zájemce o exkluzivitu, získává jistotu, že produkt nepoběží u konkurence. Kupní balíčky: exklusivní balíček - cena: 650 000 Kč. standardní balíček - bez exkluzivity, cena: 200 000Kč Provozní náklady: Server - 10 000 Kč/rok Terminál - 10 000 Kč/ks Wifi router – 5 000 Kč/ks případně AP (Access Point) - 2 500 Kč/ks Online podpora - 10 000 Kč/rok (max. 5let) NFC čipy – 150 Kč/kus
Harmonogram 23.9. - příprava podkladů pro systém - upřesnění požadavků (komunikace s partnerem) 21.10. - první verze business modelu 28.10 - uzavření dohody s partnerem- požadavky přesně specifikované, první verze případů užití 4.11 - první verze doménového modelu 11.11 - analytický doménový model, model případů užití 18.11 - model architektury 25.11 - databázový model, model nasazení, manuál, plán testování 2.12 - zpráva o testování 9.12 - zpráva o implementaci 16.12 - release
Přínos projektu Tento projekt vaší restauraci odlehčí práci vaší obsluze, která dokáže obsloužit více zákazníků ve stejném čase. Obsluha se nemusí starat o rezervační knihu, u většiny zákazníků o přijímání platby. Garantujeme zvýšení efektivity práce v podnicích o 20%. Díky modernímu designu a nové technologii přineseme zákazníkovi skvělý požitek při obsluze aplikace a zároveň možnost ohodnotit celý podnik či jednotlivé položky v meníčku.
3
Požadavky Requirements Model
Funkcní požadav ky
Obecné (nefunkcní) požadav ky
+ Editace nabídky
+ Malá odezva systému
+ Hodnocení restaurace, jídla/pití
+ Maximálni spolehlivost
+ Level role
+ Minimálne výpadky
+ Platba
+ Nenárocnost na HW
+ Rezervace
+ Snadné ovládaní
+ Soutež mezi stoly
+ Zálohovaný server
+ Systém umožní editaci rezervace + Systém umožní odobráni jídla/pití + Systém umožní platbu pres cíšníka + Systém umožní platbu pres NFC + Systém umožní pridávaní jídla/pití + Systém umožní privolat obsluhu + Systém umožní úprava jídla/pití + Systém umožní vytvorení a editaci uživatelskýho úctu + Systém umožní zákaznikovy rezervovat stul + Systém umožní zákazníkovy vytvorit objednávku + Systém umožní zobrazit stav úctu + Systém zamezení špatné kombinace složení jídla + Tvorení reklamy + Zpetná vazba
Figure: Požiadavky
4
Funkcní požadavky
Figure: Funkcní požadavky
5
Editace nabídky «Functional» Status: Should have Phase: 1.0
Priority: Medium
Difficulty: High
Version: 1.0
Vedoucí/manažér môže editovat jídla/pití
Hodnocení restaurace, jídla/pití «Functional» Status: Should have Phase: 1.0
Priority: Medium
Difficulty: High
Version: 1.0
Systém umožní zákazníkovi ohodnotit jídlo ci celou restauraci a zobrazit si hodnocení jiných uživatelu.
Level role «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: High
Version: 1.0
Systém udržuje u každého uživatelského úctu jeho level, který mu zprístupní výsku adminstrátorské práva k aplikaci.
Platba «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: High
Version: 1.0
Rezervace «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: High
Version: 1.0
Soutež mezi stoly «Functional» Status: Could have Phase: 1.0
Priority: Medium
Difficulty: Medium
Version: 1.0
Systém nabízí možnost soutežení mezi stoly.
Systém umožní editaci rezervace «Functional» Status: Should have Phase: 1.0
Priority: Medium Version: 1.0
6
Difficulty: Low
Systém umožní odobráni jídla/pití «Functional» Status: Should have Phase: 1.0
Priority: Medium
Difficulty: Low
Version: 1.0
Manažer/vedoucí má možnost smazat položku z nabídky restaurace (jídlo/pití)
Systém umožní platbu pres NFC «Functional» Status: Should have Phase: 1.0
Priority: Medium
Difficulty: Medium
Version: 1.0
Zákazník muže platit pres NFC bez nutností prítomnosti obsluhy
Systém umožní platbu pres cíšníka «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: Low
Version: 1.0
Systém umožní zavolat cíšníka, který po príchodu vyúctuje zákazníka.
Systém umožní pridávaní jídla/pití «Functional» Status: Should have Phase: 1.0
Priority: Medium
Difficulty: Low
Version: 1.0
Manažer/vedoucí má možnost vytvorit novou položku z nabídky restaurace (jídlo/pití)
Systém umožní privolat obsluhu «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: Medium
Version: 1.0
Systém umožní vytvorení a editaci uživatelskýho úctu «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: Low
Version: 1.0
Systém umožní zobrazit stav úctu «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: Medium
Version: 1.0
Systém v reálném case informuje zákazníka o jeho stavu úctu.
7
Systém umožní zákaznikovy rezervovat stul «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: Medium
Version: 1.0
Zákazník si muže rezervovat stul.
Systém umožní zákazníkovy vytvorit objednávku «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: Medium
Version: 1.0
Uživatel si tvorí vlastní objednávku prímo na terminálu.
Systém umožní úprava jídla/pití «Functional» Status: Should have Phase: 1.0
Priority: Medium
Difficulty: Medium
Version: 1.0
Manažer/vedoucí má možnost upravit položku z nabídky restaurace (jídlo/pití)
Systém zamezení špatné kombinace složení jídla «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: High
Version: 1.0
Systém neumožní zákazníkovy objednat si kombinaci jídel která není definována. Napr. Koprovka s hranolkama.
Tvorení reklamy «Functional» Status: Could have Phase: 1.0
Priority: Medium
Difficulty: Low
Version: 1.0
Systém umožnuje manažerovi/vedoucímu vkládání reklam, které uvidí zákazník na obrazovce.
Zpetná vazba «Functional» Status: Should have Phase: 1.0
Priority: Medium
Difficulty: Medium
Version: 1.0
Systém nabídne manažerovi/vedoucímu restaurace zpetnou vazbu od zákazníku (zobrazení hodnocení).
8
Obecné (nefunkcní) požadavky
Legend Must have Maximálni spolehlivost
Should have Could have
Zálohovaný server
Malá odezva systému
Minimálne výpadky
Nenárocnost na HW
Snadné ovládaní
Figure: Obecné (nefunkcní) požadavky
Malá odezva systému «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: Medium
Version: 1.0
Pri prumerné návštevnosti podniku (200lidí) je 0.5s. Odezva systému se nikdy nezvýší více než o 0.5s, díky možnosti nastavení výkonu Azure server. Díky nastavitelnosti výkonu Azure serveru, je systém schopný prijmout 400 objednávek naráz, bez znatelného zvýšení odezvy (max. 1s).
Maximálni spolehlivost «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: High
Version: 1.0
Na databázi je použitý Microsoft Azure server, který nabízí maximální spolehlivost, všechna data sou zálohována.
9
Minimálne výpadky «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: High
Version: 1.0
Strední doba výskytu chyby je 90dní. Doba výpadku je maximálne 2minuty.
Nenárocnost na HW «Functional» Status: Should have Phase: 1.0
Priority: Medium
Difficulty: Medium
Version: 1.0
Aplikace je málo nárocná na hardware. Doporucená konfigurace terminálu (napr. tablet): 512Mb RAM, 2jádrový procesor 1.2GHz, 50MB místa na disku, standardní integrovaný grafický cip
Snadné ovládaní «Functional» Status: Should have Phase: 1.0
Priority: Medium
Difficulty: High
Version: 1.0
Snadné ovládná díky modernímu a intuitivnímu UI
Zálohovaný server «Functional» Status: Must have Phase: 1.0
Priority: Medium
Difficulty: Low
Version: 1.0
Pri výpadku se automaticky použije záložní server, který je plne synchronizovaný.
10
Use cases Use Case Model
Vedoucí/Manažer (from Actors)
Obsluha (from Actors)
Zákazník (from Actors)
Figure 1: Generalization
Actors Obsluha Omezená prístupová práva, pouze k urcitým funcím
Vedoucí/Manažer Nejvyšší uživatelská práva
Zákazník Má přístup k základním funkcím programu.
11
Primary Uses Cases Obsluha «Lane» Systém
Systém umožní editaci rezervace
Editov at rezerv aci
(from Funkcní požadavky)
Obsluha Vyuctov ání zákazníka
Systém umožní platbu pres cíšníka (from Funkcní požadavky)
Figure 2: Obsluha
Editovat rezervaci Obsluha má možnost editace rezervací
Basic Path Basic Path: 1
Uživatel zvolí editaci rezervací. 2 Systém zobrazí všechny rezervace. 3 Uživatel vybere rezervaci k editaci. 4 Systém zobrazí detaily zvolené rezervaci. 5 Uživatel edituje rezervaci. 6 IF Uživatel zvolí zrušenírezervace THEN Systém smaže rezervaci. 7 IF Uživatel zvolí ulozit rezervaci THEN Systém ulozi rezervaci.
Alternate Paths Storno editace: (at 7, 6) Uživatel klikne na storno tlacítko. Systém zruší editaci rezervaci.
12
Vyuctování zákazníka Obsluha múže vyúctovat zákazníka
Basic Path Basic Path: 1
Systém ceká na priložení NFC cipu obsluhy. 2 Uživatel priloží NFC cip. 3 Systém prihlásí obsluhu. 4 Systém zobrazí úcet . 5 Uživatel vybere položky z úctu, které budou zaplacené. 6 Uživatel potvrdi výber položek z úctu. 7 Systém vystaví úcet. 8 Uživatel príjme platbu od zákazníka.
Alternate Paths Zrušení vyúctování: (at 6) Uživatel klikne na storno. Systém zruší vyúctování.
13
Vedoucí/Manažer «Lane» Systém
Editace uživ atelskýho úctu Systém umožní vytvorení a editaci uživatelskýho úctu (from Funkcní požadavky) Vytv orení nov ýho uživ atelskýho úctu
Zpetná vazba Zobrazit hodnocení (from Funkcní požadavky)
Vedoucí/Manažer Tvorení reklamy Pridat reklamu
(from Funkcní požadavky)
Editace j ídla/pití Systém umožní úprava jídla/pití (from Funkcní požadavky) Editace nabídky
Pridat j ídla/pití
(from Funkcní požadavky)
Systém umožní pridávaní jídla/pití (from Funkcní požadavky)
Systém umožní odobráni jídla/pití Odebrat j ídla/pití
(from Funkcní požadavky)
Figure 3: Vedoucí/Manažer
Editace jídla/pití Vedoucí/manažér má možnost upravit jídla/pití
Basic Path Basic Path: 1
Uživatel klikne na jídlo/pití. 2 Systém zobrazí detail jídla/pití. 3 Uživatel edituje jídlo/pití. 4 Uživatel potvrdí editaci stisknutím tlacítka. 5 Systém uloží editaci jídla/pití. Alternate Paths Zrušení editace jídla/pití: (at 4) Uživatel klikne na tlacítko storno. Systém zruší editaci jídla/pití.
14
Editace uživatelskýho úctu Vedoucí/manažér má možnost editace uživatelského úctu
Basic Path Basic Path: 1
Uživatel stliskne tlacítko pro editaci uživatelskýho úctu. 2 Systém zobrazí všechny uživatelské úcty. 3 Uživatel zvolí príslušný uživatelský úcet pro editaci. 4 Systém zobrazí detaily uživatelského úctu. 5 Uživatel edituje uživatelský úcet. 6 Uživatel potvrdí editaci. 7 Systém uloží editace uživatelskýho úctu.
Alternate Paths Zrušení editace uživatelskýho úctu: (at 6) Uživatel stiskne tlacítko Storno.. Systém zruší editaci uživatelskýho úctu.
Editovat nabídku restaurace Vedoucí/manažér má možnost editace nabídky restaurace
Basic Path Basic Path: 1
Uživatel stiskne tlacítko pro editaci nabídky restaurace. 2 Systém zobrazí nabídku restaurace. 3 IF Uživatel stiskne tlacítko pro odobrání príslušnýho jídla/pití THEN systém odobere príslušné jídlo/pití. 4 IF Uživatel stiskne tlacítko pro pridání jídla/pití THEN systém zobrazí formulár pro pridáni jídla/pití. 5 IF Uživatelr stiskne tlacítko pro editaci jídla/pití THEN systém zobrazí formulár pro pridáni jídel/pití ale jednotlivý polozky formuláru budou vyplnené podle príslušného jídla/pití na, kterom chce Vedoucí/Manažér delat opravy . 6 Uživatelr vyplní formulár pro pridáni jídla/pití. 7 Uživatel potvrdí vyplnení formuláre. 8 Systém upraví nabídku jídel/pití. 9 Systém zobrazí nab´diku jídel/pití.
15
Odebrat jídla/pití Vedoucí/manažér má možnost odebrat jídla/pití
Basic Path Basic Path: 1
Uživatel klikne na jídlo/pití. 2 Systém zobrazí detail jídla/pití. 3 Uživatel klikne na tlacítko delete. 4 Systém odobere jídlo/pití.
Alternate Paths Zrušení odebratí jídla/pití: (at 3) Uživatel klikne na tlacítko storno. Systém zruši odebrání jídla/pití.
Pridat jídla/pití Vedoucí/manažér má možnost pridat jídla/pití
Basic Path Basic Path: 1 3
Uživatel klikne na tlacítko pro pridání jídla/pití. 2 Systém zobrazí formulár pro pridání jídla/pití. Uživatel vyplní formulár. 4 Uživatel potvrdí vyplnení formuláre. 5 Systém uloží jídlo/pití.
Alternate Paths Zrušení pridávaní jídla/pití: (at 4) Uživatel stiskne tlacítko storno. Systém zruší pridávaní jídla/pití.
16
Pridat reklamu Vedoucí/manažér má možnost pridat reklamu
Basic Path Basic Path: 1
Uživatel stiskne tlacítko pro pridáni reklamy. 2 Systém zobrazí formulár pro pridání reklamy. 3 Uživatel vyplní formulár pro pridání reklamy. 4 Uživatel potvrdí pridání reklamy. 5 Systém pridá reklamu.
Alternate Paths Zrušení pridávaní reklamy: (at 4) Uživatel stiskne tlacítko Storno.. Systém zruší pridávaní reklamy.
Vytvorení novýho uživatelskýho úctu Vedoucí/manažér má možnost vytvorení novýho uživatelskýho úctu
Basic Path Basic Path: 1
Uživatel stiskne tlacítko pro vytvorení novýho uzivatelskýho úctu. 2 Systém zobrazí formulár pro vytvorení uživatelskýho úctu. 3 Uživatel vyplní formulár(indentifikační údaje osoby – jméno, rodné číslo,…). 4 Uživatel potvrdi vyplnenie formulára stisknutím tlacítka. 5 Systém uloží uživatelský úcet.
Alternate Paths Zrušení vytvárení uživatelskýho úctu: (at 4) Uživatel stiskne tlacítko Storno.. Systém zruší vytvárení uživatelskýho úctu.
17
Zobrazit hodnocení Vedoucí/manažér má možnost si zobrazit hodnocení ji´dlaa/pití nebo hodnoceni restaurace
Basic Path Basic Path: 1
Uživatel stiskne tlacítko pro zobrazení hodnocení. 2 Systémzobrazí hodnocení restaurace, jídel/pití. 3 Uživatel si filtruje zobrazené hodnocení.
18
Zákazník System
Systém umožní platbu pres NFC
Zaplatit pomocí NFC
(from Funkcní požadavky) Platba Systém umožní platbu pres cíšníka
«include»
(from Funkcní požadavky)
(from Funkcní požadavky)
Zaplatit u obsluhy «include»
Zobrazit úcet
Systém umožní zobrazit stav úctu (from Funkcní požadavky)
«include»
Priv olat obsluhu «include»
Systém umožní privolat obsluhu (from Funkcní požadavky)
Hodnocení restaurace, jídla/pití
Hodnotit j ídla/pití
(from Funkcní požadavky) Zákazník Obj ednat pití
«include»
Zobrazení nabídky pití Systém umožní zákazníkovy vytvorit objednávku Obj ednat j ídlo «include»
Zobrazení nabídky j ídla
Systém zamezení špatné kombinace složení jídla (from Funkcní požadavky)
(from Funkcní požadavky)
Hodnotit restauraci
Systém umožní zákaznikovy rezervovat stul
Rezerv ov at stúl
(from Funkcní požadavky)
Figure 4: Zákazník
Hodnotit jídla/pití Zákazník má možnost hodnocení jídla/pití
Basic Path Basic Path: 1
Uživatel klikne na tlacítko pro zobrazení svího úctu. 2
Zobrazit úcet. 3 Uživatel klikne na príslušné jídlo/pití, které chce hodnotit. 4 Systém zobrazí formulár pro hodnocení. 5 Uživatel zadá svoje hodnocení. 6 Uživatel potvrdí svoje hodnocení. 7 Systém uloží hodnocení.
19
Hodnotit restauraci Zákazník má možnost hodnocení restaurace
Basic Path Basic Path: 1
Uživatel klikne na hodnocení restaurace. 2 Systém zobrazí formulár pro hodnocení restaurace. 3 Uživatel zadá svoje hodnocení restaurace. 4 Uživatel potvrdí svoje hodnocení. 5 Systém uloží hodnocení restaurace. 6 Systém vypíše hodnocení restaurace.
Objednat jídlo Zákazník má možnost si objednat jídlo
Basic Path Basic Path: 1
Uživatel klikne na objednání jídla. 2 Zobrazení nabídky jídla. 3 IF Uživatel klikne na jídlo/príloha THEN systém vyfiltruje jídla/prílohy, která Uživatel múže kombinovat s vybraným jídlem. 4 IF Uživatel klikne na tlacitko potvrdit objednávku THEN systém odošle objednávku.
Objednat pití Zákazník má možnost si objednat jídlo
Basic Path Basic Path: 1
Uživatel klikne na tlacitko pro objednání pití. 2 Zobrazení nabídky pití. 3 IF Uživatel neklikne na potvrzení objednávky FOR. 4 Uživatel zvolí požadované pití. 5 Systém zobrazí možnost zadat množství. 6 Uživatel zadá množství pití. 7 ELSE. 8 Uživatel klikne na potvrzení objednávky. 9 Systém odešle objednávku.
20
Přivolat obsluhu Zákazník má možnost privolat obsluhu
Basic Path Basic Path: 1
Uživatel klikne na tlacítko pro privolání obsluhy. 2 Systém upozorní obsluhu.
Rezervovat stúl Zákazník má možnost si rezervovat stúl vopred
Basic Path Basic Path: 1
Uživatel zvolí možnost rezervace stolu. 2 Systém zobrazí kalendár. 3 Uživatel si zvolí datum. 4 Sytém zobrazí formular pro zadáni casu a délky rezervace. 5 Uživatel si zvolí cas a délku rezervace. 6 Systém zobrazí volné stoly. 7 Uživatel si vybere stúl. 8 Systém zobrazí formular pro získaní údajú o Uživateli. 9 Uživatel zadá svoje údaje. 10 Uživatel potvrdí rezervaci. 11 Systém uloží rezervaci.
Zaplatit pomocí NFC Zákazník má možnost zaplatit svúj úcet pomocí NFC cipu
Basic Path Basic Path: 1
Zobrazit úcet. 2 Uživatel stiskne na tlacítko pro zapalcení pomocí NFC. 3 Uživatel vybere položky k zaplacení. 4 Uživatel zadá svúj email. 5 Uživatel potvrdí platbu. 6 Systém odešle platbu.
21
Zaplatit u obsluhy Zákazník má možnost zalatit svúj úcet u obsluhy
Basic Path Basic Path: 1
Zobrazit úcet. 2 Uživatel si zvolí paltbu u obsluhy. 3 Privolat obsluhu. 4 Uživatel zaplatí obsluze za vybraté polozky.
Zobrazení nabídky jídla Zákazník má možnost si zobrazit nabídku jídel
Basic Path Basic Path: 1
Uživatel klikne na tlacitko pro jídla. 2 Systém zobrazí jídla.
Zobrazení nabídky pití Zákazník má možnost si zobrazit nabídku pití
Basic Path Basic Path: 1
Uživatel klikne na tlacítko pro pití. 2 Systém zobrazí nabídku pití.
Zobrazit úcet Zákazník má možnost si zobrazit svúj aktuální úcet
Basic Path Basic Path: 1
Uživatel klikne na tlacítko úcet. 2 Systém zobrazí jeho úcet.
22
BPMN 1.1 Business Process View Processes + Manažer/Vedoucí + Obsluha + Systém + Zákazník + Editace rezervace + Editace nabídky restaurace + Editace uživatelskýho úctu + Hodnocení jídla a pití + Hodnocení restaurace + Objednávka jídla + Objednávka pití + Prihlášení k rezervaci + Privolání obsluhy + Vkládaní reklamy/akcní nabídky + Vytvorení kombinaci jídel + Vytvorení nového uživatelského úctu + Zaplacení + Zobrazení hodnocení + Zobrazení úctu + Rezervace stolu
Processes Manažer/Vedoucí Obsluha Systém Aplikace + databázovej servr
Zákazník
23
Editace nabídky restaurace «Lane» Manažer/Vedoucí
«Lane» Systém
Start
Zobrazit nabídku restaurace
Editovat nabídku restaurace
Volba akce pridat
odobrat
upravit
Pridat jídlo/pití
Editovat jídlo/pití
Odobrat jídlo/pití
Zobrazit formulár
Smazat jídlo/pití
Editovat/Vytvorit jídlo/pití
Dokoncít jídlo/pití
Uložit a zobrazit jídlo/pití
Final
Dokončit jídlo/pití Manažer/vedoucí klikne na tlacitko pro dokoncení editace/vytvorení jídla/pití.
Editovat jídlo/pití Manažer/vedoucí klikne na tlacítko pro pridáni príslušného jídla/pití.
Editovat nabídku restaurace Manažer/vedoucí klikne na tlacítko editace nabídky restaurace.
Editovat/Vytvorit jídlo/pití Vedoucí/manažer vytvori/edituje jídlo/pití.
Odobrat jídlo/pití Manažer/vedoucí klikne na tlacítko pro odebrání príslušného jídla/pití.
Pridat jídlo/pití Manažer/vedoucí klikne na tlacítko pro pridáni jídla/pití.
24
Smazat jídlo/pití Systém vymaže prislušné jídlo/pití z ponuky restaurace.
Uložit a zobrazit jídlo/pití Systém uloží nové/editované jídlo/pití a zobrazí ho v nabídce restaurace.
Zobrazit formulár Systém zobrazí formulár pro pridání/editování jídla Ak sa bude jednat o editování tak budu položky formulára vyplnené príslušnými stringami
Zobrazit nabídku restaurace Systém zobrazí aktuálni nabídku restaurace.
Final Start Volba akce Delenie medzi pridávanie/editovanie/zmazanie jídla/pití
25
Editace rezervace «Lane» Obsluha
«Lane» Systém
Start
Zobrazit všechny rezervace
Zvolit Editace rezervace
Zvolit rezervaci
Zobrazit detail rezervace
zrušení
zmena
Volba akce
Zmena údajú
Zrušenit rezervace
Smazat rezervaci
End
Uložení zmen
End
Prihlásení se Prihlášení na terminál pomocí NFC tagu s admin právy.
Smazat rezervaci Nastaví rezervaci za neplatnou.
Uložení zmen Uloží provedené zmenu v rezervaci.
Zmena údajú Provede požadovanou zmenu v rezervaci.
Zobrazit detail rezervace Zobrazí detail rezervace se všemi údajmi.
Zobrazit všechny rezervace Zobrazí všechny platné rezervace.
26
Zrušenit rezervace Klikne na Zrušit rezervaci
Zvolit Editace rezervace Klinutím na dlaždici Editace rezervace
Zvolit rezervaci Zvolí požadovanou rezervaci kterou chce editovat.
End End Start Volba akce
27
Editace uživatelskýho úctu «Lane» Manažer/Vedoucí
«Lane» Systém
Start
Vypísat uživatelské úcty
Zobrazit uživatelské úcty
Zvolit uživatelský úcet
Zobrazit detail uživatelskýho úcetu
Editovat uživatelský úcet
Uložit zmeny
Potvrdit editaci
Final
Editovat uživatelský úcet Manažér/vedoucí upraví uživatelský úcet
Potvrdit editaci Manažér/vedoucí klikne na tlacítko pro potvrzení editace
Uložit zmeny Systém uloží editaci uživatelskýho úctu
Vypísat uživatelské úcty Systém vypíše uživatelské úcty
Zobrazit detail uživatelskýho úcetu Systém zobrazí konkrétni uživatelský úcet
Zobrazit uživatelské úcty Manažér/vedoucí klikne na tlacítko pro zobrazení uživatelských úctú
Zvolit uživatelský úcet Manažér/vedoucí klikne na editaci konkrétního uživatelskýho úctu
28
Final Start
29
Hodnocení jídla a pití «Lane» Zákazník
«Lane» Systém
Start
Zobrazit stav úctu
Vypísaní stavu úctu
Hodnotit jídlo/pití
Zobrazit formulár
Zadat hodnotenie
Uložit hodnocení
Uložit a vypsat hodnocení
Final
Activity1 Hodnotit jídlo/pití Zákazník klikne na tlacítko pro hodnocení konkrétního jídla/pití.
Uložit a vypsat hodnocení Systém uloží a vypíše hodnocení na obrazovku.
Uložit hodnocení Zákazník klikne na tlacítko pro uložení hodnocení
Vypísaní stavu úctu Systém vypíše aktuálni stav úctu so všetkými položkami.
Zadat hodnotenie Zákazník zadá hodnocení jídla/pití.
Zobrazit formulár Zobrazí sa formulár na hodnocení jídla/pití
30
Zobrazit stav úctu Zákazník klikne na tlacítko pro zobrazení aktuálního stavu úctu, kde budou vypísané aj jednotlivé položky objednávky.
Final Start
31
Hodnocení restaurace «Lane» Zákazník
«Lane» Systém
Start
Zobrazit formulár
Hodnotit restauraci
Zadat hodnotenie
Uložit hodnocení
Uložit a vypsat hodnocení
Final
Hodnotit restauraci Zákazník klikne na tlacítko pro hodnocení restaurace.
Uložit a vypsat hodnocení Systém uloží a vypíše hodnocení na obrazovku.
Uložit hodnocení Zákazník klikne na tlacítko pro uložení hodncení restaurace
Zadat hodnotenie Zákazník zadá hodnocení restaurace.
Zobrazit formulár Zobrazí sa formulár na hodnocení restaurace
Final Start
32
Objednávka jídla «Lane» Zákazník
«Lane» Systém
«Lane» Obsluha
Start
Zobrazit nabídku jídel
Zvolit objednání jídla
Zvolit požadované jídlo/prílohu
ne
Vyfiltruje ponuku jídel
Obejdnávka hotová ano
Potvrdit objednávku
Odeslat objednávku
Prinést objednávku
End
Odeslat objednávku Odešle oznámení o objednávce obsluze
Potvrdit objednávku Klikne na tlacítko Objednat.
Prinést objednávku Donese objednávku zákazníkovy na stul.
Vyfiltruje ponuku jídel Ponuka jídel/príloh se vyfiltruje dle aktuálne zvolených jídel/príloh.
Zobrazit nabídku jídel Jídla budou zobrazny s hodnocením a budou serazeny po kategóriích .
Zvolit objednání jídla Klikne na dlaždici objednání jídla na hlavní obrazovce.
Zvolit požadované jídlo/prílohu Kliknutím na dlaždici si zvolí požadované jídlo/prílohu
33
End Start Obejdnávka hotová Objednáno jídel
34
Objednávka pití «Lane» Zákazník
«Lane» Systém
«Lane» Obsluha
Start
Zvolit objednání pití
Zobrazit nabídku pití
Zvolit požadované pití
Zobrazit možnost zadat množštví
Výber množství
ne
Obejdnávka hotová ano
Potvrdit objednávku
Odeslat objednávku
Prinést objednávku
End
Odeslat objednávku Odešle oznámení o objednávce obsluze
Potvrdit objednávku Klikne na tlacítko Objednat.
Prinést objednávku Donese objednávku zákazníkovy na stul.
Výber množství Zvolí požadované množství zvoleného nápoje.
Zobrazit možnost zadat množštví V pop up okne se zobrazí nabídka na zadání množstva.
Zobrazit nabídku pití Pití budou zobrazny s hodnocením a budou serazeny po kategóriích .
35
Zvolit objednání pití Klik na dlaždici Objednání jídla.
Zvolit požadované pití Kliknutím na dlaždici požadovaného pití.
End Start Obejdnávka hotová Objednáno pití
36
Prihlášení k rezervaci «Lane» Zákazník
«Lane» Systém
Start
Zv olit prihlášení
Zobrazi zadání údaj u
Ne
Co chci vyplnit email
Zdat e-mail
tel.císlo
Zadat telefonní císlo
Ov erení rezerv ace
Probehlo overení v porádku?
Ano Potv rzení rezerv ace
Final
Overení rezervace Overení zda je e-mail/tel. císlo shodné s údajema na rezervaci.
Potvrzení rezervace Stul se aktivuje a je pripraven k príjímání objednávek.
Zadat telefonní císlo Zadá telefoní císlo uvedené v rezervaci
Zdat e-mail Zadá e-mail uvedený v rezervaci
Zobrazi zadání údaju Zobrazí formulár na zadání údaju.
Zvolit prihlášení Kliknutím na tlacítko prihláasit.
37
FlowFinal Co chci vyplnit Uživatel se rozhodne, zda se chce prhlásit k rezervaci pomocí emailu nebo tel.císla, pokud vyplní oba dva údaje, systém si vybere primárne tel.císo.
Final Probehlo overení v porádku? Start
38
Přivolání obsluhy «Lane» Zákazník
«Lane» Systém
«Lane» Obsluha
Upozornit obsluhu
Príchod obsluhy
Start
Zvolit privolání obsluhy
End
Príchod obsluhy Obsluha dorazí ke stolu, nic nemusí potvrzovat, ani odklikávat.
Upozornit obsluhu Odeslání notifikace pro obsluhu, na jaký stul mají prijít.
Zvolit privolání obsluhy Kliknutí na tlacítko: Privolat obsluhu.
Tlacítko zustane po krátkou dobu neaktivní, aby zákazník nemohl obsluhu "spamovat".
End Start
39
Vkládaní reklamy/akční nabídky «Lane» Manažer/Vedoucí
«Lane» Systém
Start
Vložit reklamu/akní nabídku
Zobrazit formulár
Vytvorit novú reklamu/akní nabídku
Uložit reklamu/akní nabídku
Zapísat reklamu/akní nabídku
Final
Uložit reklamu/akní nabídku Manažér/vedoucí klikne na tlacítko pro uložení reklamy/akní nabídky.
Vložit reklamu/akní nabídku Manažér klikne na hlavní obrazovce na tlacitko pro vložení reklamy/akní nabídky.
Vytvorit novú reklamu/akní nabídku Manažér/vedoucí vytvorí novú reklamu/akní nabídku.
Zapísat reklamu/akní nabídku Reklama/akní nabídka sa uloží a zobrazí na termináloch.
Zobrazit formulár Zobrazí sa formulár pre vkladanie novej reklamy/akní nabídky
Final Start
40
Vytvorení kombinaci jídel «Lane» Manažer/Vedoucí
«Lane» Systém
Start
Zobrazit formulár
Vytvorit kombinaci jídel
Zadat novou kombinaci jídel
Potvrdit novou kombinaci jídel
ne
Uložit novou kombinaci
Ukoncit vytvárení ano
Dokoncit vytvárení kombinaci jídel
Ukoncit vytvárení kombianci jídel
Final
Activity1 Dokoncit vytvárení kombinaci jídel Manažér/vedoucí klikne na tlacítko pro ukoncení vytvárení kombinaci jídel
Potvrdit novou kombinaci jídel Manažér/vedoucí klikne na tlacítko pro potvrzení nové kombiance jídel
Ukoncit vytvárení kombianci jídel Systém ukoncí vytvárení kombinaci jídel
Uložit novou kombinaci Systém uloží novou kombinaci jídel
Vytvorit kombinaci jídel Manažér/vedoucí klikne na tlacitko pro vytvorení kombinaci jídel
Zadat novou kombinaci jídel Manažér/vedoucí zadá novou kombinaci jídel
41
Zobrazit formulár Systém zobrazí formulár pro vytvorení kombinaci jídel
Final Start Ukoncit vytvárení Manažer/vedoucí se rozhodne jestli chce pridat další kombinaci jídel nebo ukoncí vytvárení kombinaci jídel
42
Vytvorení nového uživatelského úctu «Lane» Manažer/Vedoucí
«Lane» Systém
Start
Vytvorit uživatelský úcet
Zobrazit formulár
Vyplnit formuláru
Pridat uživatelský úcet do systému
Uložit nový uživatelský úcet
Final
Pridat uživatelský úcet do systému Systém vytvorí nový uživatelský úcet
Uložit nový uživatelský úcet Vedoucí/manažer klikne na tlacítko pro uložení novýho uživatelskýho úctu
Vyplnit formuláru Vedoucí/manažer vyplní formulár pro vytvorení novýho uživatelskýho úctu
Vytvorit uživatelský úcet Vedoucí/manažer klikne na tlacitko pro vytvorení uživatelskýho novýho úctu
Zobrazit formulár Systém zobrazí formulár pro prídáni novýho uživatelskýho úctu
Final Start
43
Zaplacení «Lane» Zákazník
«Lane» Systém
«Lane» Obsluha
Zobrazení úctu Start
Výber zpusobu platby
NFC Zaplatit pomocí NFC
obsluha Priv olání obsluhy
Prihlásit se
Vybrat položky
Vystav it úcet
Vybrat položky
Zadat email
Odeslat platbu
Prij em platby
Final
Final
Zv olit zaplatit u obsluhy
Odeslat platbu Odešle se platba + úctenka na email. Na úctence bude jméno restaurace.
Prihlásit se Prihlášení na terminál pomocí NFC tagu s admin právy.
Umožní obsluze vybrat položky k zaplacení a zákazník muže zaplatit obsluze cash.
Prijem platby Príjem platby od zákazníka. Zákazník dostane úctenku.
Privolání obsluhy Uporozní obsluhu, který stul chce platit.
Vybrat položky Pomocí check box se vyberou položky z úctu + pocet, které se mají zaplatit.
Vybrat položky Vyberou se položky + jejich pocet, které se mají zaplatit.
44
Vystavit úcet Systém vytiskne na pokladne úctenku pro zákazníka a položky na úcte budou oznaceny jako zaplacené. Na úctence se objeví jméno obsluhy, která prijala platbu.
Zadat email Dle zákona je povinnost vydat uživateli úctenku pri platbe. Uživatel zadá email, na který mu bude zaslán úcetnka/faktura v elektronické podobe.
Feature: Pokud systém bude schopný získat email z NFC zarízení, vyplní email automaticky.
Zaplatit pomocí NFC Placení pomocí NFC cipu (bezkontaktní karta, mobil, ...)
Zobrazení hodnocení Zobrazení úctu Zobrazení úctu Zvolit zaplatit u obsluhy Uživatel se rozhodne zaplatit u obsluhy.
Final Final Start Výber zpusobu platby
45
Zobrazení hodnocení «Lane» Manažer/Vedoucí
«Lane» Systém
Start
Zobrazit hodnocení
Vypsat hodnocení j ídel
Vypsat hodnocení restaurace
Final
Vypsat hodnocení jídel Vypsat hodnocení restaurace Zobrazit hodnocení Klikne na dlaždici, která prislouchá zobrazení hodnocení.
Final Start
46
Zobrazení účtu «Lane» Zákazník
«Lane» Systém
«Lane» Obsluha
Start
zákazník
obsluha
Kdo chce zobrazit úcet Zvolit úcet
Priložit NFC cip
Zobrazit úcet
End
Kontrola vstupu Systém ceká na vstup ze zarízení (NFC/Klik na monitor).
Priložit NFC cip Nacte se admin NFC cip a povolí se admin prístup do systému pro obsluhu.
Zobrazit úcet Zobrazení se liší podle druhu prihlášení (pouze uživatel s vyšší roly v systému, vlastní NFC cip)
Zvolit úcet Kliknutí na tlacítko úcet v hlavní nabídce.
End Start
47
Kdo chce zobrazit úcet
48
Rezervace stolu «Lane» Zákazník
«Lane» Systém
Start
Zobrazit kalendár
Zvolit rezervace stolu
Zvolit datum
Zobrazit zadání casu a délky
Zvolit cas a délku
Zobrazit stoly
Výber stolu
Získat základní údaje
Zadat základní údaje
Uložení rezervace
End
Uložení rezervace Uloží rezervaci.
Výber stolu Výber probehne kliknutím na požadovaný stul.
Zadat základní údaje Zadá základní údaje nutný pro rezervaci stolu (jméno, e-mail, tel. c.)
Zobrazit kalendár Zobrazí se kalendár s predvybranou hodnotou aktuálního dne.
Zobrazit stoly Zobrazení stolu. Již rezervováne stoly budou zvýrazneny.
Zobrazit zadání casu a délky Zobrazí možnost casu na kdy chce zákazník rezervaci a délku rezervace (v hod.)
Zvolit cas a délku Zvolí cas na kdy chce rezervaci a délku rezervace (v hod.)
49
Zvolit datum Zvolí požadované datum rezevace
Zvolit rezervace stolu Kliknutím na dlaždici Rezervace stolu
Získat základní údaje Zobrazí se formulár pro zadání základních údaju pro rezervaci.
End Start
50
BDM Úcet
Stul úcet na
název velkost
-
1
0..*
-
1 položka na
rezervace na
1
0..*
Uživ atelský úcet zaplacena pres
-
cas do cas od email jméno stornovana telefonní císlo
cas do cas od obrázek text
1..*
Položka na úcte
Rezerv ace -
Reklama
dátum
-
zaplaceno cena
0..*
1 -
jméno príjmení císlo NFC level role
0..* jídlo v 1
Kategorie -
Úctov atelná položka je v kategórii
kod
0..* 0..*
1
0..1
je nadrízená
0..1 potomek k
1 0..*
Jídlo
1 Pití
-
vhodná kombinace k
Hodnocení hodnocení k
název cena kod popis
-
je alkoholický
0..*
Hodnocení Hodnocení od uživatelu k danému jídlu/pití ci rezervace. je hodnocena restaurace : true = hodnocení celé restaurace, nevztahuje se k žádnému jídlu ci pití false = hodnocení jídla ci pití
hvezdicky : 0-5 hvezdicek podle kvality min = 0 max = 5
text : komentár od uživatele
prezdívka : nickname uživatele(volitelné), který pridal hodnocení
51
0..* -
je hodnocena restaurace hvezdicky text prezdívka
Jídlo Kategorie kod :
Pití je alkoholický : True = alkoholický nápoj False = nealkoholický nápoj
Položka na úcte zaplaceno : true = položka byla zaplacena false = položka ješte není zaplacena
cena : cena s DPH
Položka pití na úcte zaplaceno : true = položka byla zaplacena false = položka ješte není zaplacena
cena : cena s DPH
52
Reklama cas do : konec reklamy (datum + cas)
cas od : zacátek reklamy (datum + cas)
obrázek : Obrázek, který bude na pozadí živé dlaždice. Živá dlažidice je schopná reklamy srídat. Díky vazbe na stul, muže manažer nastavit speciální nabídku pro každý stul.
text : text k reklame, který se bude zobrazovat v dlaždici
Rezervace cas do : konec rezervace (datum + cas)
cas od : zacátek rezervace (datum + cas)
email : E-mail na zákazníka, který vytvoril rezervaci
jméno : Jméno zákazníka který vytvoril rezervaci
stornovana : True = položka je stornova a neplati False = platná rezervace
53
telefonní císlo : telefonní císlo s predvolbou
Role level : level oznacuje jak vysoké má daná role práva
name : jméno role = admin, vedoucí/manažer, obsluha
Stul název : Název stolu
velkost : pocet míst k sedení u stolu
Uživatelský úcet jméno : jméno zamestnance
príjmení : príjmení zamestnance
císlo NFC : císlo NFC karty/tagu zamestnance
level role : role, obsahují práva v systému
54
Úcet dátum : Dátum vytvorení úctu
Úctovatelná položka Jidlo/pití název :
cena : aktuální cena s DPH
kod : Unikátní kód pro jídlo.
popis :
55
Analytic Domian Model Úcet
Stul
datum: Date
1
-
1 položka na
rezervace na
0..*
-
0..*
Uživ atelský úcet zaplacena pres
-
cas do: Date cas od: Date email: String jméno: String stornovana: boolean telefonní císlo: String
cas do: Date cas od: Date obrázek: byte[] text: String
1..*
Položka na úcte
Rezerv ace -
Reklama
úcet na
název: String 1 velikost: int
-
cena: int zaplaceno: boolean 0..*
1 -
císlo NFC: int jméno: String level role: int príjmení: String
0..* jídlo v 1
Kategorie -
Úctov atelná položka je v kategórii
-
kod: int
0..* 0..*
Hodnocení
0..1
je nadrízená
0..1 potomek k
1 0..*
Jídlo
1 Pití
-
vhodná kombinace k
hodnocení k
cena: int 1 kod: int název: String popis: String
je alkoholický: boolean
0..*
Hodnocení Hodnocení od uživatelu k danému jídlu/pití ci rezervace. hvezdicky :int 0-5 hvezdicek podle kvality min = 0 max = 5
je hodnocena restaurace :boolean true = hodnocení celé restaurace, nevztahuje se k žádnému jídlu ci pití false = hodnocení jídla ci pití
prezdívka :String nickname uživatele(volitelné), který pridal hodnocení
text :String komentár od uživatele
56
0..* -
hvezdicky: int je hodnocena restaurace: boolean prezdívka: String text: String
Jídlo Kategorie Reprezentuje kategorie nebo podkategorie jídel/pití. (Hlavní jídla -> Kurecí masa, Polévky; Prílohy; Alkoholické nápoje -> Piva, Likéry, Koktejly;) kod :int
Pití je alkoholický :boolean True = alkoholický nápoj False = nealkoholický nápoj
Položka na úcte Reprezentuje jednotilivé položky na úcte, jako jsou jídlo nebo pití s jejich aktuální cenou v dané dobe. Pokud se tedy v budoucnu cena zmení, vždy bude na úcte správná cena položky z toho data. cena :int cena s DPH
zaplaceno :boolean true = položka byla zaplacena false = položka ješte není zaplacena
Položka pití na úcte zaplaceno : true = položka byla zaplacena false = položka ješte není zaplacena
cena : cena s DPH
Reklama Reprezentuje reklamní živou dlaždici v GUI. Reklama se bude zobrazovat v urcitém období a na dlažidici se muže strídat více obrázku.
57
cas do :Date konec reklamy (datum + cas)
cas od :Date zacátek reklamy (datum + cas)
obrázek :byte[] Obrázek, který bude na pozadí živé dlaždice. Živá dlažidice je schopná reklamy strídat. Díky vazbe na stul, muže manažer nastavit speciální nabídku pro každý stul.
text :String text k reklame, který se bude zobrazovat v dlaždici
Rezervace Rezervace reprezentuje cas, kdy je stul rezervovaný pro urcitého zákazníka. Pokud zákazník prijde v cas, muže se prihlásit a aktivuje terminál a muže zacít objednávat. Pokud zákazník nedorazí v danném limitu po zacátku rezervace, rezervace se stornuje a terminál je znovu aktivní. cas do :Date konec rezervace (datum + cas)
cas od :Date zacátek rezervace (datum + cas)
email :String E-mail na zákazníka, který vytvoril rezervaci
jméno :String Jméno zákazníka který vytvoril rezervaci
58
stornovana :boolean True = položka je stornova a neplati False = platná rezervace
telefonní císlo :String Telefonní císlo s predvolbou
Role level : level oznacuje jak vysoké má daná role práva
name : jméno role = admin, vedoucí/manažer, obsluha
Stul Reprezentuje jednotlivý stul v podniku. název :String Název stolu
velikost :int pocet míst k sezení u stolu
Uživatelský úcet Reprezentuje jednotlivé úcty pro uživatele, kterí mají vyšši práva v systému. (obsluha, manažer,...) císlo NFC :int císlo NFC karty/tagu zamestnance
jméno :String jméno zamestnance
level role :int role, obsahují práva v systému
59
príjmení :String príjmení zamestnance
Úcet Úcet reprezentuje jednotlivou úctenku na stole. Evidujeme datum vytvorení úctu a položky na úctu. datum :Date Datum vytvorení úctu
Úctovatelná položka Jidlo/pití cena :int aktuální cena s DPH
kod :int Unikátní kód pro jídlo.
název :String
popis :String Popis polozky.
60
State diagram Položka na úcte Start
Objednání
Aktiv ní
Zaplacení
Zaplacená
Final
Aktivní Položka je na úcte a nezaplacená
Zaplacená Položka byla zaplacená
Start Final
61
Reklama Start
Pridat
Uložená
Nastane cas zobrazení Zobrazená
Skoncí cas zobrazení
Zmazaná
Final
Uložená Reklama je v systéme, ale ešte neprišiel jej cas na zobrazenie
Zmazaná Reklama byla zmazaná a tudiž není zobrazená
Zobrazená Reklama je zobrazená na termináloch
Start Final
62
Rezervace Start
Rezervovat
Platná rezerv ace
Nastane cas rezervace Aktiv ní rezerv ace
Storno
Storno
Skoncí cas rezervace Konec rezerv ace
Final
Aktivní rezervace Plyne cas rezervace
Konec rezervace Vypršel cas rezervace
Platná rezervace Vytvorená rezervace
Zrušená rezervace Rezervace byla zrušená
Start Final
63
Zrušená rezerv ace
Stul Start
Príchod
Obsazen
Zakazník odíde od stola Volný
Final
Obsazen Stul je obsazený
Volný Stul je volný
Start Final
64
Uživatelský úcet Start
Vytvorení
Vytv oren
První prihlášení uživatele Aktiv ní
Uživatel je vyhozený z práce Zrušen
Final
Aktivní Uživatelský úcet je aktivní
Vytvoren Uživatelský úcet byl vytvoren
Zrušen Uživatelský úcet byl zrušen
Start Final
65
Úcet Start
Objednání
Aktiv ní
Uživatel uhradí úcet Uhrazen
Final
Aktivní Uživatel si objedna
Aktivní Úcet není uhrazen
Uhrazen Úcet byl uhrazen
Start Final
66
Component model Azure inteligetni_hospoda
<<manifest>>
inteligentni_hospoda.appx
inteligentni_hospoda.appx
inteligetni_hospoda Storage
azure serv ice
<>
SqlManagementClient
Controllers
DTO
View s
Controllers Obsahují byznis logiku.
DTO DTO-cka mapované na databázu
Storage Views azure service SqlManagementClient
67
Hibernate inteligetni_hospoda
inteligentni_hospoda.j ar «manifest»
inteligentni_hospoda.jar
inteligetni_hospoda Storage
org.hibernate.SessionFactory
<<dependency>>
hibernate.cfg.xml Controllers
DTO
View s
«use»
j av ax.persistence.*
«use»
j av ax.sw ing.*
Component1 Controllers Obsahují byznis logiku.
DTO DTO-cka mapované na databázu
Storage
68
«use»
j av a.aw t.*
Views hibernate.cfg.xml java.awt.* javax.persistence.* javax.swing.* org.hibernate.SessionFactory hibernate.cfg.xml
69
Deployment Model Azure
Azure cloud
Azure SQL database Terminal Tablet/Mobil/PC s Win8.1 a vyšší
Windows 8.1/Windows Phone 8 Wi-Fi Router Wi-fi router s dosahem po celé restauraci, popr. její cásti a v tom prípade musí být wi-fi routeru více.
70
Hibernate «device» PC «executionEnvironment» Jav a «device» Database serv er
JRE
«postgreSQL» localhost:5432
«use»
«use»
Hibernate::inteligentni_hospoda.j ar
(from Hibernate)
PC
Application Hibernate Framework
Database server localhost:5432 Databáze se nachází na localhostu - port 5432
Java JRE
Java SE Swing framework
71
Diagram balíčků a tříd database + CreateDB + dao + entity + util
«use» serv ice + CashDeskService + MenuService + OrderingService + TableService + impl
«use» gui + DishPanel + DrinkPanel + ItemPanel + MainFrame + ReservationPanel + buttonlistener
«use» hospoda + Main
72
database util CreateDB + HibernateUtil +
dao
main()
entity
+ BillDao
+ Advertisement
+ BillItemDrinkDao
+ Bill
+ BillItemFoodDao
+ BillItemDrink
+ CategoryDao + DishDao
+ BillItemFood «import»
+ Category
+ DrinkDao
+ Dish
+ ReservationDao
+ Drink
+ TableDao
+ Reservation
+ impl
+ RestaurantTable + ReviewDish + ReviewDrink + UnpaidItem
CreateDB Trieda na vytvorenie databaze.
73
dao impl + BasicDaoImpl + BillDaoImpl + BillItemDrinkDaoImpl + BillitemFoodDaoImpl + CategoryDaoImpl + DishDaoImpl + DrinkDaoImpl + ReservationDaoImpl + TableDaoImpl
«interface» BillDao + + + +
«interface» CategoryDao
createOrUpdateBill(Bill): Integer getBillById(int): Bill getBillCount(): int getUnpaidBillOnTable(int): List
+ +
«interface» BillItemDrinkDao +
«interface» DishDao
createBillItemDrink(BillItemDrink): void + + + +
«interface» BillItemFoodDao +
getAllDishes(): List getAllDishesCount(): int getDishesByCategory(int): List getDishesByCategoryCount(int): int
«interface» DrinkDao
createBillItemFood(BillItemFood): void + + +
«interface» Reserv ationDao + + + + +
getAllCategories(): List getCategoryByCode(String): Category
createOrUpdateReservation(Reservation): Integer getAllReservations(): List getReservationByDate(Date): List getReservationByDateAndTable(int, Date): List getReservationCount(): int
BillDao BillItemDrinkDao
74
getAllDrinks(): List getAllDrinksCount(): int getDrinkByCategory(int): List
«interface» TableDao + + +
getAllTables(): List getTableById(int): RestaurantTable getTablesCount(): int
BillItemFoodDao CategoryDao DishDao DrinkDao ReservationDao TableDao
75
impl «interface» dao::BillDao
BillDaoImpl
BasicDaoImpl -
session: Session
-
ourInstance: BillDaoImpl = new BillDaoImpl()
# + + #
closeSessionAndReturnValue(T): commitAndCloseSession(): void getCount(String): int getOpenSession(): Session
+ + + + +
createOrUpdateBill(Bill): Integer getInstance(): BillDaoImpl getBillById(int): Bill getBillCount(): int getUnpaidBillOnTable(int): List
-
ourInstance: BillItemDrinkDaoImpl = new BillItemDri...
+ +
createBillItemDrink(BillItemDrink): void getInstance(): BillItemDrinkDaoImpl
-
ourInstance: BillItemFoodDaoImpl = new BillItemFoo...
+ +
createBillItemFood(BillItemFood): void getInstance(): BillItemFoodDaoImpl
-
ourInstance: CategoryDaoImpl = new CategoryDao...
+ + +
getAllCategories(): List getInstance(): CategoryDaoImpl getCategoryByCode(String): Category
-
instance: DishDaoImpl = new DishDaoImpl()
+ + + + +
getAllDishes(): List getInstance(): DishDaoImpl getAllDishesCount(): int getDishesByCategory(int): List getDishesByCategoryCount(int): int
-
ourInstance: DrinkDaoImpl = new DrinkDaoImpl()
+ + + +
getAllDrinks(): List getInstance(): DrinkDaoImpl getAllDrinksCount(): int getDrinkByCategory(int): List
-
ourInstance: ReservationDaoImpl = new Reservation...
+ + + + + +
createOrUpdateReservation(Reservation): Integer getInstance(): ReservationDaoImpl getAllReservations(): List getReservationByDate(Date): List getReservationByDateAndTable(int, Date): List getReservationCount(): int
-
ourInstance: TableDaoImpl = new TableDaoImpl()
+ + + +
getAllTables(): List getInstance(): TableDaoImpl getTableById(int): RestaurantTable getTablesCount(): int
+ + + +
createOrUpdateBill(Bill): Integer getBillById(int): Bill getBillCount(): int getUnpaidBillOnTable(int): List
«interface» dao::BillItemDrinkDao
BillItemDrinkDaoImpl +
createBillItemDrink(BillItemDrink): void
«interface» dao::BillItemFoodDao
BillitemFoodDaoImpl +
createBillItemFood(BillItemFood): void
«interface» dao::CategoryDao
CategoryDaoImpl + +
getAllCategories(): List getCategoryByCode(String): Category
«interface» dao::DishDao
DishDaoImpl + + + +
«interface» dao::DrinkDao
DrinkDaoImpl + + +
+ + + + +
BillDaoImpl ourInstance :BillDaoImpl
BillItemDrinkDaoImpl ourInstance :BillItemDrinkDaoImpl
76
createOrUpdateReservation(Reservation): Integer getAllReservations(): List getReservationByDate(Date): List getReservationByDateAndTable(int, Date): List getReservationCount(): int
«interface» dao::TableDao
TableDaoImpl
session :Session
getAllDrinks(): List getAllDrinksCount(): int getDrinkByCategory(int): List
«interface» dao::Reserv ationDao
Reserv ationDaoImpl
BasicDaoImpl
getAllDishes(): List getAllDishesCount(): int getDishesByCategory(int): List getDishesByCategoryCount(int): int
+ + +
getAllTables(): List getTableById(int): RestaurantTable getTablesCount(): int
BillitemFoodDaoImpl ourInstance :BillItemFoodDaoImpl
CategoryDaoImpl ourInstance :CategoryDaoImpl
DishDaoImpl instance :DishDaoImpl
DrinkDaoImpl ourInstance :DrinkDaoImpl
ReservationDaoImpl ourInstance :ReservationDaoImpl
TableDaoImpl ourInstance :TableDaoImpl
77
entity Rev iew Dish
Dish
Category -
childCategories: Collection code: String id: Integer interfaceColumn: int name: String parentCategory: Category
+ + + + + + + + + + + + + + +
equals(Object): boolean getChildCategories(): Collection getCode(): String getId(): Integer getInterfaceColumn(): int getName(): String getParentCategory(): Category hashCode(): int setChildCategories(Collection): void setCode(String): void setId(Integer): void setInterfaceColumn(int): void setName(String): void setParentCategory(Category): void toString(): String
-
category: Category code: String description: String dishCombination: Collection dishCombinationTo: Collection id: Integer name: String price: int reviews: Collection
+ + + + + + + + + + + + + + + + + + + + +
equals(Object): boolean getCategory(): Category getCode(): String getDescription(): String getDishCombination(): Collection getDishCombinationTo(): Collection getId(): Integer getName(): String getPrice(): int getReviews(): String hashCode(): int setCategory(Category): void setCode(String): void setDescription(String): void setDishCombination(Collection): void setDishCombinationTo(Collection): void setId(Integer): void setName(String): void setPrice(int): void setReviews(String): void toString(): String
-
capacity: int category: Category code: String description: String id: Integer isAlcoholic: boolean name: String price: int
+ + + + + + + + + + + + + + + + + + +
equals(Object): boolean getCapacity(): int getCategory(): Category getCode(): String getDescription(): String getId(): Integer getName(): String getPrice(): int hashCode(): int isAlcoholic(): boolean setAlcoholic(boolean): void setCapacity(int): void setCategory(Category): void setCode(String): void setDescription(String): void setId(Integer): void setName(String): void setPrice(int): void toString(): String
Drink
Bill billItemDrinks: Collection billItemFoods: Collection date: Date id: Integer table: RestaurantTable
-
bill: Bill drink: Drink id: Integer paid: boolean price: int
+ + + + + + + + + + + + +
equals(Object): boolean getBillItemDrinks(): Collection getBillItemFoods(): Collection getDate(): Date getId(): Integer getTable(): RestaurantTable hashCode(): int setBillItemDrinks(Collection): void setBillItemFoods(Collection): void setDate(Date): void setId(Integer): void setTable(RestaurantTable): void toString(): String
+ + + + + + + + + + + + +
equals(Object): boolean getBill(): Bill getDrink(): Drink getId(): Integer getPrice(): int hashCode(): int isPaid(): boolean setBill(Bill): void setDrink(Drink): void setId(Integer): void setPaid(boolean): void setPrice(int): void toString(): String
-
bill: Bill food: Food id: Integer paid: boolean price: int
+ + + + + + + + + + + + +
equals(Object): boolean getBill(): Bill getFood(): Food getId(): Integer getPrice(): int hashCode(): int isPaid(): boolean setBill(Bill): void setFood(Food): void setId(Integer): void setPaid(boolean): void setPrice(int): void toString(): String
dish: Dish id: Integer nickname: String review: String stars: int
+ + + + + + + + + + + + +
equals(Object): boolean getDish(): Dish getId(): Integer getNickname(): String getReview(): String getStars(): int hashCode(): int setDish(Dish): void setId(Integer): void setNickname(String): void setReview(String): void setStars(int): void toString(): String
Rev iew Drink -
drink: Drink id: Integer nickname: String review: String stars: int
+ + + + + + + + + + + + +
equals(Object): boolean getDrink(): Drink getId(): Integer getNickname(): String getReview(): String getStars(): int hashCode(): int setDrink(Drink): void setId(Integer): void setNickname(String): void setReview(String): void setStars(int): void toString(): String
Adv ertisement -
id: Integer image: byte[] text: String
+ + + + + + + + +
equals(Object): boolean getId(): Integer getImage(): byte[] getText(): String hashCode(): int setId(Integer): void setImage(byte[]): void setText(String): void toString(): String
UnpaidItem -
billId: int billitemId: int id: long isDish: boolean name: String price: int
+ + + + + + + + + + + + + + +
equals(Object): boolean getBillId(): int getBillitemId(): int getId(): long getName(): String getPrice(): int hashCode(): int isDish(): boolean setBillId(int): void setBillItemId(int): void setDish(boolean): void setId(long): void setName(String): void setPrice(int): void toString(): String
-
id: Integer name: String size: int
+ + + + + + + + +
equals(Object): boolean getId(): Integer getName(): String getSize(): int hashCode(): int setId(Integer): void setName(String): void setSize(int): void toString(): String
-
customerName: String description: String id: Integer mail: String phoneNumber: String table: RestaurantTable timeFrom: Date timeTo: Date
+ + + + + + + + + + + + + + + + + + +
equlas(Object): boolean getCustomerName(): String getDescription(): String getId(): Integer getMail(): String getPhoneNumber(): String getTable(): RestaurantTable getTimeFrom(): Date getTimeTo(): Date hashCode(): int setCustomerName(String): void setDescription(String): void setId(Integer): void setMail(String): void setPhoneNumber(String): void setTable(RestaurantTable): void setTimeFrom(Date): void setTimeTo(Date): void toString(): String
RestaurantTable
Reserv ation
BillItemDrink
-
-
BillItemFood
78
Advertisement id :Integer image :byte[] text :String
Bill billItemDrinks :Collection billItemFoods :Collection date :Date id :Integer table :RestaurantTable
BillItemDrink bill :Bill drink :Drink id :Integer paid :boolean price :int
BillItemFood bill :Bill food :Food id :Integer paid :boolean price :int
Category childCategories :Collection code :String id :Integer interfaceColumn :int name :String parentCategory :Category
79
Dish category :Category code :String description :String dishCombination :Collection dishCombinationTo :Collection id :Integer name :String price :int reviews :Collection
Drink capacity :int category :Category code :String description :String id :Integer isAlcoholic :boolean name :String price :int
Reservation customerName :String description :String id :Integer mail :String phoneNumber :String table :RestaurantTable timeFrom :Date timeTo :Date
RestaurantTable id :Integer
80
name :String size :int
ReviewDish dish :Dish id :Integer nickname :String review :String stars :int
ReviewDrink drink :Drink id :Integer nickname :String review :String stars :int
UnpaidItem billId :int billitemId :int id :long isDish :boolean name :String price :int
81
util HibernateUtil -
sessionFactory: SessionFactory = buildSessionFac... {readOnly}
+ +
buildSessionFactory(): SessionFactory getSessionFactory(): SessionFactory shutdown(): void
HibernateUtil sessionFactory :SessionFactory
82
gui MainFrame {root} +
tableId: int
+ +
init() ok(JPanel) storno(JPanel) ItemPanel
DrinkPanel -
bill: Bill categoryList: List content: JPanel controller: OrderingController DRINK_CODE: String = DRINKS instance: DrinkPanel mainPanel: JPanel orderedDrinks: List scrollMainPane: JScrollPane scrollSidePane: JScrollPane sidePanel: JPanel sidesCount: int
+ # # # -
addOrderDrink(Drink) choosePanel(int): JPanel clearOrderChoise() init() makeButtons(Category) makeOrder() reinit()
DishPanel -
bill: Bill button: JButton categoryList: List content: JPanel controller: OrderingController DISH_CODE: String = MAIN_FOOD dishesCount: int instance: DishPanel mainPanel: JPanel orderedDishes: List scrollMainPane: JScrollPane scrollSidePane: JScrollPane sidePanel: JPanel sidesCount: int
+ # # # -
addOrderedDish(Dish): void choosePanel(): JPanel clearOrderChoise(): void init() makeButtons(Category): void makeOrder(): void reinit(): void
# # # # # # # # # # #
BUTTON_FONTSIZE: int = 15 {readOnly} buttons: JButton[] CATEGORY_NAME_SIZE: Dimension = 480,40 {readOnly} CONTROL_BUTTON_SIZE: Dimension = 480,40 {readOnly} CONTROL_BUTTONS_NAME: String[] = OK,STORNO {readOnly} controlButtons: JPanel ITEM_BUTTON_SIZE: Dimension = 150,100 {readOnly} mainFrame: MainFrame {readOnly} PRINT_AREA_INNER_BORDER: Border = 20,15,20,15 {readOnly} PRINT_AREA_OUT_BORDER: Border = GRAY {readOnly} TEXT_AREA_SIZE: Dimension = 340,400 {readOnly}
# # # #
clearOrderChoise() init() initButtons() makeOrder()
buttonlistener + DishButtonListener + DrinkButtonListener
Reserv ationPanel
DishPanel bill :Bill button :JButton categoryList :List
83
content :JPanel controller :OrderingController DISH_CODE :String dishesCount :int instance :DishPanel mainPanel :JPanel orderedDishes :List scrollMainPane :JScrollPane scrollSidePane :JScrollPane sidePanel :JPanel sidesCount :int
DrinkPanel bill :Bill categoryList :List content :JPanel controller :OrderingController DRINK_CODE :String instance :DrinkPanel mainPanel :JPanel orderedDrinks :List scrollMainPane :JScrollPane scrollSidePane :JScrollPane sidePanel :JPanel sidesCount :int
ItemPanel BUTTON_FONTSIZE :int buttons :JButton[] CATEGORY_NAME_SIZE :Dimension CONTROL_BUTTON_SIZE :Dimension CONTROL_BUTTONS_NAME :String[] controlButtons :JPanel ITEM_BUTTON_SIZE :Dimension
84
mainFrame :MainFrame PRINT_AREA_INNER_BORDER :Border PRINT_AREA_OUT_BORDER :Border TEXT_AREA_SIZE :Dimension
MainFrame tableId :int
ReservationPanel
85
buttonlistener DishButtonListener -
dish: Dish {readOnly} dishPanel: DishPanel
+ + + + +
mouseClicked(MouseEvent): void mouseEntered(MouseEvent): void mouseExited(MouseEvent): void mousePressed(MouseEvent): void mouseReleased(MouseEvent): void
DrinkButtonListener -
drink: Drink {readOnly} drinkPanel: DrinkPanel
+ + + + +
mouseClicked(MouseEvent): void mouseEntered(MouseEvent): void mouseExited(MouseEvent): void mousePressed(MouseEvent): void mouseReleased(MouseEvent): void
DishButtonListener dish :Dish dishPanel :DishPanel
DrinkButtonListener drink :Drink drinkPanel :DrinkPanel
86
hospoda Main {root} +
main()
Main
87
service «interface» CashDeskServ ice + + + + + +
createBillItemDrink(BillItemDrink): void createBillItemDrink(List): void createBillItemFood(BillItemFood): void createBillItemFood(List): void createBillOnTable(RestaurantTable): Integer getBillById(int): Bill
«interface» TableServ ice +
getTable(int): RestaurantTable
impl + CashDeskServiceImpl + MenuServiceImpl «interface» OrderingServ ice
+ OrderingServiceImpl + TableServiceImpl + + + +
orderDrink(RestaurantTable, Bill, Drink): Bill orderDrink(RestaurantTable, Bill, List): Bill orderFood(RestaurantTable, Bill, Dish): Bill orderFood(RestaurantTable, Bill, List): Bill
«interface» MenuServ ice + + + + +
getAllCategoriesByParentCategory(Category): List getAllCategoriesByParentCategory(String): List getDishesByCategory(Category): List getDishesByCombinationToAndCategory(Category, List): List getDrinkByCategory(Category): List
CashDeskService MenuService OrderingService TableService
88
impl «interface» serv ice::MenuServ ice
MenuServ iceImpl -
categoryDao: CategoryDao dishDao: DishDao drinkDao: DrinkDao ourInstance: MenuServiceImpl
+ + + + + +
getAllCategoriesByParentCategory(Category): List getCombinationsToDishes(List): Set getAllCategoriesByParentCategory(String): List getInstance(): MenuServiceImpl getDishesByCategory(Category): List getDishesByCombinationToAndCategory(Category, List): List getDrinkByCategory(Category): List
+ + + + +
«interface» serv ice::TableServ ice
TableServ iceImpl -
ourInstance: TableServiceImpl tableDao: TableDao
+ +
getInstance(): TableServiceImpl getTable(int): RestaurantTable
+
cashDeskService: CashDeskService ourInstance: OrderingServiceImpl
+ + + + + + +
createBillItemDrink(Bill, Drink): BillitemDrink createBillitemFood(Bill, Dish): BillItemFood getInstance(): OrderingServiceImpl orderDrink(RestaurantTable, Bill, Drink): Bill orderDrink(RestaurantTable, Bill, List): Bill orderFood(RestaurantTable, Bill, Dish): Bill orderFood(RestaurantTable, Bill, List): Bill
-
billDao: BillDao billItemDrinkDao: BillItemDrinkDao billItemFoodDao: BillItemFoodDao ourInstance: CashDeskServiceImpl
+ + + + + + +
createBillItemDrink(BillItemDrink): void createBillItemDrink(List): void createBillItemFood(BillItemFood): void createBillItemFood(List): void createBillOnTable(RestaurantTable): Integer getBillById(int): Bill getInstance(): CashDeskServiceImpl
getTable(int): RestaurantTable
«interface» serv ice::OrderingServ ice
OrderingServ iceImpl -
getAllCategoriesByParentCategory(Category): List getAllCategoriesByParentCategory(String): List getDishesByCategory(Category): List getDishesByCombinationToAndCategory(Category, List): List getDrinkByCategory(Category): List
+ + + +
orderDrink(RestaurantTable, Bill, Drink): Bill orderDrink(RestaurantTable, Bill, List): Bill orderFood(RestaurantTable, Bill, Dish): Bill orderFood(RestaurantTable, Bill, List): Bill
«interface» serv ice::CashDeskServ ice
CashDeskServ iceImpl + + + + + +
CashDeskServiceImpl billDao :BillDao billItemDrinkDao :BillItemDrinkDao billItemFoodDao :BillItemFoodDao ourInstance :CashDeskServiceImpl
MenuServiceImpl categoryDao :CategoryDao dishDao :DishDao drinkDao :DrinkDao ourInstance :MenuServiceImpl
89
createBillItemDrink(BillItemDrink): void createBillItemDrink(List): void createBillItemFood(BillItemFood): void createBillItemFood(List): void createBillOnTable(RestaurantTable): Integer getBillById(int): Bill
OrderingServiceImpl cashDeskService :CashDeskService ourInstance :OrderingServiceImpl
TableServiceImpl ourInstance :TableServiceImpl tableDao :TableDao
90
Sequence diagrams Objednat jidlo :DishPanel
(from Actors)
:OrderingServiceImpl
:CashDeskServiceImpl
Zákazník init() alt obj ednav anie j edla [MouseEvent event==null]
ref Zobrazit nabidku j idla
[!orderedDishes.contains(dish)]: addOrderedDish(dish)
makeOrder() orderFood(List dishes, Bill bill, RestaurantTable table): Bill
[bill == null]:createBillOnTable(table): int
getBillById(billId): Bill «create» createNew()
billItemFoods:LinkedList
loop v ytv orenie listu s j edlami createBillItemFood(dish, bill): BillItemFood createNew()
setDish(dish)
setPrice(dish.getPrice())
setBill(bill) add(BillItemFood)
createBillItemFood(billItemFoods) getBillById(bill.getId()): Bill :Bill
clearOrderChoise()
:CashDeskServiceImpl :DishDaoImpl :DishPanel :MenuServiceImpl :OrderingServiceImpl :BillItemFood
91
«create» :BillItemFood
Zobrazit nabidku jidla billItemFoods:LinkedList objednavanie jedla vytvorenie listu s jedlami
92
Objednat piti :DrinkPanel
(from Actors)
:OrderingServiceImpl
:CashDeskServiceImpl
Zákazník init() loop obj ednav anie pitia [MouseEvent event==null] ref Zobrazit nabidku piti
[!orderedDrinks.contains(drink)]:addOrderedDrink(drink)
makeOrder() orderDrink(orderedDrinks, BILL, MainFrame.TABLE): Bill
[bill == null]:createBillOnTable(table): int
getBillById(billId): Bill
«create» createNew()
billItemDrinks:LinkedList
alt v ytv orenie obj ednav ky pitia createBillItemDrink(Drink drink, Bill bill): BillItemDrink «create» createNew()
setBill(Bill)
setDrink(Drink)
setPrice(drink.getPrice()) add(BillItemDrink)
createBillItemDrink(billItemDrinks)
getBillById(bill.getId())
:Bill
clearOrderChoise()
:CashDeskServiceImpl :DrinkPanel :OrderingServiceImpl Zobrazit nabidku piti billItemDrink:BillItemDrink billItemDrinks:LinkedList objednavanie pitia vytvorenie objednavky pitia
93
billItemDrink:BillItemDrink
Zaplatit ucet (from Actors)
:BillPanel
:CashDeskService
:BillItemFoodDaoImpl
:BillItemDrinkDao
:BillItemDrinkDao
Zákazník BillItemDrink BillItemFood
getUnpaidBillItemFoodByBill(bill): List getUnpaidBillItemFoodByBill(bill.getId()): List
:List billItemFoods :List billItemFoods
getUnpaidBillItemDrinkByBill(bill): List
getUnpaidBillItemDrinkByBill(bill.getId()): List
:List billItemDrinks :List billItemDrinks
loop v yber na zaplatenie [!MouseEvent event.index=2 or !MouseEvent event.index=3] createNew()
«create» billItemDrinkForPay:LinkedList «create»
createNew()
billItemFoodForPay:LinkedList
[MouseEvent e = 4]: addPayBillItemDrink (BillitemDrink) add(BillItemDrink)
[MouseEvent e = 5]: addPayBillItemFood (BillItemFood) add(BillitemFood)
[MouseEvent e.index=2 or MouseEvent e.index=3]: pay(billItemFoods, billItemDrinks)
pay(List billItemFoods, List billItemDrinks)
loop platenie pitia [billItemDrinks != null && billItemDrinks.size() > 0] setPaid(true) updateBillItemDrink(billItemDrink)
loop platenie j edla [billItemFoods != null && billItemFoods.size() > 0] setPaid(true)
updateBillItemFood(billItemFood)
:BillItemDrinkDao :BillItemDrinkDao :BillItemFoodDao :BillItemFoodDaoImpl :BillPanel :CashDeskService BillItemDrink BillItemFood
94
:BillItemFoodDao
billItemDrinkForPay:LinkedList billItemFoodForPay:LinkedList platenie jedla platenie pitia vyber na zaplatenie
95
Zobrazit nabidku jidla :DishPanel
(from Actors)
:MenuServiceImpl
:DishDaoImpl
Zákazník
init()
[orderedDishes.isEmpty()]: getDishesByCategory(category): List getDishesByCategory (category.getId()): List
:List
[!orderedDishes.isEmpty()]: getDishesByCombinationToAndCategory(orderedDishes, category): List
getCombinationsToDishes(dishes): Set «create» createNew()
loop Dish dish : combinations [dish.getCategory().equals(category)]:add(dish)
:List
:DishDaoImpl :DishPanel :MenuServiceImpl Dish dish : combinations combinationsByCategory:ArrayList
96
combinationsByCategory:ArrayList
Zobrazit nabidku piti :DrinkPanel
(from Actors)
:MenuServiceImpl
:DrinkDaoImpl
Zákazník
init() getDrinkByCategory(category): List getDrinkByCategory(category.getId()): List
:List
:DrinkDaoImpl :DrinkPanel :MenuServiceImpl
97
Plán testování případů užití Zobrazení nabídky jídla nebo pití (tento test je stejný pro oba případy)
Optimální průběh 1. Uživatel klikne na dlaždici – Drinks/Dishes 2. Zobrazí se nabídka všech jídel/pití a. Zobrazí se všechny záznamy z databáze b. Všechny položky budou zařazeny ve správných kategoriích
Objednat pití Optimální průběh 1. 2. 3. 4. 5.
Zobrazení nabídky - Drinks Uživatel označí nápoj Kozel 11° Zvolí počet – 3x a potvrdí Klikne na OK Na účtence bude 3x Kozel 11° - nezaplacený
Alternativní průběh 1 1. Zobrazení nabídky - Drinks 2. Uživatel označí nápoj Kozel 11 3. Zvolí počet – 3x a potvrdí 4. Klikne na Storno 5. Na účtence nesmí být žádný záznam Alternativní průběh 2 1. Zobrazení nabídky - Drinks 2. Uživatel označí nápoj Kozel 11 3. Zvolí počet – 3x a nepotvrdí 4. Klikne na OK 5. Na účtence nesmí být žádný záznam
Objednat jídlo Optimální průběh 1. 2. 3. 4. 5. 6.
Zobrazení nabídky - Dishes Uživatel označí z nabídky hlavních jídel Tatarák Ve sloupci příloh bude jediná příloha topinky 2ks Označí přílohu Klikne na OK Na účtence se objeví korektní objednávka
Alternativní průběh 1 1. Zobrazení nabídky - Dishes 2. Uživatel označí z nabídky příloh topinky 2ks 3. Ve sloupci jídel v kategorii hlavních jídel bude možnost vybrat Tatarák 4. Označí Tatarák
98
5. Klikne na OK 6. Na účtence se objeví korektní objednávka Alternativní průběh 2 1. Zobrazení nabídky – Dishes 2. Uživatel označí ve sloupci jídel, kategorii hlavních jídel Kuře Diplomat 3. Ve sloupci příloh se vyfiltrují vhodné přílohy (delší seznam, bude přesněn při testu), zde se nesmí zobrazit přílohy nepřiřazené k tomuto jídlu 4. Uživatel si vybere další hlavní jídlo např. Tatarák 5. Ve sloupci příloh přibydou další vhodné přílohy 6. Klikne na OK 7. Na účtence se objeví korektní objednávka Alternativní průběh 3 1. Zobrazení nabídky - Dishes 2. Uživatel označí z nabídky hlavních jídel Tatarák 3. Ve sloupci příloh bude jediná příloha topinky 2ks 4. Označí přílohu 5. Klikne na Storno 6. Na účtence se neobjeví objednávka
Výsledky testů TestComplete Pro zobrazení výsledků je potřeba přejít do cloudového uložiště, stáhnout si obsah a soubor index.html zobrazit v prohlížeči.
Ke stažení zde: OneDrive si_kozel_2014 TestComplete (http://1drv.ms/1smCgHK)
99
FindBugs Report Produced using FindBugs3.0.1-rev11189b911ff3-jre6. Project: trunk
Metrics 1593 lines of code analyzed, in 48 classes, in 10 packages.
Metric
Total
Density*
High Priority Warnings
NaN
Medium Priority Warnings
14
8.79
Total Warnings
14
8.79
(* Defects per Thousand lines of non-commenting source statements)
Summary Warning Type
Number
Malicious code vulnerability Warnings
11
Dodgy code Warnings
3
Total
14
Warnings Click on each warning link to see a full description of the issue, and details of how to resolve it.
Malicious code vulnerability Warnings Warning
Priority
Details
May expose internal representation
Medium
as.kozel.hospoda.database.entity.Advertisment.getImage() may expose internal representation by returning Advertisment.image
100
by returning reference to mutable object
In file Advertisment.java, line 47 In class as.kozel.hospoda.database.entity.Advertisment In method as.kozel.hospoda.database.entity.Advertisment.getImage() Field as.kozel.hospoda.database.entity.Advertisment.image At Advertisment.java:[line 47] At Advertisment.java:[line 47]
May expose internal representation by returning reference to mutable object
Medium
May expose internal representation by returning reference to mutable object
Medium
May expose internal representation by returning reference to mutable object
Medium
May expose internal representation by incorporating reference to mutable object
Medium
May expose internal
Medium
as.kozel.hospoda.database.entity.Bill.getDate() may expose internal representation by returning Bill.date
In file Bill.java, line 54 In class as.kozel.hospoda.database.entity.Bill In method as.kozel.hospoda.database.entity.Bill.getDate() Field as.kozel.hospoda.database.entity.Bill.date At Bill.java:[line 54] At Bill.java:[line 54] as.kozel.hospoda.database.entity.Reservation.getTimeFrom() may expose internal representation by returning Reservation.timeFrom
In file Reservation.java, line 62 In class as.kozel.hospoda.database.entity.Reservation In method as.kozel.hospoda.database.entity.Reservation.getTimeFrom() Field as.kozel.hospoda.database.entity.Reservation.timeFrom At Reservation.java:[line 62] At Reservation.java:[line 62] as.kozel.hospoda.database.entity.Reservation.getTimeTo() may expose internal representation by returning Reservation.timeTo
In file Reservation.java, line 70 In class as.kozel.hospoda.database.entity.Reservation In method as.kozel.hospoda.database.entity.Reservation.getTimeTo() Field as.kozel.hospoda.database.entity.Reservation.timeTo At Reservation.java:[line 70] At Reservation.java:[line 70] as.kozel.hospoda.database.entity.Advertisment.setImage(byte[]) may expose internal representation by storing an externally mutable object into Advertisment.image
In file Advertisment.java, line 51 In class as.kozel.hospoda.database.entity.Advertisment In method as.kozel.hospoda.database.entity.Advertisment.setImage(byte[]) Field as.kozel.hospoda.database.entity.Advertisment.image Local variable named image At Advertisment.java:[line 51] At Advertisment.java:[line 51] as.kozel.hospoda.database.entity.Bill.setDate(Date) may expose internal representation by storing an externally mutable object into Bill.date
101
representation by incorporating reference to mutable object
In file Bill.java, line 58 In class as.kozel.hospoda.database.entity.Bill In method as.kozel.hospoda.database.entity.Bill.setDate(Date) Field as.kozel.hospoda.database.entity.Bill.date Local variable named date At Bill.java:[line 58] At Bill.java:[line 58]
May expose internal representation by incorporating reference to mutable object
Medium
May expose internal representation by incorporating reference to mutable object
Medium
Field should be package protected
Medium
as.kozel.hospoda.database.entity.Reservation.setTimeFrom(Date) may expose internal representation by storing an externally mutable object into Reservation.timeFrom
In file Reservation.java, line 66 In class as.kozel.hospoda.database.entity.Reservation In method as.kozel.hospoda.database.entity.Reservation.setTimeFrom(Date) Field as.kozel.hospoda.database.entity.Reservation.timeFrom Local variable named timeFrom At Reservation.java:[line 66] At Reservation.java:[line 66] as.kozel.hospoda.database.entity.Reservation.setTimeTo(Date) may expose internal representation by storing an externally mutable object into Reservation.timeTo
In file Reservation.java, line 74 In class as.kozel.hospoda.database.entity.Reservation In method as.kozel.hospoda.database.entity.Reservation.setTimeTo(Date) Field as.kozel.hospoda.database.entity.Reservation.timeTo Local variable named timeTo At Reservation.java:[line 74] At Reservation.java:[line 74] as.kozel.hospoda.gui.ItemPanel.CONTROL_BUTTONS_NAME should be package protected
In file ItemPanel.java, line 27 In class as.kozel.hospoda.gui.ItemPanel Field as.kozel.hospoda.gui.ItemPanel.CONTROL_BUTTONS_NAME At ItemPanel.java:[line 27] Field should be package protected
Medium
as.kozel.hospoda.gui.MainFrame.BILL should be package protected
In file MainFrame.java, lines to In class as.kozel.hospoda.gui.MainFrame Field as.kozel.hospoda.gui.MainFrame.BILL In MainFrame.java Field should be package protected
Medium
as.kozel.hospoda.gui.MainFrame.TABLE should be package protected
102
In file MainFrame.java, lines to In class as.kozel.hospoda.gui.MainFrame Field as.kozel.hospoda.gui.MainFrame.TABLE In MainFrame.java
Dodgy code Warnings Warning
Priority Details
Write to static field from instance method
Medium
Write to static field as.kozel.hospoda.gui.MainFrame.BILL from instance method as.kozel.hospoda.gui.DishPanel.makeOrder()
In file DishPanel.java, line 110 In class as.kozel.hospoda.gui.DishPanel In method as.kozel.hospoda.gui.DishPanel.makeOrder() Field as.kozel.hospoda.gui.MainFrame.BILL At DishPanel.java:[line 110] At DishPanel.java:[line 110] Write to static field from instance method
Medium
Write to static field as.kozel.hospoda.gui.MainFrame.BILL from instance method as.kozel.hospoda.gui.DrinkPanel.makeOrder()
In file DrinkPanel.java, line 185 In class as.kozel.hospoda.gui.DrinkPanel In method as.kozel.hospoda.gui.DrinkPanel.makeOrder() Field as.kozel.hospoda.gui.MainFrame.BILL At DrinkPanel.java:[line 185] At DrinkPanel.java:[line 185] Write to static field from instance method
Medium
Write to static field as.kozel.hospoda.gui.MainFrame.TABLE from instance method new as.kozel.hospoda.gui.MainFrame(int)
In file MainFrame.java, line 49 In class as.kozel.hospoda.gui.MainFrame In method new as.kozel.hospoda.gui.MainFrame(int) Field as.kozel.hospoda.gui.MainFrame.TABLE At MainFrame.java:[line 49] At MainFrame.java:[line 49]
103
Zpráva o implementaci Aktér Use-case Zákazník Hodnotit jídla/pití
Implementováno
Hodnotit restauraci Objednat jídlo Objednat pití Přivolat obsluhu Rezervovat stůl Zaplatit pomocí NFC
OK OK
Zaplatit u obsluhy Zobrazení nabídky jídla Zobrazení nabídky pití Zobrazit účet Vedoucí/Manažer Editace jídla/pití Editace uživatelského účtu Editovat nabídku restaurace Odebrat jídlo/pití Přidat jídlo/pití Přidat reklamu Vytvoření nových uživatelských účtů Zobrazit hodnocení Obsluha Editovat rezervaci Vyúčtování zákazníka
104
Chybí komunikace s NFC, bez GUI OK – bez GUI OK OK OK – bez GUI
OK – bez GUI
Uživatelský manuál Navigační panel Uživateli se obrazovce zobrazí navigační panel, kde bude moct zobrazit: nabídku jídla, nabídku pití, objednávky, rezervace, info o restauraci a bude moct zavolat obsluhu.
Nabídka pití Po kliknutí na položku Drink v navigačním panelu se zobrazí nabídka pití, kde si bude moc uživatel vybrat pití, které si chce objednat. Na levé straně se zobrazují alkoholické nápoje a pod nimi panáky. Na pravé straně se zobrazují nealkoholické nápoje. Po kliknutí na tlačítko OK si uživatel vše označené pití objedná. Kliknutí na tlačítko STORNO uživatele vrátí na navigační panel.
105
Nabídka jídla Po kliknutí na položku Dish v navigačním panelu se zobrazí nabídka jídla, kde si bude moc uživatel vybrat hlavní jídla, masa, polévky a přílohy. Na levé straně se nacházejí hlavní jídla, masa a polévky. Na pravé straně se nacházejí přílohy. Po kliknutí na nějaké jídlo se přílohy, podle dostupnosti k vybranému jídlu, automaticky vygenerují. Po kliknutí na nějakou přílohu se jídla, podle dostupnosti k vybrané příloze, automaticky vygenerují. Po kliknutí na tlačítko OK si uživatel vše označené jídla včetně příloh objedná. Kliknutí na tlačítko STORNO uživatele vrátí na navigační panel.
106