Assignment #2 - Classes and File I/O in C++
Grading: For each programming assignment, you are graded by explaining and demoing your code to a TA.
You must demo your program BEFORE the next assignment is due, and if you fail to do so, you will automatically lose.
Your job is to convince the TA that your program works correctly, i.e. show your TA how to use/break your program?
Problem Statement:
We will simulate the physical (not online) Netflix rental system.
You will write a program that creates a class to hold Netflix data, which will have Movie objects.
You will ask the user if he/she wants to enter a new movie to the database or find a movie to rent.
• If the user wants to enter a movie, then you will prompt the user for how many movies they want to enter into the database and the movie information for each: title, stars, number of cast members, cast member names, movie rating, and copies.
• If the user wants to search for a movie, then you will prompt the user for the information they want to use for the search: name, number of stars, specific cast member, or rating.
In addition, you will continually ask the user if they want to enter a new movie to the database or search for movies based on some criteria.
Here are the class member variables for our Netflix system and movie objects.
It is your job to determine the behavior for each class.
class netflix {
public:
...
private:
movie *m; //This is a dynamic array of movies
int num_movies;
};
class movie {
public:
...
private:
string name;
int stars;
int num_cast;
string *cast; //This is a dynamic array of strings
string rating;
int copies;
};
Example Run of Adding Movies:
Do you want to enter a movie to the database or find a movie to rent? (1 - enter, 2 - find, or 0 - exit) 1
How many movies do you want to enter to the database? 1
Enter the name of your movie: Computer Science 162
How many stars? 5
How many cast members? 2
Enter cast member 1: Jennifer Parham-Mocello
Enter cast member 2: Students
Enter the movie rating: PG
How many copies of this movie: 2
Added to the database!
Do you want to enter a movie to the database or find a movie to rent? (1 - enter, 2 - find, or 0 - exit) 0
Example Run of Renting Movies:
Do you want to enter a movie to the database or find a movie to rent? (1 - enter, 2 - find, or 0 - exit) 2
Do you want to find movies based on: 1 - name, 2 - number of stars, 3 - specific cast member, or 4 - rating)? 1
What is the title? Computer Science 162
Found 1 movie:
Number 1
Title: Computer Science 162
Stars: 5
Cast Members: Jennifer Parham-Mocello, Students
Rating: PG
Current Copies to Rent: 1
Which movie do you want to rent? 1
Movie, Computer Science 162, rented!
Do you want to enter a movie to the database or find a movie to
rent? (1 - enter, 2 - find, or 0 - exit) 0
Your file, netflix.dat, should have the following information separated by the pipe
delimiter. For example, here are the categories in the file:
#|Title|Stars|Cast|Members|Rating|Copies|Rented
Example for the above database:
1|Computer Science 162|5|2|Jennifer Parham-Mocello|Students|PG|2|1
Things to consider in this assignment:
Remember, you need to update the number of movies rented, when the user decides to
rent a specific movie. The current number of copies you have to rent is:
copies to rent = total copies - rented
You need to look search through the database to see how many movies match the
search criteria, in order to know how many movie objects to create to hold the found
movies.
You are not allow to read the whole Netflix database into the program to
search!!!
Requirements:
• You are required to have constructors, destructors, copy constructors, and the appropriate use of const for every class.
• You must have accessor and mutator functions for each member in the class.
• Appropriate behavior for each object to correctly add and rent movies from the data file.
• You must have a Makefile, .h and .cpp for each class, and a driver file with the main function.
• Your program must not have a memory leak!!!
• Make sure you try to keep your functions at a 15 lines max.
Extra Credit:
You must have proper error checking and handling for the input, e.g. choice that isn't valid, try to check out a movie with zero copies, etc. Program Style/Comments
In your implementation, make sure that you include a program header in your program, in addition to proper indentation/spacing and other comments! Below is an example header to include. Make sure you review the style guidelines for
this class, and begin trying to follow them, i.e. don't align everything on the left or put everything on one line!
https://classes.engr.oregonstate.edu/eecs/spring2015/cs162-001/162_style_guideline.pdf
/******************************************************
** Program: rental.cpp
** Author: Your Name
** Date: 04/26/2015
** Description:
** Input:
** Output:
******************************************************/
Design for Assignment #2 changes/Testing
• How did your design for searching for data in Assignment #2 change during implementation?
• What were the actual values from your testing? Did these match your expected values? What did you do to make sure you get the expected values?
Please see the template for this document: Polya_template.pdf You need to have a table with these headings: Input Values
Expected Output Did Actual Meet Expected?
3 Error message for
choice 3 because that
isn't an option.
Reprompt for choice again.
Yes
Electronically submit your C++ program (.h, .cpp, and Makefile files, not your
executable!!!) and design/testing document, as a pdf, by the assignment due date, using
TEACH.
**NOTE: The easiest way to upload your program from ENGR to TEACH is to map a
network drive to your home directory on ENGR. Mac or Windows, See:
https://engineering.oregonstate.edu/computing/fileaccess/