1. Objectives

The purpose of this assessment item is to assess your skills attributable to the following learning outcomes and your achievement of the expected graduate attributes of advanced level communication, knowledge, cognitive, technical, and creative skills, and self- management.

  • Design and implement appropriate data structures for application development
  • Analyse, develop and implement software solutions with the focus on data structures and algorithms
  • Apply classes, inheritance, polymorphism, and exception handling

2. Assessment task

Your task in this assessment is to analyse the given problem, model, and design the required data structures using UML class diagrams. You will be implementing the software solution, applying efficient algorithms, inheritance, polymorphism, and exception handling. Your Java Application should have an interactive Graphical User Interface (GUI) using JavaFX GUI components. You should also write a report, as specified in this document, demonstrating your conceptual knowledge.

2.1 Problem

On Census night in 2016, more than 116,000 people were estimated to be homeless in Australia - 58% were male, 21% were aged 25 - 34 and 20% identified as Aboriginal and Torres Strait Islander Australians (ABS 2018). Specialist Homelessness Services (SHS) are charity and government funded organisations working to support homeless people.

Home for ALL (HA) is a newly registered SHS who wants to use technology enabled tools to improve the efficiency in this area. The very basic requirement for addressing the issue is to have accurate information on each homeless person. Therefore, the directors have decided to have a Housing Service System(HSS) which is reliable, flexible, and expandable.

You are invited to design and develop an initial prototype for the HSS. The prototype needs to have only limited functionality as described below. As a first step the HSS will be designed to collect data about people who are homeless or at the risk of becoming homeless. Minimum data will be stored as an initial step to test the prototype. The details to be recorded are:

  • Gender
  • Category of service requirement: At risk or Homeless
  • Risk category if the person is in the category of At Risk: SEVERE, VERY_HIGH, HIGH, MEDIUM, and LOW.
  • Current situation if the person is in the category of Homeless: ROUGH_SLEEPR, BOARDING_HOUSE, EMERGENCY_ACCOM, CARAVAN_PARKS, OTHER.
  • Reason: this can be a short description such as 'domestic violence', unemployment Problematic gambling, Housing affordability stress
  • Year of recoding.

You are also given a file with entered records.

You will be developing a Java application with a GUI.

The users accessing the HSS should able to:

  • Display the existing data in the given file.
  • Update the file by adding new persons with service need.

You should use exception handling and display information error messages when the user has not chosen or entered input in a required field.

Note: You will be given a data file containing sample data of people in different categories and having different reasons for their service need.

1.1 Design Guidelines

You can use the following guidelines in your modelling and GUI design.

Data Structures

You may follow the class design given below. You should read the specification carefully and design the classes using UML class diagrams and include the attributes with correct data types and all the methods, clearly indicating public or private. Clarify your doubts during the design stage so that your implementation can be less error prone and faster to complete.

All classes should have a default constructor, parameterised constructor, copy constructor, accessor mutator (get, set) methods, and properly written toString() methods. Include other methods as needed. This does not apply to the JavaFX classes for the GUI.

i) Person class

This is a generic class and has a gender category. This class will remain abstract as no objects will be required of type Person. Use an enum GENDER as described below.

ii) ServiceReceiver class

This class extends the Persons class by including:

  • Year in which the service needs are identified
  • Reason for needing assistance

Validation: You should validate the reason entered by the user so that it contains only alpha numeric strings separated by space.

Override the inherited methods as required.

iii) Homeless class

This class extends the ServiceReceiver class and is for recording people who are already experiencing homelessness.

This class will have: Current sleeping arrangement which can be one of:

  • ROUGH_SLEEPR
  • BOARDING_HOUSE
  • EMERGENCY_ACCOM
  • CARAVAN_PARKS
  • OTHER

iv) AtRisk class

This class extends the ServiceReceiver class and is for recording people who are at the potential of becoming homeless.

This class will have: RiskType attribute to indicate the urgency of the requirement. The risk type can be one of:

  • SEVERE
  • VERY_HIGH
  • HIGH
  • MEDIUM
  • LOW

Use enum RISK_CATEGORY for the risk types.

v) DataFile class

This class is for implementing the file operations to open, read the values from the given file named 'Ass1data.csv', and store the values in an ArrayList< ServiceReceiver > which can be operated polymorphically.

Use specific file handling exceptions for various checked exceptions related to file operations. This is a text file with values separated by comas. When you open it in Excel spreadsheet, the values will be displayed in columns. You can open using WordPad to view the values separated by comas.

vi) enum GENDER

Create an enum type GENDER to store male, female gender values as these remain constants.

vii) enum SLEEPING_TYPE

Create an enum type SLEEPING_TYPE to store the values of the current sleeping arrangement attribute given under the Homeless class. These values are constants.

viii) enum RISK_CATEGORY

Create an enum type RISK_CATEGORY to store the values of the riskType attribute given under the AtRisk class. These values are constants.

ix) JavaFX classes

The standard classes required include the main class to create the Stage and launch, the controller to initialize GUI components, handle events, and validate user entries, the .fxml file for the layout design of GUI components, and the .css file for formatting.

You can have:

  • HomelessServiceSystem class that has the main method and starts the application
  • HomelessServiceController class for event handling and data collection.
  • HomelessService.fxml for the .fxml
  • Homelessservice.css to store the styles

Graphical User Interface

The GUI should have the necessary components to enable the user to execute all the functions as provided in Section 2.1 above. You may use the guidelines provided below for your GUI design and implementation. Variations to the provided guidelines are acceptable if it meets the user requirements. Follow the User Interface design guidelines learnt in Week 4 and design the GUI to meet chosen aspects of an easy to use user interface that provides informative error messages, and clear instructions.

You can have a GUI with a MenuBar for enabling the user to add new service need by adding an At Risk or Homeless person and displaying the records in the file. The user should be supported with the GUI in each step as given below.

You can use RadioButtons for enabling selection of gender, and the category of Homeless or At Risk. Use a TextField to enter the reason.

Use ComboBoxes to display the Risk Categories and current sleeping situations.

You can use a Button to add the new service need.

You can use File Menu items for the file operations:

  • Open to open the given data file, read and load the records to the ArrayList. Ensure that you close the file after reading the records.
  • Save to write the newly entered records and close the file. The existing file should be appended, not over-writing the data.

i) Display Records

You can use a TextArea to display the records. A full GUI design diagram is not given to encourage you to design a user friendly interface.

Note: Use seperately written toString() methods for displaying records in the TextArea() with proper formatting, and writing the records to the file where fields should be separated by commas.

3. Coding

Include necessary accessor, mutator methods, constructors, and toString() method for each class. Also, follow good coding practices, using meaningful names, camel case notation for naming, constants as necessary, and include meaningful comments. You can use NetBeans to develop your application.

4. Report

1. UML class diagrams for the classes Note: UML class diagrams generated using a software tool after completing the coding will not be accepted.

2. Test plan showing input data, expected results, and actual results. Show testing of erroneous entries also.

3. Write clearly which aspects of the User Interface Design principles you have followed and how did you implement those.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.