Complete Java Project (Single File)

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.");
            }
        }
    }
}

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *