Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

In this assignment you will complete the Digital Music Manager that you started in PA 2. You must implement the following features: (4) insert (5)

In this assignment you will complete the Digital Music Manager that you started in PA 2. You must implement the following features:

(4) insert

(5) delete

(7) sort

(10) shuffle

Menu also contains the following:

What must the main menu contain?

The main menu must display the following commands:

(1) load

(2) store

(3) display

(4) insert

(5) delete

(6) edit

(7) sort

(8) rate

(9) play

(10) shuffle

(11) exit

After a command is selected and completed, your program must display the main menu again. This procedure will continue until the exit command is selected.

What must load do?

The load command must read all records from a file called musicPlayList.csv (you may find a sample file here) into a dynamic doubly linked list. The doubly linked list is considered the main playlist. As each record is read from the file, it must be inserted at the front of the list. Each record consists of the following attributes:

Artist a string

Album title a string

Song title a string

Genre a string

Song length - a struct Duration type consisting of seconds and minutes, both integers

Number times played an integer

Rating an integer (1 5)

Each attribute, in a single record, will be separated by a comma in the .csv (comma separated values) file. This means that you will need to design an algorithm to extract the required attributes for each record. Each field in each record will have a value. You do not need to check for null or empty values.

You must define a struct called Record to represent the above attributes. Also, do not forget that the Song Length must be represented by another struct called Duration. Duration is defined as follows:

Minutes an integer

Seconds an integer

Finally, each struct Node in the doubly linked list must be defined as follows:

Data a Record

Pointer to the next node

Pointer to the previous node

What must store do?

The store command writes the current records, in the dynamic doubly linked list, to the musicPlayList.csv file. The store will completely overwrite the previous contents in the file.

What must display do?

The display command prints records to the screen. This command must support two methods, one of which is selected by the user:

Print all records.

Print all records that match an artist.

What must edit do?

The edit command must allow the user to find a record in the list by artist. If there are multiple records with the same artist, then your program must prompt the user which one to edit. The user may modify all of the attributes in the record.

What must rate do?

The rate command must allow the user to assign a value of 1 5 to a song; 1 is the lowest rating and 5 is the highest rating. The rating will replace the previous rating.

What must play do?

The play command must allow the user to select a song, and must start playing each song in order from the current song. Playing the song for this assignment means displaying the contents of the record that represents the song for a short period of time, clearing the screen and showing the next record in the list, etc. This continues until all songs have been played.

What must exit do?

The exit command saves the most recent list to the musicPlayList.csv file. This command will completely overwrite the previous contents in the file.

What must insert do?

The insert command must prompt the user for the details of a new record. The prompt must request the artist name, album title, song title, genre, song length, number of times played, and rating. The new record must be inserted at the front of the list.

What must delete do?

The delete command must prompt the user for a song title, and remove the matching record from the list. If the song title does not exist, then the list remains unchanged.

What must sort do?

The sort command must prompt the user for 4 different methods to sort the records in the list. These include:

1. Sort based on artist (A-Z)

2. Sort based on album title (A-Z)

3. Sort based on rating (1-5)

4. Sort based on times played (largest-smallest)

Once a sort method is selected by the user, the sort must be performed on the records in the list. Consider using bubble sort, insertion sort, or selection sort.

What must shuffle do?

The shuffle command must provide a random order in which the songs are played. This command must not modify the links in the list. It must just specify the order in which songs are played, based on the position of the song in the list. For example, lets say we have a list with 5 songs at positions 1 5 in the list, shuffle must generate an order 1 5 in which the songs are played. An order 2, 5, 3, 1, 4 would require that the second song in the list is played first, the fifth song in the list is played second, the third song in the list is played third, the first song in the list is played fourth, and the fourth song in the list is played fifth. The songs are accessed by traversing the list both forwards and backwards to satisfy the order. Hence, the need for a doubly linked list!

Once again you will find an example musicPlayList.csv (here).

IV. Logical Block Diagram

Once again, the logical block diagram for your doubly linked list should look like the following:

-> Record1 -> Record 2 ->...-> Record n -> <- <-...<-

As you can see from the illustration a doubly linked list has a pointer to the next node and the previous node in the list. The first nodes previous node pointer is always NULL and the last nodes next pointer is always NULL. When you insert and delete nodes from a doubly linked list, you must always carefully link the previous and next pointers.

BONUS:

Modify your doubly linked list implementation(s) for your DMM so that last node in the list points to the first node, and the first node points to the last node. Hence, there is no longer a first or last node. This list is now called circular. Overall, it is called a circular doubly linked list. Any one of the nodes may by the current node!

music.csv

"Brooks, Garth",FRESH HORSES,The Old Stuff,Country,2,57,11,2 "Swift, Taylor",RED,Stay Stay Stay,Pop,4,42,5,1 Adele,25,Remedy,Pop,4,11,24,4 Eminem,SHADYXV,Vegas,Rap,3,37,8,3 "Bieber, Justin",PURPOSE,No Sense,Pop,4,12,6,1 "Perri, Christina",HEAD OF HEART,Trust,Pop,2,35,3,5 Drake,YOU WELCOME,The Motto,Rap,4,13,7,4 Drake,NOTHING WAS THE SAME,Own it,Rap,3,23,3,3 "Swift, Taylor",RED,Shake it Off,Pop,3,35,12,3

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Graph Databases In Action

Authors: Dave Bechberger, Josh Perryman

1st Edition

1617296376, 978-1617296376

Students also viewed these Databases questions

Question

Describe how involvement influences the consumer decision process.

Answered: 1 week ago

Question

Why do HCMSs exist? Do they change over time?

Answered: 1 week ago