Problem Statement: Consider a collection of songs in an MP-3 library where each song is characterized by artistName, songTitle, albumName, playTime (in seconds), musicCategory, and albumProducer – hence, you will need to use a struct data type to hold a song and an array of structs to hold the song collection. The MP-3 library can hold a maximum of 200 songs at a time. The collection of songs is stored in a text file, which you will need to create with songs of your choice.
Write a program that reads the songs data from the text file, and stores it in an array of the struct data type, each of which represents a song in the library. The program should facilitate the following functionality, where each should be implemented as a separate C++ function.
1. PrintAllRecords: Outputs to a text file all the contents of the MP-3 library
2. AddRecord: Adds a new record at the end of the MP-3 library.
3. DeleteRecord: Removes a specific record from the MP-3 library, and then shifts the array accordingly. This will involve searching for the song record that needs to be deleted.
this is the problem and i Have that
so can you please help me finish this?
// prototype
// <data type>& indentifer
// definition
// <data type>& identifier
// File name:
// Program description:
// Author:
// Last modified:
#include <iostream>
#include <string>
#include <fstream>
using namespace std ;
// global user-defined type declaration
struct Song
{
string artistName ;
string songTitle ;
string albumName ;
int playTime ;
string musicCategory ;
string albumProducer ;
} ;
// named constants
const int MAX_SONGS = 200 ;
// function prototypes
void ReadSongs(ifstream&, Song[]) ;
void PrintAllRecords(const Song[]) ;
void AddRecord (ifstream&, Song[]);
void PrintToScreen(Song[]);
int main()
{
Song mySongs[MAX_SONGS] ; // array holding music library
// open input file stream
ifstream myInput;
myInput.open("musiclist.txt");
// populate music libray
ReadSongs(myInput, mySongs) ;
// print all records in library
PrintAllRecords(mySongs) ;
PrintToScreen(mySongs);
// Add Records in library
AddRecord (myInput, mySongs);
return 0 ;
}
// Function name:
// Function description:
// Pre-condition:
// Post-condition:
void ReadSongs(ifstream& myInput, // OUT: input file stream
Song mySongs[]) // OUT: array of music library
{
for(int i = 0; i < MAX_SONGS; i++)
{
getline(myInput, mySongs[i].artistName) ;
getline(myInput, mySongs[i].songTitle) ;
getline(myInput, mySongs[i].albumName) ;
myInput >> mySongs[i].playTime ;
myInput.ignore(100, '\n') ; // consumes newline character
getline(myInput, mySongs[i].musicCategory) ;
getline(myInput, mySongs[i].albumProducer) ;
myInput.ignore(100, '\n') ; // consumes blank line
}
return ;
}
// Function name:
// Function description:
// Pre-condition:
// Post-condition:
void PrintAllRecords(const Song mySongs[]) // IN: input file stream
{
ofstream myOutput ;
myOutput.open("allRecordsPrint.txt") ;
for (int i = 0; i < MAX_SONGS; i++)
{
myOutput << mySongs[i].artistName << endl ;
myOutput << mySongs[i].songTitle << endl ;
myOutput << mySongs[i].albumName << endl ;
myOutput << mySongs[i].playTime << endl ;
myOutput << mySongs[i].musicCategory << endl ;
myOutput << mySongs[i].albumProducer << endl ;
myOutput << endl ;
}
return ;
}
void PrintToScreen(Song mySongs[])
{
for(int i = 0; i < MAX_SONGS; i++)
{
cout << right << setw(3) << i + 1 << ") ";
cout << mySongs[i].albumName << endl;
cout << " " << mySongs[i].songTitle << endl;
cout << " " << mySongs[i].artistName << endl;
cout << " " << mySongs[i].playTime << endl;
cout << " " << mySongs[i].musicCategory << endl;
cout << " " << mySongs[i].albumProducer << endl << endl;
}
}
void AddRecord (ofstream& myOutput, Song mySongs[])
{
cout << "please enter the album name" << endl;
for (int i = 0; i < MAX_SONGS; i++)
{
myOutput << mySongs[i].albumName;}
}
void DeleteRecord (
this far. can someone help me finish this?