### designing and implementing a software program

Instructions
In this assessment task, you will be designing and implementing a software program that results in a GUI interface to show filtering, custom sorting and searching of the Fibonacci number sequence. Your program will be following the stages of the program development lifecycle. This assessment is designed to enable students’ ability to deliver practical applications developed using JavaFX GUI to invoke the use of data structures and algorithms. In this assessment, you are expected to analyse GUI design and develop and analyse Bucket sorting and searching algorithms. The program can be developed by following the instructions/guide below step by step:
1. (10%) First, study the number filtering program application from https://onlinenumbertools.com/filter-numbers, including the functions of filtering integers, fractions, even and odd numbers, multiples and divisors, and number delimiter and sorting. You can learn the Fibonacci number sequence from https://en.wikipedia.org/wiki/Fibonacci number. Basically, the GUI program can enable users to generate a Fibonacci number sequence of a given length (e.g., 30-50 numbers) and apply several normal filtering functions to the sequence. Write JavaFX code with an intuitive GUI design that can generate a Fibonacci number sequence of a certain length (e.g., 30-50 numbers) via pressing a ‘Fib Gen’ button. The program should have at least two filtering functions on the generated number sequence.
2. (10%) The program also has a special sorting function that uses a custom bucket sort technique to sort the Fibonacci numbers based on the order of their division by the digits 2, 3, 4, 5, 6, 7, 8 and 9 (8 digits), that is, the custom sorting order is defined based on the divisibility of numbers starting from 2, 3, 4 and onwards (8 buckets in total). If a Fibonacci number is not divisible by any of the 8 digits (e.g., a prime number), then it is put in another non-divisible bucket. As a result of custom sorting, some of the Fibonacci numbers could be put in more than one bucket because the numbers can be divisible by multiple digits. To avoid this happening, each number is only distributed to the largest divisible digit in [2, 9] except the non-divisible numbers. For instance, the number 21 belongs to the bucket with the digit 7 instead of 3.
3. (10%) It is easy to see that the numbers within each bucket will be already sorted as the Fibonacci sequence is ascendingly sorted itself. After pressing a button called’ Fib Bucket Sort’, your program should also display a GUI component with the buckets and their corresponding divisible numbers. Finally, given a specified input number (e.g., 144), the program can search across the buckets and output its belonged bucket number and the position in the bucket (e.g., 144 is the 2nd number in bucket 8). If the specified number is not in the generated Fibonacci sequence, then output the message ‘Number not found!’. The GUI should also have a ‘Fib Bucket Search’ button attached to this search function. But keep in mind that the bucket search function/button (i.e., ‘Fib Bucket Search’) is only enabled after the bucket sort is done and the bucket sort function/button (i.e., ‘Fib Bucket Sort’) is only enabled after the Fibonacci sequence is generated.
4. (10%) In addition, write at least a 500-word project report with code snippets, program screenshots, user manual/instructions, and precise language and logic flow explaining the workings of your program. Also, make sure to include the analysis in the reoort on it the desion of your GUI front end and iil the efficiency