Rok akademicki 2012/2013 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki PRACA DYPLOMOWA INŻYNIERSKA Marek Lewandowski System zarządzania obłożeniem hotelu - aplikacja w architekturze trójwarstwowej Opiekun pracy dr inż. Jarosław Dawidczyk Ocena: ..................................................... ................................................................. Podpis Przewodniczącego Komisji Egzaminu Dyplomowego Kierunek: Informatyka Specjalność: Inżynieria Systemów Informatycznych Data urodzenia: 1990.01.07 Data rozpoczęcia studiów: 2009.10.01 Życiorys Urodziłem się 7 stycznia 1990 roku w Warszawie. W latach 2006-2009 uczęszczałem do I Liceum Ogólnokształcącego im. Wacława Nałkowskiego w Wołominie. W roku 2009 zdałem egzamin maturalny i rozpocząłem studia na wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej. ....................................................... Podpis studenta EGZAMIN DYPLOMOWY Złożył egzamin dyplomowy w dniu ................................................................................. 2013 r. z wynikiem ................................................................................................................................... Ogólny wynik studiów: ................................................................................................................ Dodatkowe wnioski i uwagi Komisji: .......................................................................................... ....................................................................................................................................................... ....................................................................................................................................................... STRESZCZENIE Celem pracy było stworzenie prototypu systemu zarządzania obłożeniem hotelu. Pierwszy rozdział zawiera cel pracy inżynierskiej. W drugim rozdziale została omówiona dziedzina problemu. Zawarte w nim informacje dotyczą organizacji hotelu, rezerwacji hotelowej i innych zagadnień z branży hotelarskiej. Kolejny rozdział przedstawia architekturę trójwarstwową oraz dostępne rozwiązania technologiczne. Rozdział czwarty zawiera wymagania systemu. W rozdziale piątym został opisany projekt systemu i wybory technologiczne. Rozdział szósty prezentuje model danych systemu. W następnym rozdziale zostały omówione wybrane zagadnienia z implementacji systemu, w tym fizyczny model systemu. Ostatni rozdział stanowi podsumowanie pracy. Słowa kluczowe: architektura trójwarstwowa, rezerwacja, hotel Hotel occupancy management system – application based on three-tier architecture. The main goal of this bachelor thesis was to create prototype of hotel occupancy management system. First chapter describes goal of this thesis. Second chapter contains description and analysis of the housekeeping field. It describes in great detail hotel's organization, reservation and other subjects. The following chapter describes tree-tier architecture and available technologies. Fourth chapter contains system requirements. Fifth chapter discusses project and technology choices. Sixth chapter describes logical data model. Next chapter discusses few chosen implementation details including physical data model. Last chapter summaries thesis. Keywords: tree-tier architecture, reservation, hotel Spis tres´ci 1. Wste˛p 1 1.1. Motywacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. Cel pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2. Analiza dziedziny 2 2.1. Z´ródła informacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.2. Historia hotelarstwa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.3. Hotelarstwo i usługa hotelarska . . . . . . . . . . . . . . . . . . . . . . 3 2.3.1. Czym charakteryzuje sie˛ hotelarstwo?. . . . . . . . . . . . . . . 3 2.3.2. Definicja usługi hotelarskiej . . . . . . . . . . . . . . . . . . . . 3 2.4. Klasyfikacja i kategoryzacja obiektów hotelarskich . . . . . . . . . . . 3 2.4.1. Podział według kategorii . . . . . . . . . . . . . . . . . . . . . . . 4 2.4.2. Wymagania kategoryzacyjne . . . . . . . . . . . . . . . . . . . . 5 2.4.3. Pie˛c´ gwiazdek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.5. Podział usług hotelarskich . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.5.1. Usługi uzupełniaja˛ce . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.5.2. Usługi fakultatywne . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.5.3. Usługi towarzysza˛ce . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.5.4. Usługi obce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.5.5. Wymagania kategoryzacyjne a usługi . . . . . . . . . . . . . . . 7 2.6. Istotne definicje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.6.1. Definicja noclegu . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.6.2. Definicja doby hotelowej . . . . . . . . . . . . . . . . . . . . . . . 8 2.6.3. Klient. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.6.4. Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.7. Organizacja w zakładzie hotelarskim . . . . . . . . . . . . . . . . . . . 9 2.7.1. Definicja struktury . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.7.2. Struktura organizacyjna w s´redniej wielkos´ci hotelu . . . . . . 10 2.7.3. Dział Hotelarski. . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.7.4. We˛zeł recepcyjny . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 iv SPISTRES´CI v 2.8. Klasyfikacja hoteli raz jeszcze . . . . . . . . . . . . . . . . . . . . . . . 13 2.9. Pomieszczenia hotelowe . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.10. Pokoje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.10.1. Rodzaje pokoi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.11. Karta pobytu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.12. Rezerwacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.12.1. Co oznacza rezerwacja? . . . . . . . . . . . . . . . . . . . . . . . 15 2.12.2. Sposoby przeprowadzania rezerwacji . . . . . . . . . . . . . . . 15 2.12.3. Rodzaje rezerwacji . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.12.4. Pojedyncza i grupowa rezerwacja . . . . . . . . . . . . . . . . . 17 2.12.5. Informacje na rezerwacji . . . . . . . . . . . . . . . . . . . . . . 19 2.12.6. Odwoływanie rezerwacji . . . . . . . . . . . . . . . . . . . . . . . 20 2.12.7. Relokacja rezerwacji . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.12.8. Stan rezerwacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.13. Rodzaje klientów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.13.1. Klient grupowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.13.2. Klient korporacyjny . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.13.3. Klient stały . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.13.4. Klient zwia˛zany z agentem biura pos´rednicza˛cego . . . . . . . . 22 2.14. Cennik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.14.1. Czynniki ceny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.14.2. Rack rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.14.3. Stawka okresowa . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.14.4. Cena wolna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.15. Pakiety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.16. OpenTravel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.16.1. Dokumentacja standardu . . . . . . . . . . . . . . . . . . . . . . 24 2.17. Systemy CRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.18. Systemy hotelarskie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.18.1. Kluczowe elementy systemu . . . . . . . . . . . . . . . . . . . . 26 2.18.2. Porównanie systemów . . . . . . . . . . . . . . . . . . . . . . . . 26 3. Technologie 27 3.1. Wste˛p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2. Architektura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2.1. Wste˛p do architektury trójwarstwowej . . . . . . . . . . . . . . 27 3.2.2. Warstwy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.2.3. Historia architektury trójwarstwowej . . . . . . . . . . . . . . . 29 SPISTRES´CI vi 3.2.4. Omówienie architektury trójwarstwowej . . . . . . . . . . . . . 29 3.3. Obszary technologiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.4. Systemy kontroli wersji . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.5. Je˛zyki programowania i platformy uruchomieniowe . . . . . . . . . . 32 3.6. Budowa projektu i zarza˛dzanie . . . . . . . . . . . . . . . . . . . . . . . 32 3.6.1. Apache Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.7. Szkielety aplikacyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.7.1. Wzorzec MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.7.2. ObjectLedge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.7.3. Spring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.7.4. Playframework . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.7.5. Seam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.7.6. Vaadin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.8. Biblioteki zapewniaja˛ce doste˛p do bazy danych . . . . . . . . . . . . . 36 3.8.1. Hibernate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.8.2. JDBC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.9. Budowa interfejsu uz˙ytkownika . . . . . . . . . . . . . . . . . . . . . . 36 3.9.1. AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.9.2. jQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.9.3. Dojo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.9.4. AngularJS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.10. Relacyjne bazy danych. . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.11. Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4. Model funkcjonalny 40 4.1. Cel systemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.1.1. Dlaczego tworzymy system?. . . . . . . . . . . . . . . . . . . . . 40 4.1.2. Odbiorca systemu . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.2. Wymagania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.2.1. Wymagania funkcjonalne . . . . . . . . . . . . . . . . . . . . . . 41 4.2.2. Wymagania niefunkcjonalne . . . . . . . . . . . . . . . . . . . . 45 4.3. Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5. Projekt systemu 48 5.1. Wste˛p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.2. Lista wybranych technologii . . . . . . . . . . . . . . . . . . . . . . . . 48 5.3. Dlaczego Git? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.4. Dlaczego JVM i Java? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 SPISTRES´CI vii 5.5. Dlaczego Maven? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.6. Dlaczego ObjectLedge?. . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.7. Dlaczego Hibernate? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.8. Dlaczego AngularJS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.9. Dlaczego PostgreSQL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.10. Identyfikacja aktorów . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.11. Przypadki uz˙ycia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.11.1. Przykładowy przypadek uz˙ycia . . . . . . . . . . . . . . . . . . . 52 5.11.2. Przypadek uz˙ycia - Dokonanie rezerwacji . . . . . . . . . . . . . 52 5.12. Prototypowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.13. Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 6. Model danych 55 6.1. Model zwia˛zków-encji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.2. Proces modelowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.3. Model rezerwacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.3.1. Rezerwacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 6.3.2. Usługa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.3.3. Typ usługi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.3.4. Doba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.3.5. Status doby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.3.6. Status rezerwacji . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.3.7. Osoba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.3.8. Adres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.3.9. Metoda obcia˛z˙enia . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.3.10. Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.4. Model stawek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.4.1. Stawka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.4.2. Typ osoby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.4.3. Rack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.4.4. Sezon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.4.5. Okres czasu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.4.6. Pokój . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.4.7. Typ Pokoju . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.4.8. Status pokoju . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.4.9. Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.5. Model pakietu i dodatków . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.5.1. Pakiet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 SPISTRES´CI viii 6.5.2. Doba pakietowa. . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.5.3. Dodatek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.5.4. Sposób kalkulacji . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.5.5. Sposób realizacji . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.5.6. Produkt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 6.5.7. Kupiony pakiet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 6.5.8. Kupiony dodatek . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 6.5.9. Podsumowanie modelu pakietów i dodatków . . . . . . . . . . . 67 6.6. Podsumowanie modelu logicznego . . . . . . . . . . . . . . . . . . . . . 67 7. Implementacja 68 7.1. Fizyczny model danych . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7.1.1. Klucze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7.1.2. Zła˛czenie klucza . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 7.2. Doste˛p do danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.2.1. Repozytorium zamiast DAO . . . . . . . . . . . . . . . . . . . . . 72 7.3. Praktyki programistyczne . . . . . . . . . . . . . . . . . . . . . . . . . . 73 7.3.1. Obiekty DTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 7.4. Testowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 8. Podsumowanie 75 8.1. Wnioski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 8.2. Dalszy rozwój . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 A. Pełny model logiczny 77 B. Makiety 78 C. Wygla˛d aplikacji 84 Bibliografia 95 1. Wste˛p 1.1. Motywacja Z usług hotelowych korzystał niemal kaz˙dy z nas. Jednak mało kto wie jak wygla˛da sytuacja po drugiej stronie. Hotelarz musi poradzic´ sobie z duz˙ym wolu- menem danych, które zmieniaja˛sie˛ dos´c´ dynamicznie. Gos´cie przyjez˙dz˙aja˛i wyjez˙- dz˙aja˛, napływaja˛kolejne rezerwacje, inne sa˛odwoływane, pokoje musza˛byc´ czyste na czas, zamówione usługi przez gos´ci musza˛byc´ wykonane na ich z˙yczenie. Kon- trola tych wszystkich informacji i synchronizacja pracy w czasie wymaga wsparcia ze strony systemu informatycznego. 1.2. Cel pracy Celem pracy jest stworzenie prototypu aplikacji wspomagaja˛cej zarza˛dzanie ob- łoz˙eniem hotelu. Przy budowie aplikacji załoz˙ono wykorzystanie architektury trój- warstwowej oraz uz˙ycie je˛zyka Java, który jest obiektowym je˛zykiem wysokiego po- ziomu. Projektowany system ma ułatwic´ codzienna˛prace˛ hotelarza poprzez wspar- ciewzakresiekontroliobłoz˙eniahotelu,obsługigos´cipodczaspobytuizarza˛dzaniu rezerwacja˛od momentu jej złoz˙enia, az˙ do kon´ca pobytu i opuszczenia hotelu przez gos´ci. 2. Analiza dziedziny Niniejszy rozdział przedstawia wyniki analizy dziedziny hotelarstwa. Opraco- wanie zawiera ogólne omówienie hotelarstwa oraz organizacji hotelu oraz poje˛cia potrzebne do zrozumienia oraz zaprojektowania systemu zarza˛dzania obłoz˙eniem. Rozdział kon´czy sie˛ porównaniem istnieja˛cych systemów. 2.1. Z´ródła informacji Analiza dziedziny powstała na wskutek agregacji i uporza˛dkowania informacji z kilku z´ródeł. Posłuz˙yłem sie˛ literatura˛ branz˙owa˛, ustawa˛ i informacjami z inter- netu jak równiez˙ uzyskałem informacje˛ przeprowadzaja˛c rozmowy z pracownikami hoteli na róz˙nych stanowiskach. Miałem okazje˛ rozmawiac´ z recepcjonistka˛ oraz kierownikiem recepcji w dwóch róz˙nych hotelach w Warszawie. Czytelnik znajdzie poniz˙ej przefiltrowane, spójne wiadomos´ci na temat branz˙y hotelarskiej. 2.2. Historia hotelarstwa Ludzie zmieniali swoje miejsce pobytu od tysia˛cleci. Dlaczego? Powody były róz˙ne i przez tysia˛clecia znacza˛co sie˛ nie zmieniły. Kiedys´ we˛drówki handlowe, a dzis´ wyjazdy biznesowe, religijne wyprawy w miejsca kultu lub podróz˙e tury- styczne do atrakcyjnych, ba˛dz´ historycznych miejsc. Historia hotelarstwa ma bo- gata˛ przeszłos´c´ i sie˛ga az˙ II tysia˛clecia p.n.e gdzie na terenach Bliskiego Wschodu znaleziono pierwsze s´lady budownictwa nastawionego na gos´cine˛ podróz˙nych. Naj- starsze domy zajezdne odnotowano wzdłuz˙ szlaków handlowych w miejscach obfi- tuja˛cych w wode˛ pitna˛. W staroz˙ytnej Grecji i Rzymie budowano zajazdy w miej- scach kultu religijnego, ba˛dz´ blisko miejsc odbywania sie˛ igrzysk. W czasach S´re- dniowiecza gos´ciny udzielano w klasztorach, pocza˛tkowo nieodpłatnie, z czasem jednak gos´cina przyje˛ła forme˛ rynkowa˛. Edykt Karola Wielkiego nałoz˙ył na klasz- tory i kos´cioły obowia˛zek utrzymania hospicjów, gdzie podróz˙nym udzielano wy- z˙ywienia, ka˛pieli i opieki medycznej. Najge˛stsza siec´ hospicjów znajdowała sie˛ na terenie dzisiejszej Szwajcarii. Szwajcaria posiada najdłuz˙sze tradycje hotelarskie i jest uwaz˙ana za wzór hotelarstwa takiego jak znamy dzisiaj.
Description: