1
Programming Assignment Unit 6
University of People
Muhammad Saad Afridi
CS 1103-01 Programming 2 - AY2024-T5
(Instructor)
July 29, 2024
2
LIBRARY MANAGEMENT SYSTEM:
Main.java:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Catalog<LibraryItem> catalog = new Catalog<>();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("Library Catalog Menu:");
System.out.println("1. Add Book");
System.out.println("2. Add DVD");
System.out.println("3. Add Magazine");
System.out.println("4. Remove Item");
System.out.println("5. View Item");
System.out.println("6. Display All Items");
System.out.println("7. Exit");
System.out.print("Choose an option: ");
int choice = scanner.nextInt();
scanner.nextLine(); // consume newline
3
switch (choice) {
case 1:
System.out.print("Enter book title: ");
String bookTitle = scanner.nextLine();
System.out.print("Enter book author: ");
String bookAuthor = scanner.nextLine();
System.out.print("Enter book item ID: ");
int bookItemID = scanner.nextInt();
scanner.nextLine(); // consume newline
Book newBook = new Book(bookTitle, bookAuthor, bookItemID);
catalog.addItem(newBook);
System.out.println("Book added.");
break;
case 2:
System.out.print("Enter DVD title: ");
String dvdTitle = scanner.nextLine();
System.out.print("Enter DVD director: ");
String dvdDirector = scanner.nextLine();
System.out.print("Enter DVD item ID: ");
int dvdItemID = scanner.nextInt();
4
scanner.nextLine(); // consume newline
DVD newDVD = new DVD(dvdTitle, dvdDirector, dvdItemID);
catalog.addItem(newDVD);
System.out.println("DVD added.");
break;
case 3:
System.out.print("Enter magazine title: ");
String magTitle = scanner.nextLine();
System.out.print("Enter magazine issue: ");
String magIssue = scanner.nextLine();
System.out.print("Enter magazine item ID: ");
int magItemID = scanner.nextInt();
scanner.nextLine(); // consume newline
Magazine newMagazine = new Magazine(magTitle, magIssue, magItemID);
catalog.addItem(newMagazine);
System.out.println("Magazine added.");
break;
case 4:
System.out.print("Enter item ID to remove: ");
5
int removeID = scanner.nextInt();
scanner.nextLine(); // consume newline
catalog.removeItem(removeID);
break;
case 5:
System.out.print("Enter item ID to view: ");
int viewID = scanner.nextInt();
scanner.nextLine(); // consume newline
LibraryItem item = catalog.getItem(viewID);
if (item != null) {
System.out.println(item);
} else {
System.out.println("Item not found.");
break;
case 6:
catalog.displayItems();
break;
6
case 7:
System.out.println("Exiting.");
scanner.close();
System.exit(0);
default:
System.out.println("Invalid choice. Please try again.");
Catalog.java:
import java.util.HashMap;
import java.util.Map;
public class Catalog<T extends LibraryItem> {
private Map<Integer, T> items;
public Catalog() {
items = new HashMap<>();
}
7
public void addItem(T item) {
items.put(item.getItemID(), item);
public void removeItem(int itemID) {
if (items.containsKey(itemID)) {
items.remove(itemID);
} else {
System.out.println("Item with ID " + itemID + " does not exist.");
public T getItem(int itemID) {
return items.get(itemID);
public void displayItems() {
if (items.isEmpty()) {
System.out.println("Catalog is empty.");
} else {
for (T item : items.values()) {
System.out.println(item);
8
Book.java:
public class Book extends LibraryItem {
public Book(String title, String author, int itemID) {
super(title, author, itemID);
DVD.java:
public class DVD extends LibraryItem {
private String director;
public DVD(String title, String director, int itemID) {
super(title, director, itemID);
this.director = director;
}
9
public String getDirector() {
return director;
@Override
public String toString() {
return "DVD{" +
"title='" + getTitle() + '\'' +
", director='" + director + '\'' +
", itemID=" + getItemID() +
'}';
Magazine.java:
public class Magazine extends LibraryItem {
private String issue;
public Magazine(String title, String issue, int itemID) {
super(title, issue, itemID);
this.issue = issue;
10
public String getIssue() {
return issue;
@Override
public String toString() {
return "Magazine{" +
"title='" + getTitle() + '\'' +
", issue='" + issue + '\'' +
", itemID=" + getItemID() +
'}';
LibraryItem.java:
public class LibraryItem {
private String title;
private String author;
private int itemID;
11
public LibraryItem(String title, String author, int itemID) {
this.title = title;
this.author = author;
this.itemID = itemID;
public String getTitle() {
return title;
public String getAuthor() {
return author;
public int getItemID() {
return itemID;
@Override
public String toString() {
return "LibraryItem{" +
"title='" + title + '\'' +
", author='" + author + '\'' +
12
", itemID=" + itemID +
'}';