Skip to content

wolfie-things/wolfie-airlines

Repository files navigation

Wolfie Airlines

May your journey be unforgettable with Wolfie Airlines.

English version

English version of project & README (without screenshots, all of them are in polish), can be found here: English version.

🇵🇱 Opis projektu

Opis

Wolfie Airlines to projekt lotniska oraz linii lotniczych powstały na potrzeby projektu zaliczeniowego na studia. Od samego początku programowania tego projektu poczułem z nim specjalną więź. Chciałem stworzyć coś niesamowicie unikalnego. Mam nadzieję, że podołałem i sprostałem swoim oczekiwaniom.

Przeprowadzenie po projekcie

🧭 MENU STARTOWE

Użytkownik może korzystać z aplikacji bez konieczności zakładania konta ani logowania się, ale ma oczywiście ograniczone funkcje.

👤 REJESTRACJA

Wszystko się gdzieś zaczyna. Zarejestrujmy się więc, żeby korzystać z naszej aplikacji.

👤 LOGOWANIE

Po udanej rejestracji, zalogujmy się na nasze konto

🧭 MENU UŻYTKOWNIKA

Naszym oczom ukaże się menu użytkownika, które posiada o wiele więcej funkcji niż podstawowe menu startowe.

👤 PROFIL UŻYTKOWNIKA

Każda szanująca się aplikacja wspierająca zakładanie własnego konta powinna mieć możliwość przejrzenia własnego profilu. W Wolfie Airlines traktujemy naszych klientów naprawdę poważnie.

Profil służy głównie do przeglądania statystyk, takich jak: zweryfikowany zawód, obecna karta premium/obecnie przypisana zniżka, zaoszczędzone pieniądze, data utworzenia konta, domyślna metoda płatności (można ją zmienić w ustawieniach, o czym jest napisane niżej), liczba zakupionych biletów, czy ilość wydanych pieniędzy.

⚙️ USTAWIENIA

Oprócz możliwości wyświetlenia własnego konta, można je również edytować. Zmiana hasła, adresu e-mail, nazwy użytkownika, itp. są niesamowicie potrzebne dla zadowolenia użytkowników z korzystania z aplikacji.

👷‍♂️ WERYFIKACJA ZAWODU

Każdy użytkownik ma możliwość zweryfikować wykonywany zawód, co niesie za sobą korzyści. Obecnie aplikacja wspiera 5 zawodów: muzyk, lekarz, matematyk, informatyk i policjant, a korzyści z nich to kolejno:

  • Muzyk - darmowy^ przewóz instrumentów muzycznych
  • Lekarz - darmowy^ przewóz asortymentu medycznego (apteczki, zestawy ratunkowe, szczepionki, itd.) oraz asortymentu potrzebnego do wykonywania zawodu (stetoskop, itp.)
  • Matematyk - darmowy^ przewóz kalkulatora oraz liczydła
  • Informatyk - darmowy^ przewóz narzędzi potrzebnych do wykonywania zawodu (laptop, tablet, komputer) oraz darmowy^ przewóz nielimitowanych ilości urządzeń elektrycznych (na baterie litowe bądź litowo-jonowe)
  • Policjant - darmowy^ przewóz narzędzi potrzebnych do wykonywania zawodu (broń, amunicja) oraz darmowy^ i wyłącznie dostępny dla tego zawodu, przewóz zabronionych przedmiotów takich jak: Broń paraliżująca

^ - darmowy oznacza: Dostępny (jeśli zabroniony), nieliczący się do wagi bagażu

🎵 Muzyk

Weryfikacja zawodu wiąże się z testowaniem słuchu. Odtwarza się krótka część znanego utworu oraz zadaniem użytkownika będzie poprawne zgadnięcie wykonawcy/zespołu, który stworzył dany utwór.

💉 Lekarz

Weryfikacja zawodu wiąże się z diagnozą choroby. Wyświetlają się objawy, na podstawie których użytkownik musi stwierdzić chorobę.

🧮 Matematyk

Weryfikacja zawodu wiąże się z rozwiązaniem problemu matematycznego. Wyświetla się pytanie, na które użytkownik musi podać poprawną odpowiedź, zgodną z wyświetloną podpowiedzią.

💻 Informatyk

Weryfikacja zawodu wiąże się z rozwiązaniem problemu informatycznego. Wyświetla się losowy problem z losowego języka programowania, a zadaniem użytkownika będzie wskazanie, w której linijce kodu znajduje się błąd.

🚓 Policjant

Weryfikacja zawodu wiąże się z podaniem poprawnego numeru odznaki

💳 ZMIANA DOMYŚLNEJ METODY PŁATNOŚCI

Aplikacja wspiera obecnie 2 typy płatności: Kod BLIK oraz kartę VISA.

💳 KARTY PREMIUM

Użytkownik w aplikacji ma możliwość zakupienia karty premium, która w późniejszym etapie daje różne benefity. Najlepszym benefitem - najbardziej rozwiniętym - jest wybór miejsca w samolocie, dostępny jedynie dla karty złotej oraz platynowej

Żeby zakupić kartę, wystarczy podać jej nazwę, a następnie ją opłacić.

Jeśli użytkownik ma zakupioną kartę premium, nie może starać się o zniżkę.

🪙 ULGI

Oprócz wsparcia kart premium, oferujemy również zniżki dla: weteranów wojennych, karty inwalidzkiej, emerytów oraz studentów.

Jeśli użytkownik ma przypisaną zniżkę do konta, nie może zakupić już karty premium.

✈️ PODGLĄD LOTÓW ZE ZNIŻKĄ

Nieważne czy ze zniżką z ulgi czy z karty premium, każde wyświetlają się tak samo, jedynie wyświetlając inne ceny (zależnie od % zniżki). Poniżej znajdziecie wyświetlony ekran lotów ze zniżką dla weterana wojennego:

🔎✈️ WYSZUKIWANIE LOTÓW

Wyszukiwanie lotów jest pierwszą i w zasadzie najważniejszą funkcją całej aplikacji, więc też i jedną z najbardziej rozbudowanych pod względem podanych przez użytkownika kryteriów.

Opcji jest naprawdę wiele, jak widać na załączonym zdjęciu. Przykładowo, wybierzmy opcję wyświetlenia wszystkich lotów.

Wyświetlił nam się cały ekran z możliwością paginacji (zmiany stron) pomiędzy wyświetlonymi lotami.

🎫 ZAKUP BILETÓW

Powiedzmy, że wybraliśmy już lot, który nas interesuje korzystając z wcześniej opisanej opcji. Czas zakupić na niego bilet!

