Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I provided the pictures and the required code to finish up in a C programming la

ID: 3723521 • Letter: I

Question

I provided the pictures and the required code to finish up in a C programming language. Codes are seperates by **** and the name of each files .c and .h are in bold characther. To make it easier to understand.

In The C programming language:

first file is employee.c

*******************************************************************************************************************************************

#include "employee.h"
#include "stdio.h"

void printEmployee(PersonRec person)

{
   //print the employee first and family name
    printf("%-15s",person.first_name);
     printf("%-15s",person.family_name);

}

void printEmployees(PersonRec *person, int numRecords)
{


    // add code

}


void printEmployeesSummary(PersonRec *person, int numRecords)
{

    // add code

}

second file is: employee.h

*******************************************************************************************************************************************

// file is emoloyee.h

// include files
#include "struct.h"
// function prototypes

void printEmployees(PersonRec *person, int numRecords);
void printEmployeesSummary(PersonRec *person, int numRecords);

third file is hospital.c

*******************************************************************************************************************************************

#include "stdio.h"
#include "stdlib.h"
#include "struct.h"
#include "string.h"
#include "populateRecords.h"
#include "patient.h"
#include "employee.h"

#define NUM_RECORDS 20


int main()
{
    struct person person[NUM_RECORDS];
   char rc = 0;


    // populating the array person with data of patients and employees
    populateRecords(person, NUM_RECORDS);

    // add code here
    //

  
    return 0;
}

fourth file is patient.c

*******************************************************************************************************************************************

#include "string.h"
#include "stdio.h"
#include "patient.h"


void printPatient(PersonRec person)

{

    // add code

}


void printPatients(PersonRec *person, int numRecords)
{

    // add code

}


void printPatientSummary(PersonRec *person, int numRecords)
{

    // add code

}



void searchPatient(PersonRec *person, int numRecords)

{

    // add code

}

fifth file is patient.h

*******************************************************************************************************************************************

// file is patient.h

// include files
#include "struct.h"

/******************************************************/
// function prototypes

void printPatients(PersonRec *person, int numRecords);
void printPatientSummary(PersonRec *person, int numRecords);
void searchPatient(PersonRec *person, int numRecords);
void printPatientSummary(PersonRec *person, int numRecords);

sixth file is populateRecords.c

*******************************************************************************************************************************************

//INCLUDES

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "populateRecords.h"


//FUNCTION PROTOTYPES

void populateEmployee(EmployeeRec *employee);
void populatePatient(PatientRec *patient);


/* populates an employees

input

emp - an employee record

output
emp - populated employee


*/


// DEFINES

#define MAX_YEARS_SERVICE 63
#define MAX_SALARY 300000


void populateEmployee(EmployeeRec *emp)
{

   emp->salary = (rand() % MAX_SALARY) * 1.34f ;
   emp->yearsService = rand() % MAX_YEARS_SERVICE+1;
   emp->department = rand() % MAX_DEPARTMENTS + 1;
   emp->position = rand() % MAX_POSITIONS;

}


/* populate a patient record

input
patient - a student record

output
patient - a student record


*/

#define MAX_DAILY_COST 50
#define MAX_DAYS_IN_HOSPITAL 30


void populatePatient(PatientRec *p)
{

   p->department = rand() % MAX_DEPARTMENTS + 1;
   p->dailyCost = rand() % MAX_DAILY_COST+5;
   p->severity = rand() % NUM_SEVERITIES;
   p->numDaysInHospital = rand() % MAX_DAYS_IN_HOSPITAL+1;

}


/* populate an employee record

input
person - an array of persons
numPersons - number of person in the array

output
emp - array of employees

assumption:
numPersons is <= the size of the array person
*/
#define NUM_NAMES 7
void populateRecords(PersonRec *person, int numPersons)
{
   int i = 0;
   int j;
   static int initRandom = 0;

   char *fn[NUM_NAMES] = { "John", "Jane", "David", "Dina", "Justin","Jennifer", "Don" };
   char *sn[NUM_NAMES] = { "Smith", "Johnson", "Mart", "Carp", "Farmer","Ouster","Door" };

   if (!initRandom) {
       initRandom++;

   }

   while (i < numPersons) {
       j = rand() % NUM_NAMES;
       person->firstName[NAME_SIZE - 1] = '';
       strncpy(person->firstName, fn[j], NAME_SIZE - 1);
       j = rand() % NUM_NAMES;
       person->familyName[NAME_SIZE - 1] = '';
       strncpy(person->familyName, sn[j], sizeof(person->familyName) - 1);
       if (rand() % 2) {
           person->emplyeeOrPatient = PATIENT_TYPE;
           populatePatient(&person->patient);
       } else {
           populateEmployee(&person->emp);
           person->emplyeeOrPatient = EMPLOYEE_TYPE;
       }
       person++;
       i++;
   }
}

*******************************************************************************************************************************************

seventh file is populateRecords.h

// File populateRecords.h
/*
Purpose: populate the records of the patient and the employee

The user can populate the reocrds of an array of tyupe person.

*/


