Transportation System
Transportation System
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.
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.
On successful login, it calls the openMainSystem() method to display the main system interface.
3. Bus Management
Manages the buses in the transportation system.
Connects to the database to perform CRUD (Create, Read, Update, Delete) operations on bus
data, such as type, engine number, and seating capacity.
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.
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.
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;
Code:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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() {}
busFrame.add(typeField);
busFrame.add(engineField);
busFrame.add(capacityField);
saveButton.addActionListener(e -> {
try {
String type = typeField.getText();
String engineNumber = engineField.getText();
int capacity = Integer.parseInt(capacityField.getText());
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;
}
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;
}
busFrame.setVisible(true);
updateDisplay(displayArea);
}
@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;
routeFrame.add(routeField);
routeFrame.add(startField);
routeFrame.add(destinationField);
saveButton.addActionListener(e -> {
String routeNumber = routeField.getText();
String startLocation = startField.getText();
String destination = destinationField.getText();
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;
}
updateDisplay(displayArea);
clearFields(routeField, startField, destinationField);
});
routeFrame.setVisible(true);
updateDisplay(displayArea);
}
@Override
public String toString() {
return "Route No: " + routeNumber + ", Start: " + startLocation + ",
Destination: " + destination;
}
}
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() {}
public void manageEmployee(ArrayList<Employee> employeeList) {
JFrame employeeFrame = new JFrame("Employee Management");
employeeFrame.setSize(400, 400);
employeeFrame.setLayout(null);
employeeFrame.add(idField);
employeeFrame.add(nameField);
employeeFrame.add(roleField);
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();
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);
}
@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 Passenger() {}
public void managePassenger(ArrayList<Passenger> passengerList) {
JFrame passengerFrame = new JFrame("Passenger Management");
passengerFrame.setSize(400, 400);
passengerFrame.setLayout(null);
passengerFrame.add(nameField);
passengerFrame.add(contactField);
passengerFrame.add(ticketField);
saveButton.addActionListener(e -> {
String name = nameField.getText();
String contactNumber = contactField.getText();
String ticketNumber = ticketField.getText();
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();
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;
}
updateDisplay(displayArea);
clearFields(nameField, contactField, ticketField);
});
passengerFrame.setVisible(true);
updateDisplay(displayArea);
}
@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 {
GUI Interface