Given main() and a base Book class, define a derived class called Encyclopedia. Within the derived Encyclopedia class, define a PrintInfo() function that overrides the Book class' PrintInfo() function by printing not only the title, author, publisher, and publication date, but also the edition and number of volumes.
Ex. If the input is:
The Hobbit
J. R. R. Tolkien
George Allen & Unwin
21 September 1937
The Illustrated Encyclopedia of the Universe
James W. Guthrie
Watson-Guptill
2001
2nd
1
the output is:
Book Information:
Book Title: The Hobbit
Author: J. R. R. Tolkien
Publisher: George Allen & Unwin
Publication Date: 21 September 1937
Book Information:
Book Title: The Illustrated Encyclopedia of the Universe
Author: James W. Guthrie
Publisher: Watson-Guptill
Publication Date: 2001
Edition: 2nd
Number of Volumes: 1
Note: Indentations use 3 spaces.
##Code Given##
##main.cpp##
#include "Book.h"
#include "Encyclopedia.h"
#include
#include
using namespace std;
int main(int argc, char* argv[]) {
Book myBook;
Encyclopedia myEncyclopedia;
string title, author, publisher, publicationDate;
string eTitle, eAuthor, ePublisher, ePublicationDate, edition;
int numVolumes;
getline(cin, title);
getline(cin, author);
getline(cin, publisher);
getline(cin, publicationDate);
getline(cin, eTitle);
getline(cin, eAuthor);
getline(cin, ePublisher);
getline(cin, ePublicationDate);
getline(cin, edition);
cin >> numVolumes;
myBook.SetTitle(title);
myBook.SetAuthor(author);
myBook.SetPublisher(publisher);
myBook.SetPublicationDate(publicationDate);
myBook.PrintInfo();
myEncyclopedia.SetTitle(eTitle);
myEncyclopedia.SetAuthor(eAuthor);
myEncyclopedia.SetPublisher(ePublisher);
myEncyclopedia.SetPublicationDate(ePublicationDate);
myEncyclopedia.SetEdition(edition);
myEncyclopedia.SetNumVolumes(numVolumes);
myEncyclopedia.PrintInfo();
return 0;
}
##book.h
#ifndef BOOKH
#define BOOKH
#include
using namespace std;
class Book {
public:
void SetTitle(string userTitle);
string GetTitle();
void SetAuthor(string userAuthor);
string GetAuthor();
void SetPublisher(string userPublisher);
string GetPublisher();
void SetPublicationDate(string userPublicationDate);
string GetPublicationDate();
void PrintInfo();
protected:
string title;
string author;
string publisher;
string publicationDate;
};
#endif
##book.cpp
#include "Book.h"
#include
void Book::SetTitle(string userTitle) {
title = userTitle;
}
string Book::GetTitle() {
return title;
}
void Book::SetAuthor(string userAuthor) {
author = userAuthor;
}
string Book::GetAuthor() {
return author;
}
void Book::SetPublisher(string userPublisher) {
publisher = userPublisher;
}
string Book::GetPublisher() {
return publisher;
}
void Book::SetPublicationDate(string userPublicationDate) {
publicationDate = userPublicationDate;
}
string Book::GetPublicationDate() {
return publicationDate;
}
void Book::PrintInfo() {
cout << "Book Information: " << endl;
cout << " Book Title: " << title << endl;
cout << " Author: " << author << endl;
cout << " Publisher: " << publisher << endl;
cout << " Publication Date: " << publicationDate << endl;
}
##ENCYCLOPEDIA.h
#ifndef ENCYCLOPEDIAH
#define ENCYCLOPEDIAH
#include "Book.h"
class Encyclopedia : public Book {
#ifndef ENCYCLOPEDIAH
#define ENCYCLOPEDIAH
#include "Book.h"
class Encyclopedia : public Book {
public:
// TODO: Declare mutator functions -
void SetEdition(string bookedition);
void SetNumVolumes(int volumns);
// TODO: Declare accessor functions -
string GetEdition();
int GetNumVolumes();
// TODO: Declare a PrintInfo() function that overrides
// the PrintInfo in Book class
void PrintInfo();
// TODO: Declare private fields: edition, numVolumes
private:
string edition;
int numVolumes;
};
#endif
##Encyclopedia.cpp
#include "Encyclopedia.h"
#include
#include "Encyclopedia.h"
#include
void Encyclopedia::SetEdition(string bookedition){
edition = bookedition;//set book edition for the Encyclopedia
}
void Encyclopedia::SetNumVolumes(int volumns){
numVolumes = volumns; //set volumns for the Encyclopedia
}
string Encyclopedia::GetEdition(){
return edition; //return edition
}
int Encyclopedia::GetNumVolumes(){
return numVolumes; //return volumn number
}
//override Book::PrintInfo()
void Encyclopedia::PrintInfo() {
cout << "Encyclopedia Information: " << endl;
cout << " Book Title: " << title << endl;
cout << " Author: " << author << endl;
cout << " Publisher: " << publisher << endl;
cout << " Publication Date: " << publicationDate << endl;
cout << " Edition: " << edition << endl;
cout << " Volumn Number: " << numVolumes << endl;
}