#ifndef POPULATE_ARRAY_HEADER
#define POPULATE_ARRAY_HEADER

#include "struct.h"

void populateRecords(PersonRec *person, int numRecords); // parameter: person and array of person records, nuMRecords the array size

#endif

eight and final file is struct.h

*******************************************************************************************************************************************

// file is struct.h
#ifndef STRUCT_HEADER
#define STRUCT_HEADER

//DEFINES

#define NAME_SIZE     64   // size of array for patient/employee name (maximum name length is NAME_SIZE - 1)

//Patient related defines
#define PATIENT_TYPE 1      // determine that the record is a patient record
#define NUM_SEVERITIES 4 // number of different states of a patient
#define LIGHT 0
#define STABLE 1
#define ACCUTE 2
#define IMMEDIATE_SURGERY 3

//Employee related defines
#define EMPLOYEE_TYPE 0     // determines that the record is an employee record
#define MAX_POSITIONS 4     // number of different positions
#define DOCTOR 0
#define NURSE 1
#define SURGEON 2
#define ADMIN 3

// Department defines
#define MAX_DEPARTMENTS 6


// structure contains patient information
typedef struct patient {
   int department;           // department in hospital
   long dailyCost;           // cost of hospitalization per day
   short numDaysInHospital;   // number of days in hospital
   char severity;           // severity of illness
} PatientRec;

// structure contains employee information
typedef struct employee {
   int position;           // position of employee in hospital;
   long yearsService;       // years of service
   unsigned long department;   // department in hospital
   float salary;           // annual salary
} EmployeeRec;


// structure contains person information
typedef struct person {
   char firstName[NAME_SIZE];
   char familyName[NAME_SIZE];
   char emplyeeOrPatient;
   union {
       EmployeeRec emp;
       PatientRec patient;

   };
} PersonRec;

#endif

*************************************************** Hopefully everything is clear and comprehensive.

Grading 10 points for a readme file o 1 point for Purpose of software o 1 point for the developer name and development date o 2 points for description on how the software is organized (partitioned into files) o 2 points for instruction on how to compile the program (give an example) o 1 point for any issues/limitations problem that the user must be aware of o 2 points for instructions explaining how to use the software 5 points for proper submission of files submitting a single tar file and a single readme file using correct file names o o 10 points for using good program layout o Adding small functions as needed o Easy to read/review code o Code documented properly (e.g., purpose of functions, role of variable/parameters, code flow) o No "mega" functions o No globals Grading: You will be graded with respect to what you have accomplished. Namely, you earn points for working code and functionality Coding Instructions: 1. Comments in Code - as provided in the slides given in class 2. No usage of global variables. All data must be passed or received via function parameters. 3. Write short and simple functions. 4. Use separate files - 3 C (*.c) files and four header files .h). The assignment provides the header files and the c files with suggested functions names and prototypes. You do not need to use them if you want to design your software differentl name. To compile the code use gcc hospital.c patient.c employee.c populateRecords.c 4.1. File hospital.c- containing the main program (containing main(arge, argv)) and the menu not use more files then those provide nd do not change the file functionality. The main function is given with a function to populate the array 4.2. Files patient.c and patient.h - file patient.c will contains all functions for handling patient records (e.g., printing data of a patient record or search a patient by name). File patient.h will contain the prototype of the patient functions 4.3. Files employee.c and employee.h file employee.c will contain all functions for handling employee reocrds (e.g., printing an employee reocord). File employee.h wl contain the prototype of the Assignment 3 COMP 2401 Page2 of 11

Explanation / Answer

the code has fixed

employee.c

*******************************************************************************************************************************************

#include "employee.h"
#include "stdio.h"

void printEmployee(PersonRec person)

{
//print the employee first and family name
printf("%-15s",person.first_name);
printf("%-15s",person.family_name);

}

void printEmployees(PersonRec *person, int numRecords)
{


// add code

}


void printEmployeesSummary(PersonRec *person, int numRecords)
{

// add code

}

second file is: employee.h

*******************************************************************************************************************************************

// file is emoloyee.h

// include files
#include "struct.h"
// function prototypes

void printEmployees(PersonRec *person, int numRecords);
void printEmployeesSummary(PersonRec *person, int numRecords);

third file is hospital.c

*******************************************************************************************************************************************

#include "stdio.h"
#include "stdlib.h"
#include "struct.h"
#include "string.h"
#include "populateRecords.h"
#include "patient.h"
#include "employee.h"

#define NUM_RECORDS 20


int main()
{
struct person person[NUM_RECORDS];
char rc = 0;


// populating the array person with data of patients and employees
populateRecords(person, NUM_RECORDS);

// add code here
//

  
return 0;
}

fourth file is patient.c

*******************************************************************************************************************************************

#include "string.h"
#include "stdio.h"
#include "patient.h"


void printPatient(PersonRec person)

{

// add code

}


void printPatients(PersonRec *person, int numRecords)
{

// add code

}


void printPatientSummary(PersonRec *person, int numRecords)
{

// add code

}

void searchPatient(PersonRec *person, int numRecords)

{

// add code

}

fifth file is patient.h

*******************************************************************************************************************************************

// file is patient.h

// include files
#include "struct.h"

/******************************************************/
// function prototypes

void printPatients(PersonRec *person, int numRecords);
void printPatientSummary(PersonRec *person, int numRecords);
void searchPatient(PersonRec *person, int numRecords);
void printPatientSummary(PersonRec *person, int numRecords);

sixth file is populateRecords.c

*******************************************************************************************************************************************

//INCLUDES

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "populateRecords.h"


//FUNCTION PROTOTYPES

void populateEmployee(EmployeeRec *employee);
void populatePatient(PatientRec *patient);


/* populates an employees

input

emp - an employee record

output
emp - populated employee


*/


// DEFINES

#define MAX_YEARS_SERVICE 63
#define MAX_SALARY 300000


void populateEmployee(EmployeeRec *emp)
{

emp->salary = (rand() % MAX_SALARY) * 1.34f ;
emp->yearsService = rand() % MAX_YEARS_SERVICE+1;
emp->department = rand() % MAX_DEPARTMENTS + 1;
emp->position = rand() % MAX_POSITIONS;

}


/* populate a patient record

input
patient - a student record

output
patient - a student record


*/

#define MAX_DAILY_COST 50
#define MAX_DAYS_IN_HOSPITAL 30


void populatePatient(PatientRec *p)
{

p->department = rand() % MAX_DEPARTMENTS + 1;
p->dailyCost = rand() % MAX_DAILY_COST+5;
p->severity = rand() % NUM_SEVERITIES;
p->numDaysInHospital = rand() % MAX_DAYS_IN_HOSPITAL+1;

}


/* populate an employee record

input
person - an array of persons
numPersons - number of person in the array

output
emp - array of employees

assumption:
numPersons is <= the size of the array person
*/
#define NUM_NAMES 7
void populateRecords(PersonRec *person, int numPersons)
{
int i = 0;
int j;
static int initRandom = 0;

char *fn[NUM_NAMES] = { "John", "Jane", "David", "Dina", "Justin","Jennifer", "Don" };
char *sn[NUM_NAMES] = { "Smith", "Johnson", "Mart", "Carp", "Farmer","Ouster","Door" };

if (!initRandom) {
initRandom++;

}

while (i < numPersons) {
j = rand() % NUM_NAMES;
person->firstName[NAME_SIZE - 1] = '';
strncpy(person->firstName, fn[j], NAME_SIZE - 1);
j = rand() % NUM_NAMES;
person->familyName[NAME_SIZE - 1] = '';
strncpy(person->familyName, sn[j], sizeof(person->familyName) - 1);
if (rand() % 2) {
person->emplyeeOrPatient = PATIENT_TYPE;
populatePatient(&person->patient);
} else {
populateEmployee(&person->emp);
person->emplyeeOrPatient = EMPLOYEE_TYPE;
}
person++;
i++;
}
}

*******************************************************************************************************************************************

seventh file is populateRecords.h

// File populateRecords.h
/*
Purpose: populate the records of the patient and the employee

The user can populate the reocrds of an array of tyupe person.

*/


#ifndef POPULATE_ARRAY_HEADER
#define POPULATE_ARRAY_HEADER

#include "struct.h"

void populateRecords(PersonRec *person, int numRecords); // parameter: person and array of person records, nuMRecords the array size

#endif

eight and final file is struct.h

*******************************************************************************************************************************************

// file is struct.h
#ifndef STRUCT_HEADER
#define STRUCT_HEADER

//DEFINES

#define NAME_SIZE 64 // size of array for patient/employee name (maximum name length is NAME_SIZE - 1)

//Patient related defines
#define PATIENT_TYPE 1 // determine that the record is a patient record
#define NUM_SEVERITIES 4 // number of different states of a patient
#define LIGHT 0
#define STABLE 1
#define ACCUTE 2
#define IMMEDIATE_SURGERY 3

//Employee related defines
#define EMPLOYEE_TYPE 0 // determines that the record is an employee record
#define MAX_POSITIONS 4 // number of different positions
#define DOCTOR 0
#define NURSE 1
#define SURGEON 2
#define ADMIN 3

// Department defines
#define MAX_DEPARTMENTS 6


// structure contains patient information
typedef struct patient {
int department; // department in hospital
long dailyCost; // cost of hospitalization per day
short numDaysInHospital; // number of days in hospital
char severity; // severity of illness
} PatientRec;

// structure contains employee information
typedef struct employee {
int position; // position of employee in hospital;
long yearsService; // years of service
unsigned long department; // department in hospital
float salary; // annual salary
} EmployeeRec;


// structure contains person information
typedef struct person {
char firstName[NAME_SIZE];
char familyName[NAME_SIZE];
char emplyeeOrPatient;
union {
EmployeeRec emp;
PatientRec patient;

};
} PersonRec;

#endif