# abdullahshahid01/rent-a-car-management-system architecture

> Architecture diagram of the GitHub repository abdullahshahid01/rent-a-car-management-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/abdullahshahid01/rent-a-car-management-system
- Repository: https://github.com/abdullahshahid01/rent-a-car-management-system

## Overview

Rent-a-Car Management System is a Java Swing desktop application for administering customers, vehicle owners, cars, and rental bookings. The user enters through the runner and login, then uses the main menu to reach record lists, searches, and add/update/remove forms. Booking operations connect customer and car records, track rent/return times, and determine car availability. Backend entity classes own their serialized-file persistence; the sampled booking code also reads car records to calculate availability. The source excerpts are partial, so unsampled screen-to-backend connections are shown only where supported by the visible code or direct entity responsibilities.

Main entry points: [`src/GUI/MainMenu.java`](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/MainMenu.java) (Main menu), [`src/BackendCode/Booking.java`](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/BackendCode/Booking.java) (Booking logic), [`src/BackendCode/Car.java`](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/BackendCode/Car.java) (Car records), [`src/GUI/Customer_Details.java`](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Customer_Details.java) (Customer screens)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_runner["Runner<br/>[Runner.java]"]
  node_login["Login<br/>[Login.java]"]
  node_menu["Main menu<br/>[MainMenu.java]"]
  node_frame["Window host<br/>[Parent_JFrame.java]"]
end

subgraph group_records["People and fleet"]
  node_customer_ui["Customer screens"]
  node_owner_ui["Owner screens"]
  node_car_ui["Car screens<br/>[Car_Details.java]"]
  node_customer_forms["Customer forms<br/>[Customer_Add.java]"]
  node_owner_forms["Owner forms<br/>[CarOwner_Add.java]"]
  node_car_forms["Car forms<br/>[Car_Add.java]"]
  node_person["Person base<br/>[Person.java]"]
  node_customer["Customer records<br/>[Customer.java]"]
  node_owner["Owner records<br/>[CarOwner.java]"]
  node_car["Car records<br/>[Car.java]"]
end

subgraph group_rental["Rental operations"]
  node_booking_ui["Booking screens"]
  node_booking_forms["Book and return"]
  node_booking["Booking logic<br/>[Booking.java]"]
end

subgraph group_persistence["Serialized records"]
  node_customer_store[("Customer.ser<br/>[Customer.ser]")]
  node_owner_store[("CarOwner.ser<br/>[CarOwner.ser]")]
  node_car_store[("Car.ser<br/>[Car.ser]")]
  node_booking_store[("Booking.ser<br/>[Booking.ser]")]
end

node_user(("Administrator"))

node_user -->|"launches"| node_runner
node_runner -->|"opens"| node_login
node_login -->|"displays in"| node_frame
node_login -->|"enters after login"| node_menu
node_menu -->|"updates"| node_frame
node_menu -->|"opens"| node_customer_ui
node_menu -->|"opens"| node_owner_ui
node_menu -->|"opens"| node_car_ui
node_menu -->|"opens"| node_booking_ui
node_customer_ui -->|"dispatches"| node_customer_forms
node_owner_ui -->|"dispatches"| node_owner_forms
node_car_ui -->|"dispatches"| node_car_forms
node_booking_ui -->|"dispatches"| node_booking_forms
node_customer_ui -->|"reads and searches"| node_customer
node_customer_ui -->|"reads bookings"| node_booking
node_owner_ui -->|"reads and searches"| node_owner
node_owner_ui -->|"reads cars"| node_car
node_car_ui -->|"reads and searches"| node_car
node_booking_ui -->|"reads and searches"| node_booking
node_customer_forms -->|"saves changes"| node_customer
node_owner_forms -->|"saves changes"| node_owner
node_car_forms -->|"saves changes"| node_car
node_booking_forms -->|"books or returns"| node_booking
node_customer -->|"extends"| node_person
node_owner -->|"extends"| node_person
node_customer -->|"reads and writes"| node_customer_store
node_owner -->|"reads and writes"| node_owner_store
node_car -->|"reads and writes"| node_car_store
node_booking -->|"reads and writes"| node_booking_store
node_booking -->|"reads for availability"| node_car

click node_runner "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Runner.java"
click node_login "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Login.java"
click node_menu "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/MainMenu.java"
click node_frame "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Parent_JFrame.java"
click node_customer_ui "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Customer_Details.java"
click node_owner_ui "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/CarOwner_Details.java"
click node_car_ui "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Car_Details.java"
click node_customer_forms "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Customer_Add.java"
click node_owner_forms "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/CarOwner_Add.java"
click node_car_forms "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Car_Add.java"
click node_person "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/BackendCode/Person.java"
click node_customer "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/BackendCode/Customer.java"
click node_owner "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/BackendCode/CarOwner.java"
click node_car "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/BackendCode/Car.java"
click node_booking_ui "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Booking_Details.java"
click node_booking_forms "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Booking_BookCar.java"
click node_booking "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/BackendCode/Booking.java"
click node_customer_store "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/Customer.ser"
click node_owner_store "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/CarOwner.ser"
click node_car_store "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/Car.ser"
click node_booking_store "https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/Booking.ser"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_runner,node_login,node_menu,node_frame toneBlue
class node_customer_ui,node_owner_ui,node_car_ui,node_customer_forms,node_owner_forms,node_car_forms,node_person,node_customer,node_owner,node_car toneAmber
class node_booking_ui,node_booking_forms,node_booking toneMint
class node_customer_store,node_owner_store,node_car_store,node_booking_store toneRose
class node_user toneIndigo
```

## Components

### Application entry

- [Runner](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Runner.java): `src/GUI/Runner.java`
- [Login](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Login.java): `src/GUI/Login.java`
- [Main menu](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/MainMenu.java): `src/GUI/MainMenu.java`
- [Window host](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Parent_JFrame.java): `src/GUI/Parent_JFrame.java`

### People and fleet

- [Customer screens](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Customer_Details.java): `src/GUI/Customer_Details.java`
- [Owner screens](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/CarOwner_Details.java): `src/GUI/CarOwner_Details.java`
- [Car screens](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Car_Details.java): `src/GUI/Car_Details.java`
- [Customer forms](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Customer_Add.java): `src/GUI/Customer_Add.java`
- [Owner forms](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/CarOwner_Add.java): `src/GUI/CarOwner_Add.java`
- [Car forms](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Car_Add.java): `src/GUI/Car_Add.java`
- [Person base](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/BackendCode/Person.java): `src/BackendCode/Person.java`
- [Customer records](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/BackendCode/Customer.java): `src/BackendCode/Customer.java`
- [Owner records](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/BackendCode/CarOwner.java): `src/BackendCode/CarOwner.java`
- [Car records](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/BackendCode/Car.java): `src/BackendCode/Car.java`

### Rental operations

- [Booking screens](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Booking_Details.java): `src/GUI/Booking_Details.java`
- [Book and return](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/GUI/Booking_BookCar.java): `src/GUI/Booking_BookCar.java`
- [Booking logic](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/src/BackendCode/Booking.java): `src/BackendCode/Booking.java`

### Serialized records

- [Customer.ser](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/Customer.ser): `Customer.ser`
- [CarOwner.ser](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/CarOwner.ser): `CarOwner.ser`
- [Car.ser](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/Car.ser): `Car.ser`
- [Booking.ser](https://github.com/abdullahshahid01/rent-a-car-management-system/blob/master/Booking.ser): `Booking.ser`

### Other components

- **Administrator**

## Connections

- Administrator → Runner: launches
- Runner → Login: opens
- Login → Window host: displays in
- Login → Main menu: enters after login
- Main menu → Window host: updates
- Main menu → Customer screens: opens
- Main menu → Owner screens: opens
- Main menu → Car screens: opens
- Main menu → Booking screens: opens
- Customer screens → Customer forms: dispatches
- Owner screens → Owner forms: dispatches
- Car screens → Car forms: dispatches
- Booking screens → Book and return: dispatches
- Customer screens → Customer records: reads and searches
- Customer screens → Booking logic: reads bookings
- Owner screens → Owner records: reads and searches
- Owner screens → Car records: reads cars
- Car screens → Car records: reads and searches
- Booking screens → Booking logic: reads and searches
- Customer forms → Customer records: saves changes
- Owner forms → Owner records: saves changes
- Car forms → Car records: saves changes
- Book and return → Booking logic: books or returns
- Customer records → Person base: extends
- Owner records → Person base: extends
- Customer records → Customer.ser: reads and writes
- Owner records → CarOwner.ser: reads and writes
- Car records → Car.ser: reads and writes
- Booking logic → Booking.ser: reads and writes
- Booking logic → Car records: reads for availability
