import java.util.*;
// Book Class
class Book {
private int id;
private String title;
private String author;
private boolean isIssued;
public Book(int id, String title, String author) {
this.id = id;
this.title = title;
this.author = author;
this.isIssued = false;
}
public int getId() { return id; }
public String getTitle() { return title; }
public String getAuthor() { return author; }
public boolean isIssued() { return isIssued; }
public void setTitle(String title) { this.title = title; }
public void setAuthor(String author) { this.author = author; }
public void setIssued(boolean issued) { isIssued = issued; }
@Override
public String toString() {
return id + " | " + title + " | " + author + " | " + (isIssued ? "Issued" : "Available");
}
}
// Student Class
class Student {
private int id;
private String name;
private ArrayList<Book> issuedBooks;
public Student(int id, String name) {
this.id = id;
this.name = name;
this.issuedBooks = new ArrayList<>();
}
public int getId() { return id; }
public String getName() { return name; }
public ArrayList<Book> getIssuedBooks() { return issuedBooks; }
public void issueBook(Book book) {
issuedBooks.add(book);
}
public void returnBook(Book book) {
issuedBooks.remove(book);
}
@Override
public String toString() {
return id + " | " + name + " | Books Issued: " + issuedBooks.size();
}
}
// Library Class
class Library {
private ArrayList<Book> books = new ArrayList<>();
private ArrayList<Student> students = new ArrayList<>();
// ---------- Book CRUD ----------
public void addBook(Book book) {
books.add(book);
}
public void viewBooks() {
if (books.isEmpty()) {
System.out.println("No books available.");
return;
}
for (Book b : books) {
System.out.println(b);
}
}
public Book findBook(int id) {
for (Book b : books) {
if (b.getId() == id) return b;
}
return null;
}
public void updateBook(int id, String title, String author) {
Book b = findBook(id);
if (b != null) {
b.setTitle(title);
b.setAuthor(author);
System.out.println("Book updated.");
} else {
System.out.println("Book not found.");
}
}
public void deleteBook(int id) {
books.removeIf(b -> b.getId() == id);
System.out.println("Book deleted (if existed).");
}
// ---------- Student CRUD ----------
public void addStudent(Student s) {
students.add(s);
}
public void viewStudents() {
if (students.isEmpty()) {
System.out.println("No students.");
return;
}
for (Student s : students) {
System.out.println(s);
}
}
public Student findStudent(int id) {
for (Student s : students) {
if (s.getId() == id) return s;
}
return null;
}
public void updateStudent(int id, String name) {
for (int i = 0; i < students.size(); i++) {
if (students.get(i).getId() == id) {
students.set(i, new Student(id, name));
System.out.println("Student updated.");
return;
}
}
System.out.println("Student not found.");
}
public void deleteStudent(int id) {
students.removeIf(s -> s.getId() == id);
System.out.println("Student deleted (if existed).");
}
// ---------- Issue / Return ----------
public void issueBook(int studentId, int bookId) {
Student s = findStudent(studentId);
Book b = findBook(bookId);
if (s != null && b != null && !b.isIssued()) {
b.setIssued(true);
s.issueBook(b);
System.out.println("Book issued.");
} else {
System.out.println("Issue failed.");
}
}
public void returnBook(int studentId, int bookId) {
Student s = findStudent(studentId);
Book b = findBook(bookId);
if (s != null && b != null && b.isIssued()) {
b.setIssued(false);
s.returnBook(b);
System.out.println("Book returned.");
} else {
System.out.println("Return failed.");
}
}
}
// Main Class
public class LibraryManagementSystem {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Library lib = new Library();
while (true) {
System.out.println("\n--- LIBRARY MENU ---");
System.out.println("1. Add Book");
System.out.println("2. View Books");
System.out.println("3. Update Book");
System.out.println("4. Delete Book");
System.out.println("5. Add Student");
System.out.println("6. View Students");
System.out.println("7. Issue Book");
System.out.println("8. Return Book");
System.out.println("9. Exit");
int choice = sc.nextInt();
switch (choice) {
case 1:
System.out.print("Book ID: ");
int bid = sc.nextInt();
sc.nextLine();
System.out.print("Title: ");
String title = sc.nextLine();
System.out.print("Author: ");
String author = sc.nextLine();
lib.addBook(new Book(bid, title, author));
break;
case 2:
lib.viewBooks();
break;
case 3:
System.out.print("Book ID: ");
int ubid = sc.nextInt();
sc.nextLine();
System.out.print("New Title: ");
String nt = sc.nextLine();
System.out.print("New Author: ");
String na = sc.nextLine();
lib.updateBook(ubid, nt, na);
break;
case 4:
System.out.print("Book ID: ");
lib.deleteBook(sc.nextInt());
break;
case 5:
System.out.print("Student ID: ");
int sid = sc.nextInt();
sc.nextLine();
System.out.print("Name: ");
String name = sc.nextLine();
lib.addStudent(new Student(sid, name));
break;
case 6:
lib.viewStudents();
break;
case 7:
System.out.print("Student ID: ");
int isid = sc.nextInt();
System.out.print("Book ID: ");
int ibid = sc.nextInt();
lib.issueBook(isid, ibid);
break;
case 8:
System.out.print("Student ID: ");
int rsid = sc.nextInt();
System.out.print("Book ID: ");
int rbid = sc.nextInt();
lib.returnBook(rsid, rbid);
break;
case 9:
System.out.println("Exiting...");
return;
default:
System.out.println("Invalid choice.");
}
}
}
}
Posted inInheritance