Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Mining Management System

A mining operation management simulator written in C++ demonstrating advanced object-oriented programming concepts.

Screenshots

Main Menu & Project Setup Cave Creation & Validation
Main Menu Cave Creation
Cave Details & Extraction History Comprehensive Report
Cave Details Report

About

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.

Features

  • 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

System Architecture

The system uses three main class hierarchies plus supporting classes:

Equipment Hierarchy

Equipment (abstract — pure virtual display())
├── TechnicalEquipment
├── LaborEquipment
├── LogisticsEquipment
├── OfficeEquipment
└── SecurityEquipment

Vehicle Hierarchy

Vehicle (abstract — pure virtual display())
├── ServiceVehicle
├── TransportVehicle
└── SecurityVehicle

Department Hierarchy

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 Hierarchy

Cave (base — virtual displayResources())
├── GoldCave
├── IronCave
├── CoalCave
├── MineralCave
└── DiamondCave

Supporting Classes

  • Project — project metadata, manager, department heads
  • ExtractionRecord — single extraction event (day, amount, resource type)
  • ResourceManager — top-level orchestrator that owns departments, caves, and the current project

OOP Concepts Demonstrated

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

Menu Options

=== 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

Requirements

  • C++ compiler — g++ (MinGW), MSVC, or any standard C++ compiler
  • No external libraries or platform-specific headers

Build and Run

g++ mining-management-system.cpp -o mining-management-system.exe
mining-management-system.exe

Usage Guide

  1. Create a project (option 1) — enter project name, manager name, and department managers.
  2. Create caves (option 2) — specify how many caves, name each one, and choose a resource type.
  3. Extract resources (option 3) — enter the number of working days to simulate extraction.
  4. View cave details (option 4) — inspect any cave's full extraction history.
  5. Generate report (option 5) — view a comprehensive summary of the entire operation.
  6. Manage resources (option 6) — view all department workers, equipment, and vehicles.

Project Structure

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

Known Limitations

  • 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.

Author

Muhammad Umer Iqbal Object-Oriented Programming — NASTP Institute of Information and Technology (NIIT), Air University

About

A C++ mining management system demonstrating object-oriented design, dynamic memory management, inheritance, polymorphism, and system management workflows.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages