Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Hi! I came across this c++ program on Chegg, and I wanted to practice with it the following concepts: class, objects, header and cpp file

Hi! I came across this c++ program on Chegg, and I wanted to practice with it the following concepts: class, objects, header and cpp file and searching a csv file. Can someone show me how this could be broken in a header file, cpp file and drive (main) program. Also, would reading and retrieving the information work differently from a regular text file and a csv file? From the source of the project, the dealt with a regular text file without commas, but I am practicing with a csv file.

------------------------------------------------------------------------------------------------------------------------

csv file:

Film,Genre,Lead Studio,Audience score %,Profitability,Rotten Tomatoes %,Worldwide Gross,Year Zack and Miri Make a Porno,Romance,The Weinstein Company,70,1.747541667,64,$41.94 ,2008 Youth in Revolt,Comedy,The Weinstein Company,52,1.09,68,$19.62 ,2010 You Will Meet a Tall Dark Stranger,Comedy,Independent,35,1.211818182,43,$26.66 ,2010 When in Rome,Comedy,Disney,44,0,15,$43.04 ,2010 What Happens in Vegas,Comedy,Fox,72,6.267647029,28,$219.37 ,2008 Water For Elephants,Drama,20th Century Fox,72,3.081421053,60,$117.09 ,2011 WALL-E,Animation,Disney,89,2.896019067,96,$521.28 ,2008 Waitress,Romance,Independent,67,11.0897415,89,$22.18 ,2007 Waiting For Forever,Romance,Independent,53,0.005,6,$0.03 ,2011 Valentine's Day,Comedy,Warner Bros.,54,4.184038462,17,$217.57 ,2010 Tyler Perry's Why Did I get Married,Romance,Independent,47,3.7241924,46,$55.86 ,2007 Twilight: Breaking Dawn,Romance,Independent,68,6.383363636,26,$702.17 ,2011 Twilight,Romance,Summit,82,10.18002703,49,$376.66 ,2008 The Ugly Truth,Comedy,Independent,68,5.402631579,14,$205.30 ,2009 The Twilight Saga: New Moon,Drama,Summit,78,14.1964,27,$709.82 ,2009 The Time Traveler's Wife,Drama,Paramount,65,2.598205128,38,$101.33 ,2009 The Proposal,Comedy,Disney,74,7.8675,43,$314.70 ,2009 The Invention of Lying,Comedy,Warner Bros.,47,1.751351351,56,$32.40 ,2009 The Heartbreak Kid,Comedy,Paramount,41,2.129444167,30,$127.77 ,2007 The Duchess,Drama,Paramount,68,3.207850222,60,$43.31 ,2008 The Curious Case of Benjamin Button,Fantasy,Warner Bros.,81,1.78394375,73,$285.43 ,2008 The Back-up Plan,Comedy,CBS,47,2.202571429,20,$77.09 ,2010 Tangled,Animation,Disney,88,1.365692308,89,$355.01 ,2010 Something Borrowed,Romance,Independent,48,1.719514286,15,$60.18 ,2011 She's Out of My League,Comedy,Paramount,60,2.4405,57,$48.81 ,2010 Sex and the City Two,Comedy,Warner Bros.,49,2.8835,15,$288.35 ,2010 Sex and the City 2,Comedy,Warner Bros.,49,2.8835,15,$288.35 ,2010 Sex and the City,Comedy,Warner Bros.,81,7.221795791,49,$415.25 ,2008 Remember Me,Drama,Summit,70,3.49125,28,$55.86 ,2010 Rachel Getting Married,Drama,Independent,61,1.384166667,85,$16.61 ,2008 Penelope,Comedy,Summit,74,1.382799733,52,$20.74 ,2008 P.S. I Love You,Romance,Independent,82,5.103116833,21,$153.09 ,2007 Over Her Dead Body,Comedy,New Line,47,2.071,15,$20.71 ,2008 Our Family Wedding,Comedy,Independent,49,0,14,$21.37 ,2010 One Day,Romance,Independent,54,3.682733333,37,$55.24 ,2011 Not Easily Broken,Drama,Independent,66,2.14,34,$10.70 ,2009 No Reservations,Comedy,Warner Bros.,64,3.307180357,39,$92.60 ,2007 Nick and Norah's Infinite Playlist,Comedy,Sony,67,3.3527293,73,$33.53 ,2008 New Year's Eve,Romance,Warner Bros.,48,2.536428571,8,$142.04 ,2011 My Week with Marilyn,Drama,The Weinstein Company,84,0.8258,83,$8.26 ,2011 Music and Lyrics,Romance,Warner Bros.,70,3.64741055,63,$145.90 ,2007 Monte Carlo,Romance,20th Century Fox,50,1.9832,38,$39.66 ,2011 Miss Pettigrew Lives for a Day,Comedy,Independent,70,0.2528949,78,$15.17 ,2008 Midnight in Paris,Romence,Sony,84,8.744705882,93,$148.66 ,2011 Marley and Me,Comedy,Fox,77,3.746781818,63,$206.07 ,2008 Mamma Mia!,Comedy,Universal,76,9.234453864,53,$609.47 ,2008 Mamma Mia!,Comedy,Universal,76,9.234453864,53,$609.47 ,2008 Made of Honor,Comdy,Sony,61,2.64906835,13,$105.96 ,2008 Love Happens,Drama,Universal,40,2.004444444,18,$36.08 ,2009 Love & Other Drugs,Comedy,Fox,55,1.817666667,48,$54.53 ,2010 Life as We Know It,Comedy,Independent,62,2.530526316,28,$96.16 ,2010 License to Wed,Comedy,Warner Bros.,55,1.9802064,8,$69.31 ,2007 Letters to Juliet,Comedy,Summit,62,2.639333333,40,$79.18 ,2010 Leap Year,Comedy,Universal,49,1.715263158,21,$32.59 ,2010 Knocked Up,Comedy,Universal,83,6.636401848,91,$219 ,2007 Killers,Action,Lionsgate,45,1.245333333,11,$93.40 ,2010 Just Wright,Comedy,Fox,58,1.797416667,45,$21.57 ,2010 Jane Eyre,Romance,Universal,77,0,85,$30.15 ,2011 It's Complicated,Comedy,Universal,63,2.642352941,56,$224.60 ,2009 I Love You Phillip Morris,Comedy,Independent,57,1.34,71,$20.10 ,2010 High School Musical 3: Senior Year,Comedy,Disney,76,22.91313646,65,$252.04 ,2008 He's Just Not That Into You,Comedy,Warner Bros.,60,7.1536,42,$178.84 ,2009 Good Luck Chuck,Comedy,Lionsgate,61,2.36768512,3,$59.19 ,2007 Going the Distance,Comedy,Warner Bros.,56,1.3140625,53,$42.05 ,2010 Gnomeo and Juliet,Animation,Disney,52,5.387972222,56,$193.97 ,2011 Gnomeo and Juliet,Animation,Disney,52,5.387972222,56,$193.97 ,2011 Ghosts of Girlfriends Past,Comedy,Warner Bros.,47,2.0444,27,$102.22 ,2009 Four Christmases,Comedy,Warner Bros.,52,2.022925,26,$161.83 ,2008 Fireproof,Drama,Independent,51,66.934,40,$33.47 ,2008 Enchanted,Comedy,Disney,80,4.005737082,93,$340.49 ,2007 Dear John,Drama,Sony,66,4.5988,29,$114.97 ,2010 Beginners,Comedy,Independent,80,4.471875,84,$14.31 ,2011 Across the Universe,romance,Independent,84,0.652603178,54,$29.37 ,2007 A Serious Man,Drama,Universal,64,4.382857143,89,$30.68 ,2009 A Dangerous Method,Drama,Independent,89,0.44864475,79,$8.97 ,2011 27 Dresses,Comedy,Fox,71,5.3436218,40,$160.31 ,2008 (500) Days of Summer,comedy,Fox,81,8.096,87,$60.72 ,2009

