Giter Site home page Giter Site logo

flyxpert / flyxpert Goto Github PK

View Code? Open in Web Editor NEW
9.0 0.0 0.0 7.61 MB

A Desktop Flight Booking System OOP Academic Project

Java 97.88% CSS 2.12%
academic-project flight-booking flight-booking-system flight-reservation flight-reservation-system gui java javafx javafx-application javafx-desktop-apps

flyxpert's Introduction

FlyXpert - Desktop Flight Booking System OOP Academic Project

๐Ÿ“’ Table Of Contents

๐Ÿ“ About

FlyXpert is an academic project related to the 2023 OOP (Object-oriented programming) course in Faculty of Computer Science - Ain Shams University to demonstrate an understanding of OOP concepts.

It is a Desktop flight booking system that allows users to

  • Sign Up/Sign In
  • Search and filter flights
  • Book for themselves and for other passengers with them
  • Choose suitable seats for each passenger
  • Pay using their preferred payment method
  • Manage their bookings

With a special interface for admins to

  • Add new flights
  • Edit existing flights information
  • Delete existing flights

๐Ÿ“ท Screenshots

๐Ÿ‘ค User Perspective

๐Ÿ’ป Admin Perspective

Acknowledgments

Special thanks to the designers who created Tripma, all of our designs are inspired by them

flyxpert's People

Contributors

abdallah-moe-dev avatar ahmed-khaled-dev avatar mahmoud-bassem avatar mazen366 avatar mohannadms avatar mostafamohamed2005 avatar parlerler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flyxpert's Issues

Create Booking Confirmation Page

Booking Confirmation Page Details

Deadline: To be determined

Looks

Try to implement the below designs as close to them as possible

  • Make all rectangles rounded
  • Try to find a font similar to the one in the designs
  • Get the guy holding "THANK YOU" image from @Abdallah-Moe-dev
  • Can get the flight summary details design from @MostafaMohamed2005 or @Mohannadms
  • Should create a single scene, and change the "Card" or "PayPal" Rectangle based on the type of payment given
  • No need to do the profile picture at the top right exactly as it is, just put any profile picture icon there

Booking Confirmation with Card Payment Method

PayPal Payment Method

Functionality

  • Create a Booking Class (Will be different than the document), which will contain the User who made the booking, flight, booking id (static attribute to increment on), an array of passengers, payment, booking status, (We won't include seat number, since probably seat number will be an attribute in the passengers class)
  • Later this scene will be given a Flight object + an array of Passengers + Payment object, you should then extract from them the Flight summary details + the "[Passenger name] (Seat class) [seat class price for this flight]" part in the Price breakdown, you should also be given the Subtotal + taxes + Amount paid (Maybe the flight object), you can test this currently by creating parameters in your function like Airline name, Date of Flight arrival, Passengers and which seats they are in, seat classes prices, etc.
  • Currently, the flights and profile image shouldn't do anything, but later will redirect to new scenes

Create Home Page

Home Page Details

Deadline: 5/Dec/2023 10:00 AM

Looks

Try to implement the below designs as close to them as possible

  • Should darken the color of all buttons when he hovers on them (To give a hover effect)
  • In Both Sign in/Sign-up, The passenger shouldn't be able to Create an account or Sign in Unless he has filled all the text boxes (Can grey the Sign in/Create account buttons until he fills the text boxes)
  • Make all rectangles rounded
  • Try to find a font similar to the one in the designs

Home page
Home page
Sign up
Sign up
Sign in
Sign in

Functionality

  • Implement a User Class to store data in it upon Sign-up (I believe this should be different from the Passenger Class)
  • After Sign-up, the User should be redirected again to the Home page
  • User should be able to sign in with his account info, currently nothing should happen after he signs in, we should later be able to redirect him to a new scene
  • After the application closes, it should store all the Users that have accounts in a text file
  • When the Application opens, should load the Users' data from this text file and check them when a user tries to Sign-in

Create Seat Selection Page

Seat Selection Details

Deadline: 5/Dec/2023 8:00 PM

Looks:

Try to implement the below designs as close to them as possible

  • Get chairs and plane pictures from @Abdallah-Moe-dev
  • You don't need to write exactly what is written in the chair class description, Just write things along the same idea
  • We will still fix the "First class" chair design since it looks a bit weird, so keep in contact with @Abdallah-Moe-dev to get the fixed chair design
  • Seat colors in the plane seating layout should match the seat colors in the right-side menu
  • Make all rectangles rounded
  • Should darken the color of the "Next Seat" button when hovering on it to give a hover effect
  • Try to find a font similar to the one in the designs
  • Important Note: Add a Flights tab at the top right corner to be able to go back if the user wants (This is not added in the design by mistake)
  • Important Note: In the design we forgot to write the price of each seat class next to it, so add it

Design at the beginning (Note that the Seat Number at the bottom should contain nothing, It should be empty) An example of this is in the second image)

