library management system project

Login Page:

 

Liberian Page:

Student Page:

Importing packages:

Code:

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.TimeUnit;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import org.jdesktop.swingx.JXDatePicker;

Connection to database:

Code:

public static Connection connect() {
        //Making Database Connection once & using multiple times whenever required.
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/
library", "root", "yourpassword");
            return con;
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    }

 

Login function:

Code:

public static void loginFn() {

        //Creating Login Frame
        JFrame loginFrame = new JFrame("Login");

        //Creating label Username
        JLabel l1 = new JLabel("Username", SwingConstants.CENTER);

        //Creating label Password
        JLabel l2 = new JLabel("Password", SwingConstants.CENTER);

        //Setting up opaque so that label component paints every pixel within its bounds.
        l1.setOpaque(true);

        //Setting up the background color of the label.
        l1.setBackground(new Color(51, 35, 85));

        //Setting up the foreground color of the label.
        l1.setForeground(Color.white);

        //Setting up opaque so that label component paints every pixel within its bounds.
        l2.setOpaque(true);

        //Setting up the background color of the label.
        l2.setBackground(new Color(51, 35, 85));

        //Setting up the foreground color of the label.
        l2.setForeground(Color.white);

        //Create textfield Username
        JTextField usernameTF = new JTextField();

        //Setting up the background color of the textfield.
        usernameTF.setBackground(new Color(51, 35, 85));

        //Setting up the foreground color of the textfield.
        usernameTF.setForeground(Color.white);

        //Create textfield Password
        JPasswordField passwordTF = new JPasswordField();

        //Setting up the background color of the textfield.
        passwordTF.setBackground(new Color(51, 35, 85));

        //Setting up the foreground color of the textfield.
        passwordTF.setForeground(Color.white);

        //Create button Login
        JButton loginBtn = new JButton("Login");

        //Setting up the background color of the button.
        loginBtn.setBackground(new Color(124, 85, 227));

        //Setting up the foreground color of the button.
        loginBtn.setForeground(Color.white);

        //Create button cancel
        JButton cancelBtn = new JButton("Cancel");

        //Setting up the background color of the button.
        cancelBtn.setBackground(new Color(124, 85, 227));

        //Setting up the foreground color of the button.
        cancelBtn.setForeground(Color.white);

        //Performing action on button.
        loginBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                String username = usernameTF.getText();
                String password = passwordTF.getText();

                //If username is empty
                if (username.isEmpty()) {
                    JOptionPane.showMessageDialog(null, "Please enter username"); //Display dialog box with the message
                } //If password is empty
                else if (password.isEmpty()) {
                    JOptionPane.showMessageDialog(null, "Please enter password"); //Display dialog box with the message
                } //If both the fields are present then to login the user, check whether the user exists already
                else {
                    //Connect to the database
                    Connection connection = connect();
                    try {
                        Statement stmt = connection.createStatement();
                        String st = ("SELECT * FROM USERS WHERE USERNAME='" + username + "' AND PASSWORD='" + password + "'"); //Retrieve username and passwords from users
                        ResultSet rs = stmt.executeQuery(st); //Execute query
                        if (rs.next() == false) { //Move pointer below
                            JOptionPane.showMessageDialog(null, "Invalid Username/Password!"); //Display Message
                        } else {
                            loginFrame.dispose();
                            rs.beforeFirst();  //Move the pointer above
                            while (rs.next()) {
                                String admin = rs.getString("user_type"); //user is admin
                                System.out.println(admin);
                                String UID = rs.getString("UID"); //Get user ID of the user
                                if (admin.equals("1")) { //If boolean value 1
                                    //Redirecting to Librarian Frame
                                    librarian_frame();
                                } else {
                                    //Redirecting to User Frame for that user ID
                                    user_frame(UID);
                                }
                            }
                        }
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                }
            }
        });

        cancelBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                loginFrame.dispose();
            }
        });

        //Adding all login components in the login frame of java library management system. 
        loginFrame.add(l1);
        loginFrame.add(usernameTF);
        loginFrame.add(l2);
        loginFrame.add(passwordTF);
        loginFrame.add(loginBtn);
        loginFrame.add(cancelBtn);

        //Setting size of frame (width, height)
        loginFrame.setSize(330, 180);//400 width and 500 height 

        //Setting layout of the frame
        loginFrame.setLayout(new GridLayout(3, 2));

        //Setting frame visible to the user
        loginFrame.setVisible(true);

        //Setting frame non-resizable
        loginFrame.setResizable(false);

    }

Librarian functions:

code:

public static void librarian_frame() {

        //Creating Librarian Frame
        JFrame librarianFrame = new JFrame("Librarian Functions");

        //Creating Button
        JButton view_books_btn = new JButton("View Books");

        //Setting up the background color of the button.
        view_books_btn.setBackground(new Color(51, 35, 85));

        //Setting up the foreground color of the button.
        view_books_btn.setForeground(Color.white);

        //Performing actions on button.
        view_books_btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                //Creating frame.
                JFrame viewBooksFrame = new JFrame("Books Available");

                //Connection to Database
                Connection connection = connect();

                //Query for retrieving data from database
                String sql = "select * from BOOKS";
                try {
                    //Creating Statement
                    Statement stmt = connection.createStatement();

                    //Executing query
                    ResultSet rs = stmt.executeQuery(sql);

                    //Creating Table for to data will be in table format
                    JTable book_list = new JTable();
                    String[] bookColumnNames = {"Book ID", "Book ISBN", "Book Name", "Book Publisher", "Book Edition", "Book Genre", "Book price", "Book Pages"};

                    //Creating model for the table
                    DefaultTableModel bookModel = new DefaultTableModel();

                    //Setting up the columns names of the model
                    bookModel.setColumnIdentifiers(bookColumnNames);

                    //Adding model to the table component
                    book_list.setModel(bookModel);

                    //Setting background colour of the table
                    book_list.setBackground(new Color(51, 35, 85));

                    //Setting foreground colour of the table
                    book_list.setForeground(Color.white);

                    //Setting up table auto-resizable
                    book_list.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
                    book_list.setFillsViewportHeight(true);
                    book_list.setFocusable(false);

                    //Creating scrollbars for table
                    JScrollPane scrollBook = new JScrollPane(book_list);

                    scrollBook.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                    scrollBook.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

                    while (rs.next()) {
                        //Fetching the data from mysql database
                        int book_id = rs.getInt(1);
                        String book_isbn = rs.getString(2);
                        String book_name = rs.getString(3);
                        String book_publisher = rs.getString(4);
                        String book_edition = rs.getString(5);
                        String book_genre = rs.getString(6);
                        int book_price = rs.getInt(7);
                        int book_pages = rs.getInt(8);
                        //Adding fetched data in model
                        bookModel.addRow(new Object[]{book_id, book_isbn, book_name, book_publisher, book_edition, book_genre, book_price, book_pages});
                    }

                    //Adding scrollbars in the frame
                    viewBooksFrame.add(scrollBook);

                    //Setting up the size of the frame (width,height)
                    viewBooksFrame.setSize(800, 400);

                    //Setting up frame visible for user
                    viewBooksFrame.setVisible(true);
                } catch (Exception e1) {
                    //Creating Dialog box to show any error if occured!
                    JOptionPane.showMessageDialog(null, e1);
                }
            }
        });

        //Creating button
        JButton view_users_btn = new JButton("View Users");

        //Setting Background color of the button.
        view_users_btn.setBackground(new Color(51, 35, 85));

        //Setting Foreground color of the button.
        view_users_btn.setForeground(Color.white);

        //Performing actions on the button.
        view_users_btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                //Creating frame.
                JFrame viewUsersFrame = new JFrame("Users List");

                //Connection to database
                Connection connection = connect();

                //Query for retrieving data from database
                String sql = "select * from users";
                try {
                    //Creating Statement
                    Statement stmt = connection.createStatement();

                    //Executing query
                    ResultSet rs = stmt.executeQuery(sql);

                    //Creating Table for to data will be in table format
                    JTable users_list = new JTable();
                    String[] userColumnNames = {"User ID", "User Name", "User Type"};

                    //Creating model for the table
                    DefaultTableModel userModel = new DefaultTableModel();

                    //Setting up the columns names of the model
                    userModel.setColumnIdentifiers(userColumnNames);

                    //Adding model to the table component
                    users_list.setModel(userModel);

                    //Setting up table auto-resizable
                    users_list.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
                    users_list.setFillsViewportHeight(true);

                    //Setting background colour of the table.
                    users_list.setBackground(new Color(51, 35, 85));

                    //Setting foreground colour of the table.
                    users_list.setForeground(Color.white);

                    //Creating scrollbars for table
                    JScrollPane scrollUser = new JScrollPane(users_list);

                    scrollUser.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                    scrollUser.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

                    while (rs.next()) {
                        //Fetching the data from mysql database
                        int uid = rs.getInt(1);
                        String user_name = rs.getString(2);
                        int user_type = rs.getInt(4);
                        if (user_type == 1) {
                            //Checking if it is 1 then it is admin
                            userModel.addRow(new Object[]{uid, user_name, "ADMIN"});
                        } else {
                            //Else it will be user
                            userModel.addRow(new Object[]{uid, user_name, "USER"});
                        }
                    }

                    //Adding scrollbars in the frame
                    viewUsersFrame.add(scrollUser);

                    //Setting up the size of the frame (width,height)
                    viewUsersFrame.setSize(800, 400);

                    //Setting up frame visible for user
                    viewUsersFrame.setVisible(true);

                } catch (Exception e1) {
                    //Creating Dialog box to show any error if occured!
                    JOptionPane.showMessageDialog(null, e1);
                }

            }
        });

        //Creating button
        JButton view_issued_books_btn = new JButton("View Issued Books");

        //Setting background colour of the button.
        view_issued_books_btn.setBackground(new Color(51, 35, 85));

        //Setting the foreground colour of the button.
        view_issued_books_btn.setForeground(Color.white);

        //Performing actions on button.
        view_issued_books_btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                //Creating button
                JFrame issuedBooksFrame = new JFrame("Issued Books List");

                //Connection to database
                Connection connection = connect();

                //Query for retrieving data from database
                String sql = "select * from issued_books";
                try {
                    //Creating Statement
                    Statement stmt = connection.createStatement();

                    //Executing query
                    ResultSet rs = stmt.executeQuery(sql);

                    //Creating Table for to data will be in table format
                    JTable issue_book_list = new JTable();
                    String[] issueBookColumnNames = {"Issue ID", "User ID", "Book ID", "Issue Date", "Period"};

                    //Creating model for the table
                    DefaultTableModel issuedBookModel = new DefaultTableModel();

                    //Setting up the columns names of the model
                    issuedBookModel.setColumnIdentifiers(issueBookColumnNames);

                    //Adding model to the table component
                    issue_book_list.setModel(issuedBookModel);

                    //Setting up table auto-resizable
                    issue_book_list.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
                    issue_book_list.setFillsViewportHeight(true);
                    issue_book_list.setFocusable(false);

                    //Setting background colour of the table
                    issue_book_list.setBackground(new Color(51, 35, 85));

                    //Setting foreground colour of the table
                    issue_book_list.setForeground(Color.white);

                    //Creating scrollbars for table
                    JScrollPane scrollIssuedBook = new JScrollPane(issue_book_list);
                    scrollIssuedBook.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                    scrollIssuedBook.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

                    while (rs.next()) {
                        //Fetching the data from mysql database
                        int iid = rs.getInt(1);
                        int uid = rs.getInt(2);
                        int bid = rs.getInt(3);
                        String issue_date = rs.getString(4);
                        int period = rs.getInt(5);
                        //Adding fetched data in model
                        issuedBookModel.addRow(new Object[]{iid, uid, bid, issue_date, period});
                    }

                    //Adding scrollbars in the frame
                    issuedBooksFrame.add(scrollIssuedBook);

                    //Setting up the size of the frame (width,height)
                    issuedBooksFrame.setSize(800, 400);

                    //Setting up frame visible for user
                    issuedBooksFrame.setVisible(true);

                } catch (Exception e1) {
                    //Creating Dialog box to show any error if occured!
                    JOptionPane.showMessageDialog(null, e1);
                }
            }
        });

        //Creating button
        JButton view_returned_books_btn = new JButton("View Returned Books");

        //Setting Background Colour of the button.
        view_returned_books_btn.setBackground(new Color(51, 35, 85));

        //Setting Foreground Colour of the button.
        view_returned_books_btn.setForeground(Color.white);

        //Performing actions on the button.
        view_returned_books_btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                //Creating button.
                JFrame returnedBooksFrame = new JFrame("Returned Books List");

                //Connection between database and java library management system.
                Connection connection = connect();

                //Query for retrieving data from database.
                String sql = "select * from returned_books";
                try {
                    //Creating Statement.
                    Statement stmt = connection.createStatement();

                    //Executing query.
                    ResultSet rs = stmt.executeQuery(sql);

                    //Creating Table for data will be in table format.
                    JTable returned_book_list = new JTable();

                    String[] returnBookColumnNames = {"Return ID", "Book ID", "User ID", "Return Date", "Fine"};

                    //Creating a model for the table.
                    DefaultTableModel returnBookModel = new DefaultTableModel();

                    //Setting up the column names of the model.
                    returnBookModel.setColumnIdentifiers(returnBookColumnNames);

                    //Adding model to the table component.
                    returned_book_list.setModel(returnBookModel);

                    //Setting up the table auto-resizable.
                    returned_book_list.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
                    returned_book_list.setFillsViewportHeight(true);
                    returned_book_list.setFocusable(false);

                    //Setting background colour of the table.
                    returned_book_list.setBackground(new Color(51, 35, 85));

                    //Setting the foreground colour of the table.
                    returned_book_list.setForeground(Color.white);

                    //Creating scrollbars for tables.
                    JScrollPane scrollReturnedBook = new JScrollPane(returned_book_list);
                    scrollReturnedBook.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                    scrollReturnedBook.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

                    while (rs.next()) {
                        //Fetching the data from the mysql database.
                        int rid = rs.getInt(1);
                        int bid = rs.getInt(2);
                        int uid = rs.getInt(3);
                        String returned_date = rs.getString(4);
                        int fine = rs.getInt(5);

                        //Adding fetched data in model.
                        returnBookModel.addRow(new Object[]{rid, bid, uid, returned_date, fine});
                    }

                    //Adding scrollbars in the frame.
                    returnedBooksFrame.add(scrollReturnedBook);

                    //Setting up the size of the frame (width,height)
                    returnedBooksFrame.setSize(800, 400);

                    //Setting up frames visible for the user.
                    returnedBooksFrame.setVisible(true);

                } catch (Exception e1) {
                    //Creating Dialog box to show any error if occured!
                    JOptionPane.showMessageDialog(null, e1);
                }
            }
        });

        //Creating button
        JButton add_user_btn = new JButton("Add User");

        //Setting Background Colour of the button.
        add_user_btn.setBackground(new Color(51, 35, 85));

        //Setting Foreground Colour of the button.
        add_user_btn.setForeground(Color.white);

        //Performing actions on buttons.
        add_user_btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                //Creating frame
                JFrame add_user_frame = new JFrame("Enter User Details"); //Frame to enter user details

                //Creating label 
                JLabel l1 = new JLabel("Username", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l1.setOpaque(true);

                //Setting Background Colour of the label.
                l1.setBackground(new Color(51, 35, 85));

                //Setting Foreground Colour of the label.
                l1.setForeground(Color.white);

                //Creating label 
                JLabel l2 = new JLabel("Password", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l2.setOpaque(true);

                //Setting Background Colour of the label.
                l2.setBackground(new Color(51, 35, 85));

                //Setting Foreground Colour of the label.
                l2.setForeground(Color.white);

                //Creating textfield 
                JTextField add_username_tf = new JTextField();

                //Setting Background Colour of the textfield.
                add_username_tf.setBackground(new Color(51, 35, 85));

                //Setting Foreground Colour of the textfield.
                add_username_tf.setForeground(Color.white);

                //Creating textfield 
                JPasswordField add_password_tf = new JPasswordField();

                //Setting Background Colour of the textfield.
                add_password_tf.setBackground(new Color(51, 35, 85));

                //Setting Foreground Colour of the textfield.
                add_password_tf.setForeground(Color.white);

                //Creating radio button
                JRadioButton user_type_radio1 = new JRadioButton("Admin");

                //Aligning center
                user_type_radio1.setHorizontalAlignment(SwingConstants.CENTER);

                //Setting Background Colour of the radiobutton.
                user_type_radio1.setBackground(new Color(51, 35, 85));

                //Setting Foreground Colour of the radiobutton.
                user_type_radio1.setForeground(Color.white);

                //Creating radio button
                JRadioButton user_type_radio2 = new JRadioButton("User");

                //Aligning center
                user_type_radio2.setHorizontalAlignment(SwingConstants.CENTER);

                //Setting Background Colour of the radiobutton.
                user_type_radio2.setBackground(new Color(51, 35, 85));

                //Setting Foreground Colour of the radiobutton.
                user_type_radio2.setForeground(Color.white);

                //Adding radio buttons in buttongroup
                ButtonGroup user_type_btn_grp = new ButtonGroup();
                user_type_btn_grp.add(user_type_radio1);
                user_type_btn_grp.add(user_type_radio2);

                //Creating button.
                JButton create_btn = new JButton("Create");

                //Setting Background Colour of the button.
                create_btn.setBackground(new Color(124, 85, 227));

                //Setting Foreground Colour of the button.
                create_btn.setForeground(Color.white);

                //Creating button.
                JButton user_entry_cancel_btn = new JButton("Cancel");

                //Setting Background Colour of the button.
                user_entry_cancel_btn.setBackground(new Color(124, 85, 227));

                //Setting Foreground Colour of the button.
                user_entry_cancel_btn.setForeground(Color.white);

                //Performing actions on the button.
                create_btn.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {

                        //Getting data from the textfield.
                        String username = add_username_tf.getText();
                        String password = add_password_tf.getText();

                        //Connection to database.
                        Connection connection = connect();

                        try {
                            //Creating statement
                            Statement stmt = connection.createStatement();

                            //Check if radio1 is click or not
                            //If radio1 is click then it is added as admin, else normal student
                            if (user_type_radio1.isSelected()) {
                                //Query to insert inside in the table
                                stmt.executeUpdate("INSERT INTO USERS(USERNAME,PASSWORD,USER_TYPE) VALUES ('" + username + "','" + password + "','" + "1" + "')");
                                //Creating Dialog Box to display message.
                                JOptionPane.showMessageDialog(null, "Admin added!");
                                add_user_frame.dispose();
                            } else {
                                //Query to insert inside in the table.
                                stmt.executeUpdate("INSERT INTO USERS(USERNAME,PASSWORD,USER_TYPE) VALUES ('" + username + "','" + password + "','" + "0" + "')");
                                //Creating Dialog Box to display message.
                                JOptionPane.showMessageDialog(null, "User added!");
                                add_user_frame.dispose();
                            }

                        } catch (Exception e1) {
                            //Creating Dialog box to show any error if occured!
                            JOptionPane.showMessageDialog(null, e1);
                        }
                    }
                });

                //Performing actions on button.
                user_entry_cancel_btn.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        add_user_frame.dispose();
                    }
                });

                //Adding components in frame.
                add_user_frame.add(l1);
                add_user_frame.add(add_username_tf);
                add_user_frame.add(l2);
                add_user_frame.add(add_password_tf);
                add_user_frame.add(user_type_radio1);
                add_user_frame.add(user_type_radio2);
                add_user_frame.add(create_btn);
                add_user_frame.add(user_entry_cancel_btn);

                //Setting up the size of the frame (width,height)
                add_user_frame.setSize(350, 200);

                //Setting up layout of the frame
                add_user_frame.setLayout(new GridLayout(4, 2));

                //Setting up the frame visible
                add_user_frame.setVisible(true);

                //Setting up the table auto-resizable.
                add_user_frame.setResizable(false);
            }
        });


        //Creating button.
        JButton add_book_btn = new JButton("Add Book");

        //Setting Background Colour of the button.
        add_book_btn.setBackground(new Color(51, 35, 85));

        //Setting Foreground Colour of the button.
        add_book_btn.setForeground(Color.white);

        //Performing actions on button.
        add_book_btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                //Creating Frame.
                JFrame book_frame = new JFrame("Enter Book Details");

                //Creating labels
                JLabel l1, l2, l3, l4, l5, l6, l7;

                l1 = new JLabel("ISBN", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l1.setOpaque(true);

                //Setting background colour of the label.
                l1.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l1.setForeground(Color.white);

                l2 = new JLabel("Name", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l2.setOpaque(true);

                //Setting background colour of the label.
                l2.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l2.setForeground(Color.white);

                l3 = new JLabel("Publisher", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l3.setOpaque(true);

                //Setting background colour of the label.
                l3.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l3.setForeground(Color.white);

                l4 = new JLabel("Edition", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l4.setOpaque(true);

                //Setting background colour of the label.
                l4.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l4.setForeground(Color.white);

                l5 = new JLabel("Genre", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l5.setOpaque(true);

                //Setting background colour of the label.
                l5.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l5.setForeground(Color.white);

                l6 = new JLabel("Price", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l6.setOpaque(true);

                //Setting background colour of the label.
                l6.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l6.setForeground(Color.white);

                l7 = new JLabel("Pages", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l7.setOpaque(true);

                //Setting background colour of the label.
                l7.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l7.setForeground(Color.white);

                //Creating textfield.
                JTextField book_isbn_tf = new JTextField();

                //Setting background colour of the textfield.
                book_isbn_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                book_isbn_tf.setForeground(Color.white);

                //Creating textfield
                JTextField book_name_tf = new JTextField();

                //Setting background colour of the textfield.
                book_name_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                book_name_tf.setForeground(Color.white);

                //Creating textfield.
                JTextField book_publisher_tf = new JTextField();

                //Setting background colour of the textfield.
                book_publisher_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                book_publisher_tf.setForeground(Color.white);

                //Creating textfield.
                JTextField book_edition_tf = new JTextField();

                //Setting background colour of the textfield.
                book_edition_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                book_edition_tf.setForeground(Color.white);

                //Creating textfield.
                JTextField book_genre_tf = new JTextField();

                //Setting background colour of the textfield.
                book_genre_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                book_genre_tf.setForeground(Color.white);

                //Creating textfield.
                JTextField book_price_tf = new JTextField();

                //Setting background colour of the textfield.
                book_price_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                book_price_tf.setForeground(Color.white);

                //Creating textfield.
                JTextField book_pages_tf = new JTextField();

                //Setting background colour of the textfield.
                book_pages_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                book_pages_tf.setForeground(Color.white);

                //Creating button.
                JButton create_btn = new JButton("Submit");

                //Setting background colour of the button.
                create_btn.setBackground(new Color(124, 85, 227));

                //Setting the foreground colour of the button.
                create_btn.setForeground(Color.white);

                //Creating button.
                JButton add_book_cancel_btn = new JButton("Cancel");

                //Setting background colour of the button.
                add_book_cancel_btn.setBackground(new Color(124, 85, 227));

                //Setting the foreground colour of the button.
                add_book_cancel_btn.setForeground(Color.white);

                //Performing actions on the button.
                create_btn.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {

                        //Getting data from the textfield.
                        String book_isbn = book_isbn_tf.getText();
                        String book_name = book_name_tf.getText();
                        String book_publisher = book_publisher_tf.getText();
                        String book_edition = book_edition_tf.getText();
                        String book_genre = book_genre_tf.getText();

                        //Converting bookprice and bookpages to integer from string.
                        int book_price = Integer.parseInt(book_price_tf.getText());
                        int book_pages = Integer.parseInt(book_pages_tf.getText());

                        //Connection to database.
                        Connection connection = connect();

                        try {
                            //Creating statement
                            Statement stmt = connection.createStatement();

                            //Query to insert in the table.
                            stmt.executeUpdate("INSERT INTO BOOKS(book_isbn,book_name,book_publisher,book_edition,book_genre,book_price,book_pages)"
                                    + " VALUES ('" + book_isbn + "','" + book_name + "','" + book_publisher + "','" + book_edition + "','" + book_genre + "','" + book_price + "'," + book_pages + ")");

                            //Creating Dialog Box to display message.
                            JOptionPane.showMessageDialog(null, "Book added!");
                            book_frame.dispose();
                        } catch (Exception e1) {
                            //Creating Dialog box to show any error if occured!
                            JOptionPane.showMessageDialog(null, e1);
                        }
                    }
                });

                //Performing actions on the button.
                add_book_cancel_btn.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        book_frame.dispose();
                    }
                });

                //Adding components in the frame.
                book_frame.add(l1);
                book_frame.add(book_isbn_tf);
                book_frame.add(l2);
                book_frame.add(book_name_tf);
                book_frame.add(l3);
                book_frame.add(book_publisher_tf);
                book_frame.add(l4);
                book_frame.add(book_edition_tf);
                book_frame.add(l5);
                book_frame.add(book_genre_tf);
                book_frame.add(l6);
                book_frame.add(book_price_tf);
                book_frame.add(l7);
                book_frame.add(book_pages_tf);
                book_frame.add(create_btn);
                book_frame.add(add_book_cancel_btn);

                //Setting up the size of the frame (width,height)
                book_frame.setSize(800, 500);

                //Setting up layout of the frame
                book_frame.setLayout(new GridLayout(8, 2));

                //Setting up the frame visible
                book_frame.setVisible(true);

                //Setting up the table auto-resizable.
                book_frame.setResizable(false);
            }
        });

        //Creating button
        JButton add_issue_book_btn = new JButton("Issue Book");

        //Setting background colour of the button.
        add_issue_book_btn.setBackground(new Color(51, 35, 85));

        //Setting the foreground colour of the button.
        add_issue_book_btn.setForeground(Color.white);

        //Performing actions on the button.
        add_issue_book_btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                //Creating frame.
                JFrame issue_book_frame = new JFrame("Enter Details");

                //Creating panel.
                JPanel pickerPanel = new JPanel();

                //Creating a datepicker.
                JXDatePicker picker = new JXDatePicker();

                //Setting up current date in datepicker
                picker.setDate(Calendar.getInstance().getTime());

                //Formatting datepicker.
                picker.setFormats(new SimpleDateFormat("dd.MM.yyyy"));

                //Adding datepicker in the panel.
                pickerPanel.add(picker);

                //Setting background colour of the panel.
                pickerPanel.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the panel.
                pickerPanel.setForeground(Color.white);

                //Creating labels
                JLabel l1, l2, l3, l4;
                l1 = new JLabel("Book ID", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l1.setOpaque(true);

                //Setting background colour of the label.
                l1.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l1.setForeground(Color.white);

                l2 = new JLabel("User/Student ID", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l2.setOpaque(true);

                //Setting background colour of the label.
                l2.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l2.setForeground(Color.white);

                l3 = new JLabel("Period(days)", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l3.setOpaque(true);

                //Setting background colour of the label.
                l3.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l3.setForeground(Color.white);

                l4 = new JLabel("Issued Date(DD-MM-YYYY)", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l4.setOpaque(true);

                //Setting background colour of the label.
                l4.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l4.setForeground(Color.white);

                //Creating textfield.
                JTextField bid_tf = new JTextField();

                //Setting background colour of the textfield.
                bid_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                bid_tf.setForeground(Color.white);

                //Creating textfield.
                JTextField uid_tf = new JTextField();

                //Setting background colour of the textfield.
                uid_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                uid_tf.setForeground(Color.white);

                //Creating textfield.
                JTextField period_tf = new JTextField();

                //Setting background colour of the textfield.
                period_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                period_tf.setForeground(Color.white);

                //Creating button.
                JButton create_btn = new JButton("Submit");

                //Setting background colour of the button.
                create_btn.setBackground(new Color(124, 85, 227));

                //Setting the foreground colour of the button.
                create_btn.setForeground(Color.white);

                //Creating button.
                JButton issue_book_cancel_btn = new JButton("Cancel");

                //Setting background colour of the button.
                issue_book_cancel_btn.setBackground(new Color(124, 85, 227));

                //Setting the foreground colour of the button.
                issue_book_cancel_btn.setForeground(Color.white);

                //Performing actions on the button.
                create_btn.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {

                        //Getting data from textfield.
                        int uid = Integer.parseInt(uid_tf.getText());
                        int bid = Integer.parseInt(bid_tf.getText());
                        String period = period_tf.getText();
                        Date oDate = picker.getDate();

                        //Formatting date.
                        DateFormat oDateFormat = new SimpleDateFormat("dd-MM-yyyy");
                        String issued_date = oDateFormat.format(oDate);

                        //Converting period from string to integer.
                        int period_int = Integer.parseInt(period);

                        //Connection to the database
                        Connection connection = connect();

                        try {
                            //Creating Statement
                            Statement stmt = connection.createStatement();

                            //Query to insert data in the table.
                            stmt.executeUpdate("INSERT INTO issued_books(UID,BID,ISSUED_DATE,PERIOD) VALUES ('" + uid + "','" + bid + "','" + issued_date + "'," + period_int + ")");

                            //Creating Dialog Box to display message.
                            JOptionPane.showMessageDialog(null, "Book Issued!");
                            issue_book_frame.dispose();

                        } catch (Exception e1) {
                            //Creating Dialog box to show any error if occured!
                            JOptionPane.showMessageDialog(null, e1);
                        }
                    }
                });

                issue_book_cancel_btn.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        issue_book_frame.dispose();
                    }
                });

                //Adding components in the frame
                issue_book_frame.add(l1);
                issue_book_frame.add(bid_tf);
                issue_book_frame.add(l2);
                issue_book_frame.add(uid_tf);
                issue_book_frame.add(l3);
                issue_book_frame.add(period_tf);
                issue_book_frame.add(l4);
                issue_book_frame.getContentPane().add(pickerPanel);
                issue_book_frame.add(create_btn);
                issue_book_frame.add(issue_book_cancel_btn);

                //Setting up the size of the frame (width,height)
                issue_book_frame.setSize(600, 300);

                //Setting up frame layout
                issue_book_frame.setLayout(new GridLayout(5, 2));

                //Setting up the frame visible
                issue_book_frame.setVisible(true);

                //Setting up table auto-resizable.
                issue_book_frame.setResizable(false);
            }
        });

        //Creating button.
        JButton add_return_book_btn = new JButton("Return Book");

        //Setting background colour of the button.
        add_return_book_btn.setBackground(new Color(51, 35, 85));

        //Setting the foreground colour of the button.
        add_return_book_btn.setForeground(Color.white);

        //Performing actions on the button.
        add_return_book_btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                //Creating frame.
                JFrame returnBookFrame = new JFrame("Enter Details");

                //Creating the labels.
                JLabel l1 = new JLabel("Book ID", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l1.setOpaque(true);

                //Setting background colour of the label.
                l1.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l1.setForeground(Color.white);

                JLabel l2 = new JLabel("User ID", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l2.setOpaque(true);

                //Setting background colour of the label.
                l2.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l2.setForeground(Color.white);

                //Creating labels.
                JLabel l3 = new JLabel("Return Date(DD-MM-YYYY)", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l3.setOpaque(true);

                //Setting background colour of the label.
                l3.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l3.setForeground(Color.white);

                JLabel l4 = new JLabel("Fine", SwingConstants.CENTER);

                //Setting up opaque so that label component paints every pixel within its bounds.
                l4.setOpaque(true);

                //Setting background colour of the label.
                l4.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the label.
                l4.setForeground(Color.white);

                //Creating textfield.
                JTextField bid_tf = new JTextField();

                //Setting background colour of the textfield.
                bid_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                bid_tf.setForeground(Color.white);

                //Creating textfield.
                JTextField uid_tf = new JTextField();

                //Setting background colour of the textfield.
                uid_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                uid_tf.setForeground(Color.white);

                //Creating panel for date.
                JPanel pickerPanel = new JPanel();

                //Creating a datepicker.
                JXDatePicker picker = new JXDatePicker();

                //Getting and Setting up the current time of the date.
                picker.setDate(Calendar.getInstance().getTime());

                //Setting up the format of the date picker.
                picker.setFormats(new SimpleDateFormat("dd.MM.yyyy"));

                //Creating textfield.
                JTextField fine_tf = new JTextField();

                //Setting background colour of the textfield.
                fine_tf.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the textfield.
                fine_tf.setForeground(Color.white);

                //Adding datepicker in panel.
                pickerPanel.add(picker);

                //Setting background colour of the panel.
                pickerPanel.setBackground(new Color(51, 35, 85));

                //Setting the foreground colour of the panel.
                pickerPanel.setForeground(Color.white);

                //Creating button.
                JButton return_book_btn = new JButton("Return");

                //Setting background colour of the button.
                return_book_btn.setBackground(new Color(124, 85, 227));

                //Setting the foreground colour of the button.
                return_book_btn.setForeground(Color.white);

                //Creating button.
                JButton cancel_book_btn = new JButton("Cancel");

                //Setting background colour of the button.
                cancel_book_btn.setBackground(new Color(124, 85, 227));

                //Setting the foreground colour of the button.
                cancel_book_btn.setForeground(Color.white);

                //Performing actions on button.
                return_book_btn.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {

                        //Getting data from text fields.
                        int bid = Integer.parseInt(bid_tf.getText());
                        int uid = Integer.parseInt(uid_tf.getText());
                        int fine = Integer.parseInt(fine_tf.getText());
                        Date oDate = picker.getDate();
                        //Formatting Date.
                        DateFormat oDateFormat = new SimpleDateFormat("dd-MM-yyyy");
                        String return_date = oDateFormat.format(oDate);

                        try {
                            //Connection to database
                            Connection connection = connect();

                            //Creating Statement
                            Statement stmt = connection.createStatement();

                            //Querying to insert in the table.
                            stmt.executeUpdate("INSERT INTO returned_books(bid,uid,return_date,fine) VALUES ('" + bid + "','" + uid + "','" + return_date + "'," + fine + ")");

                            //Creating Dialog Box to display message.
                            JOptionPane.showMessageDialog(null, "Book Returned!");
                            returnBookFrame.dispose();

                        } catch (Exception e1) {
                            //Creating Dialog box to show any error if occured!
                            JOptionPane.showMessageDialog(null, e1);
                        }
                    }
                });

                //Performing actions on the button.
                cancel_book_btn.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        returnBookFrame.dispose();
                    }
                });

                //Adding all return book components in the frame
                returnBookFrame.add(l1);
                returnBookFrame.add(bid_tf);
                returnBookFrame.add(l2);
                returnBookFrame.add(uid_tf);
                returnBookFrame.add(l3);
                returnBookFrame.getContentPane().add(pickerPanel);
                returnBookFrame.add(l4);
                returnBookFrame.add(fine_tf);
                returnBookFrame.add(return_book_btn);
                returnBookFrame.add(cancel_book_btn);

                //Setting up the size of the frame
                returnBookFrame.setSize(600, 300);

                //Setting up the layout of the frame
                returnBookFrame.setLayout(new GridLayout(5, 2));

                //Setting up the frame visible
                returnBookFrame.setVisible(true);

                //Setting up frame non-resizable
                returnBookFrame.setResizable(false);
            }
        });

        //Setting the layout of Librarian Frame
        librarianFrame.setLayout(new GridLayout(2, 4));

        //Adding Librarian components in the Librarian Frame
        librarianFrame.add(add_user_btn);
        librarianFrame.add(add_book_btn);
        librarianFrame.add(add_issue_book_btn);
        librarianFrame.add(add_return_book_btn);
        librarianFrame.add(view_users_btn);
        librarianFrame.add(view_books_btn);
        librarianFrame.add(view_issued_books_btn);
        librarianFrame.add(view_returned_books_btn);

        //Setting size of the frame (width,height)
        librarianFrame.setSize(800, 200);

        //Setting up the frame visible to the user
        librarianFrame.setVisible(true);

        //Setting up frame non-resizable
        librarianFrame.setResizable(false);

    }