0% found this document useful (0 votes)
5 views

Project on Object-Oriented Programming (OOP) concepts_

The Library Management System (LMS) utilizes Object-Oriented Programming (OOP) principles to manage books, users, and transactions. Key concepts such as encapsulation, abstraction, inheritance, and polymorphism are implemented through various classes like Item, Book, EBook, User, Student, and Librarian. The system structure includes models for data representation and services for library operations, with a main class to demonstrate functionality.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Project on Object-Oriented Programming (OOP) concepts_

The Library Management System (LMS) utilizes Object-Oriented Programming (OOP) principles to manage books, users, and transactions. Key concepts such as encapsulation, abstraction, inheritance, and polymorphism are implemented through various classes like Item, Book, EBook, User, Student, and Librarian. The system structure includes models for data representation and services for library operations, with a main class to demonstrate functionality.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

Project Title: Library Management System (LMS)

A Library Management System allows a librarian to manage books, users, and transactions
using OOP principles.

OOP Concepts Applied


● Encapsulation → Data hiding using private attributes and providing public
getters/setters.
● Abstraction → Abstract classes and interfaces for common behavior.
● Inheritance → Book class inherits from Item, Student class inherits from User, etc.
● Polymorphism → Method overriding in Book and EBook, method overloading in
User class.

Project Structure
LibraryManagementSystem/
│── src/
│ ├── models/
│ │ ├── Item.java
│ │ ├── Book.java
│ │ ├── EBook.java
│ │ ├── User.java
│ │ ├── Student.java
│ │ ├── Librarian.java
│ │ ├── Transaction.java
│ ├── services/
│ │ ├── Library.java
│ │ ├── LibraryManagement.java
│ ├── Main.java

1 Item Class (Abstraction)


1️⃣
package models;

public abstract class Item {


protected String title;
protected String author;
protected int itemId;
protected boolean isAvailable;

public Item(String title, String author, int itemId) {


this.title = title;
this.author = author;
this.itemId = itemId;
this.isAvailable = true;
}

public abstract void displayDetails();

public boolean isAvailable() {


return isAvailable;
}

public void setAvailability(boolean status) {


this.isAvailable = status;
}

public int getItemId() {


return itemId;
}
}

2️⃣Book Class (Inheritance & Polymorphism)


package models;

public class Book extends Item {


private int numPages;

public Book(String title, String author, int itemId, int numPages) {


super(title, author, itemId);
this.numPages = numPages;
}

@Override
public void displayDetails() {
System.out.println("Book ID: " + itemId);
System.out.println("Title: " + title);
System.out.println("Author: " + author);
System.out.println("Pages: " + numPages);
System.out.println("Availability: " + (isAvailable ? "Available" : "Not Available"));
}
}

3️⃣EBook Class (Polymorphism & Inheritance)


package models;

public class EBook extends Item {


private String downloadLink;

public EBook(String title, String author, int itemId, String downloadLink) {


super(title, author, itemId);
this.downloadLink = downloadLink;
}

@Override
public void displayDetails() {
System.out.println("E-Book ID: " + itemId);
System.out.println("Title: " + title);
System.out.println("Author: " + author);
System.out.println("Download Link: " + downloadLink);
}
}

4️⃣User Class (Encapsulation & Method Overloading)


package models;

public class User {


protected String name;
protected int userId;
protected int borrowedItems;

public User(String name, int userId) {


this.name = name;
this.userId = userId;
this.borrowedItems = 0;
}

public void borrowItem() {


borrowedItems++;
}

public void returnItem() {


borrowedItems--;
}

public void displayUserDetails() {


System.out.println("User ID: " + userId);
System.out.println("Name: " + name);
System.out.println("Borrowed Items: " + borrowedItems);
}
}

5️⃣Student Class (Inheritance)


package models;

public class Student extends User {


private int maxBooksAllowed = 5;

public Student(String name, int userId) {


super(name, userId);
}

@Override
public void borrowItem() {
if (borrowedItems < maxBooksAllowed) {
super.borrowItem();
System.out.println(name + " borrowed an item.");
} else {
System.out.println(name + " has reached the limit of borrowed items.");
}
}
}
6️⃣Librarian Class
package models;

public class Librarian extends User {


public Librarian(String name, int userId) {
super(name, userId);
}

public void addBook(Book book) {


System.out.println("Book added: " + book.title);
}

public void removeBook(Book book) {


System.out.println("Book removed: " + book.title);
}
}

7️⃣Transaction Class
package models;

import java.util.Date;

public class Transaction {


private int transactionId;
private int userId;
private int itemId;
private Date borrowDate;
private Date returnDate;

public Transaction(int transactionId, int userId, int itemId, Date borrowDate) {


this.transactionId = transactionId;
this.userId = userId;
this.itemId = itemId;
this.borrowDate = borrowDate;
}

public void setReturnDate(Date returnDate) {


this.returnDate = returnDate;
}
public void displayTransaction() {
System.out.println("Transaction ID: " + transactionId);
System.out.println("User ID: " + userId);
System.out.println("Item ID: " + itemId);
System.out.println("Borrow Date: " + borrowDate);
System.out.println("Return Date: " + (returnDate != null ? returnDate : "Not Returned Yet"));
}
}

8️⃣Library Class (Service Layer)


package services;

import models.Book;
import models.User;

import java.util.ArrayList;
import java.util.List;

public class Library {


private List<Book> books;
private List<User> users;

public Library() {
this.books = new ArrayList<>();
this.users = new ArrayList<>();
}

public void addBook(Book book) {


books.add(book);
System.out.println("Book added to library: " + book.title);
}

public void registerUser(User user) {


users.add(user);
System.out.println("User registered: " + user.name);
}

public Book findBook(int itemId) {


for (Book book : books) {
if (book.getItemId() == itemId) {
return book;
}
}
return null;
}
}

9️⃣Main Class (Entry Point)


package main;

import models.*;
import services.Library;

public class Main {


public static void main(String[] args) {
Library library = new Library();

Book book1 = new Book("Java Programming", "James Gosling", 101, 500);


Book book2 = new Book("Data Structures", "Robert Lafore", 102, 700);

library.addBook(book1);
library.addBook(book2);

Student student = new Student("Alice", 201);


library.registerUser(student);

System.out.println("\nLibrary Books:");
book1.displayDetails();
book2.displayDetails();

System.out.println("\nStudent Info:");
student.displayUserDetails();

System.out.println("\nBorrowing Book:");
student.borrowItem();
student.displayUserDetails();
}
}

You might also like