#include #include #include #include using namespace std; using std::string; class Item { protected: string itemName; int itemID; double itemCost; public: Item (string name, int ID, double cost); Item (); void setItemCost(double itemCost); double getItemCost(); void setItemID(int itemID); int getItemID(); string getItemName(); void setItemName(string itemName); }; Item::Item(string name, int ID, double cost) { itemName = name; itemID = ID; itemCost = cost; } Item::Item() { //Do nothing } double Item::getItemCost() { return itemCost; } void Item::setItemCost(double itemCost) { itemCost = itemCost; } int Item::getItemID() { return itemID; } void Item::setItemID(int itemID) { itemID = itemID; } string Item::getItemName() { return itemName; } void Item::setItemName(string itemName) { itemName = itemName; } class Poster : public Item{ string posterArtist; int posterYear; int posterQuantity; public: Poster(int ID, string name, string artist, int year, double price, int quan); Poster(); void print(); string getPosterArtist(); void setPosterArtist(string posterArtist); string getPosterName(); void setPosterName(string posterName); double getPosterPrice(); void setPosterPrice(double posterPrice); int getPosterQuantity(); void setPosterQuantity(int posterQuantity); int getPosterYear(); void setPosterYear(int posterYear); }; Poster::Poster() :Item() { // Do nothing } Poster::Poster(int ID, string name, string artist, int year, double price, int quan) :Item(name, ID, price) { posterArtist = artist; posterYear = year; posterQuantity = quan; itemName = name; itemCost = price; itemID = ID; } void Poster::print() { cout << "ID:\t" << itemID << "\n"; cout << "Name:\t" << itemName << "\n"; cout << "Artist:\t" << posterArtist << "\n"; cout << "Year:\t" << posterYear << "\n"; cout << "Price:\t" << itemCost << "\n"; cout << "Quan:\t" << posterQuantity << "\n"; } string Poster::getPosterArtist() { return posterArtist; } void Poster::setPosterArtist(string posterArtist) { posterArtist = posterArtist; } string Poster::getPosterName() { return itemName; } void Poster::setPosterName(string posterName) { itemName = posterName; } double Poster::getPosterPrice() { return itemCost; } void Poster::setPosterPrice(double posterPrice) { itemCost = posterPrice; } int Poster::getPosterQuantity() { return posterQuantity; } void Poster::setPosterQuantity(int posterQuantity) { posterQuantity = posterQuantity; } int Poster::getPosterYear() { return posterYear; } void Poster::setPosterYear(int posterYear) { posterYear = posterYear; } double parseDouble(const std::string& s) { std::istringstream i(s); double x; if (!(i >> x)) cout << "something went wrong\n"; return x; } int parseInt(const std::string& s) { std::istringstream i(s); int x; if (!(i >> x)) cout << "something went wrong\n"; return x; } void readPosters(const std::string& file, Poster PosterList[]) { ifstream infile(file.c_str()); cout << file << "\n"; int count = 0; if(infile.is_open()) { string line = NULL; char * tokens; while(!infile.eof()) { getline(infile,line); tokens = strtok((char*)line.c_str(), ","); while(tokens != NULL) { int ID = parseInt(tokens); tokens = strtok(NULL, ","); string name = tokens; tokens = strtok(NULL, ","); string artist = tokens; tokens = strtok(NULL, ","); int year = parseInt(tokens); tokens = strtok(NULL, ","); double price = parseDouble(tokens); tokens = strtok(NULL, ","); int quan = parseInt(tokens); tokens = strtok(NULL, ","); PosterList[count] = Poster(ID, name, artist, year, price, quan); PosterList[count].print(); count++; } count++; } } } int main() { std::cout << "Hello world!" << std::endl; Poster PosterList[50]; readPosters("poster_input.txt", PosterList); return 0; }