------------------------------------------------------------------------------------------------

//program to retrieve information from a csv file

#include

#include

#include

#include

using namespace std;

struct MovieData

{

string FilmTitle;

string Genre;

string Studio;

int AudienceScore;

int Probabibility;

int RottenTomatoScore;

double TotalGross;

int Year;

};

class Movie

{

public:

//Declare the essential methods

char describe();

void sortRankReport();

void sortTitleReport();

};

//Class Menu displays all the methods used

//to display menu

class Menu

{

public:

//Declare the essential methods

char getmenu();

char getReport();

char getSearch();

void setReport(char ch);

void setSearch(char ch);

};

//Class FilmDatabase contains all the methods

//to search in the class

class FilmDatabase

{

public:

//Declare the essential methods

void searchTitle();

void searchKeyword();

void searchStudio();

struct MovieData fileOpen();

};

//This is a method to open the file and store the values in the variables

struct MovieData FilmDatabase::fileOpen()

{

struct MovieData movie[80];

ifstream file;

//open the file and prompt if an error occurs

file.open("movies.csv");

//display error when file fails to open

if(file.fail())

{

cout << "Error occured when trying to open file" << endl;

}

//read from the file

for(int i = 0; i < 80; i++)

{

if(file.is_open())

{

file >> movie[i].FilmTitle;

file >> movie[i].Genre;

file >> movie[i].Studio;

file >> movie[i].AudienceScore;

file >> movie[i].Probabibility;

file >> movie[i].RottenTomatoScore;

file >> movie[i].TotalGross;

file >> movie[i].Year;

return movie[i];

}

}

file.close();

}

