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