The Car Reservation System allows customers to reserve cars for rental. Users can browse available cars, select the date and time for the rental, and make a reservation. Admins can add, update, or remove cars from the system and manage reservations.
The system will have two types of users: Customers and Admins.
-
Customers:
- Browse available cars.
- Filter cars by type, brand, or availability.
- Reserve a car for a specific time period.
- View their current and past reservations.
-
Admins:
- Add new cars to the system.
- Update or remove existing cars.
- View all reservations.
- Manage reservation statuses (confirm, cancel, or modify).
- For Customers:
- Ability to browse and filter cars.
- Reserve a car with specific start and end dates.
- View a list of current reservations and reservation history.
- For Admins:
- Ability to add, update, or remove cars.
- View and manage all reservations.
-
User (abstract):
- Attributes:
username
,password
,email
. - Methods:
login()
,logout()
,viewProfile()
.
- Attributes:
-
Customer (extends
User
):- Attributes:
customerId
,reservationHistory
. - Methods:
makeReservation()
,viewReservations()
.
- Attributes:
-
Admin (extends
User
):- Attributes:
adminId
. - Methods:
addCar()
,updateCar()
,removeCar()
,manageReservations()
.
- Attributes:
-
Car:
- Attributes:
carId
,model
,brand
,carType
,availableFrom
,availableTo
. - Methods:
isAvailable()
,getCarDetails()
.
- Attributes:
-
Reservation:
- Attributes:
reservationId
,car
,customer
,reservationStart
,reservationEnd
,status
. - Methods:
confirmReservation()
,cancelReservation()
,viewDetails()
.
- Attributes:
- List: To store the list of available cars.
- List: To store all reservations.
- LINQ can be used to filter cars based on availability, brand, or type.
- Login Screen: A login system for both customers and admins.
- Customer Dashboard:
- Browse cars with filtering options (brand, type, availability).
- View current reservations and past reservation history.
- Admin Dashboard:
- Add, update, or remove cars from the system.
- View and manage all reservations.
- Use a database (SQLite or any relational DB) to store car information and reservations.
- Optional: File-based storage if a database isn’t needed.
- Support for two languages (e.g., English and French).
- Use ResourceBundle for storing translated strings.
- The UI should switch between languages based on user preference.
- Write unit tests for key methods like
makeReservation()
,addCar()
, andisAvailable()
. - Ensure the test coverage includes checking for availability conflicts and proper reservation creation.
- Danny Zhou
- Matthew Macri