Skorzystajmy na potrzeby prezentacji z dokładniejszej funkcji (dokładniejszej, ponieważ każdy lot ma swój unikalny identyfikator, tak więc, korzystanie z opcji numer 1, zawsze zwróci nam poprawne połączenie. Przykładowo: jeśli korzystając z funkcji numer 2 podamy miasto wylotu i przylotu, aplikacja może zwrócić nam 2 połączenia, ale o innych datach. Zalecane jest więc korzystanie z ID lotu, które można otrzymać korzystając z wyszukiwarki lotów.

Potwierdzamy więc, zwrócony przez aplikację, lot i przechodzimy do następnego ekranu.

🎫✈️ WYBÓR MIEJSC W SAMOLOCIE (EXCLUSIVE DLA KARTY ZŁOTEJ I PLATYNOWEJ)

Jeśli użytkownik posiada, opisaną niżej, kartę premium: złotą lub platynową, przysługuje mu korzyść wyboru miejsc w samolocie.

Żeby wybrać miejsca należy podać kolejno:

  • liczbę biletów do zakupu (minimalnie 1, maksymalnie 4 na jednego użytkownika) Zakładając, że chcemy tylko jeden bilet będziemy musieli podać:
  • Numer rzędu
  • Numer miejsca Jeśli chcemy parę biletów, aplikacja będzie pytała o wszystkie numery rzędów i miejsc. Należy podążać wtedy za instrukcjami wyświetlonymi w aplikacji.

Wybraliśmy miejsca. Wyświetla się samolot, a sama aplikacja prosi o potwierdzenie wyboru:

🎫✈️ PRZYDZIAŁ MIEJSC (DLA POZOSTAŁYCH UŻYTKOWNIKÓW)

Przydział miejsc dla użytkowników bez złotej lub platynowej karty premium odbywa się za pomocą zaimplementowanego, na podstawie oficjalnych danych linii lotniczych, algorytmu:

  • Jeśli są wolne miejsca w samolocie, przydziela losowo
  • Jeśli jedynymi miejscami w samolocie są miejsca ewakuacyjne, a użytkownik nie ma żadnej z ulg: weteran wojenny, karta inwalidzka, emeryt, zostaje mu przydzielone miejsce ewakuacyjne
  • W przeciwnym wypadku natomiast, jeśli użytkownik posiada w/w ulgi, aplikacja wyświetla zapytanie, czy użytkownik nadal chce zakupić bilet na miejscu ewakuacyjnym
🎫💵 PŁATNOŚĆ ZA BILETY

Jeśli potwierdziliśmy wybór miejsc w samolocie, bądź został nam on przydzielony odgórnie, należy zapłacić za bilety.

Wyświetlony ekran płatności zależy od domyślnej metody płatności wybranej przez użytkownika. Podstawowo jest to BLIK, co można zmienić w ustawieniach opisanych wyżej. Po pomyślnie dokonanej płatności drukuje nam się fakturka z zakupionymi biletami i informacją o możliwości odprawy.

🎫 MOJE BILETY

Użytkownik ma oczywiście możliwość zobaczenia zakupionych biletów oraz ich statusów odpraw (bagażowej i biletowej)

🎫 ODPRAWA BILETOWA

Mamy wyszukany i znaleziony lot, kupiony bilet, zostały odprawy. Pierwszą z nich oczywiście nie musi być odprawa biletowa, ale taką kolejność sugeruje nam aplikacja.

Aplikacja wyświetla nam nasze bilety i prosi o wprowadzenie numeru lotu (obecnego na obramowaniu biletu, na załączonym obrazku jest to #1. Wprowadzamy oczywiście bez znaku #.

🤳 KOD QR

System odpraw w Wolfie Airlines jest mocno nastawiony przyszłościowo, szybko i skutecznie. Albowiem wystarczy jedynie zeskanować kod QR żeby przeprowadzić całą odprawę. Nie trzeba nic wpisywać, nic podawać, ani tym bardziej - dodatkowo dopłacać.

📑 KARTY POKŁADOWE

Po zeskanowaniu kodu, przeniesie nas do strony projektu, która następnie będzie komunikować się z serwerem, aby przeprowadzić naszą odprawę. Wystarczy poczekać parę sekund i otrzymamy nasze gotowe karty pokładowe.

Teraz, jeśli użytkownik wejdzie w zakładkę Moje bilety zobaczy ✅ w kolumnie odprawy biletowej przy odprawionym bilecie.

👜 ODPRAWA BAGAŻOWA

Jesteśmy już odprawieni (a raczej nasz bilet), więc zostało odprawić jeszcze bagaż. Wiadomo, że czasami da się polecieć z samym plecakiem, wtedy taka opcja nie jest wymagana, może widnieć ❌ w zakładce Moje bilety, ale lecąc na 2 tygodniowe wakacje, ciężko zapakować się do plecaka górskiego. Należy też więc odprawić naszą walizkę lub torbę osobno.

Początkowo odprawa bagażowa wygląda bardzo podobnie do odprawy biletowej, żeby użytkownik przeszedł przez nią bardziej intuicyjnie. Również należy wybrać lot, na który chcemy odprawić bagaż.

👜 POWITANIE W ODPRAWIE

Poczuj się z nami swobodnie. W Wolfie Airlines możesz mieć pewność, że powitamy Cię zawsze z otwartymi rękami. Przed odprawą bagażową masz również możliwość wyświetlić listę wszystkich dostępnych i zabronionych przedmiotów w transporcie lotniczym. Wszystkie informacje zawarte w aplikacji są oparte na prawdziwych danych z tabeli wykazów przedmiotów niebezpiecznych - tabela 2.3a.

🛄 LISTA WSZYSTKICH PRZEDMIOTÓW

Tabela jest bardzo prosta w odczycie i intuicyjna, żeby użytkownik na pewno wiedział, czy może wziąć przedmiot. Jeśli chcesz uzyskać szczegółowe informacje na temat jednego przedmiotu (dostępność dla zawodu, uśredniona waga jednego przedmiotu) wystarczy wpisać jego numer.

👜 ZAWARTOŚĆ BAGAŻU

Jeśli użytkownik nie potrzebuje tabeli wszystkich przedmiotów, przechodzi do następnego ekranu odprawy.

Tutaj należy zaznaczyć wszystkie rzeczy, które użytkownik chce ze sobą wziąć. Jak widać, niektóre przedmioty pojawiły się na czerwono. Są to przedmioty zabronione. Ktoś może zadać sobie pytanie: Czemu w odprawie bagażowej w ogóle uwzględniać przedmioty zabronione? Odpowiedź jest bardzo prosta. Mianowicie, te przedmioty nie są zabronione dla każdego, przykładowo, Broń paraliżująca jest dostępna i niezabroniona dla osoby, która wykonuje zawód policjanta. Oczywiście, dla tej osoby, takowy przedmiot nie wyświetla się na czerwono. Dla zwykłego użytkownika jest to jedynie informacja wizualna, a podczas wyboru tego przedmiotu bez uprawnień, odprawa zakończy się niepowodzeniem.

👜 POTWIERDZENIE ZAWARTOŚCI BAGAŻU

Jeśli użytkownik wybrał przedmioty, aplikacja wyświetla listę rzeczy, które zaznaczył, żeby mógł sobie na spokojnie jeszcze raz sprawdzić, czy czegoś nie zapomniał.

👜 PODANIE ILOŚCI

Po potwierdzeniu zgodności zawartości bagażu, wyświetla się następny ekran odprawy, proszący o wprowadzenie ilości przedmiotów, które chcemy zabrać.

Waga przedmiotów naliczana jest automatycznie. Każdy przedmiot ma swoją odgórnie określoną wagę, żeby odprawy bagażowe odbywały się sprawniej.

Jak widać na załączonym zdjęciu, bagaż do 20kg włącznie, jest bagażem odprawianym od razu, za darmo, bez konieczności żadnej dopłaty. Jeśli użytkownik przekroczy limit wagowy 20kg, ale nie przekroczy 32kg, naliczana jest nadpłata za nadbagaż, według oficjalnych danych Ryanair, to jest: 2 euro za każdy przekroczony kilogram. ^ Projekt został zaktualizowany pod poprawne dane, w których opłata za nadbagaż wynosi 10€ za kilogram. Zrzut ekranu z płacenia za nadbagaż nie uległ zmianie i pozostał stary. Nadpłata jest obliczana w złotówkach, po kursie ustalonym z góry (nie jest on aktualizowany, jest to stałe 4.3zł)

💵👜 OPŁATA ZA NADBAGAŻ

W momencie kiedy użytkownik przekroczył wyżej wspomniany limit wagowy, ale zmieścił się w maksymalnym limicie, została naliczona dopłata za nadbagaż.

Standardowo jak we wszystkich płatnościach w aplikacji, wyświetla się ekran z prośbą o uiszczenie opłaty, po której, jeśli została przeprowadzona pomyślnie, bagaż zostaje automatycznie odprawiony.

🤵 PANEL ADMINISTRATORA

Aplikacja oferuje również panel administratora, dla osób posiadających przepustkę wyższego stopnia do siedziby biura Wolfie Airlines (hasło administratora)

Jeśli użytkownik nie był wcześniej zalogowany jako administrator, aplikacja poprosi go o wprowadzenie hasła, natomiast jeśli był, od razu przejdzie do panelu.

⚙️ FUNKCJE PANELU

Panel administratora wspiera następujące funkcje:

  • LOTY - dodawanie nowych lotów
  • PYTANIA WERYFIKACYJNE - dodawanie nowych pytań weryfikacyjnych (do weryfikacji zawodów)
  • ZARZĄDZANIE UŻYTKOWNIKAMI - zmiana nazwy użytkownika, e-mailu, wydanych pieniędzy, daty założenia konta, liczby zakupionych biletów, itd.
  • DODAWANIE NOWYCH PRZEDMIOTÓW - nowe przedmioty do tabeli przedmiotów w odprawie bagażowej

Wymagania (dla własnego użycia)

  • vcpkg - Menadżer pakietów, moja rada: używanie środowiska CLion, które posiada go wbudowanego
  • CMake - Software Build System, ponownie zalecam używania w/w środowiska.
  • FTXUI - Biblioteka stylistyczna
  • MongoDB Cluster - Cluster dla bazy danych MongoDB
  • mongo-cxx-driver - Sterownik C++ MongoDB
  • mongo-c-driver - Sterownik C MongoDB używany do buildowania sterownika dla mongo-cxx
  • cryptopp - Biblioteka kryptograficzna, używana w tym projekcie do hashowania hasła użytkownika
  • QR-Code-Generator - Biblioteka zapewniająca wszystkie potrzebne funkcje do generowania kodu QR, potrzebne do odprawy online
  • wypełnienie bazy danych plikami podstawowymi, żeby program miał z czego czytać dane. Pliki, z których ja korzystałem, są dostępne w folderze database w formacie JSON.

Self-hosting & self-building

  1. Sklonuj repozytorium, bądź utwórz forka.
  2. Zainstaluj i skonfiguruj vcpkg managera w sklonowanym projekcie.
  3. Pobierz wszystkie wymagane biblioteki za pomocą vcpkg managera.
  4. Zmodyfikuj plik .env.example:
  • Zmień jego nazwę na .env
  • Wypełnij DATABASE_URL używając swojego pełnego adresu do połączenia się z clusterem MongoDB. Przykładowy link: mongodb+srv://username:password@testcluster.taymr.mongodb.net/test
  • Wypełnij ADMIN_PASSWORD używając swojego hasła administratora. Możesz je wymyślić, jest tutaj absolutna dowolność.
  1. Przeładuj projekt używając narzędzia CMake (Reload CMake project with existing CMakeLists.txt)
  2. Zbuduj projekt używając dowolnego środowiska lub narzędzia do kompilacji.
  3. Uruchomienie projektu to prosta sprawa: Do uruchomienia projektu polecam terminalu wspierającego polskie znaki (np. Powershella), bądź sklonowanie angielskiego forka.
  • Jeśli nie została zmieniona nazwa projektu, uruchom go następująco:
    ./airport.exe
  • Jeśli nazwa projektu uległa zmianie:
    ./nazwa_projektu.exe

Ważne informacje

Jeśli używasz środowiska CLion, stworzy się folder cmake-debug-build, jeśli obecnie pracujesz na trybie debug. Jest on domyślnie ustawiony, więc jest na to 99% szans. Żeby poprawnie uruchomić ten projekt, należy przenieść do niego plik .env oraz cały folder sounds żeby zapewnić poprawne działanie aplikacji.

Gwiazdki

Jeśli spodobał Ci się mój projekt, daj mu gwiazdkę, będzie mi bardzo miło.

Błędy i problemy

Jeśli jest jakiś widoczny błąd w kodzie, bądź konkretnym repozytorium, proszę stworzyć New Issue klikając tutaj: Utwórz new issue.

Wszystkie linki

Licencja

Licencja projektu

WOLFIE Szymon Wilczek Wszelkie prawa zastrzeżone

Definicje:

  1. "Projekt" oznacza oprogramowanie i wszelkie związane z nim materiały znajdujące się w organizacji GitHub pod nazwą "Wolfie Airlines" - Organizacja.

  2. "Autor" oznacza WOLFIE Szymon Wilczek - szymonwilczek.

Warunki licencji:

  1. Prawa autorskie: a. Autor zastrzega sobie wszystkie prawa autorskie do fundamentalnych funkcji zawartych w Projekcie. b. Użytkownik otrzymuje licencję na korzystanie z fundamentalnych funkcji Projektu na zasadach określonych poniżej.

  2. Uprawnienia użytkownika: a. Użytkownik może kopiować, modyfikować i rozpowszechniać Projekt lub jego fragmenty. b. Każde kopiowanie lub modyfikacja Projektu musi zawierać w uznaniu dodanie Autora, tj. "WOLFIE Szymon Wilczek", wraz z linkiem do oryginalnego repozytorium na GitHubie. c. Rozpowszechnianie Projektu lub jego fragmentów jest dozwolone wyłącznie z wyraźną kredytacją Autora w opisie.

  3. Zakazane działania: a. Kopiowanie lub wykorzystywanie Projektu lub jego fragmentów bez dodania Autora w uznaniu. b. Usuwanie lub modyfikowanie istniejących informacji o prawach autorskich lub kredytacji Autora.

  4. Brak gwarancji: Projekt jest udostępniany "tak jak jest", bez jakiejkolwiek gwarancji. Autor nie ponosi odpowiedzialności za ewentualne szkody wynikłe z korzystania z Projektu.

  5. Zgoda: Korzystając z Projektu, Użytkownik akceptuje warunki niniejszej licencji.

Zakończenie licencji:

  1. Licencja ta obowiązuje od 2024 roku, chyba że zostanie wcześniej odwołana przez Autora.
  2. Po zakończeniu obowiązywania licencji, Użytkownik jest zobowiązany do przestrzegania zasad dotyczących praw autorskich i kredytacji Autora.

Dane kontaktowe:

WOLFIE Szymon Wilczek
szymonwilczek@icloud.com szymonwilczek@outlook.com

About

May your journey be unforgettable with Wolfie Airlines.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors