POLITECHNIKA CZĘSTOCHOWSKA WYDZIAŁ INŻYNIERII MECHANICZNEJ I INFORMATYKI PRACA DYPLOMOWA INŻYNIERSKA Projekt i implementacja aplikacji internetowej do obsługi hotelu Tytuł pracy przetłumaczony na język angielski piszemy poniżej Adam Nita Nr albumu: 98367 Kierunek: Informatyka Studia: niestacjonarne Poziom studiów : I Promotor pracy: dr inż. Piotr Dziwiński Praca przyjęta dnia: Podpis promotora: Częstochowa, 2016 Spis treści CEL PRACY .................................................................................................................................................... 3 WSTĘP ............................................................................................................................................................. 5 1 2 3 CZĘŚĆ OPISOWA ................................................................................................................................ 7 1.1 FORMA PRACY MAGISTERSKIEJ........................................................................................................ 7 1.2 TECHNIKA PISANIA PRACY............................................................................................................... 7 ANALIZA PRAKTYCZNYCH ROZWIĄZAŃ W DANEJ DZIEDZINIE .................................... 11 2.1 STRUKTURA SYSTEMU ................................................................................................................... 11 2.2 ZASADA DZIAŁANIA SYSTEMU ....................................................................................................... 11 2.3 ZASTOSOWANIA.... ........................................................................................................................ 11 CZĘŚĆ PRAKTYCZNA – BADANIA, PROGRAM ........................................................................ 13 3.1 OBIEKT BADAŃ .............................................................................................................................. 13 3.2 ŚRODOWISKO BADAWCZE .............................................................................................................. 13 3.3 PRZEBIEG BADAŃ.......................................................................................................................... 13 3.4 WYNIKI BADAŃ ............................................................................................................................. 13 3.5 WNIOSKI ....................................................................................................................................... 13 PODSUMOWANIE ....................................................................................................................................... 15 LITERATURA............................................................................................................................................... 17 DODATEK A. KOD PROGRAMU KOMPUTEROWEGO ..................................................................... 18 DODATEK B. SPIS ZAWARTOŚCI DOŁĄCZONEJ PŁYTY CD ......................................................... 19 Cel pracy Celem niniejszej pracy jest projekt i implementacja aplikacji służącej do obsługi hotelu. Podstawową funkcjonalnością programu jest umożliwienie klientom rezerwację pokoju poprzez stronę internetową. Osoba zainteresowana będzie miała możliwość wyboru terminu pobytu, rodzaju pokoju oraz wszystkich dodatkowych opcji, które oferuje hotel. Natomiast recepcjonista będzie miał możliwość zarządzania listą dostępnych pokoi, podglądu obłożenia, oraz wprowadzania zmian w systemie. W pierwszym rozdziale przedstawiony został ogólny zarys problematyki niniejszej pracy, czyli celowość stosowania aplikacji służących do obsługi hotelu. Zaprezentowane zostały również przykładowe programy tego typu, ich dokładne przeznaczenie, cechy charakterystyczne oraz porównanie. Na tle istniejących rozwiązań omówiona jest także aplikacja będąca tematem niniejszej pracy. Drugi rozdział zawiera omówienie i analizę technologii użytych do budowy aplikacji. Zaprezentowana jest w nim również struktura programu i zasada jego działania. Przedstawione są wymagania i sposób ich rozwiązania. Trzeci rozdział stanowi część praktyczna w skład której wchodzi prezentacja środowiska oraz sposób implementacji najważniejszych elementów programu. Omówione są poszczególne części kodu i ich wpływ na sposób działania aplikacji. Przedstawione są także sposoby rozwiązujące problemy wchodzące w skład wymagań biznesowych. Wstęp W dzisiejszych czasach Internet jest istotnym elementem w życiu każdego człowieka. Jest on podstawowym źródłem informacyjnym, reklamowym oraz usługowym. Stanowi niewyczerpane źródło wiedzy na każdy temat oraz jest doskonałym medium komunikacji między użytkownikami. Istotną rolę odgrywa również w sprzedaży towarów i usług. Odbywa się to przy pomocy sklepów internetowych oraz stron dedykowanych konkretnym usługom. Dzięki wykorzystaniu bankowości elektronicznej możliwa jest finalizacja transakcji bez wychodzenia z domu. Internet wykorzystujemy zatem zarówno do pracy, rozrywki jak i w celu ułatwienia wykonywania codziennych czynności. Stanowi doskonałe źródło informacji przy planowaniu podróży. Jest nie zastąpiony w wyszukiwaniu korzystnych cenowo ofert oferujących zakwaterowanie wraz z dodatkowymi usługami. Bez względu na cel naszej podróży, możemy przebierać w ofertach przedstawiających odpowiadające nam standardy pokoju oraz usług dodatkowych. Usługami takimi może być wyżywienie, rezerwacja sali konferencyjnej, SPA itp. Doskonałym sposobem załatwienia wszystkich formalności związanych z pobraniem informacji o wolnych terminach rezerwacji a także samej rezerwacji jest strona internetowa hotelu. By spełniała ona swoją rolę musi być odpowiednio dopasowana do oferty jaką oferuje dany obiekt. 1 Celowość stosowania aplikacji do obsługi hotelu W tym rozdziale zaprezentowane zostaną przykładowe aplikacje do obsługi hotelu, oraz opis ich funkcjonalności. Zawarte zostaną porównania w kontekście aplikacji będącej tematem niniejszej pracy. Omówiona zostanie specyfika tego typu aplikacji i korzyści z ich stosowania. 1.1 Aplikacja SOHIS Jednym z programów do obsługi hotelu jest aplikacja "Sohis - hotel". Jak deklaruje producent oprogramowanie zawiera podstawowe funkcje niezbędne do obsługi klienta, począwszy od rezerwacji poprzez meldunek, obciążenie go usługami dodatkowymi w czasie pobytu, kończąc na wymeldowaniu oraz wystawieniu dokumentu potwierdzającego odbycie transakcji (paragon fiskalny bądź faktura). Aplikacja zawiera w sobie moduł pozwalający na optymalną obsługę zaliczek, zgodnie z istniejącą stawką podatku. Umożliwia to automatyzacje wystawiania faktur, bez konieczności stosowania dokumentów korygujących. Dostępna w programie jest również możliwość planowania i obsługi rezerwacji grupowych za pomocą dwóch metod: bezpośrednich obciążeń zajętych przez grupy pokoi oraz metodą kalkulacji. Sohis pozwala również na prowadzenie małego magazynu dla towarów powiązanych bezpośrednio z ewidencją stanów oraz sprzedażą. Główna funkcjonalność programu Sohis Hotel to: inteligentny grafik meldunków oraz rezerwacji (możliwość filtrowania w dowolny sposób) księga meldunkowa oraz rezerwacji (z opcją rezerwacji grupowej) moduł Kasa dokumenty (kasowy raport, KP, KW) moduł sprzedażowy (opcja mini magazynu towarowego na recepcji) moduł zarządzania dokumentami (możliwość powiązania dokumentów sprzedaży i płatności) księga żywieniowa gości (rozszerzenie o żywienie pracownicze i zewnętrzne) łączenie kilku pozycji sprzedaży w jedną na fakturze fiskalizacja zaliczek, wystawianie faktur mieszanych oraz marżowych moduł gastronomiczny, usług hotelowych i innych, w oparciu o podręczny magazyn współpraca z gastronomicznym programem -SZEF oraz -POS przesyłanie danych do księgowego programu (np Enova, CDN KH, itp.) raportowanie przekazania zmian na recepcji wraz z wydrukami zapewnienie podstawowych wydruków (zestawienie sprzedaży, raport kasowy dokumentów zapłaty, raport pokojowy, raport żywienia, rezerwacje, meldunki) możliwość pracy z dowolnym programem księgowym oraz dowolną centralą współpraca z telefonicznymi centralami wydruk kart pobytów i rezerwacji 1.2 Aplikacja HORTRES Hortres to przykład kolejnej aplikacji do obsługi hotelu. Nowoczesne podejście pozwala podczas poszukiwania miejsc na wypoczynek przez Internet dokonać natychmiastowej rezerwacji i płatności zaliczki. Pozwala na obsługę rezerwacji na wysokim poziomie. Nie jest przy tym pobierana prowizja od rezerwacji. Opłata jest w stosunku rocznym i jest to jedyny koszt ponoszony przez hotel. Płatność jest w formie abonamentowej, dokonywanej raz w roku nie zależnie tym samym od ilości obsłużonych rezerwacji. W skład abonamentu wchodzi również prezentowanie naszych ofert na portalach hotelowych takich jak: rezerwante.pl, wakacjoner.pl oraz pakietyhotelowe.pl. Serwisy są wysoko wypozycjonowane co stanowi źródło doskonałej reklamy. Aplikacja jest dostępna również na tablety, smartfony oraz urządzenia mobilne, co w dzisiejszych czasach dla twórców aplikacji jest uważane za niezbędne. Według przeprowadzonych badań to właśnie za pośrednictwem urządzeń mobilnych serwis odnotowuje największa liczbę rezerwacji. Interfejs jest responsywny, co pozwala na odpowiednie dopasowanie wyglądu i czytelności do wszystkich urządzeń mobilnych, bez zależności od przekątnej ekranu oraz rozdzielczości. W aplikacji mobilnej panel jest intuicyjny, prosty i łatwy w użyciu, zarówno dla obsługi hotelu jak i gości. Umożliwia on wprowadzenie ograniczeń rezerwacji na konkretne dni. Pojawiające się rezerwacje w HORTRES powodują blokowanie terminu w hotelowym programie oraz na odwrót. Zapobiega to overbookingowi. Umieszczenie aplikacji na stronie zwiększa liczbę rezerwacji, ponieważ dokonujemy je w sposób sprawny i automatyczny, dodatkowo przez całą dobę. Powoduje również wzrost konwersji dzięki sprzedaży dodatkowych opcji podczas dokonywania rezerwacji. Hortres stanowi również narzędzie marketingowe, pozwalające na sprzedaż dodatkowych opcji w trakcie rezerwacji, jak również na działanie lojalnościowe. Dzięki niej , hotel może oferować okazjonalne pakiety i specjalne oferty. Również rabatowe kody stanowiące podziękowanie za skorzystanie z usług, pozwalające utrzymać więź z gośćmi. Integracja ze stroną internetową obiektu z programem hotelowym jest szybka. Możliwość dostosowania wyglądu do stylu strony, jak również krótki czas potrzebny na instalację HORTRES, oraz wprowadzeniem pokoi, zdjęć, cen, opisów wpływają na to iż czas realizacji zamówienia stanowi jeden dzień. Sam proces wdrożenia i instalacji na stronie www hotelu jest bezpłatny, nie wymagane jest ponoszenia żadnych dodatkowych opłat. Udostępniana jest szczegółowa instrukcja która opisuje jak sprawnie poruszać się po panelu, zapewniając tym samym wsparcie techniczne. System pozwala na obserwację statystyk sprzedażowych oraz skuteczność tej formy rezerwacji, na przykład wykorzystując współczynnik konwersji. Stanowi ono użyteczne narzędzie marketingowe, a informacja statystyczna umożliwia szybkie podjęcie działania. Aplikacja jest łatwa do konfiguracji, umożliwia stosowanie swoich szablonów e-maili, dopasować pod względem kolorystycznym plugin systemowy. Edycja jest prosta i szybka, co sprawia że interwencja serwisu jest nie potrzebna. Łatwość zarządzania pozwala na samodzielne edytowanie opisów pokoi, cen oraz ich obłożenia. Działania recepcyjne czyli odejmowanie i dodawanie rezerwacji, rozsyłanie maili jest proste w obsłudze. Wszystkie wiadomości mogą być spersonalizowane i dostosowane do wyglądu wg potrzeb hotelu. Pomoc techniczna oferowana przez firmę jest bezpłatna. 1.3 Aplikacja S4H S4H to program dla hoteli, posiadający grafik rezerwacji oraz zasobów S4H Hotel&SPA. Skierowany jest on do hoteli i pozostałych obiektów noclegowych, stanowiąc bogate oprogramowanie, które dzięki dostępności wielu modułów pozwala kompleksowo, przyjemnie i szybko zarządzać obiektem na recepcji, dokonywać rezerwacji pokoi oraz restauracją. Twórcy aplikacji wychodzą z założenia, że każdy ceniący się pensjonat, hotel lub ośrodek wypoczynkowy powinien mieć program do obsługi bazy klientów, jak również do zarządzania całością nieruchomości. Oprogramowanie S4H jest zaprojektowane tak, by każdy właściciel tego typu obiektu mógł w pełnym stopniu korzystać z jego możliwości. Szereg modułów dodatkowych sprawia, iż aplikacja potrafi spełnić wymagania klientów o największych wymaganiach, którzy oczekują od programu znacznie więcej niż przechowywanie danych. Dzięki programowi S4H obsługa klienta staje się wyjątkowo prosta. Rozwiązania jakie zostały zastosowane są intuicyjne i powoduję, że pracownicy hotelu mogą bezproblemowo dokonać obsługi klienta, na każdym etapie jego pobytu w ośrodku. Możliwość działania współpracujących ze sobą modułów oraz wymianie danych klientów pomiędzy nimi pozwala każdemu pracownikowi odpowiedzialnemu lub pracującemu w danym dziale bez przeszkód kontynuować obsługiwanie klienta równocześnie mając dostęp do jego dotychczasowego zamówienia. Jest to istotnym elementem dla klienta, który wymaga w hotelu kompleksowej obsługi w dowolnym miejscu. Powoduje to konieczność dostępu do jego danych w każdym z modułów S4H. Oprogramowanie S4H pozwala dopasować go do własnych potrzeb, oferując obiektowi całościową obsługę wedle wymagań. Wpływa to na możliwość koncentracji na obsłudze klienta i jego satysfakcji, a nie na samej obsłudze programu. 1.4 Aplikacja X2 HOTEL X2Hotel to oprogramowanie służące do obsługi recepcji hotelowej oparte o funkcje programu X2Manager uatrakcyjnionego o funkcję rezerwacji oraz pobytów, rozliczeniowe konto gościa, definiowanie hotelowych obciążeń z kartoteką pokoi, gości i firm. Dzięki zintegrowaniu w jednym systemie obsługi hotelowej recepcji, gastronomię i inne punkty sprzedaży (imprezy, sklepy, catering), wszystkie obroty hotelu mogą być zawarte w jednolitych statystykach i raportach. Aplikacja zapewnia funkcje specyficzne dla hotelu i raporty, w tym grafik pokoi i stan ich obłożenia, listę wyjazdów i przyjazdów, listę śniadań, saldo-lista, hotelowe statystyki, plan sprzedażowy, interfejs do telefonicznej centrali itp. Współdzielą z aplikacjami takimi jak X2Kasa, X2Pos, X2Manager funkcje administracyjne, kasowe i bazy danych. Oprogramowanie X2Hotel ma możliwość współpracy z systemami zewnętrznymi obsługi dostępu do hotelowych pomieszczeń w postaci elektronicznych zamków. Aplikacja skierowana jest pod system operacyjny MS Windows, może pracować w sieci jak również na pojedynczym stanowisku, korzystając z standardowego sprzętu PC zawierającego dodatkowo wyspecjalizowany sprzęt służący do obsługi sprzedaży: drukarki fiskalne, dotykowe ekrany, bonowniki zdalne "Nano", czytniki magnetycznych kart oraz kodów kreskowych, dozowniki, wagi, szufladki na pieniądze itp. X2Hotel stosowany jest w małych, średnich oraz dużych obiektach hotelowych. Wysoka elastyczność konfiguracji systemu pozwala z wysoką skutecznością stosować go w hotelach, motelach i pensjonatach, w szczególności obiektach posiadających szeroki zakres usług gastronomiczno-hotelarskich. Funkcjonalność aplikacji jest następująca: grafik meldunków i rezerwacji obsługa indywidualnych i grupowych rezerwacji potwierdzenie i raportowanie rezerwacji proste rozliczenie z gośćmi możliwość zarządzania rezerwacjami (skracanie i przedłużanie pobytów, zmiany pokoju) współpraca z telefonicznymi centralami (rejestr połączeń gości) możliwość ustalania cen dla indywidualnych oraz standardowych pokoi rozliczenia dla grup oraz gości indywidualnych wystawianie sprzedażowych dokumentów (Faktury VAT, Faktury PROFORMA, Rachunki) możliwość dodawania informacji o kliencie zestawienie obłożenia pokoi w hotelu podgląd aktualnego obłożenia podgląd stanu pokoi współpraca z innymi aplikacjami X2System (moduł gastronomiczny) moduł wysyłania wiadomości do użytkowników oprogramowania drukowanie diagramów możliwość nadania uprawnień dla poszczególnych użytkowników wykonywanie magazynowych dokumentów (RW, PZ, MM.) oraz zarządzanie magazynem tworzenie kasowych dokumentów współpraca z elektronicznymi zamkami (zgodnie z potrzebami) możliwość blokady pokoju na czas remontu lub przeglądu rejestr zdarzeń wprowadzonych przez użytkowników eksport danych do systemów księgowych rozliczenie rezerwacji częściowe (podział na pozycję rezerwacja/rachunek) 1.5 Aplikacja HotelIN Popularność hotelowych systemów rezerwacji np: Booking, Trivago, CheapHostel jak również krajowe systemy takie jak Noclegowo mają ogromne możliwości ułatwiające znalezienie nowych klientów. Odpowiedni system rezerwacyjny hotelu daje możliwość sprawnego i szybkiego zorganizowania grafiki recepcji hotelowej, eliminując ryzyko pomyłki. HotelIN nadaje się doskonale do użytku w obiektach różnej wielkości umożliwiając samodzielną organizację pracy recepcji niewielkiego hotelu, pensjonatu lub motelu. Również pozwala na import i aktualizację bieżącą rezerwacji dokonanych poprzez internet w systemach zarządzającymi dużymi hotelami. Wieloletnia praca nad programem pozwoliła na przygotowanie oprogramowania rezerwacyjnego, stanowiącego niezawodny sposób pozwalający spełnić jedną z najistotniejszych ról obiektu hotelowego, umożliwiając klientom dokonanie rezerwacji i przyjazd do hotelu. Dzięki pełnej automatyzacji minimalizowane są wszystkie błędy ludzkie, również te popełniane przez internautę korzystającego z systemu. Aplikacja zawiera stosowny algorytm pozwalający wykrywać literówki oraz błędy dokonywane przy wypełnianiu formularza rezerwacyjnego online. Program jest kompatybilny ze wszystkimi CMS, więc możemy zastosować moduł rezerwacji na własną stronę, bez jakichkolwiek ingerencji programistów i webmasterów. System rezerwacyjny pracuje na Wordpress oraz innych popularnych systemach takich jak Drupal i Joomla. Pomoc techniczna HotelIn pomaga zaimplementować skrypt na stronie hotelowej dostępnej dla klientów. Cena w przypadku tego programu nie jest wysoka, w porównaniu do konkretnych programów dedykowanych dla konkretnego hotelu lub dokonywanie rezerwacji pokoi online ograniczających się jedynie do rezerwacji internetowej poprzez wysyłkę e-mail z danymi osobowymi klienta. Program HotelIN pozwala na kompleksową rezerwację pokoju, od początku do końca, a pracownikom hotelu zostawiając do zarządzania panel z podglądem grafiku recepcji i wymaganiami jakich oczekują goście. 1.6 Porównanie Wśród dostępnych na rynku aplikacji do obsługi hotelu możemy znaleźć wiele aplikacji. Jednak różnią się one swoimi cechami, przeznaczeniem i ilością dodatkowych funkcji. Dla mniejszych obiektów dedykowane są inne programy, mniej złożone niż te, sprawdzające się dla dużych hoteli. Związane jest to z ilością funkcji dodatkowych, które nie są potrzebne gdy zarządzamy mniejszym obiektem. Nawet w pensjonatach z kilkoma pokojami warto rozważyć użycie tego typu aplikacji, jednak w tym przypadku oczekiwania firmy oferujących noclegi nieco się różnią od dużych hoteli. Tym samym mniej zaawansowane aplikacje częściej spełniające podstawowe funkcje są wystarczające. Co za tym idzie ich obsługa jest prostsza, jak również cena atrakcyjniejsza. Znalezienie aplikacji spełniającej konkretne wymagania nie jest łatwym zadaniem. Często trzeba zrezygnować z jednych funkcjonalności kosztem innych. Idealnym rozwiązaniem byłoby zastosowanie aplikacji pod konkretne wymagania danego hotelu. Koszt jaki ponosi firma może okazać się często zbyt duży by rozważać taką opcję, biorąc jednak pod uwagę miesięczne abonamenty w przypadku stosowania gotowych zaawansowanych rozwiązań sprawa wygląda już nieco inaczej. Zainwestowane koszty mogą tym samym w niedługim czasie się zwrócić, a my dostajemy aplikację dopasowaną idealnie do naszych potrzeb. Porównując aplikacje do obsługi hotelu, szerokie grono ich to programy do instalacji na komputerze w recepcji. Rezerwacja pokoi odbywa się kanałami tradycyjnymi, czyli telefonicznie, mailowo oraz osobiście. Usprawnienie dotyczy jedynie zapisania terminów w programie, prezentującym nam w graficznej formie obłożenie pokoi w hotelu. Mimo posiadania dodatkowych funkcji usprawniających pracę recepcjonistów, rozwiązanie nie jest zbyt dobre, ponieważ wymaga czasu od pracownika recepcji na odebranie telefonu, przepisanie z emalia danych otrzymanych drogą elektroniczną czy tez w inny sposób. Łatwo tym samym o pomyłkę. Dla gości również możliwość sprawdzenia online wolnych terminów jest bardzo istotną zaletą. Nie ma konieczności dostosowywania się do godzin pracy recepcji lub oczekiwania na odpowiedz emaliową od pracownika hotelu. Warto dodać iż klienci chętniej korzystają z usług hoteli które umożliwiają rezerwację w tak dogodnej formie, jak strona internetowa. Porównując istniejące aplikacje możemy zauważyć pewne różnice między nimi, takie jak stopień zaawansowania aplikacji, możliwość rezerwacji online oraz szereg innych cech przez nie oferujących. Nie zawsze jednak najbardziej zaawansowana aplikacja, posiadająca wiele opcji jest doskonałym wyborem. Może ona być zbyt skomplikowana w obsłudze oraz cenowo nie korzystna. W takim wypadku nie opłaca się korzystać z programów oferujących wiele dodatkowych opcji za które musimy ponieść koszty, jednak i tak nie będą one wykorzystane. 1.7 Nasza aplikacja na tle istniejących rozwiązań Celem stworzenia aplikacji jest zaoferowanie oprogramowania posiadającego niezbędne cechy potrzebne do obsługi konkretnego hotelu. Aplikacja ma posiadać niezbędną funkcjonalność, tym samym zachowując prostotę działania co pozwalałoby na sprawną pracę obsługi hotelu jak i klientów. Zaimplementowanie odpowiedniej funkcjonalności pozwoli zoptymalizować koszty, a dalsze wsparcie produktu nie powinno stanowić wysokiego kosztu użytego zastosowania. Stworzona aplikacja będzie zawierać cechy których nie posiada żadna z przedstawionych aplikacji, gdyż wymagania użytkownika obiektu są mocno spersonalizowane. Podstawową funkcjonalnością tym samym jest udostępnienie możliwości rezerwacji hotelu, poprzez przeglądarkę internetową klienta. Tego typu rozwiązanie istnieje w aplikacjach HORTRES i hotelIN. Pierwsza z nich jest jednak aplikacją zbyt złożoną dla naszego obiektu, co oznacza iż koszty jej użycia byłyby niewspółmierne do korzyści odniesionych dzięki jej zastosowaniu. HotelIN jest znacznie prostszą aplikacją, jednak brakuje opcji zastosowania aplikacji na urządzenia przenośne, co z kolei zapewnia HORTRES. Żadne w tych rozwiązań tym samym nie jest do końca satysfakcjonujące. Kolejną cechą która jest wymagana do obsługi naszego obiektu jest mobilność jej użycia którą posiada aplikacja S4H. Pracownicy hotelu mogą bezproblemowo dokonać obsługi klienta, na każdym etapie jego pobytu w ośrodku. Dzięki możliwości zarządzania aplikacją poprzez przeglądarkę komputera może mieć do niej dostęp nie tylko recepcjonista, jak również właściciel obiektu, pracownicy gastronomi i innych działów. Umożliwia to dostęp do danych bazy klienta, a także podgląd wprowadzonych zmian przez innych pracowników. Kolejnym wymaganiem od naszej aplikacji jest możliwość rozbudowy o dodatkowe opcje, występujące w aplikacji X2 HOTEL. Jednak użycie wspomnianego rozwiązania nie jest możliwe, gdyż działa ona jedynie offline. Ciekawą funkcjonalnością jest możliwość rezerwacji indywidualnych oraz grupowych. Zastosowane tego rozwiązania pozwala już na etapie rezerwacji przez klienta użyć odrębnych opcji rezerwacji grupowej, tym samym zmieniając sposób wyliczeń płatności za tego typu usługę. Pomimo istnienia różnych aplikacji do obsługi hotelu, na rynku brak jest aplikacji posiadającej cechy, które są wymagane przez właściciela naszego hotelu. W przypadku konieczności zastosowania gotowych rozwiązań potrzebne by było zastosowanie przynajmniej dwóch aplikacji, jednak ze względu na brak komunikacji między nimi rozwiązanie również nie byłoby optymalne. Powodowałoby to także konieczność wielokrotnego wpisywania tych samych danych do każdej z nich. Jedna aplikacja łącząca cechy kilku z nich jest optymalnym rozwiązaniem, łącznie z prostotą obsługi stanowi doskonałe uzupełnienie strony internetowej i zastąpienie dotychczasowego programu offline do wprowadzania rezerwacji za pomocą programu komputerowego. Głównym założeniem jest stworzenie aplikacji do obsługi rezerwacji, która poprzez stronę internetową będzie umożliwiała klientom zarezerwowanie pokoju. Dla obsługi hotelu zostanie udostępniony panel administracyjny, gdzie możliwa będzie edycja pokoi, ich dodanie oraz usunięcie. Możliwość zmiany typu pokoju, opisu, ceny i pozostałych opcji wprowadzonych przez klienta. Podstawowe cechy jakie posiadać będzie nasza aplikacja to: udostępnienie możliwości rezerwacji poprzez stronę internetową udostępnienie panelu administracyjnego dostępnego online dla obsługi hotelu możliwość zarządzania rezerwacjami (skracanie i przedłużanie pobytów, zmiany pokoju) angielska wersja językowa możliwość ustalania cen dla indywidualnych oraz standardowych pokoi możliwość blokady pokoju na czas remontu lub przeglądu potwierdzenie i raportowanie rezerwacji udostępnienie usługi REST pozwalającej korzystać z aplikacji na urządzeniach mobilnych 2 Technologie wykorzystywane w tworzeniu aplikacji W tym rozdziale przestawione zostaną technologie zastosowane do tworzenia aplikacji oraz powody wyboru konkretnych rozwiązań. Omówione zostaną korzyści z ich stosowania zarówno dla osoby tworzącej aplikację jak i jej użytkownika. 2.1 Przygotowanie środowiska Podstawowym kryterium przed przystąpieniem do implementacji aplikacji jest wybór środowiska programistycznego. Składa się na niego wiele czynników, przede wszystkim związanych z wyborem zastosowanej technologii. Głównym czynnikiem jest wybór języka programowania, a co za tym idzie kompilatora. Kolejnym elementem jest baza danych spełniająca wymagania odpowiednie do aplikacji. W przypadku aplikacji webowych konieczne jest również zastosowanie serwera pozwalającego na uruchamianie aplikacji w przeglądarce internetowej. Należy również rozważyć użycie narzędzi ułatwiających programowanie, automatyzujących niektóre czynności jak również frameworki. Wybór technologii jest istotną kwestią przed przystąpieniem do implementacji. Zastosowane rozwiązania w tej pracy przedstawię w kolejnych punktach. 2.2 Java jako język programowania Podstawowym kryterium przed przystąpieniem do implementacji aplikacji jest wybór języka programowania. W przypadku aplikacji webowych najpopularniejszymi rozwiązaniami są: PHP, Java oraz C#. Przeznaczeniem języka PHP jest tworzenie rozbudowanych dynamicznych stron internetowych, komunikujących się z bazą danych. Natomiast języki Java oraz C# mają więcej zastosowań i są bardziej uniwersalne. O wyborze Java zadecydowało to, iż w porównaniu do PHP daje większe możliwości dzięki istnieniu wielu narzędzi developerskich oraz późniejszą łatwość pielęgnacji kodu. Ma to znaczenie w dalszej rozbudowie aplikacji. Java jest również popularniejszym językiem niż C#, co pozwala na łatwiejsze wyszukiwanie rozwiązań problemów na które możemy napotkać tworząc własną aplikację. Dzięki znajomości tego języka 15 programowania i zastosowaniu go do implementacji naszej aplikacji możemy w przyszłości mniejszym nakładem pracy stworzyć aplikację do obsługi hotelu na telefony komórkowe. Pozwoli to również na wykorzystanie istniejących już rozwiązań w programowaniu aplikacji na system Android. Do implementacji aplikacji zastosowano wersję Java Enterprise Edition będąca platformą programistyczną do pisania aplikacji biznesowych. Wersja ta okazała się najlepszym wyborem, ponieważ posiada wszystkie zalety języka Java SE oraz wzbogacona jest dodatkowo o interfejsy sieciowe, pozwalające pisać aplikacje o przeznaczeniu komercyjnym. Aplikacje takie instalowane są na serwerach przystosowanych do tego celu. Różnica w pisaniu aplikacji w wersji Java Enterprise Edition w porównaniu do Standard Edition jest taka, iż działamy w kontekście serwera który musimy wcześniej skonfigurować. Przykładem takiego serwera jest Apache Tomcat zastosowany w aplikacji zaimplementowanej w kolejnych rozdziałach. 2.3 Baza danych SQL Spośród najpopularniejszych baz danych wyróżnić możemy: PostgreSQL, MySQL, Microsoft SQL Server i Oracle. Decyzja o wyborze bazy danych jest istotną kwestią w dalszym rozwoju oprogramowania. Bazy danych PostgreSQL i MySQL charakteryzują się tym, że są oprogramowaniem typu OpenSource. Oracle natomiast bardzo dobrze sprawdza się w przypadku przetwarzania dużej ilości informacji. MySQL posiada mniejszą funkcjonalność od PostgreSQL jednak jest popularniejszy, z drugiej strony natomiast posiada on kilka dodatkowych udogodnień. MySQL przeszedł długą drogę dodając wiele zaawansowanych funkcji, w czasie gdy znacząco wzrosła szybkość PostgreSQL w ostatnich kilku wydaniach. SQL Server jest wysoce skalowalnym i wydajnym systemem zarządzania relacyjnymi bazami danych. Bazuje on na dialekcie języka SQL, został stworzony z myślą o platformie .NET Framework oraz udostępnia dodatkowe usługi. Oracle, PostgreSQL i MySQL są obsługiwane przez większą ilość języków programowania niż SQL Server. SQL Server nie jest zbyt uniwersalny, pod systemem Windows istnieje możliwość tylko jego obsługi, w czasie gdy MySQL, Oracle i PostgreSQL są wieloplatformowe. Dodatkowo Oracle i SQL Server są prawnie zastrzeżonymi bazami danych, co przekłada się na to iż są uzależnione od jednej firmy. Decyzja o wyborze bazy danych nie jest łatwa. W znaczącej większości przypadków popularnych stron internetowych dla przeciętnego 16 odbiorcy wystarczający okaże się MySQL. W przypadku bardziej rozbudowanych projektów PostgreSQL będzie dobrym rozwiązaniem ze względu na szybkość działania. W naszej pracy zastosujemy natomiast bazy danych Oracle ze względu na wieloplatformowość jak również jego uniwersalność względem języków programowania. Do tego celu wykorzystamy wersję Oracle 11g Release 2 Express Edition stworzoną dla osób uczących się programować w PHP, Java oraz .NET, początkujących administratorów jak również jak również małych firm. Jest to wersja bezpłatna z ograniczoną funkcjonalnością do maksymalnie 1GB pamięci RAM, wykorzystująca tylko jeden procesor gdzie rozmiar danych użytkownika jest ograniczony do 11GB. Ograniczenia te nie będą stanowić natomiast problemu w przypadku implementacji aplikacji będącej tematem niniejszej pracy. 2.4 Serwer Tomcat Do uruchomienia aplikacji poprzez przeglądarkę internetową potrzebny jest serwer aplikacji. Zostaje on uruchomiony na tym samym środowisku co aplikacja, w celu wsparcia dynamicznej budowy stron oraz wdrożenia usług. Dla aplikacji opartych o język programowania Java możemy wyróżnić kilka z nich: GlassFish, JBoss Application Server, Apache Tomcat, Molo, Jonas, Blazix i Resin. Każdy z nich spełnia tą samą funkcję, a różnice między nimi są nieznaczne. Wszystkie posiadają licencję typu Open Source. O wyborze Apache Tomcat zadecydowało to, iż jest jednym z bardziej popularnych kontenerów Web. Spełnia swoją podstawową rolę kontenera aplikacji webowych umożliwiając uruchamianie aplikacji internetowych w technologii Java Server Pages oraz Java Servlets. Sprawdza się doskonale w przypadku aplikacji nie wymagających pełnego serwera aplikacji pisanych w środowisku Spring Framework. Cechy te zadecydowały o wyborze Apache Tomcat jako serwer w aplikacji będącej tematem niniejszej pracy. 2.5 Kompilator Kompilator jest ważnym elementem środowiska programistycznego, którego wybór jest determinowany zastosowanym językiem programowania. Jednym z najczęściej stosowanych jest Eclipse. Jest on platformą na bazie którego powstało zintegrowane środowisko programistyczne do tworzenia programów w Java. Produktem konkurencyjnym dla Eclipse jest Netbeans. Do implementacji aplikacji do obsługi hotelu zastosowany został kompilator Spring Tool Suite (STS) powstały na bazie Eclipse. Różnica pomiędzy nimi nie jest wielka, jednak STS 17 zapewnia, że wszystkie elementy potrzebne do prawidłowego działania aplikacji webowych opartych na frameworku Spring MVC będą działać prawidłowo. Eliminuje to tym samym możliwość wystąpienia problemów ze zgodnością lub instalacją poszczególnych elementów które musiały by być dołączone do Eclipse w celu stworzenia poprawnie działającego środowiska. 2.6 Pozostałe zastosowane technologie: Maven - w aplikacji zastosowane zostało narzędzie Apache Maven automatyzujące budowę oprogramowania. Za realizowane są poszczególne funkcje Mavena, pomocą wtyczek są one pobierane automatycznie przy pierwszym ich wykorzystaniu. W pliku o nazwie POM (Project Object Model) znajdują się pliki określające sposób budowy aplikacji. Spring MVC - zastosowano w celu oddzielenia logiki biznesowej od prezentacji, a także umieszczenie czegoś między nimi. W modelu znajduje się kombinacja danych biznesowych oraz metod czyli reguł, które przeprowadzają operacje na tych danych. JSP - użyto w celu utworzenia dynamicznych dokumentów WWW w formacie HTML i XML przy wykorzystaniu języka Java wplecionego w kod HTML konkretnej strony. Jest to rozwiązanie podobne do PHP. Ajax - jest sposobem wykorzystania języka JavaScript. Został użyty do bezpośredniej komunikacji JavaScript z serwerem strony internetowej. Pozwala to na komunikację z serwerem, bez potrzeby zatwierdzania danych. REST - wykorzystany do komunikacji klient-serwer. Bazuje na bazie protokołu HTTP. Podstawowym założeniem REST jest istnienie zasobów jako źródeł danych oraz żądania akcji. XML - został użyty w celu przenoszenia i przechowywania danych uwzględniając to co jest opisywane przez te dane. JSON - zastosowano do wymiany danych. Json to format tekstowy, bazujący na podzbiorze języka Java Script HTML - zastosowano do tworzenia stron internetowych. CSS - służy do formatowania wyglądu elementów języka HTML, które po otwarciu w oknie przeglądarki określają wygląd strony internetowej. 18 Bootstrap - jest frameworkiem CSS, narzędzie zastosowano w celu tworzenia interfejsu graficznego stron. Dzięki responsywności strona będzie prezentowała się poprawnie na komputerze, smartfonie oraz tablecie. 19 3 Projekt W tym rozdziale przedstawiony zostanie ogólny zarys aplikacji. Struktura programu i zasada jego działania. Omówione zostaną również wymagania. 3.1 Ogólny opis wymagań Podstawową funkcjonalnością systemu jest rezerwacja pokoi hotelowych. Za pomocą przeglądarki internetowej klient może sprawdzić dostępność pokoju w wybranym terminie, zapoznać się z jego specyfikacją i dokonać rezerwacji. Rezerwacja odbywa się poprzez dodanie pokoju do koszyka, uzupełnienie wszystkich wymaganych danych klienta kończąc na wystawieniu rachunku. Pracownik hotelu po zalogowaniu może natomiast dowolnie zarządzać listą pokoi. Może również dokonywać zmian w rezerwacji oraz uzupełniać ją o potrzebne informacje. Ma również dostęp do bazy klientów którą może modyfikować. Aplikacja ma być prosta i przejrzysta przy zachowaniu wymaganej funkcjonalności. 3.2 Szczegółowy opis wymagań a) Wymagania funkcjonalne: aplikacja umożliwia użytkownikowi wyświetlenie strony internetowej hotelu wraz z listą pokoi będących w ofercie użytkownik może filtrować listę pokoi po dacie dostępności, rodzaju pokoju oraz jego cenie użytkownik ma możliwość dokonania rezerwacji pokoju w wybranym terminie, pod warunkiem że jest on wtedy wolny aplikacja umożliwia zalogowanie się administratorowi za pomocą loginu oraz hasła administrator ma możliwość wyświetlenia listy rezerwacji administrator aplikacji po zalogowaniu ma możliwość zarządzania (dodawania, usuwania, edycji) listą dostępnych pokoi, listą klientów oraz rezerwacjami aplikacja waliduje poprawność wprowadzonych danych 20 aplikacja dostępna jest w dwóch wersjach językowych: polskim oraz angielskim b) Wymagania niefunkcjonalne: aplikacja dostępna poprzez stronę internetową, kompatybilna z najpopularniejszymi przeglądarkami internetowymi dostępnymi na rynku zarówno na PC jak i urządzenia mobilne dane aplikacji przechowywane są w wydajnej bazie danych SQL udostępnienie usługi REST prosty i przejrzysty interfejs użytkownika obsługa błędów użycie technologii XML lub JSON do przesyłania danych zastosowanie Bootstrapa dla zapewnienia responsywności strony ograniczenie dostępności klientowi do funkcjonalności dostępnych tylko dla administratora ograniczenie rozmiaru i formatu wgrywanych zdjęć schemat bazy danych powinien zawierać tabele odpowiedzialne za przechowywanie danych o pokojach, klientach oraz rezerwacjach. wgrywane pliki zdjęciowe powinny być w formacie .jpg lub .png a ich rozmiar ograniczony do: 1MB aplikacja powinna być utworzona przy zastosowaniu najnowszych wersji technologii dostępnych na rynku dostępność aplikacji na mniej wydajnych urządzeniach poprawne działanie aplikacji w przeglądarkach na urządzeniach mobilnych aplikacja ma dać pełną kontrolę nad danymi znajdującymi się w tabeli: pokoje, rezerwacje i klienci dla uprawnionych użytkowników umożliwienie dalszej rozbudowy aplikacji 3.3 Przypadki użycia Do obsługi programu przewidzianych zostało dwóch aktorów: klient i pracownik (administrator): • Klient ma dostęp do systemu bez konieczności rejestracji i logowania. Może przeglądać listę pokoi, sprawdzać dostępność w wybranym terminie, 21 dodawać pokoje do koszyka, a następnie po uzupełnieniu niezbędnych danych dokonać rezerwacji. • Konto pracownika (administratora) dostępne jest po zalogowaniu. Pracownik ma możliwość zarządzania pokojami, rezerwacjami oraz danymi klienta. Może dodawać nowe pokoje, jak również edytować znajdujące się w bazie oraz je usuwać. Ma również uprawnienia do zmiany terminu rezerwacji oraz zarządzania danymi klienta. 3.4 Diagram tabel Aplikacja korzysta z 3 tabel w bazie danych: pokoje, rezerwacje oraz klienci. Do tabeli pokoje, rekordy dodawane są poprzez pracownika w momencie wypełnienia formularza, może on także edytować i usuwać dane z tabeli poprzez wybranie odpowiedniej opcji w aplikacji. W analogiczny sposób pracownik może zarządzać tabelami rezerwacje oraz klienci. W przypadku uruchomienia przepływu zakupu, dane do tabel dodawane są w momencie uruchomienia procesu zamówienia. Użytkownik będący klientem uruchamia go w momencie potwierdzenia 22 rezerwacji, wtedy też do tabeli „klienci” oraz „rezerwacje” dodawane są odpowiednie rekordy. 3.5 Diagram przepływu rezerwacji Diagram przepływu rezerwacji rozpoczyna się w momencie wybrania przez klienta konkretnego pokoju i kliknięciu przycisku: „Zamów”. Wtedy też uruchamiany jest przepływ, pokój dodawany jest do koszyka. W momencie kliknięcia: „Koszyk” użytkownik trafia do podsumowania rezerwacji znajdujących się w koszyku. Możliwe jest dodanie kolejnego pokoju do koszyka poprzez wybranie: „Wróć do zakupów” lub przejście do formularza: Informacje o kliencie” po wybraniu przycisku: „Kupuje”. Po uzupełnieniu danych klienta i kliknięciu: „Dodaj” klient przekierowywany jest na ekran dotyczący szczegółów rezerwacji, po ich uzupełnieniu wyświetlany jest ekran: „Podsumowanie rezerwacji”. W momencie kliknięcia: „Zatwierdź” rozpoczyna się proces zamawiania, który potwierdzany jest wyświetleniem kolejnego ekranu: „Potwierdzenie rezerwacji”. Klient otrzymuje numer zamówienia i następuje koniec przepływu. W każdym momencie przed rozpoczęciem procesu zakupu możliwy jest powrót do poprzedniego kroku poprzez wybranie przycisku: „Wstecz”. W przypadku wygaśnięcia sesji wywoływany jest ekran: „Błąd 23 koszyka” informujący użytkownika o wystąpieniu błędu po którym kończy się przepływ. 24 4 Implementacja Rozdział ten zawiera sposoby rozwiązania najistotniejszych elementów aplikacji i efekty działania zaimplementowanych technologii. Przedstawione są również fragmenty kodu, a także screeny z efektami będącymi wynikiem ich zastosowania. 4.1 Struktura projektu Organizacja struktury aplikacji opiera się o wzorzec Spring MVC, przez co aplikacja została podzielona na trzy główne części: Model, Widok, Kontroler. W momencie interakcji użytkownika z widokiem poprzez hiperłącze lub kliknięcie przycisku, widok powoduje wygenerowanie zdarzenia informującego kontroler. Kontroler odpowiedzialny za wyświetlenie listy pokoi: @RequestMapping("/all") public String allPokoj(Model model){ model.addAttribute("pokoje", pokojService.getAllPokoje()); return "pokoje"; } Kontroler generuje rozkaz do modelu by zaktualizować dane. Gdy nastąpi aktualizacja danych w modelu komunikat o zmianie trafia do widoku który wysyła zapytanie o najbardziej aktualne dane. Dane z listą pokoi przechowywane są w bazie danych w tabeli pokoje: Tabela pokoje w bazie danych 25 Do dostępu do obiektów domenowych pokoi wykorzystywana jest klasa: „PokojeDAOImpl”. Odczytem wszystkich pokoi znajdujący się w tabeli: „Pokoje” zajmuje się specjalnie do tego celu stworzona metoda: Metoda odczytująca wszystkie pokoje znajdujące się w bazie. public List<Pokoj> getAllPokoje() { List<Pokoj> wszystkiePokoje = new ArrayList<Pokoj>(); String query = "select pokoj_id, rodzaj, cena, ilosc_osob, opis, lazienka, klimatyzacja, internet from pokoje"; Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try { con = dataSource.getConnection(); ps = con.prepareStatement(query); rs = ps.executeQuery(); while (rs.next()) { Pokoj pok = new Pokoj(); pok.setPokojId(rs.getInt("pokoj_id")); pok.setRodzaj(rs.getString("rodzaj")); pok.setCena(rs.getBigDecimal("cena")); pok.setIloscOsob(rs.getInt("ilosc_osob")); pok.setOpis(rs.getString("opis")); pok.setLazienka(rs.getInt("lazienka")); pok.setKlimatyzacja(rs.getInt("klimatyzacja")); pok.setInternet(rs.getInt("internet")); wszystkiePokoje.add(pok); } } catch (SQLException e) { e.printStackTrace(); } finally { try { rs.close(); ps.close(); con.close(); } catch (SQLException e) { e.printStackTrace(); } } return wszystkiePokoje; } Za generowanie strony z listą pokoi odpowiada plik: „pokoje.jsp” gdzie wyświetlanie poszczególnych elementów wchodzących w skład obiektu będącego pokojem wygląda następująco: Fragment pliku pokoj.jsp <h3>${pokoj.rodzaj}</h3> <p>Cena: ${pokoj.cena} PLN</p> <p>Ilość osób: ${pokoj.iloscOsob}</p> 26 Po otworzeniu pliku: „pokoj.jsp” zdefiniowanego za pomocą języka html i zawierającego elementy obiektu pokoj prezentowany jest użytkownikowi widok ze spisem wszystkich pokoi. Lista wszystkich pokoi: [OPIS (schemat plików, plik jdbc, kontroler) opisać mvc, czym zajmuje się kontroler, gdzie jest warstwa usług, można dodać schemat MVC, gdzie pliki odpowiedzialne za konkretne zadania, jak wygląda plik .pom, dispacherServlet, pliki .jsp,] [ SCREEN ??? ] 27 [ KOD METODY SŁUŻĄCE DO ŁĄCZENIA BAZ DANYCH ] 4.2 Obsługa baz danych przy pomocy JDBC [OPIS] [ SCREEN ??? ] [ KOD METODY SŁUŻĄCE DO ŁĄCZENIA BAZ DANYCH ] 4.3 Spis pokoi [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 4.4 Filtrowanie po zadanych kryteriach [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 4.5 Dodanie, edycja, usuwanie pokoi [OPIS] [ SCREEN LISTA POKOI + (wgrywanie zdjęć)] [ KOD LISTA POKOI ] 4.6 Logowanie [OPIS] 28 [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 4.7 Walidacja [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 4.8 Obsługa dat [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 4.9 REST [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 4.10 Przesyłanie danych za pomocą XML [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 4.11 Wersje językowe [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 4.12 Koszyk zamówień [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 4.13 Wysyłka potwierdzenia poprzez email [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 30 4.14 Generowanie faktury [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 4.15 CSS i Bootstrap [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 4.16 Obsługa wyjątków [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 4.17 JDBC [OPIS] [ SCREEN LISTA POKOI ] [ KOD LISTA POKOI ] 31 Podsumowanie Rozdział ten podsumowuje czy założenia projektu zostały osiągnięte. 32