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 cmbMembership;
private DefaultTableModel model;
private JTable table;
private ArrayList 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:



