Skill

প্র্যাকটিস প্রোজেক্টস

জাভা প্রোগ্রামিং (Java Programming) - Computer Programming

327

Java প্রোগ্রামিং শেখার জন্য প্র্যাকটিস প্রোজেক্টগুলো খুবই সহায়ক। এখানে কিছু মজার ও চ্যালেঞ্জিং প্র্যাকটিস প্রোজেক্টের আইডিয়া দেওয়া হলো, যা Java-এর বিভিন্ন ফ্রেমওয়ার্ক, লাইব্রেরি এবং মূল কনসেপ্ট শেখাতে সহায়ক হবে:


১. কনসোল ভিত্তিক ক্যালকুলেটর

  • বিবরণ: একটি কনসোল অ্যাপ্লিকেশন তৈরি করুন যা দুটি সংখ্যার উপর সাধারণ গাণিতিক ক্রিয়াকলাপ (যেমন যোগ, বিয়োগ, গুণ, ভাগ) সম্পন্ন করতে পারে।
  • স্কিল: কনসোল ইনপুট/আউটপুট, শর্ত ভিত্তিক স্টেটমেন্ট।

২. টু-ডু লিস্ট অ্যাপ্লিকেশন

  • বিবরণ: একটি টু-ডু লিস্ট অ্যাপ্লিকেশন তৈরি করুন যেখানে ব্যবহারকারী টাস্ক যোগ, সম্পাদন এবং মুছে ফেলতে পারবে।
  • স্কিল: ArrayList, ফাইল I/O, কনসোল ভিত্তিক CRUD অপারেশন।

৩. ব্যাংক ম্যানেজমেন্ট সিস্টেম

  • বিবরণ: ব্যবহারকারী অ্যাকাউন্ট তৈরি, ব্যালেন্স চেক, টাকা জমা এবং উত্তোলন করতে পারবে।
  • স্কিল: ফাইল হ্যান্ডলিং, কনসোল ইনপুট/আউটপুট, ক্লাস ও অবজেক্ট।

৪. স্টুডেন্ট ম্যানেজমেন্ট সিস্টেম

  • বিবরণ: ছাত্রের নাম, রোল নম্বর, ক্লাস ও নম্বর সংরক্ষণ এবং ফলাফল বের করার সিস্টেম।
  • স্কিল: ArrayList, ক্লাস, ইনহেরিটেন্স।

৫. চ্যাট অ্যাপ্লিকেশন (সকেট প্রোগ্রামিং)

  • বিবরণ: একটি ক্লায়েন্ট-সার্ভার চ্যাট অ্যাপ্লিকেশন যেখানে একাধিক ব্যবহারকারী চ্যাট করতে পারবে।
  • স্কিল: Socket Programming, মাল্টিথ্রেডিং।

৬. লাইব্রেরি ম্যানেজমেন্ট সিস্টেম

  • বিবরণ: বইয়ের তালিকা, বই ধার নেওয়া ও ফেরত দেওয়া, স্টুডেন্টের রেকর্ড রাখা।
  • স্কিল: JDBC, ডেটাবেস ম্যানেজমেন্ট, কনসোল ইনপুট/আউটপুট।

৭. ই-কমার্স ওয়েবসাইট (Spring Boot)

  • বিবরণ: একটি সাধারণ ই-কমার্স ওয়েবসাইট যেখানে পণ্য দেখানো, অর্ডার করা এবং চেকআউট করার ব্যবস্থা থাকবে।
  • স্কিল: Spring Boot, Thymeleaf বা JSP, REST API, Hibernate।

৮. রেস্টুরেন্ট অর্ডারিং সিস্টেম (JavaFX)

  • বিবরণ: একটি ডেস্কটপ ভিত্তিক রেস্টুরেন্ট অর্ডারিং সিস্টেম তৈরি করুন, যেখানে অর্ডার নেওয়া, বিল তৈরি ও প্রিন্ট করা যাবে।
  • স্কিল: JavaFX, ফাইল I/O, JSON বা XML ডেটা।

