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

import java1

The document outlines a Gym Management System implemented in Java using Swing for the GUI. It includes features for managing regular and premium gym members, with functionalities for adding, displaying, and saving member information. The system also provides a menu for file operations and member management actions such as activating memberships and marking attendance.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

import java1

The document outlines a Gym Management System implemented in Java using Swing for the GUI. It includes features for managing regular and premium gym members, with functionalities for adding, displaying, and saving member information. The system also provides a menu for file operations and member management actions such as activating memberships and marking attendance.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 27

import javax.swing.

*;

import java.awt.*;

import java.awt.event.*;

import java.util.ArrayList;

import java.io.*;

public class GymManagementSystem {

public static void main(String[] args) {

new GymGUI();

class GymGUI extends JFrame implements ActionListener {

private ArrayList<GymMember> memberList;

// Main components

private JTabbedPane tabbedPane;

private JPanel regularMemberPanel, premiumMemberPanel, displayPanel;

// Common components

private JTextField tfId, tfName, tfLocation, tfPhone, tfEmail;

private JComboBox<String> dobYearComboBox, dobMonthComboBox, dobDayComboBox;

private JComboBox<String> msYearComboBox, msMonthComboBox, msDayComboBox;

private JRadioButton rbMale, rbFemale;

private ButtonGroup genderGroup;

// Regular member components

private JTextField tfReferralSource, tfRemovalReason;

private JComboBox<String> planComboBox;


// Premium member components

private JTextField tfTrainerName, tfPaidAmount;

private JLabel lblPremiumCharge, lblDiscountAmount;

// Display components

private JTextArea displayArea;

public GymGUI() {

// Initialize member list

memberList = new ArrayList<>();

// Set up main frame

setTitle("Gym Management System");

setSize(900, 700);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLayout(new BorderLayout());

// Create tabbed pane

tabbedPane = new JTabbedPane();

// Create panels

regularMemberPanel = createRegularMemberPanel();

premiumMemberPanel = createPremiumMemberPanel();

displayPanel = createDisplayPanel();

// Add panels to tabbed pane

tabbedPane.addTab("Regular Member", regularMemberPanel);

tabbedPane.addTab("Premium Member", premiumMemberPanel);


tabbedPane.addTab("Display Members", displayPanel);

// Add tabbed pane to frame

add(tabbedPane, BorderLayout.CENTER);

// Add menu bar

createMenuBar();

setVisible(true);

private JPanel createRegularMemberPanel() {

JPanel panel = new JPanel();

panel.setLayout(null);

panel.setBackground(new Color(240, 248, 255)); // Light blue background

// Common fields

createCommonFields(panel, 20);

// Regular member specific fields

JLabel labelReferralSource = new JLabel("Referral Source:");

labelReferralSource.setBounds(20, 290, 150, 20);

panel.add(labelReferralSource);

tfReferralSource = new JTextField();

tfReferralSource.setBounds(180, 290, 200, 20);

panel.add(tfReferralSource);

JLabel labelRemovalReason = new JLabel("Removal Reason:");


labelRemovalReason.setBounds(20, 320, 150, 20);

panel.add(labelRemovalReason);

tfRemovalReason = new JTextField();

tfRemovalReason.setBounds(180, 320, 200, 20);

panel.add(tfRemovalReason);

JLabel labelPlan = new JLabel("Plan:");

labelPlan.setBounds(20, 350, 150, 20);

panel.add(labelPlan);

String[] plans = {"Basic", "Standard", "Deluxe"};

planComboBox = new JComboBox<>(plans);

planComboBox.setBounds(180, 350, 200, 20);

panel.add(planComboBox);

// Regular member buttons

JButton btnAddRegular = createStyledButton("Add Regular Member", 20, 400, 200, 30, new
Color(100, 200, 100));

btnAddRegular.addActionListener(e -> addRegularMember());

panel.add(btnAddRegular);

JButton btnRevertRegular = createStyledButton("Revert Regular Member", 240, 400, 200, 30, new
Color(200, 100, 100));

btnRevertRegular.addActionListener(e -> revertRegularMember());

panel.add(btnRevertRegular);

JButton btnUpgradePlan = createStyledButton("Upgrade Plan", 20, 440, 200, 30, new Color(100,
150, 200));

btnUpgradePlan.addActionListener(e -> upgradePlan());


panel.add(btnUpgradePlan);

return panel;

private JPanel createPremiumMemberPanel() {

JPanel panel = new JPanel();

panel.setLayout(null);

panel.setBackground(new Color(255, 240, 245)); // Light pink background

// Common fields

createCommonFields(panel, 20);

// Premium member specific fields

JLabel labelTrainerName = new JLabel("Trainer's Name:");

labelTrainerName.setBounds(20, 290, 150, 20);

panel.add(labelTrainerName);

tfTrainerName = new JTextField();

tfTrainerName.setBounds(180, 290, 200, 20);

panel.add(tfTrainerName);

JLabel labelPaidAmount = new JLabel("Paid Amount:");

labelPaidAmount.setBounds(20, 320, 150, 20);

panel.add(labelPaidAmount);

tfPaidAmount = new JTextField();

tfPaidAmount.setBounds(180, 320, 200, 20);

panel.add(tfPaidAmount);
lblPremiumCharge = new JLabel("Premium Charge: 50000.0");

lblPremiumCharge.setBounds(20, 350, 200, 20);

panel.add(lblPremiumCharge);

lblDiscountAmount = new JLabel("Discount Amount: 0.0");

lblDiscountAmount.setBounds(20, 380, 200, 20);

panel.add(lblDiscountAmount);

// Premium member buttons

JButton btnAddPremium = createStyledButton("Add Premium Member", 20, 420, 200, 30, new
Color(100, 100, 200));

btnAddPremium.addActionListener(e -> addPremiumMember());

panel.add(btnAddPremium);

JButton btnRevertPremium = createStyledButton("Revert Premium Member", 240, 420, 200, 30,


new Color(200, 100, 100));

btnRevertPremium.addActionListener(e -> revertPremiumMember());

panel.add(btnRevertPremium);

JButton btnPayDueAmount = createStyledButton("Pay Due Amount", 20, 460, 200, 30, new
Color(100, 200, 150));

btnPayDueAmount.addActionListener(e -> payDueAmount());

panel.add(btnPayDueAmount);

JButton btnCalculateDiscount = createStyledButton("Calculate Discount", 240, 460, 200, 30, new


Color(200, 150, 100));

btnCalculateDiscount.addActionListener(e -> calculateDiscount());

panel.add(btnCalculateDiscount);
return panel;

private JPanel createDisplayPanel() {

JPanel panel = new JPanel(new BorderLayout());

panel.setBackground(new Color(240, 255, 240)); // Light green background

// Create display area

displayArea = new JTextArea();

displayArea.setEditable(false);

JScrollPane scrollPane = new JScrollPane(displayArea);

// Create buttons panel

JPanel buttonPanel = new JPanel(new FlowLayout());

JButton btnDisplay = createStyledButton("Display Members", 10, 10, 180, 30, new Color(150, 150,
200));

btnDisplay.addActionListener(e -> displayMembers());

buttonPanel.add(btnDisplay);

JButton btnSaveToFile = createStyledButton("Save to File", 10, 10, 180, 30, new Color(150, 200,
150));

btnSaveToFile.addActionListener(e -> saveToFile());

buttonPanel.add(btnSaveToFile);

JButton btnReadFromFile = createStyledButton("Read from File", 10, 10, 180, 30, new Color(200,
150, 150));

btnReadFromFile.addActionListener(e -> readFromFile());

buttonPanel.add(btnReadFromFile);
JButton btnClear = createStyledButton("Clear Display", 10, 10, 180, 30, new Color(200, 100, 100));

btnClear.addActionListener(e -> displayArea.setText(""));

buttonPanel.add(btnClear);

// Add components to panel

panel.add(buttonPanel, BorderLayout.NORTH);

panel.add(scrollPane, BorderLayout.CENTER);

return panel;

private void createCommonFields(JPanel panel, int yOffset) {

// ID

JLabel labelId = new JLabel("Member ID:");

labelId.setBounds(20, yOffset, 150, 20);

panel.add(labelId);

tfId = new JTextField();

tfId.setBounds(180, yOffset, 200, 20);

panel.add(tfId);

// Name

JLabel labelName = new JLabel("Name:");

labelName.setBounds(20, yOffset + 30, 150, 20);

panel.add(labelName);

tfName = new JTextField();

tfName.setBounds(180, yOffset + 30, 200, 20);

panel.add(tfName);
// Location

JLabel labelLocation = new JLabel("Location:");

labelLocation.setBounds(20, yOffset + 60, 150, 20);

panel.add(labelLocation);

tfLocation = new JTextField();

tfLocation.setBounds(180, yOffset + 60, 200, 20);

panel.add(tfLocation);

// Phone

JLabel labelPhone = new JLabel("Phone:");

labelPhone.setBounds(20, yOffset + 90, 150, 20);

panel.add(labelPhone);

tfPhone = new JTextField();

tfPhone.setBounds(180, yOffset + 90, 200, 20);

panel.add(tfPhone);

// Email

JLabel labelEmail = new JLabel("Email:");

labelEmail.setBounds(20, yOffset + 120, 150, 20);

panel.add(labelEmail);

tfEmail = new JTextField();

tfEmail.setBounds(180, yOffset + 120, 200, 20);

panel.add(tfEmail);

// Gender
JLabel labelGender = new JLabel("Gender:");

labelGender.setBounds(20, yOffset + 150, 150, 20);

panel.add(labelGender);

rbMale = new JRadioButton("Male");

rbMale.setBounds(180, yOffset + 150, 80, 20);

panel.add(rbMale);

rbFemale = new JRadioButton("Female");

rbFemale.setBounds(260, yOffset + 150, 80, 20);

panel.add(rbFemale);

genderGroup = new ButtonGroup();

genderGroup.add(rbMale);

genderGroup.add(rbFemale);

// Date of Birth

JLabel labelDOB = new JLabel("Date of Birth:");

labelDOB.setBounds(20, yOffset + 180, 150, 20);

panel.add(labelDOB);

String[] years = new String[100];

String[] months = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"};

String[] days = new String[31];

for (int i = 0; i < 100; i++) years[i] = String.valueOf(2023 - i);

for (int i = 0; i < 31; i++) days[i] = String.valueOf(i + 1);

dobYearComboBox = new JComboBox<>(years);


dobYearComboBox.setBounds(180, yOffset + 180, 60, 20);

panel.add(dobYearComboBox);

dobMonthComboBox = new JComboBox<>(months);

dobMonthComboBox.setBounds(250, yOffset + 180, 50, 20);

panel.add(dobMonthComboBox);

dobDayComboBox = new JComboBox<>(days);

dobDayComboBox.setBounds(310, yOffset + 180, 50, 20);

panel.add(dobDayComboBox);

// Membership Start Date

JLabel labelMembershipStartDate = new JLabel("Membership Start Date:");

labelMembershipStartDate.setBounds(20, yOffset + 210, 150, 20);

panel.add(labelMembershipStartDate);

msYearComboBox = new JComboBox<>(years);

msYearComboBox.setBounds(180, yOffset + 210, 60, 20);

panel.add(msYearComboBox);

msMonthComboBox = new JComboBox<>(months);

msMonthComboBox.setBounds(250, yOffset + 210, 50, 20);

panel.add(msMonthComboBox);

msDayComboBox = new JComboBox<>(days);

msDayComboBox.setBounds(310, yOffset + 210, 50, 20);

panel.add(msDayComboBox);

// Common buttons
JButton btnActivate = createStyledButton("Activate Membership", 400, yOffset, 200, 30, new
Color(100, 200, 100));

btnActivate.addActionListener(e -> activateMembership());

panel.add(btnActivate);

JButton btnDeactivate = createStyledButton("Deactivate Membership", 400, yOffset + 40, 200, 30,


new Color(200, 100, 100));

btnDeactivate.addActionListener(e -> deactivateMembership());

panel.add(btnDeactivate);

JButton btnMarkAttendance = createStyledButton("Mark Attendance", 400, yOffset + 80, 200, 30,


new Color(100, 150, 200));

btnMarkAttendance.addActionListener(e -> markAttendance());

panel.add(btnMarkAttendance);

private JButton createStyledButton(String text, int x, int y, int width, int height, Color color) {

JButton button = new JButton(text);

button.setBounds(x, y, width, height);

button.setBackground(color);

button.setForeground(Color.WHITE);

button.setFocusPainted(false);

button.setBorder(BorderFactory.createRaisedBevelBorder());

return button;

private void createMenuBar() {

JMenuBar menuBar = new JMenuBar();

// File menu
JMenu fileMenu = new JMenu("File");

JMenuItem saveItem = new JMenuItem("Save Members");

saveItem.addActionListener(e -> saveToFile());

JMenuItem loadItem = new JMenuItem("Load Members");

loadItem.addActionListener(e -> readFromFile());

JMenuItem exitItem = new JMenuItem("Exit");

exitItem.addActionListener(e -> System.exit(0));

fileMenu.add(saveItem);

fileMenu.add(loadItem);

fileMenu.addSeparator();

fileMenu.add(exitItem);

// Help menu

JMenu helpMenu = new JMenu("Help");

JMenuItem aboutItem = new JMenuItem("About");

aboutItem.addActionListener(e -> JOptionPane.showMessageDialog(this,

"Gym Management System\nVersion 1.0", "About", JOptionPane.INFORMATION_MESSAGE));

helpMenu.add(aboutItem);

// Add menus to menu bar

menuBar.add(fileMenu);

menuBar.add(helpMenu);

setJMenuBar(menuBar);

// Action methods
private void addRegularMember() {

try {

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

if (isMemberIdExists(id)) {

JOptionPane.showMessageDialog(this, "Member ID already exists!", "Error",


JOptionPane.ERROR_MESSAGE);

return;

String name = tfName.getText();

String location = tfLocation.getText();

String phone = tfPhone.getText();

String email = tfEmail.getText();

String gender = rbMale.isSelected() ? "Male" : "Female";

String dob = dobYearComboBox.getSelectedItem() + "-" +

dobMonthComboBox.getSelectedItem() + "-" +

dobDayComboBox.getSelectedItem();

String membershipStartDate = msYearComboBox.getSelectedItem() + "-" +

msMonthComboBox.getSelectedItem() + "-" +

msDayComboBox.getSelectedItem();

String referralSource = tfReferralSource.getText();

RegularMember newMember = new RegularMember(id, name, location, phone, email,

gender, dob, membershipStartDate, referralSource);

memberList.add(newMember);
JOptionPane.showMessageDialog(this, "Regular member added successfully!", "Success",
JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e) {

JOptionPane.showMessageDialog(this, "Invalid ID format!", "Error",


JOptionPane.ERROR_MESSAGE);

} catch (Exception e) {

JOptionPane.showMessageDialog(this, "Error: " + e.getMessage(), "Error",


JOptionPane.ERROR_MESSAGE);

private void addPremiumMember() {

try {

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

if (isMemberIdExists(id)) {

JOptionPane.showMessageDialog(this, "Member ID already exists!", "Error",


JOptionPane.ERROR_MESSAGE);

return;

String name = tfName.getText();

String location = tfLocation.getText();

String phone = tfPhone.getText();

String email = tfEmail.getText();

String gender = rbMale.isSelected() ? "Male" : "Female";

String dob = dobYearComboBox.getSelectedItem() + "-" +

dobMonthComboBox.getSelectedItem() + "-" +

dobDayComboBox.getSelectedItem();
String membershipStartDate = msYearComboBox.getSelectedItem() + "-" +

msMonthComboBox.getSelectedItem() + "-" +

msDayComboBox.getSelectedItem();

String trainerName = tfTrainerName.getText();

PremiumMember newMember = new PremiumMember(id, name, location, phone, email,

gender, dob, membershipStartDate, trainerName);

memberList.add(newMember);

JOptionPane.showMessageDialog(this, "Premium member added successfully!", "Success",


JOptionPane.INFORMATION_MESSAGE);

} catch (NumberFormatException e) {

JOptionPane.showMessageDialog(this, "Invalid ID format!", "Error",


JOptionPane.ERROR_MESSAGE);

} catch (Exception e) {

JOptionPane.showMessageDialog(this, "Error: " + e.getMessage(), "Error",


JOptionPane.ERROR_MESSAGE);

private boolean isMemberIdExists(int id) {

for (GymMember member : memberList) {

if (member.getId() == id) {

return true;

return false;
}

private void activateMembership() {

try {

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

GymMember member = findMemberById(id);

if (member != null) {

member.activateMembership();

JOptionPane.showMessageDialog(this, "Membership activated successfully!", "Success",


JOptionPane.INFORMATION_MESSAGE);

} else {

JOptionPane.showMessageDialog(this, "Member not found!", "Error",


JOptionPane.ERROR_MESSAGE);

} catch (NumberFormatException e) {

JOptionPane.showMessageDialog(this, "Invalid member ID!", "Error",


JOptionPane.ERROR_MESSAGE);

private void deactivateMembership() {

try {

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

GymMember member = findMemberById(id);

if (member != null) {

member.deactivateMembership();

JOptionPane.showMessageDialog(this, "Membership deactivated successfully!", "Success",


JOptionPane.INFORMATION_MESSAGE);
} else {

JOptionPane.showMessageDialog(this, "Member not found!", "Error",


JOptionPane.ERROR_MESSAGE);

} catch (NumberFormatException e) {

JOptionPane.showMessageDialog(this, "Invalid member ID!", "Error",


JOptionPane.ERROR_MESSAGE);

private void markAttendance() {

try {

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

GymMember member = findMemberById(id);

if (member != null) {

if (member.isActiveStatus()) {

member.markAttendance();

JOptionPane.showMessageDialog(this, "Attendance marked successfully!", "Success",


JOptionPane.INFORMATION_MESSAGE);

} else {

JOptionPane.showMessageDialog(this, "Member is not active!", "Error",


JOptionPane.ERROR_MESSAGE);

} else {

JOptionPane.showMessageDialog(this, "Member not found!", "Error",


JOptionPane.ERROR_MESSAGE);

} catch (NumberFormatException e) {

JOptionPane.showMessageDialog(this, "Invalid member ID!", "Error",


JOptionPane.ERROR_MESSAGE);
}

private void upgradePlan() {

try {

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

String plan = (String) planComboBox.getSelectedItem();

for (GymMember member : memberList) {

if (member.getId() == id && member instanceof RegularMember) {

RegularMember rm = (RegularMember) member;

String result = rm.upgradePlan(plan.toLowerCase());

JOptionPane.showMessageDialog(this, result, "Plan Upgrade",


JOptionPane.INFORMATION_MESSAGE);

return;

JOptionPane.showMessageDialog(this, "Regular member not found!", "Error",


JOptionPane.ERROR_MESSAGE);

} catch (NumberFormatException e) {

JOptionPane.showMessageDialog(this, "Invalid member ID!", "Error",


JOptionPane.ERROR_MESSAGE);

private void revertRegularMember() {

try {

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

String removalReason = tfRemovalReason.getText();


for (GymMember member : memberList) {

if (member.getId() == id && member instanceof RegularMember) {

((RegularMember) member).revertRegularMember(removalReason);

JOptionPane.showMessageDialog(this, "Regular member reverted successfully!", "Success",


JOptionPane.INFORMATION_MESSAGE);

return;

JOptionPane.showMessageDialog(this, "Regular member not found!", "Error",


JOptionPane.ERROR_MESSAGE);

} catch (NumberFormatException e) {

JOptionPane.showMessageDialog(this, "Invalid member ID!", "Error",


JOptionPane.ERROR_MESSAGE);

private void revertPremiumMember() {

try {

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

for (GymMember member : memberList) {

if (member.getId() == id && member instanceof PremiumMember) {

((PremiumMember) member).revertPremiumMember();

JOptionPane.showMessageDialog(this, "Premium member reverted successfully!", "Success",


JOptionPane.INFORMATION_MESSAGE);

return;

JOptionPane.showMessageDialog(this, "Premium member not found!", "Error",


JOptionPane.ERROR_MESSAGE);
} catch (NumberFormatException e) {

JOptionPane.showMessageDialog(this, "Invalid member ID!", "Error",


JOptionPane.ERROR_MESSAGE);

private void payDueAmount() {

try {

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

double amount = Double.parseDouble(tfPaidAmount.getText());

for (GymMember member : memberList) {

if (member.getId() == id && member instanceof PremiumMember) {

PremiumMember pm = (PremiumMember) member;

String result = pm.payDueAmount(amount);

JOptionPane.showMessageDialog(this, result, "Payment",


JOptionPane.INFORMATION_MESSAGE);

lblDiscountAmount.setText("Discount Amount: " + pm.getDiscountAmount());

return;

JOptionPane.showMessageDialog(this, "Premium member not found!", "Error",


JOptionPane.ERROR_MESSAGE);

} catch (NumberFormatException e) {

JOptionPane.showMessageDialog(this, "Invalid amount format!", "Error",


JOptionPane.ERROR_MESSAGE);

private void calculateDiscount() {


try {

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

for (GymMember member : memberList) {

if (member.getId() == id && member instanceof PremiumMember) {

PremiumMember pm = (PremiumMember) member;

pm.calculateDiscount();

lblDiscountAmount.setText("Discount Amount: " + pm.getDiscountAmount());

JOptionPane.showMessageDialog(this, "Discount calculated successfully!", "Success",


JOptionPane.INFORMATION_MESSAGE);

return;

JOptionPane.showMessageDialog(this, "Premium member not found!", "Error",


JOptionPane.ERROR_MESSAGE);

} catch (NumberFormatException e) {

JOptionPane.showMessageDialog(this, "Invalid member ID!", "Error",


JOptionPane.ERROR_MESSAGE);

private void displayMembers() {

displayArea.setText("");

if (memberList.isEmpty()) {

displayArea.append("No members found in the system.\n");

return;

for (GymMember member : memberList) {


displayArea.append("Member Type: " + (member instanceof RegularMember ? "Regular" :
"Premium") + "\n");

displayArea.append("ID: " + member.getId() + "\n");

displayArea.append("Name: " + member.getName() + "\n");

displayArea.append("Location: " + member.getLocation() + "\n");

displayArea.append("Phone: " + member.getPhone() + "\n");

displayArea.append("Email: " + member.getEmail() + "\n");

displayArea.append("Gender: " + member.getGender() + "\n");

displayArea.append("DOB: " + member.getDOB() + "\n");

displayArea.append("Membership Start Date: " + member.getMembershipStartDate() + "\n");

displayArea.append("Attendance: " + member.getAttendance() + "\n");

displayArea.append("Loyalty Points: " + member.getLoyaltyPoints() + "\n");

displayArea.append("Active Status: " + member.isActiveStatus() + "\n");

if (member instanceof RegularMember) {

RegularMember rm = (RegularMember) member;

displayArea.append("Plan: " + rm.getPlan() + "\n");

displayArea.append("Price: " + rm.getPrice() + "\n");

displayArea.append("Referral Source: " + rm.getReferralSource() + "\n");

if (!rm.getRemovalReason().isEmpty()) {

displayArea.append("Removal Reason: " + rm.getRemovalReason() + "\n");

} else if (member instanceof PremiumMember) {

PremiumMember pm = (PremiumMember) member;

displayArea.append("Personal Trainer: " + pm.getPersonalTrainer() + "\n");

displayArea.append("Paid Amount: " + pm.getPaidAmount() + "\n");

displayArea.append("Premium Charge: " + pm.getPremiumCharge() + "\n");

displayArea.append("Is Full Payment: " + pm.getIsFullPayment() + "\n");

if (pm.getIsFullPayment()) {
displayArea.append("Discount Amount: " + pm.getDiscountAmount() + "\n");

displayArea.append("\n----------------------------------------\n\n");

private void saveToFile() {

try (FileWriter writer = new FileWriter("MemberDetails.txt")) {

writer.write(String.format("%-5s %-15s %-15s %-15s %-25s %-20s %-10s %-10s %-10s %-15s %-10s
%-15s %-15s %-15s\n",

"ID", "Name", "Location", "Phone", "Email", "Membership Start Date", "Plan", "Price",

"Attendance", "Loyalty Points", "Active", "Full Payment", "Discount", "Net Paid"));

for (GymMember member : memberList) {

String type = member instanceof RegularMember ? "Regular" : "Premium";

String plan = "";

double price = 0;

boolean fullPayment = false;

double discount = 0;

double netPaid = 0;

if (member instanceof RegularMember) {

RegularMember rm = (RegularMember) member;

plan = rm.getPlan();

price = rm.getPrice();

} else if (member instanceof PremiumMember) {

PremiumMember pm = (PremiumMember) member;


plan = "Premium";

price = pm.getPremiumCharge();

fullPayment = pm.getIsFullPayment();

discount = pm.getDiscountAmount();

netPaid = pm.getPaidAmount();

writer.write(String.format("%-5d %-15s %-15s %-15s %-25s %-20s %-10s %-10.2f %-10d %-15.2f
%-10s %-15s %-15.2f %-15.2f\n",

member.getId(), member.getName(), member.getLocation(), member.getPhone(),

member.getEmail(), member.getMembershipStartDate(), plan, price,

member.getAttendance(), member.getLoyaltyPoints(), member.isActiveStatus(),

fullPayment, discount, netPaid));

JOptionPane.showMessageDialog(this, "Member details saved to file successfully!", "Success",


JOptionPane.INFORMATION_MESSAGE);

} catch (IOException e) {

JOptionPane.showMessageDialog(this, "Error saving to file: " + e.getMessage(), "Error",


JOptionPane.ERROR_MESSAGE);

private void readFromFile() {

try (BufferedReader reader = new BufferedReader(new FileReader("MemberDetails.txt"))) {

// Skip header line

reader.readLine();

String line;

displayArea.setText("");
displayArea.append("Member Details from File:\n\n");

while ((line = reader.readLine()) != null) {

displayArea.append(line + "\n");

JOptionPane.showMessageDialog(this, "Member details loaded from file successfully!",


"Success", JOptionPane.INFORMATION_MESSAGE);

} catch (FileNotFoundException e) {

JOptionPane.showMessageDialog(this, "File not found!", "Error", JOptionPane.ERROR_MESSAGE);

} catch (IOException e) {

JOptionPane.showMessageDialog(this, "Error reading file: " + e.getMessage(), "Error",


JOptionPane.ERROR_MESSAGE);

private GymMember findMemberById(int id) {

for (GymMember member : memberList) {

if (member.getId() == id) {

return member;

return null;

@Override

public void actionPerformed(ActionEvent e) {

// Implemented for interface, but we're using lambda expressions for button actions

}
}

You might also like