0% found this document useful (0 votes)
10 views28 pages

Transportation System

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)
10 views28 pages

Transportation System

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/ 28

Contents

Breakdown of components:........................................................................................................................2
1. Main System........................................................................................................................................2
2. Login Interface.....................................................................................................................................2
3. Bus Management.................................................................................................................................2
4. Route Management.............................................................................................................................2
5. Employee Management.......................................................................................................................2
6. Passenger Management......................................................................................................................2
7. Data Base Connection..........................................................................................................................3
Key Components.........................................................................................................................................3
1. MainSystem.java:............................................................................................................................3
2. LoginInterface.java..........................................................................................................................4
3. Bus.java...........................................................................................................................................5
4. Route.java......................................................................................................................................10
5. Employee.java...............................................................................................................................14
6. Passenger.java...............................................................................................................................19
7. DBConnection.java:.......................................................................................................................24
GUI Interface.............................................................................................................................................24

Breakdown of components:
1. Main System
 Acts as the entry point of the application.

 Displays the main system GUI after a successful login.

 Manages buses, routes, employees, and passengers using buttons in a JFrame window.

 Uses ArrayLists to store information about buses, routes, employees, and passengers.

2. Login Interface
 Provides a simple login interface.

 Validates the user's credentials (USERNAME: Thar, PASSWORD: bhrumbhrum).

 On successful login, it calls the openMainSystem() method to display the main system interface.

3. Bus Management
 Manages the buses in the transportation system.

 Allows adding, updating, and deleting buses through a GUI interface.

 Connects to the database to perform CRUD (Create, Read, Update, Delete) operations on bus
data, such as type, engine number, and seating capacity.

 Uses JDBC (Java Database Connectivity) to interact with a MySQL database.

4. Route Management
 Manages routes, enabling users to add, update, and delete routes in the system.

 The route information includes route number, start location, and destination.

 Like Bus.java, it also connects to the database using JDBC to perform CRUD operations.

5. Employee Management
 Handles employee management.

 Allows the user to add, update, and delete employees by interacting with the database.

 Stores employee details such as employee ID, name, and role.

6. Passenger Management
 Manages passenger information, such as name, contact number, and ticket number.

 The user can add, update, or delete passenger records from the database through the GUI.

 Uses similar JDBC operations for database interaction.

7. Data Base Connection


 Provides a utility class to establish and manage the database connection.

 Connects to a MySQL database with credentials and a URL to handle database operations for
buses, routes, employees, and passengers.

Key Components
1. MainSystem.java: The main class initializes the system, managing buses, routes, employees,
and passengers through buttons on the GUI after login.

Code:
import javax.swing.*;
import java.awt.event.*;
import java.util.ArrayList;

public class MainSystem {

// Shared data structures


static ArrayList<Bus> buses = new ArrayList<>();
static ArrayList<Route> routes = new ArrayList<>();
static ArrayList<Employee> employees = new ArrayList<>();
static ArrayList<Passenger> passengers = new ArrayList<>();

public static void main(String[] args) {


// Call login interface
new LoginInterface().displayLogin();
}

// Method to open the main system after successful login


public static void openMainSystem() {
JFrame frame = new JFrame("Transportation Management System");
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);

// Create and add buttons for managing different entities


addButton(frame, "Manage Buses", 50, 50, e -> new
Bus().manageBus(buses));
addButton(frame, "Manage Routes", 50, 100, e -> new
Route().manageRoute(routes));
addButton(frame, "Manage Employees", 50, 150, e -> new
Employee().manageEmployee(employees));
addButton(frame, "Manage Passengers", 50, 200, e -> new
Passenger().managePassenger(passengers));
frame.setVisible(true);
}

// Helper method to add buttons


private static void addButton(JFrame frame, String text, int x, int y,
ActionListener actionListener) {
JButton button = new JButton(text);
button.setBounds(x, y, 150, 30);
button.addActionListener(actionListener);
frame.add(button);
}
}

2. LoginInterface.java: Handles user authentication with predefined credentials. After


successful login, it directs to the main system interface.