৯. ই-লাইব্রেরি সিস্টেম (Spring & Hibernate)

  • বিবরণ: একটি ওয়েব অ্যাপ্লিকেশন, যেখানে ব্যবহারকারী বইয়ের তালিকা দেখতে, বুকমার্ক করতে এবং রিভিউ যোগ করতে পারবে।
  • স্কিল: Spring MVC, Hibernate, REST API, থাইমলিফ/জেএসপি।

১০. স্টক ম্যানেজমেন্ট সিস্টেম

  • বিবরণ: একটি স্টক ম্যানেজমেন্ট অ্যাপ্লিকেশন, যেখানে পণ্য যোগ, মুছে ফেলা, এবং স্টকের বর্তমান অবস্থা দেখা যাবে।
  • স্কিল: JDBC, ডেটাবেস ম্যানেজমেন্ট, কনসোল ভিত্তিক CRUD অপারেশন।

১১. ইউজার অথেন্টিকেশন সিস্টেম (Spring Security)

  • বিবরণ: একটি সিস্টেম যেখানে ব্যবহারকারী রেজিস্টার, লগইন এবং লগআউট করতে পারবে।
  • স্কিল: Spring Boot, Spring Security, JWT বা OAuth।

১২. ই-মেইল ক্লায়েন্ট (JavaMail API)

  • বিবরণ: ব্যবহারকারীকে ই-মেইল পাঠাতে ও গ্রহণ করতে সহায়ক।
  • স্কিল: JavaMail API, SMTP, POP3 বা IMAP প্রোটোকল।

১৩. বাজেট ম্যানেজমেন্ট অ্যাপ

  • বিবরণ: ব্যবহারকারী খরচ ও আয়ের রেকর্ড রাখতে এবং মাসিক রিপোর্ট জেনারেট করতে পারবে।
  • স্কিল: ফাইল I/O, ArrayList, OOP।

১৪. ফাইল এনক্রিপশন ও ডিক্রিপশন টুল

  • বিবরণ: ব্যবহারকারীর ফাইল এনক্রিপ্ট ও ডিক্রিপ্ট করার প্রোগ্রাম।
  • স্কিল: ফাইল হ্যান্ডলিং, ক্রিপ্টোগ্রাফি।

১৫. টেক্সট এডিটর (JavaFX)

  • বিবরণ: একটি সহজ টেক্সট এডিটর, যেখানে টেক্সট লিখা, সংরক্ষণ এবং ওপেন করা যাবে।
  • স্কিল: JavaFX, ফাইল I/O।

এসব প্র্যাকটিস প্রোজেক্ট Java প্রোগ্রামিংয়ের বিভিন্ন গুরুত্বপূর্ণ বিষয়গুলোতে দক্ষতা বাড়াতে সহায়ক হবে। আপনি আপনার পছন্দ অনুযায়ী প্রোজেক্ট বেছে নিয়ে তা উন্নত করতে পারেন।

Content added By

নিচে একটি সাধারণ ক্যালকুলেটর অ্যাপ তৈরি করা হয়েছে, যেখানে Java Swing ব্যবহার করে UI তৈরি করা হয়েছে। এই ক্যালকুলেটর অ্যাপে সাধারণ যোগ, বিয়োগ, গুণ এবং ভাগ অপারেশন করা যাবে।


