Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

LibraryMain.java: import java.util.Scanner; /* This application manages a collection of media items for a user. The items * are representeed by MediaItem objects. The items

LibraryMain.java:

import java.util.Scanner; /* This application manages a collection of media items for a user. The items * are representeed by MediaItem objects. The items are managed by a MediaList object. * Their are currently three types of MediaItems: books (electronic format), movies, and songs. * Each type is modeled as a subclass of MediaItem. * A user has several options that are displayed in a menu format. * This class runs a console interface between a user and the mediaList */ import java.io.*;

public class LibraryMain { public static void main(String[] args) throws IOException{ System.out.println("My Media Library"); Scanner scan = new Scanner(System.in); MediaList mediaList = new MediaList(5); boolean keepGoing = true; String userStr = ""; int position; while(keepGoing) { System.out.println("Main Menu:"); System.out.println("Enter A to add a new media item."); System.out.println("Enter F to find media items."); System.out.println("Enter P to view all media items."); System.out.println("Enter X to quit."); System.out.println(""); userStr = scan.nextLine(); if (userStr.equalsIgnoreCase("A")){ MediaItem item = null; System.out.println("Enter the title: "); String title = scan.nextLine(); System.out.println("Enter the author/artist/director: "); String author = scan.nextLine(); System.out.println("Enter the genre: "); String genre = scan.nextLine(); System.out.println("What type of media? Enter B for book, M for movie, S for song: "); String type = scan.nextLine(); if(type.equalsIgnoreCase("B")){ System.out.println("Enter the number of pages: "); String pages = scan.nextLine(); System.out.println("Enter the preferred font size: "); String font = scan.nextLine(); item = new Book(title, author, genre, Integer.parseInt(pages), Double.parseDouble(font)); } else if(type.equalsIgnoreCase("M")){ System.out.println("Enter the playing time (minutes): "); String playTime = scan.nextLine(); System.out.println("Enter the lead actor: "); String actor = scan.nextLine(); System.out.println("Enter the release year YYYY: "); String year = scan.nextLine(); item = new Movie(title, author, genre, Integer.parseInt(playTime), actor, year); } else if(type.equalsIgnoreCase("S")){ System.out.println("Enter the playing time (minutes): "); String playTime = scan.nextLine(); System.out.println("Enter the album: "); String album = scan.nextLine(); System.out.println("Enter the label: "); String label = scan.nextLine(); item = new Song(title, author, genre, Double.parseDouble(playTime), album, label); } else System.out.println("Unrecognized type."); mediaList.addItem(item); } else if (userStr.equalsIgnoreCase("F")){ System.out.println("Enter T to search by title, G to search by genre:"); userStr = scan.nextLine(); if(userStr.equalsIgnoreCase("T")){ System.out.println("Enter the title:"); String title = scan.nextLine(); MediaItem[] items = mediaList.getItemsByTitle(title); if(items.length>0){ String listStr = getItemListAsString(items); System.out.println(listStr); } else System.out.println("Could not find "+title+" in the list."); } else if(userStr.equalsIgnoreCase("G")){ System.out.println("Enter the genre:"); String genre = scan.nextLine(); MediaItem[] items = mediaList.getItemsByGenre(genre); if(items.length>0){ String listStr = getItemListAsString(items); System.out.println(listStr); } else System.out.println("Could not find "+genre+" in the list."); } else System.out.println("Unrecognized search type."); } else if (userStr.equalsIgnoreCase("P")){ System.out.println("Your media: "); MediaItem[] items = mediaList.getItemList(); String listStr = getItemListAsString(items); System.out.println(listStr); } else if(userStr.equalsIgnoreCase("X")) keepGoing = false; else System.out.println("Unrecognized input."); } System.out.println("Bye for now."); scan.close(); } /* This method returns a String which consists of the String * representations of all MediaItems in the array passed in. * Assume the itemList does not contain NULL values. * Assume the itemList is not null, and length >=0. */ public static String getItemListAsString(MediaItem[] itemList){ StringBuilder sb = new StringBuilder(); if(itemList.length>0){ for(int i=0; i

MediaList.java

/* This class encapsulates a list of media items in a user's collection. * The list is implemented as an array of type MediaItem. * Media items are either a book (electronic format), movie, or song. * Each type of media item is represented by an instance of the Book, Movie, or Song class. * These three classes are subclasses of MediaItem. The array stores media items as * references of type MediaItem. */ public class MediaList { //Class member variable declarations:

/* Constructor that initializes the member variables. The array is * created using the initial length passed in to the constructor. * The initialLength is assigned to the initial length passed in to the constructor. * The numItems is initialized to 0. * Any other member variables are initialized as well. */ public MediaList(int initialLen){ } /* Add the newItem passed in to the next available cell in the itemList. * Available cells have the vaue NULL. The numItems variable may be used * to keep track of the index of the next available cell. * For example, if the list contained: item1, item2, NULL, NULL, * the next available cell is at index 2. */ public void addItem(MediaItem newItem){ }

/* This method returns an array that contains only MediaItem objects whose * title matches the targetTitle passed in. * The array returned does not contain any NULL values. * This method returns an array of length 0 if there are no matches. * This method may call the getOnlyItems method. */ public MediaItem[] getItemsByTitle(String targetTitle){ return null; } /* This method returns an array that contains only MediaItem objects whose * genre matches the targetGenre passed in. * The array returned does not contain any NULL values. * This method returns an array of length 0 if there are no matches. * This method may call the getOnlyItems method. */ public MediaItem[] getItemsByGenre(String targetGenre){ return null; } /* This method returns an array of all of the MediaItem objects that are * stored in the itemList. The array returned does not contain any NULL * values. This method returns an array of length 0 if the itemList is empty. * This method may call the getOnlyItems metho */ public MediaItem[] getItemList(){ return null; } /* Returns the number of items stored in the itemList. */ public int getNumItems(){ return -5; } /* Returns true if the itemList contains no MediaItems, false otherwise. */ public boolean isEmpty(){ return false; } /****** Private, "helper" method section ******/ /* Creates a new array that is double the size of the array passed in, copies the data * from that array to the new array, and returns the new array. * Note that the new array will contain the items from the previous array followed by NULL values. */ private MediaItem[] expandList(MediaItem[] inputList){ return null; } /* A full item list is an array where all cells contain an item. That * means there is no cell that contains NULL. * This method returns true if all cells in the array contain a String * object, false otherwise. */ private boolean isFull(){ return true; } /* * This method takes an array of MediaItems as an input as well as * the number of MediaItems on that array. The input array may contain * some NULL values. * This method returns an array that contains only the MediaItems in * the input array and no NULL values. * It returns an array of length 0 if there are no MediaItems in the input array. */ private MediaItem[] getOnlyItems(MediaItem[] inputArray, int size){ return null; } }

MediaItem.java

/** * This class encapsulates the data required to represent a MediaItem. * The attributes common to all MediaItems are: title, author and genre. * Subclasses should override the toString method. **/ public class MediaItem {

private String title; private String author; private String genre; /* Subclasses may add specific parameters to their constructor's * parameter lists. */ public MediaItem(String title, String author, String genre){ this.title = title; this.author = author; this.genre = genre; } // get method for the title public String getTitle(){ return title; } // get method for the author public String getAuthor(){ return author; } // get method for the genre public String getGenre(){ return genre; } // Subclasses should override. public String toString(){ return title+", "+author+", "+genre; } }

Book.java

/** * This class encapsulates the data required to represent a book in electronic format * in a collection of MediaItems. It derives from MediaItem. * In addition to its superclass attributes, the attributes of a book are: * number of pages and font size. **/ public class Book extends MediaItem {

private int numPages; private double fontSize; /* Constructor. */ // get method for the number of pages

// get method for the font size

/* Override the superclass toString method. Use a call to the superclass toString method * to get the superclass attributes. * The return should have the format: * Book: [title], [author], [genre], [numPages], [fontSize] * For example: * "Book: Snow Crash, Neil Stephenson, sci fi, 480, 3.5" */

}

Movie.java

/** * This class encapsulates the data required to represent a movie in a collection * of MediaItems. It derives from MediaItem. * In addition to its superclass attributes, the attributes of a movie are: * playing time, lead actor, and year of release in the form YYYY (i.e. 2018). **/ public class Movie extends MediaItem {

private int playTime;// in minutes private String leadActor; private String releaseYear; //in the form YYYY /* Constructor */

// get method for the playing time

// get method for the lead actor

// get method for the release year

/* Override the superclass toString method. Use a call to the superclass toString method * to get the superclass attributes. * The return should have the format: * Movie: [title], [author], [genre], [playTime], [leadActor], [releaseYear] * For example: * "Movie: Black Panther, Coogler, fantasy, 134, Chadwick Boseman, 2018" */

}

Song.java

/** * This class encapsulates the data required to represent a song in a collection * of MediaItems. It derives from MediaItem. * In addition to its superclass attributes, the attributes of a song are: * playing time, album, and label. **/ public class Song extends MediaItem {

private double playTime;//minutes private String album; private String label; /* Constructor */

// get method for the play time

// get method for the album

// get method for the label

/* Override the superclass toString method. Use a call to the superclass toString method * to get the superclass attributes. * The return should have the format: * Song: [title], [author], [genre], [playTime], [album], [label] * For example: * "Song: Humble, Kendrick Lamar, hip hop, 2.57, Damn, Top Dawg" */

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Online Systems For Physicians And Medical Professionals How To Use And Access Databases

Authors: Harley Bjelland

1st Edition

1878487442, 9781878487445

More Books

Students also viewed these Databases questions