USE DEV C++
MENU TYPE FOLLOW INSTRUCTIONS
MACHINE PROBLEM
A new video store in your neighborhood is about to open. However, it does not have a program to keep track of its videos and customers. The store managers want someone to write a program for their system so that the video store can operate.
The program will require you to design 2 ADTs as described below:
[1] VIDEO ADT
Data
Operations
Video_ID (preferably int, auto-generated)
Movie Title
Genre
Production
Number of Copies
[1] Insert a new video
[2] Rent a video; that is, check out a video
[3] Return a video, or check in, a video
[4] Show the details of a particular video
[5] Display all videos in the store
[6] Check whether a particular video is in the store
[2] CUSTOMER PARENT ADT
Data
Operations
Customer_ID (preferably int, auto-generated)
Name
Address
[1] Add Customer
[2] Show the customer details
[3] Print list of all customers
[3] CUSTOMER-RENT CHILD ADT
Customer_ID (
Video_ID (of all rented videos of a customer)
[1] Rent a Video (Add to the video ids rented)
[2] Return a Video (Remove the video id from the list)
[3] Print list of all videos rented by each customer
The program will require you to maintain 3 text files with specifications below:
Text File
Requirements
[1] VIDEO Text File
[1] Will store the information about the Videos
[2] Should contain the following by default:
5 Horror Movies
5 Romance Movies
5 Sci-Fi Movies
5 Action Movies
5 Comedy Movies
**Must be authentic and true.**
[2] CUSTOMER Text File
[1] Will store the basic information about the Customers
[2] Should contain at least 10 customers by default
**Must be authentic and true.**
[3] CUSTOMER-RENT
[1] Will store all customers that RENT a VIDEO
[2] Will store all the Video_IDs of all rented videos
[3] Will delete Video_IDs and Customer_ID when videos are returned
NOTE: IF YOU FIND THE NEED TO ADD OR MAKE ALTERATIONS TO THE SPECIFICATIONS OF THE ADT AND TEXT FILES ABOVE, PLEASE DO SO. JUST MAKE SURE THAT YOU HAVE AN ACCEPTABLE LOGICAL REASON.
INSTRUCTIONS:
The program will have the following options/menus:
[1] New Video
[2] Rent a Video
[3] Return a Video
[4] Show Video Details
[5] Display all Videos
[6] Check Video Availability
[7] Customer Maintenance
[1] Add New Customer
[2] Show Customer Details
[3] List of Videos Rented by a Customer
[8] Exit Program
Follow the suggested screen dialogs below for each of the option above:
OTHER REQUIREMENTS:
You must store your videos in a linked list when you retrieved them from the text file. They must also be stored in a linked list data structure during processing. Saving back to the text file will be done when the user chooses [8] Exit Program.
You must store you customers in a queue when you retrieved them from the text file. They must also be stored in a queue during processing. Saving back to the text file will be done when the user chooses [8] Exit Program.
Rented videos will be stored in a stack and will be saved in the CUSTOMER-RENT text file when the user chooses [8] Exit Program.
Use data structures, files, functions, ADTs, STLs and algorithms in your program.
Put necessary comments to your program.
Provide error messages whenever necessary.
What I have tried:
#include <iostream>
#include <list>
#include <iterator>
using namespace std;
class movieList
{
public:
int movieCode;
string movieTitle;
string movieGenre;
int yearReleased;
movieList(int movieCode, string movieTitle, string movieGenre, int yearReleased) {
this->movieCode = movieCode;
this->movieTitle = movieTitle;
this->movieGenre = movieGenre;
this->yearReleased = yearReleased;
}
};
class moviesLL
{
private:
list<movieList> movies;
public:
moviesLL() {
int option = 5;
do {
option = menu();
switch(option) {
case 1:
insertMovie();
break;
case 2:
deleteMovie();
break;
case 3:
appendMovie();
break;
case 4:
showMovieDetails();
break;
case 5:
printMovieList();
break;
case 6:
quitProgram();
break;
default:
cout << "\nInvalid Input........TRY AGAIN!!!";
}
} while(option != 6);
}
int menu() {
cout << "\n\nMenu:";
cout << "\n1. Insert new Movie";
cout << "\n2. Rent a Movie";
cout << "\n3. Return a Movie";
cout << "\n4. Show a Movie details";
cout << "\n5. Print Movies List";
cout << "\n6. Quit the Program\n";
cout << "\nEnter your Choice: ";
int option; cin >> option;
return option;
}
void insertMovie() {
cout << "\nEnter new Movie Code: ";
int movieCode; cin >> movieCode;
cout << "\nEnter new Movie Title: ";
string movieTitle;
cin.ignore();
getline(cin, movieTitle);
cout << "\nEnter new Movie Genre: ";
string movieGenre;
cin.ignore(0);
getline(cin, movieGenre);
cout << "\nEnter new Movie Releasing Year: ";
int yearReleased; cin >> yearReleased;
movies.push_back(movieList(movieCode, movieTitle, movieGenre, yearReleased));
return;
}
void deleteMovie() {
cout << "\nEnter the Movie Code of movie you want: ";
int movieCode; cin >> movieCode;
list<movieList> :: iterator it;
bool movieFound = false;
for(it = movies.begin(); it != movies.end(); it++) {
if(it->movieCode == movieCode) {
movieFound = true;
movies.erase(it);
cout << "\nMovie Rented :)";
break;
}
}
if(!movieFound) {
cout << "\nNo Movie found with that Movie Code!!!";
}
return;
}
void appendMovie() {
cout << "\nEnter details of Movie you want to return:";
cout << "\nEnter your Movie Code: ";
int movieCode; cin >> movieCode;
cout << "\nEnter your Movie Title: ";
string movieTitle;
cin.ignore();
getline(cin, movieTitle);
cout << "\nEnter your Movie Genre: ";
string movieGenre;
cin.ignore();
getline(cin, movieGenre);
cout << "\nEnter your Movie Releasing Year: ";
int yearReleased; cin >> yearReleased;
movies.push_back(movieList(movieCode, movieTitle, movieGenre, yearReleased));
return;
}
void showMovieDetails() {
cout << "\nEnter the Movie Title you want to look for details:\n";
string movieTitle;
cin.ignore();
getline(cin, movieTitle);
list<movieList> :: iterator it;
bool movieFound = false;
for(it = movies.begin(); it != movies.end(); it++) {
if(it->movieTitle == movieTitle) {
movieFound = true;
cout << "\nMovie Details:";
cout << "\nMovie Code: " << it->movieCode;
cout << "\nMovie Title: " << it->movieTitle;
cout << "\nMovie Genre: " << it->movieGenre;
cout << "\nMovie Releasing Year: " << it->yearReleased;
break;
}
}
if(!movieFound) {
cout << "\nNo Movie found with that Title :(";
}
return;
}
void printMovieList() {
list<movieList> :: iterator it;
bool movieFound = false;
cout << "\nMovies Details:";
for(it = movies.begin(); it != movies.end(); it++) {
movieFound = true;
cout << "\n\nMovie Code: " << it->movieCode;
cout << "\nMovie Title: " << it->movieTitle;
cout << "\nMovie Genre: " << it->movieGenre;
cout << "\nMovie Releasing Year: " << it->yearReleased;
}
if(!movieFound) {
cout << "\nSorry!! Currently, we're not having any movies in our store :(";
}
return;
}
void quitProgram() {
movies.clear();
return;
}
};
int main() {
moviesLL m;
return 0;
}