Build a graphical user interface using javafx

Assignment Help JAVA Programming
Reference no: EM132130228

Overview

You are required to use Java SE 8.0 and JavaFX to develop a Graphical User Interface (GUI) for the FlexiRent rental property management program created in Assignment 1.

This assignment is designed to help you:

1. Develop your skills of using various Java collection classes and exception handling
2. Enhance your ability to build a Graphical User Interface using JavaFX
3. Practise implementation of various GUI event handlers
4. Read from and write to a database using Java JDBC technology
5. Incorporate text file handling in your program to import and export data

General Implementation Requirements

- All information displayed to the user and all user interactions should be done via the GUI. There must be no Console input and output.
- You are free to create your own GUI layouts as long as your layouts are clear and meet the requirements shown in the following sections. Marks might be deducted for very poor GUI design.
- Any user inputs via the GUI should be validated.
- You must not use 3rd-party GUI components which are not built by you.

- Marks will be allocated to proper documentation and coding layout and style. Your coding style should be consistent with standard coding conventions shown in the General Implementation Requirements section of Assignment 1.
- Your programs will be marked with Java SE 8.0. Make sure you test your programs with this setting before you make the submission.

Task Specifications

NOTE: Carefully read the following requirements. In addition, regularly follow the Canvas assignment discussion board for assignment related clarifications and discussion.

Packages and Organisation of Code

You must use the following packages to separate your code into sets of related classes and interfaces:

- view: contains all your GUI classes
- controller: contains all your controller classes
- model: contains all your classes to store and process data (RentalProperty, Apartment, PremiumSuite...) and all database and file handling classes

You can use sub-packages inside the packages shown above.

Data Generation

You are required to generate data for 15 property, including 10 Apartments (with random number of rooms and locations of your choices) and 5 Premium Suites. Each property needs to have 2 or 3 completed rental records with random customer ids.

For this assignment, each property will have a corresponding image and a long description which is from 80 to 100 characters.

Each property image should have a moderate size (from 100KB to 250KB). Click here for an example of such an image. You must keep all images in a folder named images which is a direct sub-folder of your assignment project. If a property has no corresponding image, a default image with the phrase "No Image Available" should be used.

Collections and Exception Handlings

Collections

In this assignment, you are required to used various collections in the Java Collection Framework such as ArrayList, Set and HashMap to store data instead of using fixed-length array as in assignment 1.

Creating Custom Exception Classes

In assignment 1, methods such as rent(...), returnProperty(...), performMaintenance(), completeMaintenance(..) have boolean as return type to indicate whether the corresponding operation is executed successfully or not. In assignment 2, you are required to modify all those methods so that all of them will return void instead of boolean and will throw custom exceptions. As a consequence, you are required to create custom exceptions such as RentException, ReturnException, InvalidIdException.... to represent various exceptional cases that can occur when those methods are executed. All of those custom exception types should allow appropriate error messages to be specified when exception objects are created.

Generating and Propagating Exception Objects

To use your custom exceptions effectively, you will need to look for areas in your program where you need to handle various cases such as when there is an invalid property id, or when a property cannot be rented or returned, or when there is an invalid user input... Then you should generate appropriate exceptions and then throw those exceptions back to the appropriate class to be handled.

Handling Exceptions

Those various exception objects should then be allowed to propagate back to the appropriate class (i.e. those exception should not be caught locally within the class that generated the exception).

All exceptions will need to be caught and handled in a appropriate manner by displaying a message via the GUI to the user the error message contained within the various exception objects that have been propagated up from the relevant method call.

Using Database For Data Persistence

Every time your program is opened and terminated, data will be read from and save to a database. For this assignment, you should use an embedded HSQLDB (shown in the lecture) or SQLite database. You must keep all database files in a folder named database which is a direct sub-folder of your assignment project.

You must create at least two tables in your database. One table named RENTAL_PROPERTY to store details of rental properties, and another table named RENTAL_RECORD to store details of rental records. In each table, you must store details of your properties and records in separate columns in those tables with appropriate data types, rather than just storing the whole toString representations.