char Menu::getmenu()

{

char choice;

cout << " Main Menu: ";

cout << "D - Describe the Program : ";

cout << "R - Reports : ";

cout << "S - Search the Database : ";

cout << "X - Exit the Program : ";

cout << "Enter Selection -> ";

cin >> choice;

return choice;

}

char Menu::getReport()

{

char choice;

cout << " REPORTS MENU: ";

cout << "T - Order by Film Title report ";

cout << "R - Order by Rank report ";

cout << "X - Return to main menu ";

cout << "Enter Selection -> ";

cin >> choice;

return choice;

}

void Menu::setReport(char ch)

{

//extentiate the Movie class

Movie film;

switch(ch)

{

case 'T':

film.sortTitleReport();

break;

case 'R':

film.sortRankReport();

break;

case 'X':

break;

default:

cout << " Enter choice correctly : ";

}

}

void Movie::sortRankReport(){

struct MovieData movie[80];

FilmDatabase film;

for(int i = 0; i < 80; i++){

movie[i] = film.fileOpen();

}

//declare required variables

int temp, i, j;

//for loops used sorting

for(i = 0; i <= 10; i++){

for(j = 0; j <= 10; j++){

if(movie[j].AudienceScore > movie[j + 1].AudienceScore)

{

temp = movie[j].AudienceScore;

movie[j].AudienceScore = movie[j + 1].AudienceScore;

movie[j + 1].AudienceScore = temp;

}

}

}

cout << " Ranks after sorting: ";

cout << "Rank\tMovieTitle\t\t\tStudio\t\tTotal Gross"

"\tTotalTheaters\tOpening Gross\tOpening Theaters"

"\tOpening Date" << " ";

//Display after sorting

for(int j = 0; j < 10; j++)

{

cout << movie[j].FilmTitle << "\t";

cout << movie[j].Genre << "\t\t\t";

cout << movie[j].Studio << "\t\t";

cout << movie[j].AudienceScore << "\t\t";

cout << movie[j].Probabibility << "\t\t";

cout << movie[j].RottenTomatoScore << "\t" << "\t";

cout << movie[j].TotalGross << "\t\t";

cout << movie[j].Year << " ";

}

}

//Method to display menu for search

char Menu :: getSearch()

{

char choice;

cout << " Search MENU ";

cout << "T - Search by Title ";

cout << "S - Search by Studio ";

cout << "X - Return to main menu ";

cout << "Enter Selection -> ";

cin >> choice;

return choice;

}

//Method for switch case to apply search operation

void Menu::setSearch(char ch)

{

FilmDatabase data;

switch (ch){

case 'T':

data.searchTitle();

break;

case 'S':

data.searchStudio();

break;

case 'X':

break;

default:

cout << "Enter choice correctly : ";

}

}

//Method to search according to title

void FilmDatabase::searchTitle()

{

struct MovieData movie[80];

FilmDatabase film;

for(int i = 0; i < 80; i++){

movie[i] = film.fileOpen();

}

string title;

cout << " Enter the movie Title to be searched: ";

cin >> title;

for(int i = 0; i < 80; i++){

if(title == movie[i].FilmTitle){

cout << " Hi "<

"80 movie list. It is at the "<

break;

}

}

}

//Method to search by studio names

void FilmDatabase::searchStudio(){

struct MovieData movie[80];

FilmDatabase film;

for (int i = 0; i < 100; i++)

{

movie[i] = film.fileOpen();

}

string st;

cout << " Enter the Studio name to be searched: ";

cin >> st;

for (int i = 0; i < 100; i++)

{

if (st == movie[i].Studio)

{

cout << " Hi " << st << " present in the top 100"

" movie list. It is at the " << i << " rank ";

}

}

}

int main()

{

Movie film;

FilmDatabase data;

Menu opt;

struct MovieData movie[80];

char menu, choice;

//starts do-while loop

do{

//Accepts the meny to display the choices to the user

char ch = opt.getmenu();

//starts switch case

switch(ch){

case 'S':

do{

//method to display choice while searching

menu = opt.getSearch();

//Method to start switch case

opt.setSearch(menu);

//display messay to continue do-while loop

cout << " Do you want to continue (Y/N) : ";

cin >> choice;

} while(choice != 'N');

break;

case 'X':

//exit(1);

break;

default:

cout << "Enter choice correctly : ";

}

//Display message to continue do-while loop

cout << " Do you want to continue (Y/N) : ";

cin >> choice;

} while (choice != 'N');

return 0;

}

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

Step: 3

blur-text-image

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

Introductory Relational Database Design For Business With Microsoft Access

Authors: Jonathan Eckstein, Bonnie R. Schultz

1st Edition

1119329418, 978-1119329411

More Books

Students also viewed these Databases questions