Code:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class LoginInterface {

private static final String USERNAME = "Thar";


private static final String PASSWORD = "bhrumbhrum";

public void displayLogin() {


JFrame loginFrame = new JFrame("Login");
loginFrame.setSize(400, 200);
loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JLabel labelUsername = new JLabel("Username:");


JTextField fieldUsername = new JTextField();
JLabel labelPassword = new JLabel("Password:");
JPasswordField fieldPassword = new JPasswordField();
JButton loginButton = new JButton("Login");

loginFrame.setLayout(null);
labelUsername.setBounds(50, 30, 100, 25);
fieldUsername.setBounds(150, 30, 200, 25);
labelPassword.setBounds(50, 70, 100, 25);
fieldPassword.setBounds(150, 70, 200, 25);
loginButton.setBounds(150, 110, 100, 30);

loginFrame.add(labelUsername);
loginFrame.add(fieldUsername);
loginFrame.add(labelPassword);
loginFrame.add(fieldPassword);
loginFrame.add(loginButton);

loginFrame.setVisible(true);

loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String enteredUsername = fieldUsername.getText();
String enteredPassword = new
String(fieldPassword.getPassword());

if (USERNAME.equals(enteredUsername) &&
PASSWORD.equals(enteredPassword)) {
loginFrame.dispose();
MainSystem.openMainSystem();
} else {
JOptionPane.showMessageDialog(loginFrame, "Invalid
Username or Password", "Error", JOptionPane.ERROR_MESSAGE);
}
}
});
}
}

3. Bus.java: Manages bus-related operations such as adding, updating, and deleting bus records.
It interacts with a MySQL database to perform CRUD (Create, Read, Update, Delete) operations.

