A Console-Based Vehicle Rental Management System built with Java and Object-Oriented Programming.
The application simulates the workflow of a real-world vehicle rental service with dedicated Admin and Customer modules, vehicle inventory management, maintenance tracking, payment simulation, receipt generation, and email notifications.
| Feature | Status |
|---|---|
| Admin Module | β |
| Customer Module | β |
| Vehicle Inventory | β |
| Vehicle Maintenance | β |
| Payment Simulation | β |
| Receipt Generation | β |
| Email Notification | β |
| Object-Oriented Design | β |
Vehicle Rental System is a modular Java console application designed to demonstrate practical implementation of Object-Oriented Programming (OOP) concepts through a real-world rental management scenario.
The system allows administrators to manage vehicles, monitor inventory, schedule maintenance, and oversee rental operations, while customers can browse available vehicles, rent them, complete payments, and receive booking confirmations.
The project emphasizes clean class design, modular architecture, and separation of responsibilities, making it an excellent demonstration of Java programming fundamentals applied to a practical use case.
- Secure Admin Login
- Add New Vehicles
- Remove Vehicles
- View Vehicle Inventory
- Send Vehicles for Maintenance
- Complete Maintenance
- Monitor Vehicle Availability
- Browse Available Cars
- Browse Available Bikes
- Browse Available Buses
- Rent Vehicles
- Return Vehicles
- View Rental Information
- Vehicle Inventory Management
- Availability Tracking
- Maintenance Status
- Rental Price Management
- Category-wise Vehicle Listing
- Rental Payment Simulation
- Receipt Generation
- Email Booking Confirmation
- Booking Summary
The following workflow illustrates the overall execution flow of the Vehicle Rental System from user interaction to booking completion.
- User launches the application.
- Selects either the Admin or Customer module.
- Admin manages vehicles, inventory, and maintenance records.
- Customer browses available vehicles by category.
- Customer selects a vehicle and proceeds with the booking.
- Payment is processed through the payment simulation module.
- A rental receipt is generated.
- Booking confirmation is sent via email.
- Vehicle inventory is updated automatically.
The project follows a modular object-oriented architecture where each class is responsible for a specific part of the rental process.
| Module | Responsibility |
|---|---|
| π Vehicle | Base class representing common vehicle properties and behavior |
| π Car / Bike / Bus | Specialized vehicle categories using inheritance |
| π¨βπΌ Admin | Handles inventory management and maintenance operations |
| π€ Customer | Performs browsing, renting, and returning of vehicles |
| π¦ VehicleInventory | Stores and manages available vehicles |
| π³ PaymentGateway | Simulates rental payment processing |
| π§Ύ ReceiptGenerator | Generates booking receipts |
| π§ EmailService | Sends booking confirmation emails |
| Controls application flow and user interaction |
| Category | Technologies |
|---|---|
| Programming Language | Java |
| Paradigm | Object-Oriented Programming (OOP) |
| Collections | ArrayList |
| IDE | Eclipse |
| Email Service | JavaMail API |
| Version Control | Git & GitHub |
The project applies core Object-Oriented Programming principles to create a modular and maintainable application.
| Concept | Implementation |
|---|---|
| Encapsulation | Private fields with controlled access through methods |
| Inheritance | Car, Bike, and Bus extend the Vehicle class |
| Polymorphism | Common vehicle operations implemented through inheritance |
| Abstraction | Shared behavior defined within the Vehicle class |
| Composition | Inventory and payment modules collaborate to complete rentals |
| Collections Framework | Vehicle management using ArrayList |
VehicleRentalSystem/
β
βββ assets/
β βββ banner/
β βββ architecture/
β βββ workflow/
β βββ screenshots/
β
βββ lib/
β βββ activation-1.1.1.jar
β βββ javax.mail-1.6.2.jar
β
βββ src/
β βββ com/
β βββ linkcode/
β βββ vehicleRentalSystem/
β βββ Admin.java
β βββ Bike.java
β βββ Bus.java
β βββ Car.java
β βββ Customer.java
β βββ EmailService.java
β βββ Main.java
β βββ PaymentGateway.java
β βββ ReceiptGenerator.java
β βββ Vehicle.java
β βββ VehicleInventory.java
β
βββ .classpath
βββ .gitignore
βββ .project
βββ README.md
| Directory / File | Purpose |
|---|---|
| assets/ | Banner, workflow diagrams, architecture diagrams, and screenshots |
| lib/ | External Java libraries required for email functionality |
| src/ | Complete application source code |
| Vehicle.java | Base class for all vehicle types |
| VehicleInventory.java | Handles inventory management |
| PaymentGateway.java | Simulates rental payment processing |
| ReceiptGenerator.java | Generates rental receipts |
| EmailService.java | Sends booking confirmation emails |
| Main.java | Application entry point |
git clone https://github.com/TanmayT134/Vehicle-Rental-System.gitcd Vehicle-Rental-System- Open Eclipse IDE.
- Select File β Import β Existing Projects into Workspace.
- Browse to the cloned project directory.
- Finish the import process.
The project uses the JavaMail API for email notifications.
If the libraries are not automatically resolved, ensure the following JAR files are available inside the lib/ directory:
activation-1.1.1.jarjavax.mail-1.6.2.jar
Add them to the project's build path if required.
Execute:
Main.java
The application launches in the console, allowing users to choose between the Admin and Customer modules.
Using the Vehicle Rental System is straightforward.
Launch the application.
Choose one of the available modules.
- π¨βπΌ Admin
- π€ Customer
Perform the desired operation.
Examples include:
- Add or remove vehicles
- View available vehicles
- Rent a vehicle
- Return a rented vehicle
- Manage maintenance
- Process rental payments
The system automatically:
- Updates vehicle availability
- Generates a booking receipt
- Sends an email confirmation (when applicable)
The following screenshots demonstrate different modules of the Vehicle Rental System.
| Main Menu | Admin Panel |
|---|---|
![]() |
![]() |
| Customer Panel | Vehicle Inventory |
|---|---|
![]() |
![]() |
| Payment Module | Generated Receipt |
|---|---|
![]() |
![]() |
This project provided practical experience with several important Java programming concepts.
- Object-Oriented Programming
- Inheritance & Polymorphism
- Encapsulation & Abstraction
- Java Collections Framework
- Modular Project Design
- Console-Based Application Development
- Exception Handling
- JavaMail Integration
- Git & GitHub Version Control
The project is designed with extensibility in mind. Possible future improvements include:
- MySQL-based data persistence
- Vehicle records stored in a database
- Customer account management
- Secure Admin Login
- Customer Registration
- Password Encryption
- Online payment gateway integration
- Digital payment receipts
- Transaction history
- Rental history
- Revenue reports
- Most rented vehicles
- Maintenance reports
- Java Swing Desktop GUI
- JavaFX Interface
- Web-based version using Spring Boot
Contributions, ideas, and suggestions are welcome.
If you'd like to improve this project:
- Fork the repository.
- Create a feature branch.
- Commit your changes.
- Push your branch.
- Open a Pull Request.
Vehicle Rental System was developed using the following technologies, libraries, and development tools.
Special thanks to the Java open-source community for providing the technologies, libraries, and resources that made this project possible.
Tanmay Tawade
If you found this project useful, consider giving it a β on GitHub.
If you found this project helpful, consider:
- β Starring this repository
- π΄ Forking the project
- π‘ Sharing your feedback or suggestions
Your support encourages continued learning and future improvements.








