Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I have been told what to write, but im very confused on how exactly im supposed

ID: 3607044 • Letter: I

Question

I have been told what to write, but im very confused on how exactly im supposed to write out this code, any help would be appreciated.

Lab7:

// Your job is to complete this program so that it runs correctly.

// The Movie class and MovieDB class have already been completed for you.

// Utilizing data abstraction, you can access/use these classes without

// having to know their implementation details. However, since you have

// the code for them you certainly can look at the implementations.

// You just need to write the correct code in the 3 passages below. Some

// comments indicate what you need to do in each case.

import java.util.*;

import java.io.*;

public class Lab7

{

public static void main(String [] args) throws IOException

{

MovieDB movies = new MovieDB(10); // Create MovieDB object. The

// size is set at 10, meaning it can hold up to 10

// movies. If we wanted (as discussed in lecture) we

// could allow for it to be resized so it could hold

// an arbitrary number of movies.

loadData(movies); // input movie data from file

getCommands(movies); // interact with user

saveData(movies); // save movie data back to file

}

public static void loadData(MovieDB movies) throws IOException

{

// Note the syntax below for creating a Scanner to a file

Scanner S = new Scanner(new FileInputStream("movieFile.txt"));

// *** CODE SEGMENT 1 *** //

// Complete this method in the following way:

// Read in the number of movies from the file

// For each movie read the data from the file and create a Movie

// object

// Add the Movie to the MoviesDB object (movies) using the appropriate

// method (see MovieDB class)

  

}

public static void getCommands(MovieDB movies)

{

Scanner inScan = new Scanner(System.in);

System.out.println("Enter your choice:");

System.out.println("1. List movies");

System.out.println("2. Add new movie");

System.out.println("3. Find movie");

System.out.println("4. Quit");

String choice = inScan.nextLine();

while (true)

{

Movie temp;

if (choice.equals("1"))

{

System.out.println(movies.toString());

}

else if (choice.equals("2"))

{

// *** CODE SEGMENT 2 *** //

// Complete this choice in the following way:

// Prompt for and read in each of the values needed

// for the new Movie object (3 strings, 1 double)

// Create a new Movie object and then add it to the

// MovieDB object (movies) using the correct method.

}

else if (choice.equals("3"))

{

// *** CODE SEGMENT 3 *** //

// Complete this choice in the following way:

// Ask the user for the movie name and read it in

// Call the appropriate method in the MovieDB object

// (movies) to find the Movie and return it

// Show the movie's info (or indicate it is not found)

}

else

{

System.out.println("Good-bye");

break; // any other value -- quit

}

System.out.println("Enter your choice:");

System.out.println("1. List movies");

System.out.println("2. Add new movie");

System.out.println("3. Find movie");

System.out.println("4. Quit");

choice = inScan.nextLine();

}

}

public static void saveData(MovieDB movies) throws IOException

{

PrintWriter P = new PrintWriter("movieFile.txt");

// Note that we are printing the entire DB to the file with

// one statement. This is because the toStringFile() method

// of the MovieDB class calls the toStringFile() method of

// each Movie within the DB.

P.print(movies.toStringFile());

P.close();

}

}

Movie:

import java.text.*;

import java.util.*;

public class Movie

{

private String title;

private String director;

private String studio;

private double gross;

// Constructor -- take 4 arguments and make a new Movie

public Movie(String t, String d, String s, double g)

{

title = new String(t);

director = new String(d);

studio = new String(s);

gross = g;

}

// Return a formatted string version of this Movie

public String toString()

{

StringBuffer B = new StringBuffer();

B.append("Title: " + title + " ");

B.append("Director: " + director + " ");

B.append("Studio: " + studio + " ");

NumberFormat formatter = NumberFormat.getCurrencyInstance(Locale.US);

B.append("Gross: " + formatter.format(gross) + " ");

return B.toString();

}

// Return an unformatted string version of this Movie

public String toStringFile()

{

StringBuffer B = new StringBuffer();

B.append(title + " ");

B.append(director + " ");

B.append(studio + " ");

B.append(gross + " ");

return B.toString();

}

// Accessor to return title of this Movie

public String getTitle()

{

return title;

}

}

MovieDB:

// This class is a simple database of Movie objects. Note the

// instance variables and methods and read the comments carefully.

public class MovieDB

