Reference no: EM132517916
COIT20256 - Data Structures and Algorithms Assignment - Central Queensland University, Australia
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 classes which use inheritance, polymorphism, and exception handling.
Analyse, design and implement multi-layered software solutions, focusing on data structures and algorithms.
Compare and contrast performance of different algorithms in problem solving.
Investigate socially innovative practices in software development.
The Assessment criteria include:
1. Efficient object-oriented program design.
2. Design and implement appropriate data structures for application development
3. Evaluate a variety of data structures and algorithmic approaches
4. Effective use of good programming practice/techniques
5. Apply classes, inheritance, polymorphism, and exception handling
6. Programmatically connect to a database and implement the database operations
7. Rigorous testing of software application
8. Work collaboratively as part of a small team
Assessment task - Paired Programming
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. You will be using generic data structures, and lambdas and streams. The topics required for this assessment task are from Weeks 1-10. Your Java Application should have an interactive Graphical User Interface (GUI) using JavaFX GUI components.
Your application will connect to a database programmatically, executing necessary SQL queries within your java program.
You should also write an individual 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.
Problem - This is an extension to the problem given in Assessment Item 1 as specified here. 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).
End Homelessness (EH) is a newly registered Specialist Homelessness Services (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 directors have decided to have a Homeless Information System (HIS) which is reliable, flexible, and expandable. The support for the full development of the system depends on the quality of a prototype.
As part of the Assignment One you have developed a prototype for the HIS with very limited features.
In this Assignment you will be extending your initial prototype with additional features. You will be developing a Java application with a GUI.
The users accessing the HIS should able to:
1. Add new location (same as Assignment 1)
2. Update the statistics of people at risk of becoming homeless by choosing: (same as Assignment 1)
appropriate location
gender of the person to be added
correct age group and
income category
3. Display statistical reports to view:
all males at the risk of homelessness sorted in descending order (modified from Assignment 1)
all people in a chosen location at the risk of homelessness
all females at the risk of homelessness sorted in descending order based on their age group (modified from Assignment 1)
all at the risk of homelessness
Save the Locations in a database (new in Assignment 2)
Save the Risky persons in a database (new in Assignment 2)
Note: You can use the same data file futureDemand.csv. You are free to add any new location anywhere in Australia
Database - You can use the following information to complete your ERD. You need Entities (Tables) for Location, Weekly_Income, and Age corresponding to the classes. An SA3TenantCategory has a many-to-one relationship with Location, as many SA3TenantCategories can belong to one Location. Each SA3TenantCategory has an Age, and a Weekly_Income. You can see that RiskyPersons is a report showing the number of persons in an SA3Cateogry.
Database tasks -
1. Create a database only once. During the program execution it has to check whether database exists, if it does not create a database.
2. Create Tables only for the first time after checking that Tables are not existing.
3. Add records to Location, Age, and Weekly_Income when first time executing, using the data from the files.
4. Add records to SA3Cateogry for saving the data read from file.
5. Read the data from the database and load it to a LinkedList during the later executions of the program. Therefore, file reading is not required.
6. Add Locations to the database on entry by the user.
7. Add records to SA3Category and save these to database on user entry. SA3Cateogry will have foreign keys to link to Location, Age, and Weekly_Income.
You are reading and loading the data to LinkedList<RiskyPersons>. Use this LinkedList to search, sort and display various records as given in Section 1.1 for display of statistical reports. This will be more efficient and easier using lambdas and streams.
Report - Individually Written and Submitted
You should submit a report containing the following details.
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. A table listing tasks completed by you, and the corresponding source file names and relevant part of the source code (if it is partial completion).
4. A brief description of difficulties found in designing, implementing or debugging and how did you solve these difficulties as a team.
5. Write a very brief description about teamwork issues such as communication problems, expressing ideas or coming to a consensus for a solution.
Attachment:- Data Structures and Algorithms Assignment File.rar