১. ক্যালকুলেটর ক্লাস তৈরি করা

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Calculator extends JFrame implements ActionListener {
    private JTextField display;
    private double num1 = 0, num2 = 0, result = 0;
    private char operator;

    public Calculator() {
        setTitle("Calculator");
        setSize(400, 500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        // Display Field
        display = new JTextField();
        display.setFont(new Font("Arial", Font.BOLD, 24));
        display.setEditable(false);
        add(display, BorderLayout.NORTH);

        // Button Panel
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(4, 4, 10, 10));

        // Button Text Array
        String[] buttons = {
            "7", "8", "9", "/",
            "4", "5", "6", "*",
            "1", "2", "3", "-",
            "0", ".", "=", "+"
        };

        // Adding Buttons to Panel
        for (String text : buttons) {
            JButton button = new JButton(text);
            button.setFont(new Font("Arial", Font.BOLD, 24));
            button.addActionListener(this);
            buttonPanel.add(button);
        }

        add(buttonPanel, BorderLayout.CENTER);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();

        // যদি সংখ্যার বোতাম টিপা হয়
        if (command.charAt(0) >= '0' && command.charAt(0) <= '9' || command.equals(".")) {
            display.setText(display.getText() + command);
        }
        // যদি অপারেটর বোতাম টিপা হয়
        else if (command.equals("+") || command.equals("-") || command.equals("*") || command.equals("/")) {
            num1 = Double.parseDouble(display.getText());
            operator = command.charAt(0);
            display.setText("");
        }
        // যদি "=" বোতাম টিপা হয়
        else if (command.equals("=")) {
            num2 = Double.parseDouble(display.getText());
            switch (operator) {
                case '+':
                    result = num1 + num2;
                    break;
                case '-':
                    result = num1 - num2;
                    break;
                case '*':
                    result = num1 * num2;
                    break;
                case '/':
                    result = num2 != 0 ? num1 / num2 : 0;
                    break;
            }
            display.setText(String.valueOf(result));
            num1 = result;
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            Calculator calculator = new Calculator();
            calculator.setVisible(true);
        });
    }
}

কোড ব্যাখ্যা

JFrame সেটআপ:

  • Calculator ক্লাসটি JFrame এক্সটেন্ড করেছে, যা মেইন UI উইন্ডো তৈরি করতে সাহায্য করে।
  • setTitle("Calculator") দিয়ে উইন্ডোর টাইটেল সেট করা হয়েছে এবং setSize(400, 500) দিয়ে আকার নির্ধারণ করা হয়েছে।

ডিসপ্লে ফিল্ড:

  • display নামে একটি JTextField তৈরি করা হয়েছে, যা ক্যালকুলেটরের আউটপুট দেখায়। এটি setEditable(false) দিয়ে কেবল রিড-অনলি করা হয়েছে।

বাটন প্যানেল:

  • একটি JPanel তৈরি করে সেটিকে GridLayout দিয়ে ৪x৪ গ্রিডে সাজানো হয়েছে, যেখানে ক্যালকুলেটরের সংখ্যা এবং অপারেটর বাটনগুলো রাখা হয়েছে।
  • বাটনের টেক্সট String[] buttons অ্যারে থেকে নেওয়া হয়েছে এবং লুপের মাধ্যমে বাটন তৈরি করা হয়েছে।

ইভেন্ট হ্যান্ডলিং:

  • actionPerformed(ActionEvent e) মেথডে ইভেন্ট হ্যান্ডল করা হয়েছে। যখন কোনো বাটন টিপা হয়, তখন তার অ্যাকশন কমান্ড command ভ্যারিয়েবলে সংরক্ষণ করা হয়।
  • if (command.charAt(0) >= '0' && command.charAt(0) <= '9' || command.equals(".")) শর্ত দিয়ে চেক করা হয়েছে যে, বাটনটি সংখ্যা কিনা।
  • অপারেটরের জন্য operator ভ্যারিয়েবলে সেট করা হয়েছে এবং ডিসপ্লে খালি করা হয়েছে।
  • = বোতামে switch স্টেটমেন্টের মাধ্যমে সঠিক অপারেশন করা হয়েছে এবং display.setText(String.valueOf(result)) দিয়ে আউটপুট দেখানো হয়েছে।

main মেথড:

  • main মেথডে Calculator ক্লাসের একটি ইনস্ট্যান্স তৈরি করা হয়েছে এবং সেটি দৃশ্যমান করা হয়েছে।

এই ক্যালকুলেটর অ্যাপের বৈশিষ্ট্য

  • সংখ্যা ইনপুট: সংখ্যা ইনপুট দেওয়া যায়।
  • অপারেটর: যোগ, বিয়োগ, গুণ এবং ভাগ অপারেটরের সাপোর্ট।
  • রেজাল্ট: সমান বোতাম টিপে রেজাল্ট দেখা যায়।
  • ডিসপ্লে রিসেট: প্রতিটি অপারেটরের পর ডিসপ্লে রিসেট হয় এবং নতুন সংখ্যা ইনপুট নেয়া যায়।

এই কোডটি চালানোর পর একটি সাধারণ ক্যালকুলেটর অ্যাপ তৈরি হবে, যা সংখ্যানুপাতে ব্যবহারযোগ্য এবং UI ডিজাইনসহ যুক্ত থাকবে।

Content added By

কন্টাক্ট ম্যানেজমেন্ট সিস্টেম হলো একটি সহজ ও কার্যকরী অ্যাপ্লিকেশন, যা ব্যবহারকারীর বিভিন্ন কন্টাক্ট (যেমন নাম, ফোন নম্বর, ইমেইল ইত্যাদি) সংরক্ষণ, আপডেট, খোঁজা এবং মুছে ফেলার কাজ করতে সক্ষম। এটি একটি সাধারণ কনসোল ভিত্তিক প্রোগ্রাম হতে পারে, আবার Java Swing, JavaFX বা Spring Boot ব্যবহার করে একটি GUI বা ওয়েব ভিত্তিক অ্যাপ্লিকেশন হিসেবেও তৈরি করা যেতে পারে।


প্রোজেক্ট বৈশিষ্ট্যসমূহ

  • কন্টাক্ট সংরক্ষণ করা: নতুন কন্টাক্ট যুক্ত করা।
  • কন্টাক্ট খোঁজা: নাম বা ফোন নম্বর অনুযায়ী কন্টাক্ট খুঁজে বের করা।
  • কন্টাক্ট আপডেট করা: কন্টাক্টের নাম, ইমেইল বা ফোন নম্বর পরিবর্তন করা।
  • কন্টাক্ট মুছে ফেলা: একটি কন্টাক্ট ডিলিট করা।
  • সম্পূর্ণ কন্টাক্ট তালিকা: কন্টাক্ট তালিকা প্রদর্শন করা।

কনসোল ভিত্তিক উদাহরণ (কনসোল ইনপুট/আউটপুট এবং ArrayList ব্যবহার করে)

১. প্রথমে একটি Contact ক্লাস তৈরি করুন যা প্রতিটি কন্টাক্টের ডেটা ধারণ করবে।

class Contact {
    private String name;
    private String phoneNumber;
    private String email;

    public Contact(String name, String phoneNumber, String email) {
        this.name = name;
        this.phoneNumber = phoneNumber;
        this.email = email;
    }

    // গেটার ও সেটার মেথড
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Name: " + name + ", Phone: " + phoneNumber + ", Email: " + email;
    }
}

২. এবার একটি ContactManager ক্লাস তৈরি করুন যা কন্টাক্ট ম্যানেজমেন্টের সব কার্যাবলী পরিচালনা করবে।

import java.util.ArrayList;
import java.util.Scanner;

public class ContactManager {
    private ArrayList<Contact> contacts = new ArrayList<>();
    private Scanner scanner = new Scanner(System.in);

    // নতুন কন্টাক্ট যুক্ত করা
    public void addContact() {
        System.out.print("Enter Name: ");
        String name = scanner.nextLine();
        System.out.print("Enter Phone Number: ");
        String phoneNumber = scanner.nextLine();
        System.out.print("Enter Email: ");
        String email = scanner.nextLine();

        Contact contact = new Contact(name, phoneNumber, email);
        contacts.add(contact);
        System.out.println("Contact added successfully!");
    }

    // কন্টাক্ট খোঁজা
    public void searchContact() {
        System.out.print("Enter Name to search: ");
        String name = scanner.nextLine();

        for (Contact contact : contacts) {
            if (contact.getName().equalsIgnoreCase(name)) {
                System.out.println(contact);
                return;
            }
        }
        System.out.println("Contact not found!");
    }

    // কন্টাক্ট আপডেট করা
    public void updateContact() {
        System.out.print("Enter Name to update: ");
        String name = scanner.nextLine();

        for (Contact contact : contacts) {
            if (contact.getName().equalsIgnoreCase(name)) {
                System.out.print("Enter new Phone Number: ");
                contact.setPhoneNumber(scanner.nextLine());
                System.out.print("Enter new Email: ");
                contact.setEmail(scanner.nextLine());
                System.out.println("Contact updated successfully!");
                return;
            }
        }
        System.out.println("Contact not found!");
    }

    // কন্টাক্ট মুছে ফেলা
    public void deleteContact() {
        System.out.print("Enter Name to delete: ");
        String name = scanner.nextLine();

        for (int i = 0; i < contacts.size(); i++) {
            if (contacts.get(i).getName().equalsIgnoreCase(name)) {
                contacts.remove(i);
                System.out.println("Contact deleted successfully!");
                return;
            }
        }
        System.out.println("Contact not found!");
    }

    // কন্টাক্ট তালিকা প্রদর্শন
    public void displayContacts() {
        if (contacts.isEmpty()) {
            System.out.println("No contacts to display.");
        } else {
            for (Contact contact : contacts) {
                System.out.println(contact);
            }
        }
    }
}

৩. মেইন মেথডে ম্যানেজমেন্ট সিস্টেমটি পরিচালনা করা

public class Main {
    public static void main(String[] args) {
        ContactManager manager = new ContactManager();
        Scanner scanner = new Scanner(System.in);
        
        while (true) {
            System.out.println("\nContact Management System");
            System.out.println("1. Add Contact");
            System.out.println("2. Search Contact");
            System.out.println("3. Update Contact");
            System.out.println("4. Delete Contact");
            System.out.println("5. Display All Contacts");
            System.out.println("6. Exit");
            System.out.print("Choose an option: ");
            
            int choice = scanner.nextInt();
            scanner.nextLine(); // newline consume
            
            switch (choice) {
                case 1 -> manager.addContact();
                case 2 -> manager.searchContact();
                case 3 -> manager.updateContact();
                case 4 -> manager.deleteContact();
                case 5 -> manager.displayContacts();
                case 6 -> {
                    System.out.println("Exiting... Goodbye!");
                    scanner.close();
                    return;
                }
                default -> System.out.println("Invalid choice. Please try again.");
            }
        }
    }
}

বৈশিষ্ট্য সমূহ

  1. Add Contact: ব্যবহারকারী নতুন কন্টাক্ট সংরক্ষণ করতে পারবে।
  2. Search Contact: ব্যবহারকারী নাম অনুযায়ী কন্টাক্ট খুঁজতে পারবে।
  3. Update Contact: কোনো কন্টাক্টের তথ্য পরিবর্তন করতে পারবে।
  4. Delete Contact: কোনো কন্টাক্ট মুছে ফেলা যাবে।
  5. Display All Contacts: সব কন্টাক্টের তালিকা দেখা যাবে।

স্কিলস

এই প্রোজেক্টটি করতে গিয়ে আপনি নিচের বিষয়গুলো শিখতে পারবেন:

  • OOP Concepts: ক্লাস, অবজেক্ট, ইনক্যাপসুলেশন।
  • Data Structures: ArrayList ব্যবহার করে ডেটা সংরক্ষণ।
  • File I/O (অ্যাডভান্সড প্রোজেক্টের জন্য): কন্টাক্টগুলোকে ফাইলে সংরক্ষণ করতে চাইলে ফাইল I/O অন্তর্ভুক্ত করতে পারেন।
  • Exception Handling: ইনপুট বা আউটপুট জনিত ত্রুটি হ্যান্ডেল করতে এক্সেপশন হ্যান্ডলিং ব্যবহার করা যায়।

