A mining operation management simulator written in C++ demonstrating advanced object-oriented programming concepts.
| Main Menu & Project Setup | Cave Creation & Validation |
|---|---|
![]() |
![]() |
| Cave Details & Extraction History | Comprehensive Report |
|---|---|
![]() |
![]() |
This project was developed as an Object-Oriented Programming semester project at NASTP Institute of Information and Technology (NIIT), a constituent of Air University. It simulates a complete mining operation with departments, equipment, vehicles, cave resource management, extraction tracking, and financial reporting.
- Project management — create mining projects with a project manager and department heads
- 5 departments — Technician, Labor, Logistics, Finance, and Security — each with workers, salaries, equipment, and vehicles
- Cave system — create caves with 5 resource types (Gold, Iron, Coal, Mineral, Diamond) and randomly generated initial resources
- Resource extraction — simulate multi-day extraction operations with daily random extraction rates
- Financial tracking — salary calculations based on worker count, daily rates, and number of working days
- Comprehensive reporting — full reports with extraction history, resource summaries, and efficiency percentages
- Equipment & vehicle management — typed equipment and vehicles assigned to departments with dynamic capacity expansion
- Input validation — robust alphabetic and integer validation with error recovery
The system uses three main class hierarchies plus supporting classes:
Equipment (abstract — pure virtual display())
├── TechnicalEquipment
├── LaborEquipment
├── LogisticsEquipment
├── OfficeEquipment
└── SecurityEquipment
Vehicle (abstract — pure virtual display())
├── ServiceVehicle
├── TransportVehicle
└── SecurityVehicle
Department (abstract — pure virtual displayWorkers())
├── TechnicianDept (7 workers, Rs. 65,000/month)
├── LaborDept (15 workers, Rs. 35,000/month)
├── LogisticsDept (5 workers, Rs. 50,000/month)
├── FinanceDept (4 workers, Rs. 60,000/month)
└── SecurityDept (6 workers, Rs. 40,000/month)
Cave (base — virtual displayResources())
├── GoldCave
├── IronCave
├── CoalCave
├── MineralCave
└── DiamondCave
Project— project metadata, manager, department headsExtractionRecord— single extraction event (day, amount, resource type)ResourceManager— top-level orchestrator that owns departments, caves, and the current project
| Concept | Implementation |
|---|---|
| Abstract classes | Equipment, Vehicle, and Department use pure virtual functions |
| Inheritance | 4 class hierarchies with 18 derived classes |
| Polymorphism | display() and displayWorkers() called through base-class pointers |
| Encapsulation | protected/private members with public getters |
| Composition | ResourceManager owns departments; Department owns Equipment** and Vehicle** arrays |
| Aggregation | Cave holds a non-owning Project* association |
| Dynamic memory | Manual new/delete with dynamic array expansion throughout |
| Constructors | Parameterised constructors with member initialiser lists |
| Virtual destructors | Proper cleanup in Equipment, Vehicle, Department, and Cave |
| Function overriding | override keyword on all derived-class virtual methods |
| Forward declarations | class Department; used for cross-referencing |
=== MINING MANAGEMENT SYSTEM ===
1. Create New Project
2. Create Caves
3. Extract Resources
4. View Cave Details
5. Generate Full Report
6. Manage Resources
7. Exit
- C++ compiler — g++ (MinGW), MSVC, or any standard C++ compiler
- No external libraries or platform-specific headers
g++ mining-management-system.cpp -o mining-management-system.exe
mining-management-system.exe- Create a project (option 1) — enter project name, manager name, and department managers.
- Create caves (option 2) — specify how many caves, name each one, and choose a resource type.
- Extract resources (option 3) — enter the number of working days to simulate extraction.
- View cave details (option 4) — inspect any cave's full extraction history.
- Generate report (option 5) — view a comprehensive summary of the entire operation.
- Manage resources (option 6) — view all department workers, equipment, and vehicles.
mining-management-system/
├── docs/
│ └── screenshots/ # Application screenshots
├── mining-management-system.cpp # Complete source code (715 lines)
├── .gitignore # C++ build artifact exclusions
└── README.md # This file
- All data is in-memory — no file persistence between sessions.
- The full report's total resource calculation has an inaccuracy in how initial resources are reconstructed.
- Worker names are hardcoded sample data, not user-configurable.
- Single source file — appropriate for an academic submission but not typical of production code.
Muhammad Umer Iqbal Object-Oriented Programming — NASTP Institute of Information and Technology (NIIT), Air University



