Please solve the following Problem:
You need to store and manage Payroll Records stored as an array of structures of the following form:
struct payroll {
unsigned long long int internal_id;
char first_name[50];
char last_name[50];
char department[100];
unsigned char dob_day;
unsigned char dob_month;
unsigned short dob_year;
double monthly_salary;
};
The array of structures is stored as an external variable
#define MAX_PAY_RECS_NO 10000
struct payroll pay_recs[MAX_PAY_RECS_NO];
The number of actual payroll records is stored in the following external variable:
size_t pay_recs_no;

Respuesta :

Answer:

Check the explanation

Explanation:

#include <stdio.h>

void PrintDeptPayrollrecords(char* dept_name);

struct payroll {

unsigned long long int internal_id;

char first_name[50];

char last_name[50];

char departmnet [100];

unsigned char dob_day;

unsigned char dob_month;

unsigned short dob_year;

double monthly_salaray;

};

#define MAX_PAY_RECS_NO 10000

struct payroll pay_recs[MAX_PAY_RECS_NO];

size_t pay_recs_no;

int main()

{

int i;

pay_recs_no = 10;

 

pay_recs[0]. internal_id = 111;

strcpy(pay_recs[0]. first_name, "aaaaaaa");

strcpy(pay_recs[0]. last_name, "AAAAAAA");

strcpy(pay_recs[0]. departmnet, "banking");

pay_recs[0]. dob_day = 1;

pay_recs[0]. dob_month = 1;

pay_recs[0]. dob_year = 2001;

pay_recs[0]. monthly_salaray = 1000;

pay_recs[1]. internal_id = 222;

strcpy(pay_recs[1]. first_name, "bbbbbbb");

strcpy(pay_recs[1]. last_name, "BBBBBBB");

strcpy(pay_recs[1]. departmnet, "marketing");

pay_recs[1]. dob_day = 2;

pay_recs[1]. dob_month = 2;

pay_recs[1]. dob_year = 2002;

pay_recs[1]. monthly_salaray = 2000;

pay_recs[2]. internal_id = 333;

strcpy(pay_recs[2]. first_name, "ccccccc");

strcpy(pay_recs[2]. last_name, "CCCCCCC");

strcpy(pay_recs[2]. departmnet, "banking");

pay_recs[2]. dob_day = 3;

pay_recs[2]. dob_month = 3;

pay_recs[2]. dob_year = 2003;

pay_recs[2]. monthly_salaray = 3000;

pay_recs[3]. internal_id = 444;

strcpy(pay_recs[3]. first_name, "ddddddd");

strcpy(pay_recs[3]. last_name, "DDDDDDD");

strcpy(pay_recs[3]. departmnet, "operations");

pay_recs[3]. dob_day = 4;

pay_recs[3]. dob_month = 4;

pay_recs[3]. dob_year = 2004;

pay_recs[3]. monthly_salaray = 4000;

pay_recs[4]. internal_id = 555;

strcpy(pay_recs[4]. first_name, "eeeeeee");

strcpy(pay_recs[4]. last_name, "EEEEEEE");

strcpy(pay_recs[4]. departmnet, "marketing");

pay_recs[4]. dob_day = 5;

pay_recs[4]. dob_month = 5;

pay_recs[4]. dob_year = 2005;

pay_recs[4]. monthly_salaray = 5000;

pay_recs[5]. internal_id = 666;

strcpy(pay_recs[5]. first_name, "ffffffff");

strcpy(pay_recs[5]. last_name, "FFFFFFF");

strcpy(pay_recs[5]. departmnet, "banking");

pay_recs[5]. dob_day = 6;

pay_recs[5]. dob_month = 6;

pay_recs[5]. dob_year = 2006;

pay_recs[5]. monthly_salaray = 6000;

pay_recs[6]. internal_id = 777;

strcpy(pay_recs[6]. first_name, "ggggggg");

strcpy(pay_recs[6]. last_name, "GGGGGGGG");

strcpy(pay_recs[6]. departmnet, "operations");

pay_recs[6]. dob_day = 7;

pay_recs[6]. dob_month = 7;

pay_recs[6]. dob_year = 2007;

pay_recs[6]. monthly_salaray = 7000;

pay_recs[7]. internal_id = 888;

strcpy(pay_recs[7]. first_name, "hhhhhhh");

strcpy(pay_recs[7]. last_name, "HHHHHHHH");

strcpy(pay_recs[7]. departmnet, "marketing");

pay_recs[7]. dob_day = 8;

pay_recs[7]. dob_month = 8;

pay_recs[7]. dob_year = 2008;

pay_recs[7]. monthly_salaray = 8000;

pay_recs[8]. internal_id = 999;

strcpy(pay_recs[8]. first_name, "iiiiiii");

strcpy(pay_recs[8]. last_name, "IIIIIII");

strcpy(pay_recs[8]. departmnet, "operations");

pay_recs[8]. dob_day = 9;

pay_recs[8]. dob_month = 9;

pay_recs[8]. dob_year = 2009;

pay_recs[8]. monthly_salaray = 9000;

pay_recs[9]. internal_id = 1111;

strcpy(pay_recs[9]. first_name, "jjjjjjjj");

strcpy(pay_recs[9]. last_name, "JJJJJJJ");

strcpy(pay_recs[9]. departmnet, "banking");

pay_recs[9]. dob_day = 10;

pay_recs[9]. dob_month = 10;

pay_recs[9]. dob_year = 2010;

pay_recs[9]. monthly_salaray = 10000;

PrintDeptPayrollrecords("marketing");

return 0;

}

void PrintDeptPayrollrecords(char* dept_name) {

int count=0, flag=0, i;

double totalSalaray=0;

for ( i = 0; i <pay_recs_no ; i++ )

{

if(strcmp(dept_name, pay_recs[i]. departmnet)==0) {

flag=1;

break;

}

}

if (flag==1) {

printf("Employees of the %s Department:\n",dept_name);

printf("Last Name \t First Name \t Date of Birth \t Monthly Salary \n");

printf("---------------------------------------------------------- \n");

for ( i = 0; i <pay_recs_no ; i++ )

{

{

if(strcmp(dept_name, pay_recs[i]. departmnet)==0) {

printf("%s \t",pay_recs[i]. last_name);

printf("%s \t",pay_recs[i]. first_name);

printf("%d-%d-%d \t",pay_recs[i].dob_year,pay_recs[i]. dob_month,pay_recs[i]. dob_day);

printf("%.2f \n",pay_recs[i]. monthly_salaray);

count++;

totalSalaray+=pay_recs[i]. monthly_salaray;

}

}

printf("Total Number of Employees in the Department: %d \n",count);

printf("Aggregated Salary of the Department: %.2f",totalSalaray);

} else {

printf("Department %s has no payroll records",dept_name);

}

}

RELAXING NOICE
Relax