DEV Community

Cover image for My project is an Employee Management System built in Python.
Karthick (k)
Karthick (k)

Posted on

My project is an Employee Management System built in Python.

Quick Bulleted Summary **
**Project Name: Employee Management System

  1. Language: Python

  2. Core Concepts: OOP (Inheritance, Polymorphism, Encapsulation, Abstraction)

  3. Architecture:

  4. Base Class: Employee (holds common private data: ID, Name, Age)

  5. Child Classes: FullTimeEmployee, PartTimeEmployee (inherit from Employee, override calculate_salary())

  6. Manager Class: EmployeeManager (handles CRUD operations: Create, Read, Update, Delete using a list)

  7. Features: Add Employee, Remove Employee, Search by ID, Display All Employees.

  8. 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()
Enter fullscreen mode Exit fullscreen mode

Top comments (0)