Quick Bulleted Summary **
**Project Name: Employee Management System
Language: Python
Core Concepts: OOP (Inheritance, Polymorphism, Encapsulation, Abstraction)
Architecture:
Base Class: Employee (holds common private data: ID, Name, Age)
Child Classes: FullTimeEmployee, PartTimeEmployee (inherit from Employee, override calculate_salary())
Manager Class: EmployeeManager (handles CRUD operations: Create, Read, Update, Delete using a list)
Features: Add Employee, Remove Employee, Search by ID, Display All Employees.
User Interface: Command-line interactive menu using a while loop and if/elif conditions.
# ============================================
# EMPLOYEE MANAGEMENT SYSTEM
# OOP Concepts: Class, Object, Encapsulation,
# Inheritance, Polymorphism, Abstraction
# ============================================
# ---------- BASE CLASS (Abstraction + Encapsulation) ----------
class Employee:
def __init__(self, emp_id, name, age):
self.__emp_id = emp_id # private
self.__name = name # private
self.__age = age # private
# Getter methods
def get_id(self):
return self.__emp_id
def get_name(self):
return self.__name
def get_age(self):
return self.__age
# Setter methods
def set_name(self, name):
self.__name = name
def set_age(self, age):
if age > 0:
self.__age = age
# Method to be overridden (Polymorphism)
def calculate_salary(self):
return 0
def display(self):
print("ID :", self.__emp_id)
print("Name :", self.__name)
print("Age :", self.__age)
# ---------- DERIVED CLASS 1 (Inheritance) ----------
class FullTimeEmployee(Employee):
def __init__(self, emp_id, name, age, monthly_salary):
super().__init__(emp_id, name, age)
self.monthly_salary = monthly_salary
# Method Overriding (Polymorphism)
def calculate_salary(self):
return self.monthly_salary
def display(self):
super().display()
print("Type : Full-Time")
print("Salary:", self.calculate_salary())
# ---------- DERIVED CLASS 2 (Inheritance) ----------
class PartTimeEmployee(Employee):
def __init__(self, emp_id, name, age, hours_worked, rate_per_hour):
super().__init__(emp_id, name, age)
self.hours_worked = hours_worked
self.rate_per_hour = rate_per_hour
# Method Overriding (Polymorphism)
def calculate_salary(self):
return self.hours_worked * self.rate_per_hour
def display(self):
super().display()
print("Type : Part-Time")
print("Salary:", self.calculate_salary())
# ---------- MANAGER CLASS ----------
class EmployeeManager:
def __init__(self):
self.employees = [] # list of objects
def add_employee(self, emp):
self.employees.append(emp)
print("Employee added successfully!")
def remove_employee(self, emp_id):
for emp in self.employees:
if emp.get_id() == emp_id:
self.employees.remove(emp)
print("Employee removed!")
return
print("Employee not found.")
def search_employee(self, emp_id):
for emp in self.employees:
if emp.get_id() == emp_id:
print("Employee Found:")
emp.display()
return
print("Employee not found.")
def display_all(self):
if len(self.employees) == 0:
print("No employees to display.")
return
print("----- All Employees -----")
for emp in self.employees:
emp.display()
print("-------------------------")
# ---------- MAIN MENU ----------
def main():
manager = EmployeeManager()
while True:
print("\n===== EMPLOYEE MANAGEMENT SYSTEM =====")
print("1. Add Full-Time Employee")
print("2. Add Part-Time Employee")
print("3. Remove Employee")
print("4. Search Employee")
print("5. Display All Employees")
print("6. Exit")
choice = int(input("Enter your choice: "))
if choice == 1:
eid = int(input("Enter ID: "))
name = input("Enter Name: ")
age = int(input("Enter Age: "))
sal = float(input("Enter Monthly Salary: "))
e = FullTimeEmployee(eid, name, age, sal)
manager.add_employee(e)
elif choice == 2:
eid = int(input("Enter ID: "))
name = input("Enter Name: ")
age = int(input("Enter Age: "))
hours = float(input("Enter Hours Worked: "))
rate = float(input("Enter Rate per Hour: "))
e = PartTimeEmployee(eid, name, age, hours, rate)
manager.add_employee(e)
elif choice == 3:
eid = int(input("Enter Employee ID to remove: "))
manager.remove_employee(eid)
elif choice == 4:
eid = int(input("Enter Employee ID to search: "))
manager.search_employee(eid)
elif choice == 5:
manager.display_all()
elif choice == 6:
print("Thank you! Exiting...")
break
else:
print("Invalid choice. Try again.")
# ---------- PROGRAM ENTRY POINT ----------
if __name__ == "__main__":
main()
Top comments (0)