এই প্রোজেক্টটি প্রাথমিক স্তরের প্রোগ্রামারদের জন্য খুবই সহায়ক, যা তাদের Java প্রোগ্রামিংয়ের দক্ষতা বাড়াতে সাহায্য করবে।

Content added By

নিচে একটি লাইব্রেরি ম্যানেজমেন্ট সিস্টেম তৈরি করা হয়েছে, যা Java এবং Java Swing ব্যবহার করে UI তৈরি করেছে এবং ব্যবহারকারীদের বই যুক্ত করা, বই ধার নেয়া ও ফেরত দেয়া, এবং বিভিন্ন তথ্য খুঁজে বের করার সুযোগ প্রদান করেছে।


১. Library Management System ক্লাস (মেইন UI)

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

public class LibraryManagementSystem extends JFrame implements ActionListener {
    private List<Book> books;
    private JTextArea displayArea;
    private JTextField bookTitleField, bookAuthorField, bookIdField;

    public LibraryManagementSystem() {
        books = new ArrayList<>();
        
        setTitle("Library Management System");
        setSize(500, 500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        // Display Area
        displayArea = new JTextArea();
        displayArea.setEditable(false);
        add(new JScrollPane(displayArea), BorderLayout.CENTER);

        // Input Fields
        JPanel inputPanel = new JPanel();
        inputPanel.setLayout(new GridLayout(5, 2));
        
        inputPanel.add(new JLabel("Book Title:"));
        bookTitleField = new JTextField();
        inputPanel.add(bookTitleField);

        inputPanel.add(new JLabel("Book Author:"));
        bookAuthorField = new JTextField();
        inputPanel.add(bookAuthorField);

        inputPanel.add(new JLabel("Book ID:"));
        bookIdField = new JTextField();
        inputPanel.add(bookIdField);

        // Buttons
        JButton addButton = new JButton("Add Book");
        addButton.addActionListener(this);
        inputPanel.add(addButton);

        JButton issueButton = new JButton("Issue Book");
        issueButton.addActionListener(this);
        inputPanel.add(issueButton);

        JButton returnButton = new JButton("Return Book");
        returnButton.addActionListener(this);
        inputPanel.add(returnButton);

        JButton displayButton = new JButton("Display Books");
        displayButton.addActionListener(this);
        inputPanel.add(displayButton);

        add(inputPanel, BorderLayout.SOUTH);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();

        switch (command) {
            case "Add Book":
                addBook();
                break;
            case "Issue Book":
                issueBook();
                break;
            case "Return Book":
                returnBook();
                break;
            case "Display Books":
                displayBooks();
                break;
        }
    }

    private void addBook() {
        String title = bookTitleField.getText();
        String author = bookAuthorField.getText();
        int id = Integer.parseInt(bookIdField.getText());

        books.add(new Book(id, title, author, true));
        displayArea.append("Book Added: " + title + " by " + author + "\n");
        clearFields();
    }

    private void issueBook() {
        int id = Integer.parseInt(bookIdField.getText());
        for (Book book : books) {
            if (book.getId() == id && book.isAvailable()) {
                book.setAvailable(false);
                displayArea.append("Book Issued: " + book.getTitle() + "\n");
                clearFields();
                return;
            }
        }
        displayArea.append("Book Not Available or Invalid ID.\n");
    }

    private void returnBook() {
        int id = Integer.parseInt(bookIdField.getText());
        for (Book book : books) {
            if (book.getId() == id && !book.isAvailable()) {
                book.setAvailable(true);
                displayArea.append("Book Returned: " + book.getTitle() + "\n");
                clearFields();
                return;
            }
        }
        displayArea.append("Invalid Book ID.\n");
    }

    private void displayBooks() {
        displayArea.append("Library Books:\n");
        for (Book book : books) {
            displayArea.append(book + "\n");
        }
    }

    private void clearFields() {
        bookTitleField.setText("");
        bookAuthorField.setText("");
        bookIdField.setText("");
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            LibraryManagementSystem librarySystem = new LibraryManagementSystem();
            librarySystem.setVisible(true);
        });
    }
}

২. Book ক্লাস (Entity)

Book ক্লাসটি তৈরি করা হয়েছে যাতে প্রতিটি বইয়ের জন্য আলাদা আলাদা বৈশিষ্ট্য সংরক্ষণ করা যায়।

public class Book {
    private int id;
    private String title;
    private String author;
    private boolean available;

    public Book(int id, String title, String author, boolean available) {
        this.id = id;
        this.title = title;
        this.author = author;
        this.available = available;
    }

    public int getId() {
        return id;
    }

    public String getTitle() {
        return title;
    }

    public String getAuthor() {
        return author;
    }

    public boolean isAvailable() {
        return available;
    }

    public void setAvailable(boolean available) {
        this.available = available;
    }

    @Override
    public String toString() {
        return "ID: " + id + ", Title: " + title + ", Author: " + author + ", Available: " + available;
    }
}

বিবরণ:

  • ফিল্ড: id, title, author, এবং available ফিল্ডগুলো বইয়ের তথ্য ধারণ করে।
  • getId(), getTitle(), getAuthor(): বইয়ের তথ্য ফেরত দিতে ব্যবহার করা হয়।
  • isAvailable() এবং setAvailable(): বইয়ের বর্তমান অবস্থা চেক এবং সেট করতে ব্যবহার করা হয়।
  • toString(): প্রতিটি বইয়ের তথ্য পাঠযোগ্য ফরম্যাটে প্রদান করে।

ক্লাস ও মেথড ব্যাখ্যা

LibraryManagementSystem (Main UI):

  • এটি একটি JFrame হিসেবে তৈরি করা হয়েছে, যা UI-তে প্রধান উইন্ডো হিসেবে কাজ করে।
  • books নামে একটি ArrayList<Book> রাখা হয়েছে, যা সমস্ত বইয়ের তালিকা সংরক্ষণ করে।

বাটন অপারেশন:

  • Add Book: নতুন বই যুক্ত করে addBook() মেথডের মাধ্যমে।
  • Issue Book: নির্দিষ্ট bookId এর বই ইস্যু করে, যদি বইটি available হয়।
  • Return Book: বই ফেরত দেয় returnBook() মেথডের মাধ্যমে।
  • Display Books: সমস্ত বইয়ের তালিকা প্রদর্শন করে displayBooks() মেথডের মাধ্যমে।

Book ক্লাস:

  • Book ক্লাসে প্রতিটি বইয়ের id, title, author, এবং available স্ট্যাটাস রাখা হয়েছে।

অ্যাপের ফিচারসমূহ

  1. বই সংযোজন: ব্যবহারকারী নতুন বই যুক্ত করতে পারে।
  2. বই ইস্যু করা: যদি বই available থাকে, তাহলে বই ইস্যু করা সম্ভব।
  3. বই ফেরত দেওয়া: ইস্যু করা বই ফেরত দেয়া যায়।
  4. বইয়ের তালিকা দেখানো: সকল বইয়ের তালিকা দেখানো হয়, যেখানে বইয়ের প্রাপ্যতা এবং অন্যান্য তথ্য থাকে।

এই লাইব্রেরি ম্যানেজমেন্ট সিস্টেম এর মাধ্যমে সহজেই বই ম্যানেজ করা যাবে, যা লাইব্রেরি ব্যবস্থাপনায় কার্যকরী হবে।

Content added By
Promotion

Are you sure to start over?

Loading...