Heres the code:
//dvdLib.h #ifndef DVDLIB_H #define DVDLIB_H #include <iostream> #include <string> #include <cstdlib> #include "dvd.h" class dvdLib { public: static const size_t CAPACITY = 200; dvdLib(size_t u = 0); void SeeAll(std::ostream& outs); void insert(dvd& item); void remove(std::string name); void search(std::string target); void SeeAllY(std::ostream& outs); void SeeAllG(std::ostream& outs); void SeeAllR(std::ostream& outs); void sortT(); void sortY(); void sortR(); void LoadFromFile(std::istream& ins); void menu(int& choice); void SaveToFile(std::ostream& outs); private: dvd movies[CAPACITY]; size_t used; }; #endif
//dvdLib.cc #include <iostream> #include <string> #include <fstream> #include <cstdlib> #include "dvd.h" #include "dvdLib.h" using namespace std; dvdLib::dvdLib(size_t u){ used = u; } void dvdLib::SeeAll(ostream& outs){ for(size_t i = 0; i < used; i++) outs << movies[i] << endl; } void dvdLib::SeeAllY(ostream& outs){ int year; cout << "What year do you want?\n\n"; cout << "Enter movie year -> "; cin >> year; for(size_t i = 0; i < used; i++){ if(movies[i].getYear() == year) outs << movies[i] << endl; } } void dvdLib::SeeAllG(ostream& outs){ string genre; cout << "What genre do you want?\n\n"; cout << "Enter movie genre -> "; cin >> genre; for(size_t i = 0; i < used; i++){ if(movies[i].getGenre() == genre) outs << movies[i] << endl; } } void dvdLib::SeeAllR(ostream& outs){ string rating; cout << "What ratings do you want?\n\n"; cout << "Enter movie rating -> "; cin >> rating; for(size_t i = 0; i < used; i++){ if(movies[i].getRating() == rating) outs << movies[i] << endl; } } void dvdLib::insert(dvd& item){ item.input(cin); if(used < CAPACITY){ movies[used] = item; used++; } else cout << "Error. List is full.\n"; } void dvdLib::remove(string name){ movies[used] = movies[used - 1]; used--; } void dvdLib::search(string target){ size_t i = 0; char junk; cout << "What movie do you want to find?\n\n"; cout << "Enter movie title -> "; cin.get(junk); getline(cin, target); while(i < used && movies[i].getTitle() != target) ++i;{ if(i == used) cout << "Not found.\n"; else cout << movies[i] << endl; } } void dvdLib::sortT(){ dvd tmp; for(size_t i = 0; i < used; i++){ for(size_t j = 0; j < used - 1; j++){ if(movies[i].getTitle() > movies[j + 1].getTitle()){ tmp = movies[i]; movies[i] = movies[j + 1]; movies[j + 1] = tmp; } } } } void dvdLib::sortY(){ dvd tmp; for(size_t i = 0; i < used; i++){ for(size_t j = 0; j < used - 1; j++){ if(movies[i].getYear() > movies[j + 1].getYear()){ tmp = movies[i]; movies[i] = movies[j + 1]; movies[j + 1] = tmp; } } } } void dvdLib::sortR(){ dvd tmp; for(size_t i = 0; i < used; i++){ for(size_t j = 0; j < used - 1; j++){ if(movies[i].getRating() > movies[j + 1].getRating()){ tmp = movies[i]; movies[i] = movies[j + 1]; movies[j + 1] = tmp; } } } } void dvdLib::LoadFromFile(istream& ins){ dvd tmp; while(ins >> tmp) insert(tmp); } void dvdLib::menu(int& choice){ dvdLib obj; dvd item; string name; while(choice != 11){ cout << "1. Insert a movie.\n"; cout << "2. Remove a movie.\n"; cout << "3. Display movie(s).\n"; cout << "4. Search for a movie.\n"; cout << "5. Search for movies of a certain year.\n"; cout << "6. Search for movies of a certain genre.\n"; cout << "7. Search for movies of a certain rating.\n"; cout << "8. Display all movies by title.\n"; cout << "9. Display all movies by year.\n"; cout << "10. Display all movies by rating.\n"; cout << "11. Quit.\n\n"; cout << "Enter your choice -> "; cin >> choice; if(choice == 1) obj.insert(item); else if(choice == 2) obj.remove(name); else if(choice == 3) obj.SeeAll(cout); else if(choice == 4) obj.search(name); else if(choice == 5) obj.SeeAllY(cout); else if(choice == 6) obj.SeeAllG(cout); else if(choice == 7) obj.SeeAllR(cout); else if(choice == 8){ obj.sortT(); obj.SeeAll(cout); } else if(choice == 9){ obj.sortY(); obj.SeeAll(cout); } else if(choice == 10){ obj.sortR(); obj.SeeAll(cout); } else if(choice == 11) cout << "Goodbye.\n"; else cout << "Invalid choice, please pick 1 - 9.\n"; } } void dvdLib::SaveToFile(ostream& outs){ for(size_t i = 0; i < used; i++) outs << movies[i] << endl; }
//main.cc File #include <iostream> #include <fstream> #include <cstdlib> #include "dvd.h" #include "dvdLib.h" int main(){ dvdLib library; int choice; std::ifstream ifs("movies.dat"); if(!ifs.fail()) library.LoadFromFile(ifs); ifs.close(); library.menu(choice); std::ofstream ofs("movies.dat"); if(!ofs.fail()) library.SaveToFile(ofs); ofs.close(); return 0; }