GYM Management System Using Java

GYM Management System Using Java

Introduction

A Gym Management System (GMS) is a special type of software created to cater to the needs of a particular fitness center. It aids in the proper maintenance of a member’s records. The application helps associated staff and even owners in keeping track of all members which includes tracking memberships, renewals as well as streamlining operations. In this project, we construct a simple yet effective desktop GUI application using Java Swing.

Goals:

  • Track issues of gym members.
  • Create, edit and delete member records.
  • Maintain membership types: Monthly, Quarterly, and Yearly.
  • Display members in a listview.
  • Improve front-desk work flow in the gyms.

Used Technologies:

  • Component Technology
  • Programming Language: Java
  • GUI Framework: Java Swing
  • IDE: NetBeans / Eclipse / IntelliJ IDEA
  • Storage: ArrayList (in-memory) – could evolve into a database
  • File Saving: (Optional) File handling / Database for data persistence

System Modules:

1. Add Member

  • Specify id, name, age and membership type
  • Append onto the member list

2. View Members

  • List all members for viewing in a table.
  • Choose to load a member into the form for update/delete.

3. Update Member

  • Change /update selected member’s details.
  •  Cannot change member ID field.

4. Delete Member

  • Erase selected member from the system

Special Features:

  • Menu-controlled desktop application.
  • Automatic verification for number type fields.
  • Dialog window for user instructions.
  • Select from a table for easier table updates.
  • Balanced arrangement and real-time…

STEPS TO DEVELOP A STUDENT MANAGEMENT SYSTEM

Follow these procedures in creating a Java Project for Gym Management System with Source Code.

Procedure 1: Set up a project. To begin, open any file and select “project” in order to start a new one.

Procedure 2: Define your project. For the second procedure, provide a name for your project.

Procedure 3: Create a JFrame form.

For the third procedure, you need to create a “JFrame” form.

  • Procedure 4: Create JFrame form name.

For the fourth procedure, provide a name for your JFrame form.

  • Procedure 5: Work on the project.

For the fifth procedure, work on the actual design of the project.

 

Executing the Codes

Prerequisites

  • An updated JDK (Java Development Kit) 8 or higher
  • NetBeans or iphone IDE
  • NetBeans IDE, IntelliJ, and Eclipse will be enough
  • A basic understanding of Java Swing’s user interfaces.

Step one is project creation

  • Launch NetBeans.
  • Open a new project from the file section.
  • Java Application will be bound to Java so select that and press next.
  • You may select your project name as GymManagementSystem or anything that suits you.
  • “Creating Main Class” will be checked by default. So, unselect that and press finish.
  • After that the main class is formed of Gym Management System.

Code Usage

Description of Class

public class GymManagementGUI extends JFrame {
  • This class inherits JFrame, thus this is a window based GUI application.

Data Members and Components

private JTextField txtId, txtName, txtAge; private JComboBox cmbMembership; private DefaultTableModel model; private JTable table; private ArrayList members = new ArrayList<>();
  • txtId, txtName, txtAge – fields to enter information of members.
  • cmbMembership – combo box for selecting type of membership.
  • model – a data model for the table (JTable).
  • table – a member’s list.
  • members – list to hold member objects of class Member.

Constructor: GymManagementGUI()

Sets entire the entire GUI layout and logic.

Window setup:

  • SetTitle(“Gym Management System”);
  • SetSize(700,450);
  • SetDefaultCloseOperation(JFrame.EXITONCLOSE);
  • SetLocationRelativeTo(null);
  • SetLayout(null);
  • Sets window title, sets the size of the window, sets the default close behavior and the layout.

Input Fields and Labels

JLabel lblId = new JLabel("ID:"); txtId = new JTextField();
  • Similar blocks are created for Name, Age and Membership.
String[] memberships = {“Monthly”, “Quarterly”, “Yearly”};
cmbMembership = new JComboBox<>(memberships);
  • Similar blocks are created for Name, Age and Membership.

Button Declaration

JButton btnAdd = new JButton("Add");
JButton btnUpdate = new JButton("Update");

btnAdd.addActionListener(e -> addMember());

Table

String columnNames[] = new String[]{"ID","Name","Age","Membership"};

model = new DefaultTableModel(columnNames, 0);

table = new JTable(model);

  • Initializes a JTable named table and sets a header with DefaultTableModel containing four columns.
JScrollPane scrollpane = new JScrollPane(table);
  • Enables scrolling through the table.

Function Definitions

1.addMember()

int id = Integer.parseInt(txtId.getText());

String name = txtName.getText();

  • Gets values from the form using get methods from text boxes.
  • Checks if the ID already exists.
  • Puts member into members and model table.
  • updateMember()

int selectedRow = table.getSelectedRow();

  • Gets the selected row’s index.
  • Updates the array list and the model table.

3.deleteMember()

int selectedRow = table.getSelectedRow();

int id = Integer.parseInt(model.getValueAt(selectedRow,0).toString());

  • Using the ID of the member, the system will delete the member record.
  • clearFields()
txtId.setText(""); txtName.setText(""); txtAge.setText("");
  • Clears the form for the next action.

main() Method

public static void main(String[] args] {

SwingUtilities.invokeLater(()->{

    GymManagementGUI app = new GymManagementGUI();

    app.setVisible(true);

});

}

  • Safely starts the GUI in the event dispatch thread.

Source Code:

				
					import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;

class Member {
    int id;
    String name;
    int age;
    String membershipType;

    Member(int id, String name, int age, String membershipType) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.membershipType = membershipType;
    }
}

