0% found this document useful (0 votes)
3 views12 pages

Sample Case Study

The document outlines various management systems for different services including food delivery, ride sharing, hospital management, online learning, gym management, and banking. Each system features a base class with specific attributes and methods, along with derived classes for specialized roles, eligibility criteria for bonuses, and income calculations. The document also provides a C# implementation demonstrating object-oriented programming principles such as inheritance, polymorphism, and method overriding.

Uploaded by

talukder17352
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views12 pages

Sample Case Study

The document outlines various management systems for different services including food delivery, ride sharing, hospital management, online learning, gym management, and banking. Each system features a base class with specific attributes and methods, along with derived classes for specialized roles, eligibility criteria for bonuses, and income calculations. The document also provides a C# implementation demonstrating object-oriented programming principles such as inheritance, polymorphism, and method overriding.

Uploaded by

talukder17352
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

1️⃣ Food Delivery Service System

A food delivery company wants to automate their system.


 DeliveryPerson (Base Class)
o id
o name
o salary
o area
o virtual method ShowInfo()
 Two types:
o BikeRider
 customerRating (0–100%)
 deliveryCharge (fixed 60 BDT per delivery)
 totalDeliveries
o Supervisor
 yearsOfExperience
 Method EmployeeStatus() in base class:
o BikeRider eligible for bonus if:
 customerRating > 80%
 totalDeliveries ≥ 100
o Supervisor eligible if:
 yearsOfExperience ≥ 3
 Method TotalEarn() in BikeRider:
o totalDeliveries × deliveryCharge
When ShowInfo() is called:
 Show all details
 Bonus eligibility
 Total earnings (if applicable)

2️⃣ Ride Sharing Service (Uber/Pathao Type)


A ride sharing company wants a software system.
 Driver (Base Class)
o driverId
o name
o baseSalary
o location
o virtual method ShowInfo()
 Two types:
o CarDriver
 rating (0–5)
 farePerRide (fixed 200 BDT)
 totalRides
o BikeDriver
 rating
 farePerRide (fixed 100 BDT)
 totalRides
 Method DriverStatus():
o Eligible for bonus if:
 rating ≥ 4.5
 totalRides ≥ 50
 Method TotalIncome():
o totalRides × farePerRide
ShowInfo() displays:
 All info
 Bonus eligibility
 Total income

3️⃣ Hospital Management System


A hospital wants to digitize their employee system.
 Staff (Base Class)
o id
o name
o salary
o department
o virtual method ShowInfo()
 Two types:
o Doctor
 consultationFee
 totalPatients
 experienceYears
o Nurse
 overtimeHours
 hourlyOvertimeRate
 Method StaffStatus():
o Doctor eligible for bonus if:
 experienceYears ≥ 5
 totalPatients ≥ 200
o Nurse eligible if:
 overtimeHours ≥ 50
 Method TotalEarn():
o Doctor: consultationFee × totalPatients
o Nurse: overtimeHours × hourlyOvertimeRate

4️⃣ Online Learning Platform


An e-learning platform wants to automate instructor management.
 Instructor (Base Class)
o id
o name
o baseSalary
o email
o virtual method ShowInfo()
 Two types:
o FullTimeInstructor
 yearsOfExperience
o PartTimeInstructor
 paymentPerCourse
 totalCourses
 Method InstructorStatus():
o FullTime eligible if:
 experience ≥ 3 years
o PartTime eligible if:
 totalCourses ≥ 5
 Method TotalEarn() (for PartTime):
o totalCourses × paymentPerCourse

5️⃣ Gym Management System


A gym wants to manage their trainers.
 Trainer (Base Class)
o id
o name
o salary
o specialization
o virtual method ShowInfo()
 Two types:
o PersonalTrainer
 sessionFee
 totalSessions
 clientRating
o GeneralTrainer
 yearsOfExperience
 Method TrainerStatus():
o PersonalTrainer eligible if:
 clientRating ≥ 85%
 totalSessions ≥ 30
o GeneralTrainer eligible if:
 experience ≥ 4 years
 Method TotalIncome():
o sessionFee × totalSessions

6️⃣ Bank Employee System


A bank wants to manage different employee types.
 BankEmployee (Base Class)
o id
o name
o salary
o branch
o virtual ShowInfo()
 Two types:
o Cashier
 transactionsHandled
o LoanOfficer
 loansApproved
 yearsOfExperience
 Method EmployeeStatus():
o Cashier eligible if:
 transactionsHandled ≥ 1000
o LoanOfficer eligible if:
 loansApproved ≥ 50
 experience ≥ 2 years

Simple solution:

namespace GymManagementSystem
{
// Personal Trainer Class
class PersonalTrainer
{
public int Id;
public string Name;
public double Salary;
public string Specialization;

public double SessionFee;


public int TotalSessions;
public double ClientRating;

public PersonalTrainer(int id, string name, double salary, string specialization,


double sessionFee, int totalSessions, double clientRating)
{
Id = id;
Name = name;
Salary = salary;
Specialization = specialization;
SessionFee = sessionFee;
TotalSessions = totalSessions;
ClientRating = clientRating;
}

public bool IsEligibleForBonus()


{
return ClientRating >= 85️ && TotalSessions >= 3️0;
}

public double TotalIncome()


{
return SessionFee * TotalSessions;
}

public void ShowInfo()


{
[Link]("---- Personal Trainer ----");
[Link]("ID: " + Id);
[Link]("Name: " + Name);
[Link]("Salary: " + Salary);
[Link]("Specialization: " + Specialization);
[Link]("Session Fee: " + SessionFee);
[Link]("Total Sessions: " + TotalSessions);
[Link]("Client Rating: " + ClientRating + "%");
[Link]("Total Income: " + TotalIncome());
[Link]("Eligible for Bonus: " + (IsEligibleForBonus() ? "Yes" : "No"));
[Link]("--------------------------------");
}
}

// General Trainer Class


class GeneralTrainer
{
public int Id;
public string Name;
public double Salary;
public string Specialization;

public int YearsOfExperience;

public GeneralTrainer(int id, string name, double salary, string specialization,


int yearsOfExperience)
{
Id = id;
Name = name;
Salary = salary;
Specialization = specialization;
YearsOfExperience = yearsOfExperience;
}

public bool IsEligibleForBonus()


{
return YearsOfExperience >= 4️;
}

public void ShowInfo()


{
[Link]("---- General Trainer ----");
[Link]("ID: " + Id);
[Link]("Name: " + Name);
[Link]("Salary: " + Salary);
[Link]("Specialization: " + Specialization);
[Link]("Years of Experience: " + YearsOfExperience);
[Link]("Eligible for Bonus: " + (IsEligibleForBonus() ? "Yes" : "No"));
[Link]("--------------------------------");
}
}

class Program
{
static void Main(string[] args)
{
List<PersonalTrainer> personalTrainers = new List<PersonalTrainer>()
{
new PersonalTrainer(1️, "Rahim", 2️0000, "Weight Training", 5️00, 3️5️, 90),
new PersonalTrainer(2️, "Sadia", 2️2️000, "Yoga", 4️00, 2️0, 80)
};
List<GeneralTrainer> generalTrainers = new List<GeneralTrainer>()
{
new GeneralTrainer(3️, "Karim", 1️8000, "Cardio", 5️),
new GeneralTrainer(4️, "Nabil", 1️7000, "Strength", 2️)
};

// foreach for Personal Trainers


foreach (PersonalTrainer pt in personalTrainers)
{
[Link]();
}

// foreach for General Trainers


foreach (GeneralTrainer gt in generalTrainers)
{
[Link]();
}

[Link]();
}
}
}

More OOP2️ advance solution

Here is a complete C# console example for the Gym Management System:

namespace GymManagementSystem
{
// Base Class
class Trainer
{
public int Id { get; set; }
public string Name { get; set; }
public double Salary { get; set; }
public string Specialization { get; set; }

public Trainer(int id, string name, double salary, string specialization)


{
Id = id;
Name = name;
Salary = salary;
Specialization = specialization;
}

// Virtual Method
public virtual bool TrainerStatus()
{
return false; // default
}

public virtual void ShowInfo()


{
[Link]("Trainer ID: " + Id);
[Link]("Name: " + Name);
[Link]("Salary: " + Salary);
[Link]("Specialization: " + Specialization);
[Link]("Eligible for Bonus: " + (TrainerStatus() ? "Yes" : "No"));
}
}

// Derived Class 1
class PersonalTrainer : Trainer
{
public double SessionFee { get; set; }
public int TotalSessions { get; set; }
public double ClientRating { get; set; }

public PersonalTrainer(int id, string name, double salary, string specialization,


double sessionFee, int totalSessions, double clientRating)
: base(id, name, salary, specialization)
{
SessionFee = sessionFee;
TotalSessions = totalSessions;
ClientRating = clientRating;
}

public double TotalIncome()


{
return SessionFee * TotalSessions;
}

public override bool TrainerStatus()


{
return (ClientRating >= 85 && TotalSessions >= 30);
}

public override void ShowInfo()


{
[Link]();
[Link]("Session Fee: " + SessionFee);
[Link]("Total Sessions: " + TotalSessions);
[Link]("Client Rating: " + ClientRating + "%");
[Link]("Total Income: " + TotalIncome());
[Link]("---------------------------");
}
}

// Derived Class 2
class GeneralTrainer : Trainer
{
public int YearsOfExperience { get; set; }

public GeneralTrainer(int id, string name, double salary, string specialization,


int yearsOfExperience)
: base(id, name, salary, specialization)
{
YearsOfExperience = yearsOfExperience;
}

public override bool TrainerStatus()


{
return YearsOfExperience >= 4;
}

public override void ShowInfo()


{
[Link]();
[Link]("Years of Experience: " + YearsOfExperience);
[Link]("---------------------------");
}
}

class Program
{
static void Main(string[] args)
{
// Create a list of Trainer (Polymorphism)
List<Trainer> trainers = new List<Trainer>()
{
new PersonalTrainer(1, "Rahim", 20000, "Weight Training", 500, 35, 90),
new PersonalTrainer(2, "Sadia", 22000, "Yoga", 400, 20, 80),
new GeneralTrainer(3, "Karim", 18000, "Cardio", 5),
new GeneralTrainer(4, "Nabil", 17000, "Strength", 2)
};
// Using foreach
foreach (Trainer trainer in trainers)
{
[Link](); // Runtime Polymorphism happens here
}
[Link]();
}
}
}

✅ What This Demonstrates


 ✔ Inheritance
 ✔ Method overriding
 ✔ Virtual method
 ✔ Constructor chaining (: base(...))
 ✔ Polymorphism (Trainer t1 = new PersonalTrainer(...))
 ✔ Business rule logic

You might also like