May your journey be unforgettable with Wolfie Airlines.
English version of project & README (without screenshots, all of them are in polish), can be found here: English version.
🇵🇱 Opis projektu
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.
🧭 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.
🧭 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 muzycznychLekarz- 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łaInformatyk- 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^ iwyłą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ą.
💳 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, maksymalnie4na jednego użytkownika) Zakładając, że chcemy tylkojedenbilet będziemy musieli podać: - Numer
rzędu - Numer
miejscaJeś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:
^ Projekt został zaktualizowany pod poprawne dane, w których opłata za nadbagaż wynosi 2 euro za każdy przekroczony kilogram.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ówPYTANIA 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
- 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.
- Sklonuj repozytorium, bądź utwórz forka.
- Zainstaluj i skonfiguruj
vcpkg manageraw sklonowanym projekcie. - Pobierz wszystkie wymagane biblioteki za pomocą
vcpkg managera. - Zmodyfikuj plik
.env.example:
- Zmień jego nazwę na
.env - Wypełnij
DATABASE_URLuż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_PASSWORDużywając swojego hasła administratora. Możesz je wymyślić, jest tutaj absolutna dowolność.
- Przeładuj projekt używając narzędzia CMake (
Reload CMake project with existing CMakeLists.txt) - Zbuduj projekt używając dowolnego środowiska lub narzędzia do kompilacji.
- 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
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.
Jeśli spodobał Ci się mój projekt, daj mu gwiazdkę, będzie mi bardzo miło.
Jeśli jest jakiś widoczny błąd w kodzie, bądź konkretnym repozytorium, proszę stworzyć New Issue klikając tutaj: Utwórz new issue.
- Wolfie Airlines
- Repozytorium głównego projektu
- Repozytorium strony projektu
- Strona główna projektu
- Repozytorium serwera projektu
- Serwer projektu
- Moje portfolio
- Mój GitHub
Licencja projektu
WOLFIE Szymon Wilczek
Wszelkie prawa zastrzeżone
-
"Projekt" oznacza oprogramowanie i wszelkie związane z nim materiały znajdujące się w organizacji GitHub pod nazwą "Wolfie Airlines" - Organizacja.
-
"Autor" oznacza WOLFIE Szymon Wilczek - szymonwilczek.
-
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.
-
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.
-
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.
-
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.
-
Zgoda: Korzystając z Projektu, Użytkownik akceptuje warunki niniejszej licencji.
- Licencja ta obowiązuje od 2024 roku, chyba że zostanie wcześniej odwołana przez Autora.
- 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



























