A comprehensive Object-Oriented Programming (OOP) project implementing a car dealership management system with advanced C++ features including design patterns, inheritance hierarchies, and interactive console interface.
This project demonstrates a complete car dealership management system that handles vehicle inventory, client management, showroom operations, and transaction processing. Built with modern C++ practices and advanced OOP concepts.
- Vehicle Management: Add, remove, and manage different types of vehicles
- Client Management: Handle client information, payment history, and purchase tracking
- Showroom Operations: Manage multiple showrooms with vehicle inventory
- Transaction Processing: Complete purchase transactions with payment tracking
- Interactive Console Menu: User-friendly menu system for all operations
- Singleton Pattern: Centralized application management and menu system
- Observer Pattern: Real-time notifications for system changes
- Factory Pattern: Dynamic object creation with polymorphism
- Three-Level Inheritance Hierarchy:
Vehicle
(Base class)FuelVehicle
(Child class)HybridVehicle
(Grandchild class)
- Multiple Inheritance: Classes implementing multiple interfaces
- Polymorphism: Virtual functions and dynamic binding
- Upcasting/Downcasting: Safe type casting with
dynamic_cast
- STL Containers:
vector
,list
,map
,set
for efficient data management - Exception Handling: Custom exception classes for robust error management
- Template Classes: Generic programming for reusable components
- Operator Overloading: Custom operators for intuitive object manipulation
IOInterfaceVehicle InterfaceVehicle
| |
| |
+------Vehicle--------+
|
|
FuelVehicle
|
|
HybridVehicle
Vehicle
: Base class implementing vehicle interfaces with common attributes (brand, model, year, price)FuelVehicle
: Extends Vehicle with fuel-specific properties (fuel type, consumption)HybridVehicle
: Extends FuelVehicle with hybrid-specific features (electric range, charging time)
Showroom
: Manages vehicle inventory and showroom operationsClient
: Handles client information and purchase historyTransaction
: Processes and records vehicle purchases
Singleton
: Application controller and menu systemObserver<T>
: Abstract observer for notificationsConsoleObserver<T>
: Console-based notification systemSubject
: Manages observer subscriptions and notifications
InfoVehicul<T>
: Template class for detailed vehicle informationMyException
: Custom exception handling
- C++17 or later
- Visual Studio 2019/2022 (Windows)
- Windows 10 SDK
- Clone the repository
- Open
Proiect 3 POO.sln
in Visual Studio - Build the solution (Ctrl+Shift+B)
- Run the executable
The application provides an interactive menu system:
-
Vehicle Models Management
- Add new vehicle models
- View existing vehicles
- Remove vehicles from inventory
-
Client Management
- Register new clients
- View client information
- Track payment history
-
Showroom Operations
- Create and manage showrooms
- Add vehicles to showrooms
- View detailed showroom information
-
Transaction Processing
- Process vehicle sales
- Record payments
- Generate transaction history
- Smart pointer usage where applicable
- Proper object lifecycle management
- Clone pattern for object copying
- Custom exception classes
- Input validation
- Graceful error recovery
- Dynamic containers for scalable data storage
- Efficient search and retrieval algorithms
- Optimized memory usage
- Singleton: Ensures single instance of application controller
- Observer: Decoupled notification system
- Template Method: Standardized object operations
- Factory: Dynamic object creation based on type
- Encapsulation
- Inheritance (3-level hierarchy)
- Polymorphism
- Abstraction
- Virtual functions
- Pure virtual functions
- Multiple inheritance
- Template classes
- Operator overloading
- Exception handling
- STL containers
- Dynamic casting
- Consistent naming conventions
- Comprehensive error handling
- Modular design
- Efficient algorithms
- Memory-safe operations
Car-Dealership-Management-OOP/
├── Proiect 3 POO.cpp # Main source file
├── Proiect 3 POO.sln # Visual Studio solution
├── Proiect 3 POO.vcxproj # Project configuration
├── ClassDiagram.cd # Class diagram
└── README.md # This file
This project serves as an excellent demonstration of:
- Advanced OOP concepts in C++
- Design pattern implementation
- Real-world application architecture
- Modern C++ best practices
- Interactive console application development