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()