import java1
import java1
*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.io.*;
new GymGUI();
// Main components
// Common components
// Display components
public GymGUI() {
setSize(900, 700);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
// Create panels
regularMemberPanel = createRegularMemberPanel();
premiumMemberPanel = createPremiumMemberPanel();
displayPanel = createDisplayPanel();
add(tabbedPane, BorderLayout.CENTER);
createMenuBar();
setVisible(true);
panel.setLayout(null);
// Common fields
createCommonFields(panel, 20);
panel.add(labelReferralSource);
panel.add(tfReferralSource);
panel.add(labelRemovalReason);
panel.add(tfRemovalReason);
panel.add(labelPlan);
panel.add(planComboBox);
JButton btnAddRegular = createStyledButton("Add Regular Member", 20, 400, 200, 30, new
Color(100, 200, 100));
panel.add(btnAddRegular);
JButton btnRevertRegular = createStyledButton("Revert Regular Member", 240, 400, 200, 30, new
Color(200, 100, 100));
panel.add(btnRevertRegular);
JButton btnUpgradePlan = createStyledButton("Upgrade Plan", 20, 440, 200, 30, new Color(100,
150, 200));
return panel;
panel.setLayout(null);
// Common fields
createCommonFields(panel, 20);
panel.add(labelTrainerName);
panel.add(tfTrainerName);
panel.add(labelPaidAmount);
panel.add(tfPaidAmount);
lblPremiumCharge = new JLabel("Premium Charge: 50000.0");
panel.add(lblPremiumCharge);
panel.add(lblDiscountAmount);
JButton btnAddPremium = createStyledButton("Add Premium Member", 20, 420, 200, 30, new
Color(100, 100, 200));
panel.add(btnAddPremium);
panel.add(btnRevertPremium);
JButton btnPayDueAmount = createStyledButton("Pay Due Amount", 20, 460, 200, 30, new
Color(100, 200, 150));
panel.add(btnPayDueAmount);
panel.add(btnCalculateDiscount);
return panel;
displayArea.setEditable(false);
JButton btnDisplay = createStyledButton("Display Members", 10, 10, 180, 30, new Color(150, 150,
200));
buttonPanel.add(btnDisplay);
JButton btnSaveToFile = createStyledButton("Save to File", 10, 10, 180, 30, new Color(150, 200,
150));
buttonPanel.add(btnSaveToFile);
JButton btnReadFromFile = createStyledButton("Read from File", 10, 10, 180, 30, new Color(200,
150, 150));
buttonPanel.add(btnReadFromFile);
JButton btnClear = createStyledButton("Clear Display", 10, 10, 180, 30, new Color(200, 100, 100));
buttonPanel.add(btnClear);
panel.add(buttonPanel, BorderLayout.NORTH);
panel.add(scrollPane, BorderLayout.CENTER);
return panel;
// ID
panel.add(labelId);
panel.add(tfId);
// Name
panel.add(labelName);
panel.add(tfName);
// Location
panel.add(labelLocation);
panel.add(tfLocation);
// Phone
panel.add(labelPhone);
panel.add(tfPhone);
panel.add(labelEmail);
panel.add(tfEmail);
// Gender
JLabel labelGender = new JLabel("Gender:");
panel.add(labelGender);
panel.add(rbMale);
panel.add(rbFemale);
genderGroup.add(rbMale);
genderGroup.add(rbFemale);
// Date of Birth
panel.add(labelDOB);
String[] months = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"};
panel.add(dobYearComboBox);
panel.add(dobMonthComboBox);
panel.add(dobDayComboBox);
panel.add(labelMembershipStartDate);
panel.add(msYearComboBox);
panel.add(msMonthComboBox);
panel.add(msDayComboBox);
// Common buttons
JButton btnActivate = createStyledButton("Activate Membership", 400, yOffset, 200, 30, new
Color(100, 200, 100));
panel.add(btnActivate);
panel.add(btnDeactivate);
panel.add(btnMarkAttendance);
private JButton createStyledButton(String text, int x, int y, int width, int height, Color color) {
button.setBackground(color);
button.setForeground(Color.WHITE);
button.setFocusPainted(false);
button.setBorder(BorderFactory.createRaisedBevelBorder());
return button;
// File menu
JMenu fileMenu = new JMenu("File");
fileMenu.add(saveItem);
fileMenu.add(loadItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
// Help menu
helpMenu.add(aboutItem);
menuBar.add(fileMenu);
menuBar.add(helpMenu);
setJMenuBar(menuBar);
// Action methods
private void addRegularMember() {
try {
int id = Integer.parseInt(tfId.getText());
if (isMemberIdExists(id)) {
return;
dobMonthComboBox.getSelectedItem() + "-" +
dobDayComboBox.getSelectedItem();
msMonthComboBox.getSelectedItem() + "-" +
msDayComboBox.getSelectedItem();
memberList.add(newMember);
JOptionPane.showMessageDialog(this, "Regular member added successfully!", "Success",
JOptionPane.INFORMATION_MESSAGE);
} catch (NumberFormatException e) {
} catch (Exception e) {
try {
int id = Integer.parseInt(tfId.getText());
if (isMemberIdExists(id)) {
return;
dobMonthComboBox.getSelectedItem() + "-" +
dobDayComboBox.getSelectedItem();
String membershipStartDate = msYearComboBox.getSelectedItem() + "-" +
msMonthComboBox.getSelectedItem() + "-" +
msDayComboBox.getSelectedItem();
memberList.add(newMember);
} catch (NumberFormatException e) {
} catch (Exception e) {
if (member.getId() == id) {
return true;
return false;
}
try {
int id = Integer.parseInt(tfId.getText());
if (member != null) {
member.activateMembership();
} else {
} catch (NumberFormatException e) {
try {
int id = Integer.parseInt(tfId.getText());
if (member != null) {
member.deactivateMembership();
} catch (NumberFormatException e) {
try {
int id = Integer.parseInt(tfId.getText());
if (member != null) {
if (member.isActiveStatus()) {
member.markAttendance();
} else {
} else {
} catch (NumberFormatException e) {
try {
int id = Integer.parseInt(tfId.getText());
return;
} catch (NumberFormatException e) {
try {
int id = Integer.parseInt(tfId.getText());
((RegularMember) member).revertRegularMember(removalReason);
return;
} catch (NumberFormatException e) {
try {
int id = Integer.parseInt(tfId.getText());
((PremiumMember) member).revertPremiumMember();
return;
try {
int id = Integer.parseInt(tfId.getText());
return;
} catch (NumberFormatException e) {
int id = Integer.parseInt(tfId.getText());
pm.calculateDiscount();
return;
} catch (NumberFormatException e) {
displayArea.setText("");
if (memberList.isEmpty()) {
return;
if (!rm.getRemovalReason().isEmpty()) {
if (pm.getIsFullPayment()) {
displayArea.append("Discount Amount: " + pm.getDiscountAmount() + "\n");
displayArea.append("\n----------------------------------------\n\n");
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",
double price = 0;
double discount = 0;
double netPaid = 0;
plan = rm.getPlan();
price = rm.getPrice();
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",
} catch (IOException e) {
reader.readLine();
String line;
displayArea.setText("");
displayArea.append("Member Details from File:\n\n");
displayArea.append(line + "\n");
} catch (FileNotFoundException e) {
} catch (IOException e) {
if (member.getId() == id) {
return member;
return null;
@Override
// Implemented for interface, but we're using lambda expressions for button actions
}
}