In this tutorial, you will learn how to create a car rental system using java AWT. Creating a simple car rental system using Java AWT involves creating a GUI application that allows users to interact with various components such as text fields, buttons and labels to perform tasks like entering customer details, selecting a car, and submitting the rental request.
Car Rental System Using Java AWT
The following steps provides a foundational structure to create a car rental system using Java AWT.
1. Setup the project:
- Ensure you have Java Development Kit(JDK) installed.
- Use any IDE like Eclipse or Intelli J IDEA, or a simple text editor and compile using the command line.
2. Code Implementation:
Here’s the complete Java code for a basic car rental system using AWT:
import java.awt.*;
import java.awt.event.*;
public class CarRentalSystem extends Frame implements ActionListener {
Label nameLabel, carLabel, daysLabel;
TextField nameField, daysField;
Choice carChoice;
Button rentButton;
TextArea outputArea;
public CarRentalSystem() {
setLayout(new FlowLayout());
nameLabel = new Label("Name:");
add(nameLabel);
nameField = new TextField(20);
add(nameField);
carLabel = new Label("Car:");
add(carLabel);
carChoice = new Choice();
carChoice.add("Sedan");
carChoice.add("SUV");
carChoice.add("Truck");
carChoice.add("Convertible");
add(carChoice);
daysLabel = new Label("Days:");
add(daysLabel);
daysField = new TextField(5);
add(daysField);
rentButton = new Button("Rent Car");
add(rentButton);
rentButton.addActionListener(this);
outputArea = new TextArea(5, 40);
add(outputArea);
setTitle("Car Rental System");
setSize(450, 300);
setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
String name = nameField.getText();
String car = carChoice.getSelectedItem();
int days = Integer.parseInt(daysField.getText());
double cost = calculateRentalCost(car, days);
outputArea.setText("Name: " + name + "\nCar: " + car + "\nDays: " + days + "\nTotal Cost: $" + cost);
}
public double calculateRentalCost(String car, int days) {
double dailyRate;
switch (car) {
case "SUV":
dailyRate = 60;
break;
case "Truck":
dailyRate = 70;
break;
case "Convertible":
dailyRate = 100;
break;
case "Sedan":
default:
dailyRate = 50;
break;
}
return dailyRate * days;
}
public static void main(String[] args) {
new CarRentalSystem();
}
}
3. Adding Backend Functionality:
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.List;
class CarRentalSystem extends Frame implements ActionListener {
Label nameLabel, carLabel, daysLabel;
TextField nameField, daysField;
Choice carChoice;
Button rentButton;
TextArea outputArea;
List<Rental> rentals;
public CarRentalSystem() {
setLayout(new FlowLayout());
nameLabel = new Label("Name:");
add(nameLabel);
nameField = new TextField(20);
add(nameField);
carLabel = new Label("Car:");
add(carLabel);
carChoice = new Choice();
carChoice.add("Sedan");
carChoice.add("SUV");
carChoice.add("Truck");
carChoice.add("Convertible");
add(carChoice);
daysLabel = new Label("Days:");
add(daysLabel);
daysField = new TextField(5);
add(daysField);
rentButton = new Button("Rent Car");
add(rentButton);
rentButton.addActionListener(this);
outputArea = new TextArea(5, 40);
add(outputArea);
rentals = new ArrayList<>();
setTitle("Car Rental System");
setSize(450, 300);
setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
String name = nameField.getText();
String car = carChoice.getSelectedItem();
int days = Integer.parseInt(daysField.getText());
double cost = calculateRentalCost(car, days);
Rental rental = new Rental(name, car, days, cost);
rentals.add(rental);
outputArea.setText("Rental Recorded\n\n" + rental.toString());
}
public double calculateRentalCost(String car, int days) {
double dailyRate;
switch (car) {
case "SUV":
dailyRate = 60;
break;
case "Truck":
dailyRate = 70;
break;
case "Convertible":
dailyRate = 100;
break;
case "Sedan":
default:
dailyRate = 50;
break;
}
return dailyRate * days;
}
public static void main(String[] args) {
new CarRentalSystem();
}
}
class Rental {
private String name;
private String carType;
private int days;
private double cost;
public Rental(String name, String carType, int days, double cost) {
this.name = name;
this.carType = carType;
this.days = days;
this.cost = cost;
}
public String toString() {
return "Name: " + name + "\nCar: " + carType + "\nDays: " + days + "\nTotal Cost: $" + cost;
}
}
4.Improve and Extend:
- Data Persistence: For a full application, integrate a database to store rental records.
- Validation: Add input validation to handle edge cases and incorrect inputs.
- GUI Enhancements: Consider using Swing or JavaFX for more advanced and visually appealing interfaces.
- Additional Features: Implementing functionalities such as returning cars, checking availability, and user management.
Output:
When you run the application, you will find the following components:
- A label and a text field for the customer’s name.
- A label and dropdown menu for car type
- A label and text field for the number of days.
- A “Rent Car” button.
- A text area for displaying the rental details.
The text area appears as:
Rental Recorded
Name: Anvitha
Car: SUV
Days: 3
Total cost: $190.0