College Assessment: COIT20256 Data Structures and Algorithms
COIT20256 Data Structures and Algorithm
Central Queensland University
COIT20256 Data Structures and Algorithm Individual Assessment
Assessment No: 1
COIT20256|Data Structures and Algorithms
Student’s Score cards
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. The topics required for this assessment task are from Weeks 1-5. 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. You will be required to use the topics learnt in the pre-requisite unit Introduction To Programming. 2.1 Problem The Australian Bureau of Statistics (ABS) defines a homeless as a person “who does not have suitable accommodation and whose current living arrangement: is in a dwelling that is inadequate, has no tenure is where the initial tenure is short and not extendable does not allow the person to have control of, and access to space for social relations”.
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). As of June 2016, there were 194,592 applicants waiting for social housing across the country’s social housing programs (Patterson, 2017). Specialist Homelessness Services (SHS) are charity and government funded organisations working to support homeless people.
End Homelessness (EH) is a newly registered SHS who is determined to tackle the problem of homelessness in innovative ways by using information and communication technology to collect data, increase advocacy and if needed employ crowd funding to raise money. 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 Homeless Information System (HIS) which is reliable, flexible, and expandable. You are invited to design and develop an initial prototype for the HIS. The prototype needs to have only limited functionality as described below. As a first step the HIS will be designed to collect data about single persons living in privately rented dwelling and having a very low income. If the weekly income is very low, any changes to their employment or other income source or any changes to their needs can affect their ability to pay rent, and increasing their risk of becoming homeless. The initial data collection will be targeted on people aged 50 or above. The support for the full development of the system depends on the quality of the prototype. You will be developing a Java application with a GUI.
The users accessing the HIS should able to:
- Add new location
- Update the statistics of people at risk of becoming homeless by choosing:
- appropriate location
- gender of the person to be added
- correct age group and
- income category
- Display statistical reports to view:
- all males at the risk of homelessness
- all people in a chosen location at the risk of homelessness
- all females at the risk of homelessness
- all at the risk of homelessness Note: You will be given a data file containing sample data of single persons belonging to a number of locations in Western Australia. You are free to add any new location anywhere in Australia
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 doesn’t apply to the JavaFX classes for the GUI.
- Location class The Australian Bureau of Statistics uses the geographical mesh map which divides the total geographic area into Mesh Blocks which is the smallest in size in terms of number of people living in the area. Statistical Areas Level 3 (SA3s) generally have populations between 30,000 and 130,000 persons and these are often the functional areas of regional towns and cities with a population in excess of 20,000 (ABS, 2018). The statistical data will be collected and studied from various SA3s. This class is to read the given file and store the locations in an ArrayList. A Location has a SA3code which is a five digit number. Each state has a range for the SA3code and for Western Australia all SA3codes start with digit ‘5’. The Location has a name which can be more than one word separated by ‘- ‘and a space before ‘ ‘ and space ‘ ‘ after (eg: “Augusta - Margaret River – Busselton”. The name should be validated so that it contains only alphabets other than the ‘-‘ and space characters.
- Person class This is a generic class and has an age category, and a gender category. This class will remain abstract as no objects will be required of type Person.
- SA3TenantCategory class This class extends the Persons class by including: Location income category income source. Override the inherited methods as required. Ensure that the source code is re-used and not repeated unnecessarily leading to redundant code. The income sources included in the data file are: “employed” and “other”.
- RiskyPersons class This class is for recording and displaying the statistics of people at the risk of homelessness. This class will have: SA3Category object, Number of Persons in a Cateogry Hints and tips: Refer to Week 3 Lecture and tutorial solutions, and the Textbook chapter on Polymorphism for the correct implementation of polymorphic behaviour.
- DataFile class This class is for implementing the file operations to open, read the values from the given ‘futureDemand.csv’ file, store the values in an ArrayList
(). This file will be available from the Unit website. Use specific file handling exceptions for various checked exceptions related to file operations.
- enum GENDER Create an enum type GENDER to store male, female gender values as these remain constants.
- enum WEEKLY_INCOME The actual weekly income is not recorded. The risk of homelessness is identified by the range of income. The interested ranges are:
- (-2000 -0) - NilIncome
- $1-$399 – below$400
- $400-$599 – below $600
- $600-$999 - below$1000
- enum AGE The actual age of the people recorded is not kept, but the age category within which they belong to are kept. The categories used are: 1. 50-54 2. 55-59 3. 60-64 4. 65 or over 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:
- HomelessInfoMain class that has the main method and starts the application
- HomelessInfoController class for event handling and data collection.
- HomelessInfo.fxml for the .fxml
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 multiple tabs for taking the user through the step by step process of entering data about a new location, add new RiskyPerson/s belonging to an SA3TenanatCategory to the records, and finally displaying reports choosing one of the options. The user should be supported with the GUI in each step as given below.
- Location Use this Tab to enable the user to enter the SA3code, and name of a Location and add the Location. You can choose appropriate controls (Labels, TextFields, and a Button) for these. Display error message if the user hasn’t entered the Location correctly.
- Tenant Use this tab to enable the user to enter the age, income, choose gender, SA3code, and income source. The user should then be able to increment number of RiskyPersons in the corresponding SA3TenantCategory in the existing ArrayList<>(). You can use Labels, TextFields, RadioButtons, ComboBox or ListView, and a Button to add the data.
- Reports Use this Tab to enable the user to choose one of the available options and display the data. You can use a TextArea to display the report details. A full GUI design diagram is not given to encourage you to design user friendly interface. You can switch between Tabs by using a Continue button. Once the Continue button is pressed and the Tab is changed the entries in the previous fields should be cleared.
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. Follow the coding standards given in the Unit website. 3.1Guidance to the level of assistance you can use.
You are expected to understand a number of concepts and apply those concepts to design and build a software solution. At this level you can use the provided materials, online resources for further reading and take assistance from your classmates or teammates to develop deeper understanding of the concepts. You can also sort help to debug the implemented program. But you should implement and test your program on your own.
- Unit Textbook, Unit notes and examples Understanding concepts, design
- Instructors Understanding concepts, design, debugging
- Classmates, Online resources Understanding concepts
- Everyone else Understanding concepts 6 No help acceptable Implementing code
You should submit a report containing the following details.
- UML class diagrams for the classes
Note: UML class diagrams generated using a software tool after completing the coding will not be accepted.
- Test plan showing input data, expected results, and actual results. Show testing of erroneous entries also.
- Write clearly which aspects of the User Interface Design principles you have followed and how did you implement those.
You should submit the following source code files and word document using the Moodle online submission system. (Note: the file names/class names could be changed to meaningful names). Please do not zip the whole project folder and submit it.
- Location.java – Source code for the Location class
- Person.java– Source code for the Person class
- SA3Tenant.java - Source code for the SA3Tenant class
- RiskyPersons.java - Source code for the RiskyPersons class
- DataFile.java – Source code for DataFile class
- AGE.java, GENDER.java, and WEEKLY_INCOME.java for the Java enums.
- .java files for the main and controller classes
- .fxml and the .css files
- Report.doc – Your word document containing the report.
Why invest in our services?
Our assignment help team is trained to provide you high quality writing services.
High scores achieved by our students is a portrayal of our high quality online assignment help
You can place your assignment order through 4 easy modes of communication