Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

8.15 Program: Playlist (C++) You will be building a linked list. Make sure to ke

ID: 3936695 • Letter: 8

Question

8.15 Program: Playlist (C++)

You will be building a linked list. Make sure to keep track of both the head and tail nodes.

(1) Create three files to submit.

Playlist.h - Class declaration

Playlist.cpp - Class definition

main.cpp - main() function

Build the PlaylistNode class per the following specifications. Note: Some functions can initially be function stubs (empty functions), to be completed in later steps.

Default constructor (1 pt)

Parameterized constructor (1 pt)

Public member functions

InsertAfter() (1 pt)

SetNext() - Mutator (1 pt)

GetID() - Accessor

GetSongName() - Accessor

GetArtistName() - Accessor

GetSongLength() - Accessor

GetNext() - Accessor

PrintPlaylistNode()

Private data members

string uniqueID - Initialized to "none" in default constructor

string songName - Initialized to "none" in default constructor

string artistName - Initialized to "none" in default constructor

int songLength - Initialized to 0 in default constructor

PlaylistNode* nextNodePtr - Initialized to 0 in default constructor

Ex. of PrintPlaylistNode output:

(2) In main(), prompt the user for the title of the playlist. (1 pt)

Ex:


(3) Implement the PrintMenu() function. PrintMenu() takes the playlist title as a parameter and outputs a menu of options to manipulate the playlist. Each option is represented by a single character. Build and output the menu within the function.

If an invalid character is entered, continue to prompt for a valid choice. Hint: Implement Quit before implementing other options. Call PrintMenu() in the main() function. Continue to execute the menu until the user enters q to Quit. (3 pts)

Ex:


(4) Implement "Output full playlist" menu option. If the list is empty, output: Playlist is empty (3 pts)

Ex:


(5) Implement the "Add song" menu item. New additions are added to the end of the list. (2 pts)

Ex:


(6) Implement the "Remove song" function. Prompt the user for the unique ID of the song to be removed.(4 pts)

Ex:


(7) Implement the "Change position of song" menu option. Prompt the user for the current position of the song and the desired new position. Valid new positions are 1 - n (the number of nodes). If the user enters a new position that is less than 1, move the node to the position 1 (the head). If the user enters a new position greater than n, move the node to position n (the tail). 6 cases will be tested:

Moving the head node (1 pt)

Moving the tail node (1 pt)

Moving a node to the head (1 pt)

Moving a node to the tail (1 pt)

Moving a node up the list (1 pt)

Moving a node down the list (1 pt)

Ex:


(8) Implement the "Output songs by specific artist" menu option. Prompt the user for the artist's name, and output the node's information, starting with the node's current position. (2 pt)

Ex:


(9) Implement the "Output total time of playlist" menu option. Output the sum of the time of the playlist's songs (in seconds). (2 pts)

Ex:

L

Lab Submission

Explanation / Answer

Playlist.h

#ifndef Node_A

#define Node_A

template <class T>

class Node

{

public:

Node();

~Node();

T getData();

Node* getNext();

void setData(T);

void setNext(Node*);

private:

Node *next;

T data;

};

Playlist.cpp

#include "Playlist.h"

template <class T>

Node<T>::Node()

{

next = NULL;

return;

}

template <class T>

Node<T>::~Node()

{

return;

}

main.cpp

#include <iostream>

#include "Playlist.h"

using namespace std;

int main()

{

Node<int> a,b;

//No /*...*/

return 0;

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote