f-z / cinema-booking-app

A JavaFX cinema booking application. Click the following link for the demo:

Home Page:http://mediacentral.ucl.ac.uk/Play/10244

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Log in as employee username: filip password: e or username: lucio password: e

Log in as customer username: ghita password: c or password: santa for customer christmas mode

Javadoc files in doc folder

UCL MediaCentral video link https://mediacentral.ucl.ac.uk/Play/10244

List of extra features Below you can find a list of extra features we implemented.

  • Using JSON to create, read, store, and modify data, rather than plain text (Main class readJSONFile method, etc.).
  • Code to create default JSON files programmatically (in the Main class, createJSONFile method).
  • Our application encrypts usernames and passwords (AES), so if you open the customers or the employees JSON file, you will see the encrypted stored credentials, rather than the actual ones we use to log in. They are decrypted on the fly, when the application is authenticating users. The functionality is contained in a class called Encryption.
  • Ability to choose in which folder to save the exported bookings.csv file.
  • Ability to delete films (only if there are no future bookings for them).
  • Customers can email themselves a confirmation of their booking from the summary screen that appears when they click on Book Seat and make a booking (SendEmail class). Check your UCL email account!
  • You can also play music. There is a playMusic method in the Main class that, when called, plays .mp3 files. Click on the play icon on top of the User Scene.
  • You can click on Send email in the main User Scene (the one that appears after you login successfully) and the native email client opens up with the email account of our cinema already filled-in as the recipient. The code for that can be found in the UserSceneController, in the sendEmailClick method.
  • When you click on a film poster and the pages showing its information (poster, title, description, dates, times) shows up, you can click on the film poster in that page (ViewSelectedFilm Scene) and it will open up YouTube and play the film’s trailer. You can also add a link to the trailer, when adding a new movie.
  • Custom-made background graphics and overall design, mostly by Lucio D’ Alessandro.
  • Creation and use of custom Java exception (ManageFilmsController class, InvalidFilmInput exception).
  • Inheritance (User parent class, Employee and Customer children classes).
  • Packaging: different packages for controllers, scenes, and resources (images).
  • Interfaces: implementing the Initializable interface, so that we can use its ‘initialize’ method to run code and customize a scene whenever it is created.
  • Importing and using open-source third-party libraries such as JSON Simple, JavaX Mail, and FontAwsomeFX.
  • Uploading images to enable users (both customers and employees) to personalise their experience.
  • Feedback scene to enable customers to leave feedback.
  • Extensive use of Alerts and Dialogs (popups) to provide information to users and prevent unwarranted behavior that might lead to bugs.
  • Comprehensive manual testing and debugging. Ability to extend and automate testing using JUnit for projects of a larger scope.

Important note The res folder needs to be located in the same path/directory as the Eclipse workspace folder (called zcinema) and the jar file, so that they can find it. It should not be inside the actual project folder with the source code though. If it gets moved to a different location, the application will no longer work.