Empty Seat Number before the user chooses a seat

Design after user has chosen a seat

Design when the user is scrolling down

Functionality

  • Create a seat class (With all of its types)
  • Create a seat layout class (Maybe, Not sure if we will need this)
  • The User shouldn't be able to press the "Next Seat" Button Unless he has chosen a Seat for the current passenger
  • Your controller should view the number of passengers/scenes dynamically, Meaning it should receive something like an array of passenger names, (Just for example let's say it has received 3 names in this array), Then you will ask the user for Passenger 1 to choose a seat (You should write the user name as in the design), then after he chooses a seat from the available ones (We should write the chosen seat number as in the design) and presses "Next Seat" you will ask for Passenger 2, BUT the seat that passenger 1 has chosen shouldn't be available for passenger 2, then ask for Passenger 3's seat, and when he chooses for Passenger 3, we will give him a button that says "Continue to Payment", not "Next Seat", so if you take an array of (10 passenger names), then you should do the above from Passenger 1 till Passenger 10
  • The flights tab at the top right should reset the whole process and make the user start again from the first passenger
  • Should be able to know which passenger is in which seat when the user presses the "Next Seat" button
  • Should be able to scroll through the seat map, if unable to do this or will take a lot of time, then can use the below design without scrolling:

Create Passenger Information Page

Passenger Information Details

Deadline: 5/Dec/2023 5:00 PM

Looks

Try to implement the below designs as close to them as possible

  • Should darken the color of all buttons when he hovers on them (To give a hover effect)
  • Make all rectangles rounded
  • Try to find a font similar to the one in the designs
  • Don't do exactly the Profile picture (On the top right side), You can just put any icon that represents a profile there
  • Contact @Abdallah-Moe-dev to get the Bag image

First page

After the User has filled in the passenger info (The User will still book more Passengers) (Meaning this is not the last passenger he will book)

After the User has filled in the All passengers info and this is the last passenger he will fill

Functionality

  • Create a Passenger class
    Note: There is probably a built-in Date class in Java, so check it out
  • In Both "Next Passenger"/"Select Seats" Buttons, The User shouldn't be able to press them Unless he has filled all the text boxes (Can grey them like in the design, and only color them when the user has filled in all the data)
  • Your controller should view the number of passengers/scenes dynamically, Meaning it should receive the number of passengers to be booked as an argument, (Just for an example let's say it has received 3 passengers), Then you will ask the user for Passenger 1 details ("Select Seats" button is greyed until he finishes all passengers), then after he presses "Next Passenger" you will ask for Passenger 2 details, then ask for Passenger 3 details, and when he finishes filling in Passenger 3 details, you will only give him the option to press "Select Seats", not "Next Passenger", so if you take an argument of (10 passengers), then you should do the above from Passenger 1 till Passenger 10
  • You should store these Passengers's info in an array or some type of data structure
  • The "Select Seats" button currently shouldn't do anything, but later on, it will redirect to a new scene
  • The Flights and Log out buttons currently should restart the whole process and make the user start from Passenger 1 again, later on, it will restart the process and also redirect to a new scene

Create Admin Management Page

Admin Management Details

Assigned to: @MostafaMohamed2005 @Mahmoud-Bassem @Parlerler @mazen366
Deadline: To be determined

Looks

  • Make all rectangles rounded
  • Try to find a font similar to the one in the designs
  • The 3 icons on the right are buttons!
  • Important Note: Flights button and Profile icon at the top right are a mistake in the design!
    These shouldn't be made, since the admin won't need to access the flight search and won't have a profile to edit
  • Get the design and functionality of the flight list from @MostafaMohamed2005 and @Mohannadms

Main page

After he presses on the edit (pen logo) button
Before filling in the info

After filling in the info

Functionality

  • Contact @mazen366 to add an attribute in the User class that signals if this user is an admin or not, and create special credentials for the admin to log in with (Ex: Username: admin, Password: admin)
  • Should view all the flights available in the system to the admin in the flights list
  • The "Add flight" Button at the top left should open a scene very similar to the above one, but with the change of the Title to "Add flight" instead of "Edit flight"
  • The Edit seats button (Chair logo) should open a scene exactly like the one made by @Mahmoud-Bassem in #4 but with the changes of removing the Seat number and Passenger name part and replacing them with a button that says "Save", while allowing the admin to reserve any amount of unreserved seats, but he cannot set a seat that is unavailable to be available (Since a passenger already booked it), then after he sets any amount of seats he wants as unavailable, he presses save and these changes should be saved in the flight he has chosen (Contact me if there is any confusion in this part)
  • Work with @MostafaMohamed2005 to edit, add, and remove these flights from the flights array that he has
  • After he adds, edits, or deletes any flight, the flight list should update accordingly
  • Of course, the delete button (Trash can logo) should delete the flight next to it
  • The logout button should send the user to the HomePage
  • As said above DON'T implement the flights button and profile picture

Create Payment Page

Payment Page Details

Deadline: To be determined

Looks

Try to implement the below designs as close to them as possible

  • Make all rectangles rounded
  • Try to find a font similar to the one in the designs
  • Don't add the exclamation mark icon next to CCV
  • The user shouldn't be able to "Confirm and pay" unless he fills in all the data (Can grey the button until he fills the text boxes, then you give them color and make him able to press them)
  • No need to do the profile picture at the top right exactly as it is, just put any profile picture icon there
  • Can get the design for the flight summary on the right "Hawaiian Airlines" from @MostafaMohamed2005 and @Mohannadms
  • Should darken the color of all buttons when he hovers on them (To give a hover effect)

Initial page (Credit card)

Credit card info filled

PayPal page

Functionality

  • Create a Payment Class to store payment info after he presses on "Confirm and pay"
  • Create a Payment method class to store in it either Paypal email or Credit card info
  • Later this scene will be given a Flight object + an array of Passengers, you should then extract from them the Flight summary details + the "[Number of passengers in economy] * Economy [Economy seat price for this flight]" part in the bottom right of the design in grey, above the subtotal, then you should calculate the Subtotal and present it and then get the taxes and fees from somewhere (Maybe the flight object) and then calculate the total cost and present it, you can test this currently by creating parameters in your function like Airline name, Date of Flight arrival, Number of passengers in economy, economy seat price, etc.
  • "Confirm and pay" button currently shouldn't redirect to any scene, but will later redirect
  • The "flights" button at the top right should reset everything that's happening, later on, it will reset + redirect to another scene

Create Flight Search Page

Flight Search Details

Assigned to: @MostafaMohamed2005 and @Mohannadms
Deadline: 5/Dec/2023 11:00 PM

Functionality

  • Create a Flight class, to store each flight's details (Which later on admin will be able to add)
  • Be able to read from a file each flight details
  • Create an Airport class
  • Create a Date class, or find a way to implement dates
  • At first, when this page is opened, it should show all flights in the system, and the user should be able to scroll and see all the flights
  • The user should be able to show specific flights based on the search criteria
  • The user shouldn't be able to press "Search" Unless all the search fields are filled, (Can grey the Search button until he fills the text boxes)
  • After searching, the user should be able to filter the flights based on the filters in the design (Max price, Max departure time, etc.)
    Important note! Don't currently implement the "Seat class" filter, we will create it later after creating the "Seat class"
  • Currently "Log out" and "Profile Picture" should not redirect to anything, but later on will redirect to other scenes
  • When the user chooses/presses on a flight, a pop-up rectangle should open to him as illustrated in the designs below
  • Currently the "Click to confirm details button" shouldn't redirect to anything, but will later redirect

Looks

Try to implement the below designs as close to them as possible

  • Make all rectangles rounded
  • Try to find a font similar to the one in the designs
    Important Note: In the search, the "Depart-Return" should be written only "Depart", since we will currently only add one-way flights

Main page

  • Don't do exactly the Profile picture (On the top right side), You can just put any icon that represents a profile there
  • Should make a hover effect when the user hovers on any flight

Hover effect

Drop-down menus (The same thing should be done for Filters (Max price, Max departure time, etc.)
Note: Don't forget the hover effect


Depart
Note: Should add a hover effect when hovering on the days

Passengers count

After he presses/chooses a flight
Note: Should add a hover effect when hovering on the button
Important Note: Should give the user a way to close this rectangle and go back to the flights page, if he no longer wants to Continue

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.