Code:
import javax.swing.*;
import java.sql.*;
import java.util.ArrayList;
public class Bus {
private String type;
private String engineNumber;
private int seatingCapacity;

public Bus(String type, String engineNumber, int seatingCapacity) {


this.type = type;
this.engineNumber = engineNumber;
this.seatingCapacity = seatingCapacity;
}

public Bus() {}

public void manageBus(ArrayList<Bus> busList) {


JFrame busFrame = new JFrame("Bus Management");
busFrame.setSize(400, 400);
busFrame.setLayout(null);

JTextArea displayArea = new JTextArea();


displayArea.setBounds(20, 20, 350, 200);
busFrame.add(displayArea);

JTextField typeField = new JTextField();


JTextField engineField = new JTextField();
JTextField capacityField = new JTextField();

typeField.setBounds(120, 230, 150, 30);


engineField.setBounds(120, 270, 150, 30);
capacityField.setBounds(120, 310, 150, 30);

busFrame.add(new JLabel("Bus Type:")).setBounds(20, 230, 100, 30);


busFrame.add(new JLabel("Engine Number:")).setBounds(20, 270, 100,
30);
busFrame.add(new JLabel("Seating Capacity:")).setBounds(20, 310,
100, 30);

busFrame.add(typeField);
busFrame.add(engineField);
busFrame.add(capacityField);

JButton saveButton = new JButton("Add Bus");


saveButton.setBounds(280, 230, 100, 30);
busFrame.add(saveButton);

JButton updateButton = new JButton("Update Bus");


updateButton.setBounds(280, 270, 100, 30);
busFrame.add(updateButton);

JButton deleteButton = new JButton("Delete Bus");


deleteButton.setBounds(280, 310, 100, 30);
busFrame.add(deleteButton);

saveButton.addActionListener(e -> {
try {
String type = typeField.getText();
String engineNumber = engineField.getText();
int capacity = Integer.parseInt(capacityField.getText());

Bus bus = new Bus(type, engineNumber, capacity);


bus.saveToDatabase(); // Save to DB

updateDisplay(displayArea); // Show updated list


clearFields(typeField, engineField, capacityField);
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(busFrame, "Please enter a
valid number for seating capacity.", "Input Error",
JOptionPane.ERROR_MESSAGE);
}
});

updateButton.addActionListener(e -> {
String engineNumber = engineField.getText();
if (engineNumber.trim().isEmpty()) {
JOptionPane.showMessageDialog(busFrame, "Engine number is
required for updating a record.", "Error", JOptionPane.ERROR_MESSAGE);
return;
}
String type = typeField.getText();
int capacity;
try {
capacity = Integer.parseInt(capacityField.getText());
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(busFrame, "Please enter a
valid number for seating capacity.", "Input Error",
JOptionPane.ERROR_MESSAGE);
return;
}

Bus bus = new Bus(type, engineNumber, capacity);


bus.updateInDatabase();

updateDisplay(displayArea); clearFields(typeField,
engineField, capacityField);
});

deleteButton.addActionListener(e -> {
String engineNumber = engineField.getText();
if (engineNumber.trim().isEmpty()) {
JOptionPane.showMessageDialog(busFrame, "Engine number is
required to delete a record.", "Error", JOptionPane.ERROR_MESSAGE);
return;
}

Bus bus = new Bus();


bus.deleteFromDatabase(engineNumber);
updateDisplay(displayArea);
clearFields(typeField, engineField, capacityField);
});

busFrame.setVisible(true);
updateDisplay(displayArea);
}

private void clearFields(JTextField... fields) {


for (JTextField field : fields) {
field.setText("");
}
}

public void saveToDatabase() {


try (Connection conn = DBConnection.getConnection()) {
String query = "INSERT INTO bus (type, engine_number,
seating_capacity) VALUES (?, ?, ?)";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, this.type);
stmt.setString(2, this.engineNumber);
stmt.setInt(3, this.seatingCapacity);
stmt.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}

public void updateInDatabase() {


try (Connection conn = DBConnection.getConnection()) {
String query = "UPDATE bus SET type = ?, seating_capacity = ?
WHERE engine_number = ?";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, this.type);
stmt.setInt(2, this.seatingCapacity);
stmt.setString(3, this.engineNumber);
int rowsAffected = stmt.executeUpdate();
if (rowsAffected == 0) {
JOptionPane.showMessageDialog(null, "No bus found with
the given engine number.", "Update Error", JOptionPane.ERROR_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Bus record updated
successfully!", "Success", JOptionPane.INFORMATION_MESSAGE);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}

public void deleteFromDatabase(String engineNumber) {


try (Connection conn = DBConnection.getConnection()) {
String query = "DELETE FROM bus WHERE engine_number = ?";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, engineNumber);
int rowsAffected = stmt.executeUpdate();
if (rowsAffected == 0) {
JOptionPane.showMessageDialog(null, "No bus found with
the given engine number.", "Delete Error", JOptionPane.ERROR_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Bus record deleted
successfully!", "Success", JOptionPane.INFORMATION_MESSAGE);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}

private void updateDisplay(JTextArea displayArea) {


try (Connection conn = DBConnection.getConnection()) {
String query = "SELECT * FROM bus";
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query)) {

StringBuilder displayText = new StringBuilder("Buses:\n");


while (rs.next()) {
displayText.append("Bus Type:
").append(rs.getString("type"))
.append(", Engine No:
").append(rs.getString("engine_number"))
.append(", Seating Capacity:
").append(rs.getInt("seating_capacity"))
.append("\n");
}
displayArea.setText(displayText.toString());
}
} catch (SQLException e) {
e.printStackTrace();
}
}

@Override
public String toString() {
return "Bus Type: " + type + ", Engine No: " + engineNumber + ",
Seating Capacity: " + seatingCapacity;
}
}

4. Route.java: Similar to Bus.java, it manages routes in the system by allowing the user to add,
update, and delete routes with database interactions.

Code:
import javax.swing.*;
import java.sql.*;
import java.util.ArrayList;

public class Route {


private String routeNumber;
private String startLocation;
private String destination;

public Route(String routeNumber, String startLocation, String destination)


{
this.routeNumber = routeNumber;
this.startLocation = startLocation;
this.destination = destination;
}
public Route() {}
public void manageRoute(ArrayList<Route> routeList) {
JFrame routeFrame = new JFrame("Route Management");
routeFrame.setSize(400, 400);
routeFrame.setLayout(null);

JTextArea displayArea = new JTextArea();


displayArea.setBounds(20, 20, 350, 200);
routeFrame.add(displayArea);

JTextField routeField = new JTextField();


JTextField startField = new JTextField();
JTextField destinationField = new JTextField();

routeField.setBounds(120, 230, 150, 30);


startField.setBounds(120, 270, 150, 30);
destinationField.setBounds(120, 310, 150, 30);

routeFrame.add(new JLabel("Route Number:")).setBounds(20, 230, 100,


30);
routeFrame.add(new JLabel("Start Location:")).setBounds(20, 270, 100,
30);
routeFrame.add(new JLabel("Destination:")).setBounds(20, 310, 100,
30);

routeFrame.add(routeField);
routeFrame.add(startField);
routeFrame.add(destinationField);

JButton saveButton = new JButton("Add Route");


saveButton.setBounds(280, 230, 100, 30);
routeFrame.add(saveButton);

JButton updateButton = new JButton("Update Route");


updateButton.setBounds(280, 270, 100, 30);
routeFrame.add(updateButton);

JButton deleteButton = new JButton("Delete Route");


deleteButton.setBounds(280, 310, 100, 30);
routeFrame.add(deleteButton);

saveButton.addActionListener(e -> {
String routeNumber = routeField.getText();
String startLocation = startField.getText();
String destination = destinationField.getText();

Route route = new Route(routeNumber, startLocation, destination);


route.saveToDatabase();

updateDisplay(displayArea);
clearFields(routeField, startField, destinationField);
});

updateButton.addActionListener(e -> {
String routeNumber = routeField.getText();
if (routeNumber.trim().isEmpty()) {
JOptionPane.showMessageDialog(routeFrame, "Route number is
required for updating a record.", "Error", JOptionPane.ERROR_MESSAGE);
return;
}
String startLocation = startField.getText();
String destination = destinationField.getText();
Route route = new Route(routeNumber, startLocation, destination);
route.updateInDatabase();

updateDisplay(displayArea);
clearFields(routeField, startField, destinationField);
});

deleteButton.addActionListener(e -> {
String routeNumber = routeField.getText();
if (routeNumber.trim().isEmpty()) {
JOptionPane.showMessageDialog(routeFrame, "Route number is
required to delete a record.", "Error", JOptionPane.ERROR_MESSAGE);
return;
}

Route route = new Route();


route.deleteFromDatabase(routeNumber);

updateDisplay(displayArea);
clearFields(routeField, startField, destinationField);
});

routeFrame.setVisible(true);
updateDisplay(displayArea);
}

private void clearFields(JTextField... fields) {


for (JTextField field : fields) {
field.setText("");
}
}

public void saveToDatabase() {


try (Connection conn = DBConnection.getConnection()) {
String query = "INSERT INTO route (route_number, start_location,
destination) VALUES (?, ?, ?)";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, this.routeNumber);
stmt.setString(2, this.startLocation);
stmt.setString(3, this.destination);
stmt.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public void updateInDatabase() {
try (Connection conn = DBConnection.getConnection()) {
String query = "UPDATE route SET start_location = ?, destination =
? WHERE route_number = ?";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, this.startLocation);
stmt.setString(2, this.destination);
stmt.setString(3, this.routeNumber);
int rowsAffected = stmt.executeUpdate();
if (rowsAffected == 0) {
JOptionPane.showMessageDialog(null, "No route found with
the given route number.", "Update Error", JOptionPane.ERROR_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Route record updated
successfully!", "Success", JOptionPane.INFORMATION_MESSAGE);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}

public void deleteFromDatabase(String routeNumber) {


try (Connection conn = DBConnection.getConnection()) {
String query = "DELETE FROM route WHERE route_number = ?";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, routeNumber);
int rowsAffected = stmt.executeUpdate();
if (rowsAffected == 0) {
JOptionPane.showMessageDialog(null, "No route found with
the given route number.", "Delete Error", JOptionPane.ERROR_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Route record deleted
successfully!", "Success", JOptionPane.INFORMATION_MESSAGE);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}

private void updateDisplay(JTextArea displayArea) {


try (Connection conn = DBConnection.getConnection()) {
String query = "SELECT * FROM route";
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query)) {

StringBuilder displayText = new StringBuilder("Routes:\n");


while (rs.next()) {
displayText.append("Route No:
").append(rs.getString("route_number"))
.append(", Start:
").append(rs.getString("start_location"))
.append(", Destination:
").append(rs.getString("destination"))
.append("\n");
}
displayArea.setText(displayText.toString());
}
} catch (SQLException e) {
e.printStackTrace();
}
}

@Override
public String toString() {
return "Route No: " + routeNumber + ", Start: " + startLocation + ",
Destination: " + destination;
}
}

5. Employee.java: Handles the management of employees in the system, including adding,


updating, and deleting employee records in the database.

Code:

import javax.swing.*;
import java.sql.*;
import java.util.ArrayList;
public class Employee {
private String employeeID;
private String name;
private String role;

public Employee(String employeeID, String name, String role) {


this.employeeID = employeeID;
this.name = name;
this.role = role;
}

public Employee() {}
public void manageEmployee(ArrayList<Employee> employeeList) {
JFrame employeeFrame = new JFrame("Employee Management");
employeeFrame.setSize(400, 400);
employeeFrame.setLayout(null);

JTextArea displayArea = new JTextArea();


displayArea.setBounds(20, 20, 350, 200);
employeeFrame.add(displayArea);

JTextField idField = new JTextField();


JTextField nameField = new JTextField();
JTextField roleField = new JTextField();

idField.setBounds(120, 230, 150, 30);


nameField.setBounds(120, 270, 150, 30);
roleField.setBounds(120, 310, 150, 30);

employeeFrame.add(new JLabel("Employee ID:")).setBounds(20, 230, 100, 30);


employeeFrame.add(new JLabel("Name:")).setBounds(20, 270, 100, 30);
employeeFrame.add(new JLabel("Role:")).setBounds(20, 310, 100, 30);

employeeFrame.add(idField);
employeeFrame.add(nameField);
employeeFrame.add(roleField);

JButton saveButton = new JButton("Add Employee");


saveButton.setBounds(280, 230, 100, 30);
employeeFrame.add(saveButton);

JButton updateButton = new JButton("Update Employee");


updateButton.setBounds(280, 270, 100, 30);
employeeFrame.add(updateButton);

JButton deleteButton = new JButton("Delete Employee");


deleteButton.setBounds(280, 310, 100, 30);
employeeFrame.add(deleteButton);
saveButton.addActionListener(e -> {
String employeeID = idField.getText();
String name = nameField.getText();
String role = roleField.getText();

Employee employee = new Employee(employeeID, name, role);


employee.saveToDatabase();

updateDisplay(displayArea);
clearFields(idField, nameField, roleField);
});

updateButton.addActionListener(e -> {
String employeeID = idField.getText();
if (employeeID.trim().isEmpty()) {
JOptionPane.showMessageDialog(employeeFrame, "Employee ID is required for updating a
record.", "Error", JOptionPane.ERROR_MESSAGE);
return;
}
String name = nameField.getText();
String role = roleField.getText();

Employee employee = new Employee(employeeID, name, role);


employee.updateInDatabase();

updateDisplay(displayArea);
clearFields(idField, nameField, roleField);
});

deleteButton.addActionListener(e -> {
String employeeID = idField.getText();
if (employeeID.trim().isEmpty()) {
JOptionPane.showMessageDialog(employeeFrame, "Employee ID is required to delete a
record.", "Error", JOptionPane.ERROR_MESSAGE);
return;
}
Employee employee = new Employee();
employee.deleteFromDatabase(employeeID);

updateDisplay(displayArea);
clearFields(idField, nameField, roleField);
});

employeeFrame.setVisible(true);
updateDisplay(displayArea);
}

private void clearFields(JTextField... fields) {


for (JTextField field : fields) {
field.setText("");
}
}

public void saveToDatabase() {


try (Connection conn = DBConnection.getConnection()) {
String query = "INSERT INTO employee (employee_id, name, role) VALUES (?, ?, ?)";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, this.employeeID);
stmt.setString(2, this.name);
stmt.setString(3, this.role);
stmt.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}

public void updateInDatabase() {


try (Connection conn = DBConnection.getConnection()) {
String query = "UPDATE employee SET name = ?, role = ? WHERE employee_id = ?";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, this.name);
stmt.setString(2, this.role);
stmt.setString(3, this.employeeID);
int rowsAffected = stmt.executeUpdate();
if (rowsAffected == 0) {
JOptionPane.showMessageDialog(null, "No employee found with the given ID.", "Update
Error", JOptionPane.ERROR_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Employee record updated successfully!", "Success",
JOptionPane.INFORMATION_MESSAGE);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}

public void deleteFromDatabase(String employeeID) {


try (Connection conn = DBConnection.getConnection()) {
String query = "DELETE FROM employee WHERE employee_id = ?";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, employeeID);
int rowsAffected = stmt.executeUpdate();
if (rowsAffected == 0) {
JOptionPane.showMessageDialog(null, "No employee found with the given ID.", "Delete
Error", JOptionPane.ERROR_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Employee record deleted successfully!", "Success",
JOptionPane.INFORMATION_MESSAGE);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}

private void updateDisplay(JTextArea displayArea) {


try (Connection conn = DBConnection.getConnection()) {
String query = "SELECT * FROM employee";
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query)) {
StringBuilder displayText = new StringBuilder("Employees:\n");
while (rs.next()) {
displayText.append("Employee ID: ").append(rs.getString("employee_id"))
.append(", Name: ").append(rs.getString("name"))
.append(", Role: ").append(rs.getString("role"))
.append("\n");
}
displayArea.setText(displayText.toString());
}
} catch (SQLException e) {
e.printStackTrace();
}
}

@Override
public String toString() {
return "Employee ID: " + employeeID + ", Name: " + name + ", Role: " + role;
}
}

6. Passenger.java: Manages passengers' data, including their names, contact numbers, and ticket
numbers, with database CRUD operations.

Code:
import javax.swing.*;
import java.sql.*;
import java.util.ArrayList;

public class Passenger {


private String name;
private String contactNumber;
private String ticketNumber;

public Passenger(String name, String contactNumber, String


ticketNumber) {
this.name = name;
this.contactNumber = contactNumber;
this.ticketNumber = ticketNumber;
}

public Passenger() {}
public void managePassenger(ArrayList<Passenger> passengerList) {
JFrame passengerFrame = new JFrame("Passenger Management");
passengerFrame.setSize(400, 400);
passengerFrame.setLayout(null);

JTextArea displayArea = new JTextArea();


displayArea.setBounds(20, 20, 350, 200);
passengerFrame.add(displayArea);

JTextField nameField = new JTextField();


JTextField contactField = new JTextField();
JTextField ticketField = new JTextField();

nameField.setBounds(120, 230, 150, 30);


contactField.setBounds(120, 270, 150, 30);
ticketField.setBounds(120, 310, 150, 30);

passengerFrame.add(new JLabel("Name:")).setBounds(20, 230, 100,


30);
passengerFrame.add(new JLabel("Contact Number:")).setBounds(20,
270, 100, 30);
passengerFrame.add(new JLabel("Ticket Number:")).setBounds(20, 310,
100, 30);

passengerFrame.add(nameField);
passengerFrame.add(contactField);
passengerFrame.add(ticketField);

JButton saveButton = new JButton("Add Passenger");


saveButton.setBounds(280, 230, 100, 30);
passengerFrame.add(saveButton);

JButton updateButton = new JButton("Update Passenger");


updateButton.setBounds(280, 270, 100, 30);
passengerFrame.add(updateButton);

JButton deleteButton = new JButton("Delete Passenger");


deleteButton.setBounds(280, 310, 100, 30);
passengerFrame.add(deleteButton);

saveButton.addActionListener(e -> {
String name = nameField.getText();
String contactNumber = contactField.getText();
String ticketNumber = ticketField.getText();

Passenger passenger = new Passenger(name, contactNumber,


ticketNumber);
passenger.saveToDatabase();
updateDisplay(displayArea);
clearFields(nameField, contactField, ticketField);
});

updateButton.addActionListener(e -> {
String ticketNumber = ticketField.getText();
if (ticketNumber.trim().isEmpty()) {
JOptionPane.showMessageDialog(passengerFrame, "Ticket
number is required for updating a record.", "Error",
JOptionPane.ERROR_MESSAGE);
return;
}
String name = nameField.getText();
String contactNumber = contactField.getText();

Passenger passenger = new Passenger(name, contactNumber,


ticketNumber);
passenger.updateInDatabase();

updateDisplay(displayArea);
clearFields(nameField, contactField, ticketField);
});

deleteButton.addActionListener(e -> {
String ticketNumber = ticketField.getText();
if (ticketNumber.trim().isEmpty()) {
JOptionPane.showMessageDialog(passengerFrame, "Ticket
number is required to delete a record.", "Error",
JOptionPane.ERROR_MESSAGE);
return;
}

Passenger passenger = new Passenger();


passenger.deleteFromDatabase(ticketNumber);

updateDisplay(displayArea);
clearFields(nameField, contactField, ticketField);
});

passengerFrame.setVisible(true);
updateDisplay(displayArea);
}

private void clearFields(JTextField... fields) {


for (JTextField field : fields) {
field.setText("");
}
}

public void saveToDatabase() {


try (Connection conn = DBConnection.getConnection()) {
String query = "INSERT INTO passenger (name, contact_number,
ticket_number) VALUES (?, ?, ?)";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, this.name);
stmt.setString(2, this.contactNumber);
stmt.setString(3, this.ticketNumber);
stmt.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}

public void updateInDatabase() {


try (Connection conn = DBConnection.getConnection()) {
String query = "UPDATE passenger SET name = ?, contact_number =
? WHERE ticket_number = ?";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, this.name);
stmt.setString(2, this.contactNumber);
stmt.setString(3, this.ticketNumber);
int rowsAffected = stmt.executeUpdate();
if (rowsAffected == 0) {
JOptionPane.showMessageDialog(null, "No passenger found
with the given ticket number.", "Update Error", JOptionPane.ERROR_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Passenger record
updated successfully!", "Success", JOptionPane.INFORMATION_MESSAGE);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}

public void deleteFromDatabase(String ticketNumber) {


try (Connection conn = DBConnection.getConnection()) {
String query = "DELETE FROM passenger WHERE ticket_number = ?";
try (PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, ticketNumber);
int rowsAffected = stmt.executeUpdate();
if (rowsAffected == 0) {
JOptionPane.showMessageDialog(null, "No passenger found
with the given ticket number.", "Delete Error", JOptionPane.ERROR_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Passenger record
deleted successfully!", "Success", JOptionPane.INFORMATION_MESSAGE);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private void updateDisplay(JTextArea displayArea) {
try (Connection conn = DBConnection.getConnection()) {
String query = "SELECT * FROM passenger";
try (Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query)) {

StringBuilder displayText = new StringBuilder("Passengers:\


n");
while (rs.next()) {
displayText.append("Name:
").append(rs.getString("name"))
.append(", Contact:
").append(rs.getString("contact_number"))
.append(", Ticket No:
").append(rs.getString("ticket_number"))
.append("\n");
}
displayArea.setText(displayText.toString());
}
} catch (SQLException e) {
e.printStackTrace();
}
}

@Override
public String toString() {
return "Name: " + name + ", Contact: " + contactNumber + ", Ticket
No: " + ticketNumber;
}
}

7. DBConnection.java: Establishes the connection to the MySQL database using JDBC. The
database stores the information for buses, routes, employees, and passengers.

Code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {

private static final String URL =


"jdbc:mysql://localhost:3306/transportation_system";
private static final String USER = "root"; // Replace with your DB
username
private static final String PASSWORD = "password"; // Replace with your
DB password

public static Connection getConnection() throws SQLException {


return DriverManager.getConnection(URL, USER, PASSWORD);
}
}

GUI Interface

You might also like