NOTE: No need to store images directly in the database. Only image file names should be stored as text in the database. All images will still be kept in the images folder which is a direct sub-folder of your assignment project.

Graphical User Interface (GUI)
All user interaction with the Flexirent system will be done via the GUI. Users should be able to click buttons, select menu items, choose options from combo boxes to perform all functionalities described in Assignment 1 such as add, rent and return a property as well as perform and complete property maintenance.

Main Program Window

- This is the first window users will see when running your program.
- This window should contain a menu bar or menu pane from which users can execute the main functionalities of your program, such as import, export data, quit the program and other main

functionalities described below. When users click a button or select a menu item, new windows can be opened to allow users to perform corresponding functionalities.
- The centre area of this window will contain a scrollable list of rental properties managed by your program. Each list item should be implemented by using various JavaFX User Interface Controls such as ImageView, Label, Buttons..., rather than just a text area showing the output of getDetails() method. Click here for a suggestion of how the list should look like.
? In this list, each list item provides an overview of a rental property with an image of that property, property type, status... and a button that users can click on to go to the detail view of that property to perform more functionalities related to that property (described below)
- Search and filtering capabilities: your main window should also contain various combo boxes, allowing users to filter the property list by type (Apartment, Premium Suite) or by number of bedrooms (1, 2, or 3 bedrooms) or by status (Available, Rented, Maintenance) or by suburb.

Property Detail Window

- When the user selects a property in the property list of the Main Program Window, your program should display this Property Details Window to allow users to see all details of the property which has been selected, including the property image and long description.
- This window must have a scrollable list to display complete rental records of that property.
- This window must have buttons which allow users to perform various activities related to this property such as rent, return, maintenance and complete maintenance.
- This window must still keep the main menu bar or menu pane as mentioned in the Main Program Window description shown above, allowing users to perform common activities such import, export data, quit the program and other main functionalities that you see reasonable.
- Users should be provided with a way to return to the Main Program Window from this Detail Window

Other GUI Requirements

- You are encouraged to explore and use various other JavaFX User Interface (UI) controls to implement your graphical interfaces for functionalities such as add property, return property, maintenance and complete maintenance. My suggestions for such UI controls are the Dialog class and its subclasses such as TextInputDialog, ChoiceDialog and Alert classes in the javafx.scene.control package.
- All user inputs via the GUI must be validated
- All error messages and messages from Exception objects should be displayed in the GUI using JavaFX Alert classes in the javafx.scene.control package. Do not output any error message to the Console.
- Important functionalities such as Save to Database, Import, Export, Quit should always be available in your program.

Using Text Files for Exporting and Importing Data

Your FlexiRent GUI program must allow users to export and import all rental property and rental record data to and from text files. One way to implement this feature is by adding Export Data and Import Data menu items in the main menu bar or menu pane of your program GUI.

When working with data stored in text files, you must follow the format as shown here.

When the user chooses to export all data, you should export all data in your program to a single text file named export_data.txt, which will be saved in a folder chosen by the user. (Hint: this feature can be implemented in your GUI program by using the DirectoryChooser class in the javafx.stage package).

When importing data, your GUI program must display a FileChooser window (hint: FileChooser class is located in the javafx.stage package) to allow the user to select a text file also in the format as shown above. Your program must be able to read rental property and rental record data from that text file. If a property has no corresponding image, a default image with the phrase "No Image Available" should be used.

Verified Expert

In this assignment we have studied javafx and we have done jave code in mvc pattern. Here I have created GUI for property rental application and create database in Sqlite and install Driver for sqlite and mvc pattern.

Reference no: EM132130228

Questions Cloud