public class GymManagementGUI extends JFrame {
    private JTextField txtId, txtName, txtAge;
    private JComboBox<String> cmbMembership;
    private DefaultTableModel model;
    private JTable table;
    private ArrayList<Member> members = new ArrayList<>();

    public GymManagementGUI() {
        setTitle("Gym Management System");
        setSize(700, 450);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setLayout(null);

        // Labels and Inputs
        JLabel lblId = new JLabel("ID:");
        lblId.setBounds(20, 20, 100, 25);
        add(lblId);
        txtId = new JTextField();
        txtId.setBounds(120, 20, 150, 25);
        add(txtId);

        JLabel lblName = new JLabel("Name:");
        lblName.setBounds(20, 60, 100, 25);
        add(lblName);
        txtName = new JTextField();
        txtName.setBounds(120, 60, 150, 25);
        add(txtName);

        JLabel lblAge = new JLabel("Age:");
        lblAge.setBounds(20, 100, 100, 25);
        add(lblAge);
        txtAge = new JTextField();
        txtAge.setBounds(120, 100, 150, 25);
        add(txtAge);

        JLabel lblMembership = new JLabel("Membership:");
        lblMembership.setBounds(20, 140, 100, 25);
        add(lblMembership);
        String[] memberships = {"Monthly", "Quarterly", "Yearly"};
        cmbMembership = new JComboBox<>(memberships);
        cmbMembership.setBounds(120, 140, 150, 25);
        add(cmbMembership);

        // Buttons
        JButton btnAdd = new JButton("Add");
        btnAdd.setBounds(20, 190, 80, 30);
        add(btnAdd);
        JButton btnUpdate = new JButton("Update");
        btnUpdate.setBounds(110, 190, 80, 30);
        add(btnUpdate);
        JButton btnDelete = new JButton("Delete");
        btnDelete.setBounds(200, 190, 80, 30);
        add(btnDelete);

        // Table to show members
        String[] columnNames = {"ID", "Name", "Age", "Membership"};
        model = new DefaultTableModel(columnNames, 0);
        table = new JTable(model);
        JScrollPane scrollPane = new JScrollPane(table);
        scrollPane.setBounds(300, 20, 370, 350);
        add(scrollPane);

        // Button actions
        btnAdd.addActionListener(e -> addMember());
        btnUpdate.addActionListener(e -> updateMember());
        btnDelete.addActionListener(e -> deleteMember());

        // Table row select to fill form
        table.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                int selectedRow = table.getSelectedRow();
                if (selectedRow >= 0) {
                    txtId.setText(model.getValueAt(selectedRow, 0).toString());
                    txtName.setText(model.getValueAt(selectedRow, 1).toString());
                    txtAge.setText(model.getValueAt(selectedRow, 2).toString());
                    cmbMembership.setSelectedItem(model.getValueAt(selectedRow, 3).toString());
                    txtId.setEnabled(false);
                }
            }
        });
    }

    private void addMember() {
        try {
            int id = Integer.parseInt(txtId.getText());
            String name = txtName.getText();
            int age = Integer.parseInt(txtAge.getText());
            String membership = cmbMembership.getSelectedItem().toString();

            for (Member m : members) {
                if (m.id == id) {
                    JOptionPane.showMessageDialog(this, "Member ID already exists!");
                    return;
                }
            }

            Member member = new Member(id, name, age, membership);
            members.add(member);
            model.addRow(new Object[]{id, name, age, membership});
            clearFields();
            JOptionPane.showMessageDialog(this, "Member added successfully!");
        } catch (NumberFormatException ex) {
            JOptionPane.showMessageDialog(this, "Please enter valid numeric values for ID and Age.");
        }
    }

    private void updateMember() {
        int selectedRow = table.getSelectedRow();
        if (selectedRow >= 0) {
            try {
                String name = txtName.getText();
                int age = Integer.parseInt(txtAge.getText());
                String membership = cmbMembership.getSelectedItem().toString();
                int id = Integer.parseInt(txtId.getText());

                for (Member m : members) {
                    if (m.id == id) {
                        m.name = name;
                        m.age = age;
                        m.membershipType = membership;
                        break;
                    }
                }

                model.setValueAt(name, selectedRow, 1);
                model.setValueAt(age, selectedRow, 2);
                model.setValueAt(membership, selectedRow, 3);

                JOptionPane.showMessageDialog(this, "Member updated successfully!");
                clearFields();
                txtId.setEnabled(true);
            } catch (NumberFormatException ex) {
                JOptionPane.showMessageDialog(this, "Please enter valid numeric values for Age.");
            }
        } else {
            JOptionPane.showMessageDialog(this, "Please select a member to update.");
        }
    }

    private void deleteMember() {
        int selectedRow = table.getSelectedRow();
        if (selectedRow >= 0) {
            int id = Integer.parseInt(model.getValueAt(selectedRow, 0).toString());

            members.removeIf(m -> m.id == id);
            model.removeRow(selectedRow);

            JOptionPane.showMessageDialog(this, "Member deleted successfully!");
            clearFields();
            txtId.setEnabled(true);
        } else {
            JOptionPane.showMessageDialog(this, "Please select a member to delete.");
        }
    }

    private void clearFields() {
        txtId.setText("");
        txtName.setText("");
        txtAge.setText("");
        cmbMembership.setSelectedIndex(0);
        txtId.setEnabled(true);
    }

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

				
			

Output:

GYM Management System Using Java output 1
GYM Management System Using Java output 2
GYM Management System Using Java output 3
GYM Management System Using Java output 4
More java Pojects
Get Huge Discounts