CAN ANYONE DRAW ME A FLOWCHART FOR THIS
CODE.
--------------------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct personTag
{
char name[20];
int age;
};
struct officalTag
{
int deptId;
char cmpName[20];
double salary;
};
struct employeeTag
{
struct personTag personalInfo;
struct officalTag officialInfo;
struct employeeTag *next;
};
struct employeeTag *start=NULL;
void readFile()
{
FILE *fp;
char header[100];
fp=fopen("employee.txt","r");
if(fp==NULL)
{
printf("Error in file opening or file doesnot exist.");
exit(0);
}
fgets(header,100,fp);
while(!feof(fp))
{
struct employeeTag *newn,*temp;
newn=(struct employeeTag*)malloc(sizeof(struct employeeTag));
fscanf(fp,"%s%d%d%s%lf",newn->personalInfo.name,&newn->personalInfo.age,&newn->officialInfo.deptId,newn->officialInfo.cmpName,&newn->officialInfo.salary);
newn->next=NULL;
if(start==NULL)
{
start=newn;
}
else
{
temp=start;
while(temp->next!=NULL)
temp=temp->next;
temp->next=newn;
}
}
fclose(fp);
}
void displayEmployees()
{
struct employeeTag *ptr;
if(start==NULL)
printf("List is empty");
else
{
printf("\nThe detail of elements are:\n");
printf("\nName\tAge\tId\tCompany\tSalary\n");
ptr=start;
while(ptr!=NULL)
{
printf("%s\t%d\t%d\t%s\t%.2lf\n",ptr->personalInfo.name,ptr->personalInfo.age,ptr->officialInfo.deptId,ptr->officialInfo.cmpName,ptr->officialInfo.salary);
ptr=ptr->next;
}
}
}
void searchEmployee()
{
double Salary;
struct employeeTag *ptr;
printf("Enter salary to search: ");
scanf("%lf",&Salary);
if(start==NULL)
printf("List is empty");
else
{
printf("\nThe detail of employees with maximum salary
is:\n");
ptr=start;
while(ptr!=NULL)
{
if(Salary==ptr->officialInfo.salary)
{
printf("Name: %s\nAge: %d\nDept. ID: %d\nCompany Name: %s\nSalary:
%.2lf\n",ptr->personalInfo.name,ptr->personalInfo.age,ptr->officialInfo.deptId,ptr->officialInfo.cmpName,ptr->officialInfo.salary);
}
ptr=ptr->next;
}
}
}
void findMaximum()
{
struct employeeTag *ptr,*maxptr;
double max=0;
if(start==NULL)
printf("List is empty");
else
{
ptr=start;
while(ptr!=NULL)
{
if(max<ptr->officialInfo.salary)
{
max=ptr->officialInfo.salary;
maxptr=ptr;
}
ptr=ptr->next;
}
printf("\nThe detail of employees with maximum salary
is:\n");
printf("\nName: %s\nAge: %d\nDept. ID: %d\nCompany Name:
%s\nSalary:
%.2lf\n",maxptr->personalInfo.name,maxptr->personalInfo.age,maxptr->officialInfo.deptId,maxptr->officialInfo.cmpName,maxptr->officialInfo.salary);
}
}
void lowerSalary()
{
struct employeeTag *ptr;
if(start==NULL)
printf("List is empty");
else
{
printf("\nThe detail of employees with salary less than 5000
are:\n");
ptr=start;
while(ptr!=NULL)
{
if(ptr->officialInfo.salary<5000)
{
printf("\nName: %s\nAge: %d\nDept. ID: %d\nCompany Name:
%s\nSalary:
%.2lf\n",ptr->personalInfo.name,ptr->personalInfo.age,ptr->officialInfo.deptId,ptr->officialInfo.cmpName,ptr->officialInfo.salary);
}
ptr=ptr->next;
}
}
}
void averageSalary()
{
char CName[20];
struct employeeTag *ptr;
double avg=0.0;
int count=0;
printf("Enter company name: ");
scanf("%s",CName);
if(start==NULL)
printf("List is empty");
else
{
printf("\nThe detail of employees with maximum salary
is:\n");
ptr=start;
while(ptr!=NULL)
{
if(strcmp(ptr->officialInfo.cmpName,CName)==0)
{
avg=avg+ptr->officialInfo.salary;
count++;
}
ptr=ptr->next;
}
avg=avg/count;
printf("\nAverage salary of the company is %.2lf\n",avg);
}
}
void updateFile()
{
FILE *fp;
char name[20];
int age;
int id;
char company[20];
double salary;
fp=fopen("employee.txt","a");
printf("Enter name: ");
scanf("%s",name);
printf("Enter age: ");
scanf("%d",&age);
printf("Enter id: ");
scanf("%d",&id);
printf("Enter company name: ");
scanf("%s",company);
printf("Enter salary: ");
scanf("%lf",&salary);
fprintf(fp,"\n%s %d %d %s %.0lf",name,age,id,company,salary);
fclose(fp);
start=NULL;
readFile();
displayEmployees();
}
int main()
{
int choice;
printf("Welcome to Employee Detail Management System\n");
readFile();
do
{
printf("\n(1) Display employee's details\n(2) Search for an
employee’s salary\n(3) Find the details of employee with the
largest salary\n(4) Find the details of all employees having salary
less than 5000\n(5) Find the average salary of a company\n(6) Add
new employee to the record\n(7) Quit program\n");
printf("\nEnter your choice: ");
scanf("%d",&choice);
switch(choice)
{
case 1:
displayEmployees();
break;
case 2:
searchEmployee();
break;
case 3:
findMaximum();
break;
case 4:
lowerSalary();
break;
case 5:
averageSalary();
break;
case 6:
updateFile();
break;
case 7:
printf("Good bye!");
exit(0);
break;
default:
printf("Invalid choice!\n");
}
}while(choice!=7);
return 0;
}
CAN ANYONE DRAW ME A FLOWCHART FOR THIS CODE. --------------------------------------------------------------------------
-
- Site Admin
- Posts: 899603
- Joined: Mon Aug 02, 2021 8:13 am