Transportation logistics management : Discuss the attributes of concern in a Transportation Logistics Management.
Identify five sources of information that needs : Identify five sources of information that needs to be gathered to allow you to monitor whether or not each service has been properly delivered.
Dicuss how northup portrays each of those 3 subjects : What details about the society of the Old South, at least in Louisiana, does Solomon Northup reveal in his narrative Twelve Years a Slave.
Compute the retained earnings amount : The June beginning balance in ABC's Cash Account was $35,000, The Retained Earnings amount shown on ABC's June 30th Balance Sheet should be
Build a graphical user interface using javafx : Enhance your ability to build a Graphical User Interface using JavaFX - Incorporate text file handling in your program to import and export data
Discuss the steps in the total rewards planning process : Share at least two of the steps in the total rewards planning process and state why you feel they are the most crucial to the planning and implementation.
Prepare carlson statement of cash flows : Prepare Carlson's statement of cash flows using the indirect method. Include an accompanying schedule of non-cash investing and financing activities
Describe best practices for the communication of changes : Describe best practices for the communication of changes to total rewards programs. The response must be typed, single spaced, must be in times new roman font.
Discuss about the lucrezia borgia : In her own right as Duchess of Ferrara in her third marriage, Lucrezia came to be much admired as a patron of the arts and literature.

Reviews

inf2130228

11/19/2018 1:43:25 AM

Dear expert team please write everything in perfect form Highly recommended, Projects team went out of their way to get this assignment done in the short span of time. I have used their service so many times, I am fully satisfied by their outstanding work.

inf2130228

11/19/2018 1:42:01 AM

Yes I totally agree you delivered per the requirements. I was just hoping you may be able to help with regards the hsqldb instead of sqlite. Thank you. Thank you. I will definitely be recommending your service, very professional and helpful. I've attached my teamviewer page 30431021_115394935844163076157547974962011.jpg It says this is the newest version. 30431054_115394943277893667705465371795048.jpg Could we try Anydesk? OK Kapil, can you please try this? It's on another computer 30431015_115394971964738237534051131323228.jpg can something be done at least about providing the exception handling classes. They were a main requirement.

inf2130228

11/19/2018 1:27:39 AM

I have one question. If another student from the same course uses this service, will they receive the same solution or is it different to prevent plagiarism? I just complete my payment, thank you! If I have any follow up questions regards the solution when it is completed, may I ask you? Thanks Hi, may I just inquire approximately when will the assignment be delivered. Thank you! Hi, thanks for the work. Can you tell me is it easy to substitute HSQLDB in for SQLite as I'm not familiar with SQLite? Thanks again! I'm just asking as I haven't managed to get it running yet. Thanks

Write a Review

JAVA Programming Questions & Answers

  Write java programming to show number of credits for course

Write the java programming to solve following problem. We are given a student's marks in Calculus 1, CS1, and Physics 1 (each mark being between 0 and 100) also number of credits for each course.

  Create four classes that must all interact

You will create four classes that must all interact in some meaningful way. In order to start you will create a class diagram to determine which classes depend on other classes and what those classes are

  Write a test application name employeetest

Create two Employee objects and display each objects yearly salary. Then give each employee a 10% raise and display each employee's yearly salary again.

  Construct a fileinputstream with the file name

Write a program that will search a text file of strings representing numbers of type int and will write the largest and the smallest numbers to the screen. The file contains nothing but strings representing numbers of type int one per line. Your s..

  Write an application that displays the factorial

Write an application that displays the factorial for every integer value from 1 to 10. A factorial of a number is the product of that number multiplied by each positive integer lower than it.

  Design application allows users to keep track

Design application allows users to keep track of the amount of tennis matches won by tennis players use 1,2or3 that corresponds with player

  Write a class named java1306cmis141c801 that performs the

write a class named java1306cmis141c801 that performs the following actions.prompt the user for an int between lower

  Create a java program that displays an opening screen

Create a Java program, called Center, that displays an opening screen with text information about your program centered in the middle of the screen.

  Write a program that will be used to keep track of orders

Write a program that will be used to keep track of orders placed at a donut shop. There are two types of items that can be ordered: coffee or donuts. Your program will have a class for each order type, and an abstract superclass

  Method that accepts a string object

Word Counter Write a method that accepts a String object as an argument and returns the number of words it contains. For instance, if the argument is "Four score and seven years ago" the method should return the number

  Write a recursive instance method

Write a recursive instance method

  Write a generic class pair which has two type parameters

I need to write a generic class Pair which has two type parameters F and S (first and second) each representing the first and second elements of the pair. Add get and set elements so that the values of the pair can be changed.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd