Ask Question, Ask an Expert

+61-413 786 465

info@mywordsolution.com

Ask Computer Engineering Expert

Requirements

Design and implement an application with a graphical user interface to manage a library of songs. A song is uniquely identified by name and artist (case insensitive). Your application should have a SINGLE WINDOW with three functions:

Song list display, with the ability to select ONE song from the list. The list will display ONLY the names of the songs, in alphabetical order of names. Unless the list is empty, one song is always pre-selected, and its details shown - see the following item.

Song detail, with name, artist, album, and year, of the song that is selected in the song list interface

Song Add/Delete/Edit, for adding a new song, deleting a selected song, and editing a selected song information:

Add: When a new song is added, the song name and artist should be entered at the very least. Year and album are optional. If the name and artist are the same as an existing song, the add should not be allowed - a message should be shown in a pop-up dialog, or by some other means within the main application window.

The newly added song should automatically be placed in the correct position in the alphabetical order in the list. Also, it should be automatically selected, replacing the previously selected song, and its details should be shown.

Edit: ANY of the fields can be changed. Again, if name and artist conflict with those of an existing song, the edit should NOT be allowed - a message should be shown in a pop-up dialog, or by some other means within the main application window.

Delete: Only the selected song in the list can be deleted. After deletion, the next song in the list should be selected, and the details displayed. If there is no next song, the previous song should be selected, and if there is no previous song either, then the list is empty and the detail info is all blanks.

For any of the add/delete/edit actions, the user should be able to cancel the action if they change their mind, via a pop-up dialog.

Note: If you use the song detail display area for add/delete/edit as well (instead of two separate areas), then make sure the interface is not confusing to the user, particularly if the add or edit is disallowed or aborted by the user.

When your program is started, it should show the current list of songs in the library, in the song list display, with the first song selected by default. (The first time the program is run, there should be nothing in the display, since there won't be any songs in the library.)

The data should be persistent across different sessions of your program. You can save the song list in a file in whatever TEXT (readable) format you like, and then read it into your program when it starts up.

Your application is NOT required to play a song when it is selected. In other words, there is no requirement to have audio playing functionality, and there will not be any extra credit if you choose to implement this functionality.

The application window need NOT be resizable. When the window is closed, the application should be terminated.

Most of the aspects of design (layouts and widgets) and implementation (event handling) you need to do this assignment have been covered in class. If there is any aspect you want to add that has not been covered in class, you are expected to discover these for yourself. Here is a good starting documentation to explore the FX world.

NOTE:

You MUST use Java FX 8 for all UI-related code. (No Swing stuff.)

Also, all UI layout of the main window (not the pop-ups) should be done in fxml ONLY, otherwise you will lose credit - see the Point Deductions part of the following section.

You may use pop-ups ONLY to show an error message, or to ask for confirm/cancel of an action, but NOT for anything else.

For the first three items, the grade will depend on correctness and completeness of functionality, as well as effective/appropriate use of JavaFX widgets. For the last part (persistence), grading is on correctness, and on ensuring this is transparent to the user, i.e. the user should not have to be concerned with where and how the song list is stored between sessions.

Effective/appropriate means the UI should be clear, the user should know exactly what to expect when events are triggered, the user should know exactly what to do to achieve their objective. If you need to explain to someone how to use the interface, then it's not a good enough interface.

IMPORTANT: Your UI should not use widgets that are an overkill for the task at hand because if a complex widget is used for a simple task, it will confuse the user. So, for instance, do NOT use a table view to show song details because the requirements do not ask you to dynamically rearrange the display on user request. If you do so, you will lose credit - see the Point Deductions section at the end of this document.

Finally, your UI is not required to be aesthetically pleasing (no points for this because it's highly subjective), but you are most welcome to dazzle us with your creativity (just for the heck of it!) as long as it does not get in the way of clean functionality.

You may use any of the classes in the Java 8 SDK, but no external third-party libraries.

You may implement this program in as many files as you want, but you MUST call your main class SongLib (this is the class with the main method.)

Also, you must organize your classes into packages. There is no requirement for how many packages you need to use, as long as there is at least one. In other words, none of your classes must be directly under src (which basically amounts to a default package) - this is bad design because it severely limits the way in which you can control access to members of a class.

Make sure to write your names at the top of each of the Java source files in your project.

Export your project to a zip file called songlib.zip (see how to do this in the Eclipse page, under "Zipping up a Project"). Make sure you have done this correctly by importing it back as a project into Eclipse (see "Importing a Zipped Project into Eclipse" in the Eclipse page). Since you are working pairs, a good test would be for one of you to zip the project, and for the other to import the zipped project into their Eclipse installation.

Computer Engineering, Engineering

  • Category:- Computer Engineering
  • Reference No.:- M93111826

Have any Question?


Related Questions in Computer Engineering

Symbolic mathematicsa thick-walled cylindrical tubing of

(symbolic Mathematics): A thick-walled cylindrical tubing of hard rubber having an inside radius of 5mm and an outside radius of 20 mm is being used as a temporary cooling coil in a bath. Ice water is flowing rapidly ins ...

Imposing a tariff leads to the existence of two deadweight

Imposing a tariff leads to the existence of two deadweight triangles, which are the Consumption distortion and Production distortion losses. It is easy to understand why consumption distortion constitutes a loss for soci ...

In unix programming ordinarily the exec system call follows

In UNIX programming, ordinarily the exec() system call follows the fork() call. Explain what would happen if a programmer were to inadvertently place the call to exec() before the call to fork().

How does having an understanding of spreadsheet software

How does having an understanding of spreadsheet software help you succeed in your personal or professional life?

Nfs allows the file system on one linux computer to be

NFS allows the file system on one Linux computer to be accessed over a network connection by another Linux system. Discuss the security vulnerabilities of NFS in networked Linux systems, and possible mitigation solutions ...

Section 1 introduction write an introduction statement

Section 1: Introduction Write an introduction statement introducing the topic that you are interested in exploring. This section should contain the following background: Identify an industry and company profile you wish ...

A real estate developer will build two different types of

A real estate developer will build two different types of apartments in a residential area: one- bedroom apartments and two-bedroom apartments. In addition, the developer will build either a swimming pool or a tennis cou ...

As a wealthy graduate of the university you have decided to

As a wealthy graduate of the University, you have decided to give back to the University in the form of a scholarship. You have decided to donate a one-time gift of $500,000 that will be invested at a rate of 5.5% per ye ...

Explain that this threat represents a well-known and broad

Explain that this threat represents a well-known and broad category of electronic and human activities that breach the confidentiality of information.

The standard math library cmath includes a function for

The standard math library cmath includes a function for taking the square root of a number. The heading (prototype) for this function is: double sqrt(double x) Write another function called closer_root that takes two rea ...

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As