{

// Note that we have 2 instance variables here -- an array of Movie and

// an int. Since Java arrays are of fixed size once they are created,

// we creating the array of a certain (large) size and then using the

// int variable to keep track of how many actual movies are in it. We

// don't resize here, but we could if we wanted to (as discussed in class).

private Movie [] theMovies;

private int numMovies;

// Initialize this MovieDB

public MovieDB(int size)

{

theMovies = new Movie[size];

numMovies = 0;

}

// Take already created movie and add it to the DB. This is simply putting

// the new movie at the end of the array, and incrementing the int to

// indicate that a new movie has been added. If no room is left in the

// array, indicate that fact.

public void addMovie(Movie m)

{

if (numMovies < theMovies.length)

{

theMovies[numMovies] = m;

numMovies++;

}

else

System.out.println("No room to add movie");

// Alternatively, as we discussed in lecture, we could resize the

// array to make room - feel free to try this as an additional

// exercise.

}

// Iterate through the array until the movie is found or the end of the

// array is reached. Note that even though a Movie object has several

// components we are searching based on the title alone. We call the

// title the "key value" for the Movie. If the Movie is not found we

// indicate that fact by returning null.

public Movie findMovie(String title)

{

for (int i = 0; i < numMovies; i++)

{

if (theMovies[i].getTitle().equals(title))

return theMovies[i];

}

return null;

}

// Return a formatted string containing all of the movies' info. Note

// that we are calling the toString() method for each movie in the DB.

public String toString()

{

StringBuffer B = new StringBuffer();

B.append("Movie List: ");

for (int i = 0; i < numMovies; i++)

B.append(theMovies[i].toString() + " ");

return B.toString();

}

// Similar to the method above, but now we are not formatting the

// string, so we can write the data to the file.

public String toStringFile()

{

StringBuffer B = new StringBuffer();

B.append(numMovies + " ");

for (int i = 0; i < numMovies; i++)

B.append(theMovies[i].toStringFile());

return B.toString();

}

}

MovieFile.txt:

3
Star Wars
George Lucas
20th Century Fox
7.98E8
Jaws
Steven Spielberg
Universal
4.706E8
The Return of the King
Peter Jackson
New Line
1.1292E9

Sample Output:

Explanation / Answer

The program with code filled in the three code segments is as follows ( comments have been added to explain the code) :

import java.util.*;

import java.io.*;

public class Lab7

{

public static void main(String [] args) throws IOException

{

MovieDB movies = new MovieDB(10); // Create MovieDB object. The

// size is set at 10, meaning it can hold up to 10

// movies. If we wanted (as discussed in lecture) we

// could allow for it to be resized so it could hold

// an arbitrary number of movies.

loadData(movies); // input movie data from file

getCommands(movies); // interact with user

saveData(movies); // save movie data back to file

}

public static void loadData(MovieDB movies) throws IOException

{

// Note the syntax below for creating a Scanner to a file

Scanner S = new Scanner(new FileInputStream("movieFile.txt"));

// *** CODE SEGMENT 1 *** //

// Complete this method in the following way:

// Read in the number of movies from the file

// For each movie read the data from the file and create a Movie

// object

// Add the Movie to the MovieDB object (movies) using the appropriate

// method (see MovieDB class)

int numMovies=Integer.parseInt(S.nextLine());

for(int i=0; i<numMovies; i++){

String movieName=S.nextLine();

String director=S.nextLine();

String studio=S.nextLine();

Double gross=Double.parseDouble(S.nextLine());

Movie movie=new Movie(movieName, director, studio, gross);

//created the movie object, now add it to MovieDB object (movies)

movies.add(movie);

}

  

}

public static void getCommands(MovieDB movies)

{

Scanner inScan = new Scanner(System.in);

System.out.println("Enter your choice:");

System.out.println("1. List movies");

System.out.println("2. Add new movie");

System.out.println("3. Find movie");

System.out.println("4. Quit");

String choice = inScan.nextLine();

while (true)

{

Movie temp;

if (choice.equals("1"))

{

System.out.println(movies.toString());

}

else if (choice.equals("2"))

{

// *** CODE SEGMENT 2 *** //

// Complete this choice in the following way:

// Prompt for and read in each of the values needed

// for the new Movie object (3 strings, 1 double)

// Create a new Movie object and then add it to the

// MovieDB object (movies) using the correct method.

System.out.println(“Enter movie name”); //prompting the user to enter value

String movieName=inScan.nextLine();

System.out.println(“Enter director name”);

String director=inScan.nextLine();

System.out.println(“Enter studio name”);

String studio=inScan.nextLine();

System.out.println(“Enter gross amount for movie”);

Double gross=Double.parseDouble(inScan.nextLine());

Movie newMovie=new Movie(movieName, director, studio, gross);

//created the movie object, now add it to MovieDB object (movies)

movies.add(newMovie);

}

else if (choice.equals("3"))

{

// *** CODE SEGMENT 3 *** //

// Complete this choice in the following way:

// Ask the user for the movie name and read it in

// Call the appropriate method in the MovieDB object

// (movies) to find the Movie and return it

// Show the movie's info (or indicate it is not found)

System.out.println(“Enter movie name”);

String title=inScan.nextLine();

Movie movieFound=movies.findMovie(title);

if(movieFound==null) //movie not found

          System.out.println(“Movie with this title not found”);

else{

          System.out.println(“Movie information: “+movieFound.toString());

} // print formatted information of movie

}

else

{

System.out.println("Good-bye");

break; // any other value -- quit

}

System.out.println("Enter your choice:");

System.out.println("1. List movies");

System.out.println("2. Add new movie");

System.out.println("3. Find movie");

System.out.println("4. Quit");

choice = inScan.nextLine();

}

}

public static void saveData(MovieDB movies) throws IOException

{

PrintWriter P = new PrintWriter("movieFile.txt");

// Note that we are printing the entire DB to the file with

// one statement. This is because the toStringFile() method

// of the MovieDB class calls the toStringFile() method of

// each Movie within the DB.

P.print(movies.toStringFile());

P.close();

}

}

Movie:

import java.text.*;

import java.util.*;

public class Movie

{

private String title;

private String director;

private String studio;

private double gross;

// Constructor -- take 4 arguments and make a new Movie

public Movie(String t, String d, String s, double g)

{

title = new String(t);

director = new String(d);

studio = new String(s);

gross = g;

}

// Return a formatted string version of this Movie

public String toString()

{

StringBuffer B = new StringBuffer();

B.append("Title: " + title + " ");

B.append("Director: " + director + " ");

B.append("Studio: " + studio + " ");

NumberFormat formatter = NumberFormat.getCurrencyInstance(Locale.US);

B.append("Gross: " + formatter.format(gross) + " ");

return B.toString();

}

// Return an unformatted string version of this Movie

public String toStringFile()

{

StringBuffer B = new StringBuffer();

B.append(title + " ");

B.append(director + " ");

B.append(studio + " ");

B.append(gross + " ");

return B.toString();

}

// Accessor to return title of this Movie

public String getTitle()

{

return title;

}

}

MovieDB:

// This class is a simple database of Movie objects. Note the

// instance variables and methods and read the comments carefully.

public class MovieDB

{

// Note that we have 2 instance variables here -- an array of Movie and

// an int. Since Java arrays are of fixed size once they are created,

// we creating the array of a certain (large) size and then using the

// int variable to keep track of how many actual movies are in it. We

// don't resize here, but we could if we wanted to (as discussed in class).

private Movie [] theMovies;

private int numMovies;

// Initialize this MovieDB

public MovieDB(int size)

{

theMovies = new Movie[size];

numMovies = 0;

}

// Take already created movie and add it to the DB. This is simply putting

// the new movie at the end of the array, and incrementing the int to

// indicate that a new movie has been added. If no room is left in the

// array, indicate that fact.

public void addMovie(Movie m)

{

if (numMovies < theMovies.length)

{

theMovies[numMovies] = m;

numMovies++;

}

else

System.out.println("No room to add movie");

// Alternatively, as we discussed in lecture, we could resize the

// array to make room - feel free to try this as an additional

// exercise.

}

// Iterate through the array until the movie is found or the end of the

// array is reached. Note that even though a Movie object has several

// components we are searching based on the title alone. We call the

// title the "key value" for the Movie. If the Movie is not found we

// indicate that fact by returning null.

public Movie findMovie(String title)

{

for (int i = 0; i < numMovies; i++)

{

if (theMovies[i].getTitle().equals(title))

return theMovies[i];

}

return null;

}

// Return a formatted string containing all of the movies' info. Note

// that we are calling the toString() method for each movie in the DB.

public String toString()

{

StringBuffer B = new StringBuffer();

B.append("Movie List: ");

for (int i = 0; i < numMovies; i++)

B.append(theMovies[i].toString() + " ");

return B.toString();

}

// Similar to the method above, but now we are not formatting the

// string, so we can write the data to the file.

public String toStringFile()

{

StringBuffer B = new StringBuffer();

B.append(numMovies + " ");

for (int i = 0; i < numMovies; i++)

B.append(theMovies[i].toStringFile());

return B.toString();

}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote