2 Prepare Employee Ledger

PHOTO EMBED

Fri Aug 25 2023 06:26:12 GMT+0000 (Coordinated Universal Time)

Saved by @109_Vivek

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

void insert(int employeeID[], char name[100][100], int expenditure[100], int salary[100], int *n)
{
    printf("Enter Employee ID : ");
    scanf("%d", &employeeID[*n]);
    printf("Enter Employee Name : ");
    scanf("%s", &name[*n]);
    printf("Enter Employee Expenditure : ");
    scanf("%d", &expenditure[*n]);
    printf("Enter Employee Salary : ");
    scanf("%d", &salary[*n]);
    (*n)++;
}

void display(int employeeID[], char name[100][100], int expenditure[], int salary[], int n)
{
    int i;
    printf("\n EmployeeID      Name        Expenditure     Salary\n");
    for (i = 0; i < n; i++)
    {
	printf("%5d  %5s %5d %5d \n", employeeID[i], name[i], expenditure[i], salary[i]);
    }
}

void sortEmployeeID(int employeeID[], char name[100][100], int expenditure[100], int salary[100], int n)
{
    int i, key, j, temp1, temp2;
    char temp[100];

    for (i = 1; i < n; i++)
    {
	key = employeeID[i];
	strcpy(temp, name[i]);
	temp1 = expenditure[i];
	temp2 = salary[i];
	j = i - 1;

	while (j >= 0 && employeeID[j] > key)
	{
	    employeeID[j + 1] = employeeID[j];
	    expenditure[j + 1] = expenditure[j];
	    strcpy(name[j + 1], name[j]);
	    salary[j + 1] = salary[j];
	    j = j - 1;
	}
	employeeID[j + 1] = key;
	strcpy(name[j + 1], temp);
	expenditure[j + 1] = temp1;
	salary[j + 1] = temp2;
    }
}

void sortExpenditure(int expenditure[],int salary[],int n,int employeeID[],char name[][100])
{
    int i,j,t1,t2,t3;
    char t4[100];
    for(i=0;i<n;i++)
    {
	for(j=0;j<n-i-1;j++)
	{
	    if(expenditure[j]>expenditure[j+1])
	    {
		t1=expenditure[j];
		expenditure[j]=expenditure[j+1];
		expenditure[j+1]=t1;

		t2=salary[j];
		salary[j]=salary[j+1];
		salary[j+1]=t2;

		t3=employeeID[j];
		employeeID[j]=employeeID[j+1];
		employeeID[j+1]=t3;

		strcpy(t4,name[j]);
		strcpy(name[j],name[j+1]);
		strcpy(name[j+1],t4);
	    }
	}


    }
}

void sortSalary(int employeeID[100], char name[100][100], int expenditure[100], int salary[100], int n)
{
int i,temp,temp2,j,temp4;
char temp3[100];
    for ( i = 0; i < n; i++)
    {
	int min = i;
	for ( j = i + 1; j < n; j++)
	{
	    if (salary[j] < salary[min])
	    {
		min = j;
	    }
	}

	// Swap
	temp = expenditure[i];
	temp2 = employeeID[i];
	strcpy(temp3 , name[i]);
	temp4 = salary[i];
	expenditure[i] = expenditure[min];
	employeeID[i] = employeeID[min];
	strcpy(name[i] , name[min]);
	salary[i] = salary[min];
	expenditure[min] = temp;
	employeeID[min] = temp2;
	strcpy(name[min],temp3);
	salary[min] = temp4;
    }
}

void searchMaxSalary(int employeeID[100], char name[100][100], int expenditure[100], int salary[100], int n)
{
int i;
    int maxSalaryIndex = 0;
    for ( i = 0; i < n; i++)
    {
	if (salary[i] > salary[maxSalaryIndex])
	{
	    maxSalaryIndex = i;
	}
    }
    printf("Employee ID : %d \n", employeeID[maxSalaryIndex]);
    printf("Name : %s \n", name[maxSalaryIndex]);
    printf("Expenditure : %d \n", expenditure[maxSalaryIndex]);
    printf("Salary : %d \n", salary[maxSalaryIndex]);
}

void searchEmployee(int employeeID[100], char name[100][100], int expenditure[100], int salary[100], int n)
{
    int low=0,high=n,id,found,flag=0;
    printf("Enter Employee ID : ");
    scanf("%d",&id);
  // Repeat until the pointers low and high meet each other
  while (low <= high) {
    int mid = low + (high - low) / 2;

    if (employeeID[mid] == id)
    {
	flag=1;
	found = mid;
    }

    if (employeeID[mid] < id)
    {
      low = mid + 1;
    }

    else
      high = mid - 1;
  }

 if(flag==0)
 {
     printf("The value does not found");
 }
 else{
    printf("Value found \n");
    printf("---------------\n");
    printf("%d      %s    %d     %d ",employeeID[found],name[found],expenditure[found],salary[found]);
 }

}

void main()
{
    int choice;
    int employeeID[100];
    char name[100][100];
    int expenditure[100];
    int salary[100];
    int n;
    clrscr();
    n=0;
restart:

    printf("\n");
    printf("1. Add Employee \n");
    printf("2. Display Employee Data \n");
    printf("3. Sort Employee ID using Insertion Sort \n");
    printf("4. Sort Expenditure using Bubble Sort \n");
    printf("5. Sort Salary using Selection Sort \n");
    printf("6. Search Max Salary using Linear Search \n");
    printf("7. Search by Employee ID using Binary Search \n");
    printf("8. Exit \n");
    printf("Enter Your Choice : ");
    scanf("%d", &choice);
    switch (choice)
    {
    case 1:
	insert(employeeID, name, expenditure, salary, &n);
	break;

    case 2:
	display(employeeID, name, expenditure, salary, n);
	break;

    case 3:
	sortEmployeeID(employeeID, name, expenditure, salary, n);
	break;

    case 4:
	sortExpenditure(expenditure,salary,n,employeeID,name);
	break;

    case 5:
	sortSalary(employeeID, name, expenditure, salary, n);

    case 6:
	searchMaxSalary(employeeID, name, expenditure, salary, n);
	break;

    case 7:
	searchEmployee(employeeID,name,expenditure,salary,n);
	break;

    case 8:
	exit(0);
	break;

    default:
	printf("Invalid Choice ! ");
	break;
    }
    goto restart;

}
content_copyCOPY