1
Introduction
Managing employee leave efficiently is crucial for any organization to ensure smooth
operations and maintain workforce productivity. The Employee Leave Management
System is a software application designed to track and manage employee leave
records systematically. Developed in C programming language, this system provides
a structured way to handle leave applications, approvals, and balances while
minimizing manual effort.
Objectives of the System
To store and manage employee leave records.
To allow employees to apply for leave and check leave balances.
To enable HR or management to approve or reject leave requests.
To generate reports on leave history for employees.
Why Use C Language?
The system is built using C language due to its efficiency, simplicity, and control
over system resources. It leverages file handling to store leave records and structs
to manage employee data efficiently.
This project will serve as a basic yet functional system for managing employee leave
records, which can be further enhanced with database integration or a graphical
interface in the future.
KEY FEATURES
Employee Leave Management System, here are the key features :
1. Employee Management
Add new employees
Display employee details
2
2. Leave Application
Apply for leave (store employee ID, leave dates, and reason)
Check leave application status (approved/rejected/pending)
3. Leave Approval System
Admin can approve or reject leave requests
Update leave status accordingly
4. Leave Records
View leave history of employees
Count remaining leaves
5. Basic Authentication (Optional)
Login system for admin & employee
Different access levels (employee vs admin)
Source Code
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_EMPLOYEES 100
typedef struct {
int id;
char name[50];
int leave_days;
} Employee;
Employee employees[MAX_EMPLOYEES];
int employee_count = 0;
3
void add_employee() {
if (employee_count >= MAX_EMPLOYEES) {
printf("Maximum employee limit reached!\n");
return;
}
printf("Enter Employee ID: ");
scanf("%d", &employees[employee_count].id);
printf("Enter Employee Name: ");
scanf("%s", employees[employee_count].name);
employees[employee_count].leave_days = 0;
employee_count++;
printf("Employee added successfully!\n");
}
void apply_leave() {
int id, days, found = 0;
printf("Enter Employee ID: ");
scanf("%d", &id);
for (int i = 0; i < employee_count; i++) {
if (employees[i].id == id) {
found = 1;
printf("Enter number of leave days: ");
scanf("%d", &days);
employees[i].leave_days += days;
printf("Leave applied successfully!\n");
break;
}
}
if (!found) printf("Employee not found!\n");
}
void view_leaves() {
printf("\nEmployee Leave Records:\n");
printf("ID\tName\tLeaves\n");
for (int i = 0; i < employee_count; i++) {
printf("%d\t%s\t%d\n", employees[i].id, employees[i].name,
employees[i].leave_days);
}
}
int main() {
int choice;
while (1) {
printf("\nEmployee Leave Management System\n");
printf("1. Add Employee\n");
printf("2. Apply for Leave\n");
printf("3. View Leave Records\n");
4
printf("4. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
add_employee();
break;
case 2:
apply_leave();
break;
case 3:
view_leaves();
break;
case 4:
exit(0);
default:
printf("Invalid choice! Please try again.\n");
}
}
return 0;
}
OUTPUT
Here’s a sample output of the Employee Leave Management System when executed:
Employee Leave Management System
1. Add Employee
2. Apply for Leave
3. View Leave Records
4. Exit
Enter your choice: 1
Enter Employee ID: 101
Enter Employee Name: John
Employee added successfully!
Employee Leave Management System
1. Add Employee
5
2. Apply for Leave
3. View Leave Records
4. Exit
Enter your choice: 1
Enter Employee ID: 102
Enter Employee Name: Alice
Employee added successfully!
Employee Leave Management System
1. Add Employee
2. Apply for Leave
3. View Leave Records
4. Exit
Enter your choice: 2
Enter Employee ID: 101
Enter number of leave days: 3
Leave applied successfully!
Employee Leave Management System
1. Add Employee
2. Apply for Leave
3. View Leave Records
4. Exit
Enter your choice: 3
Employee Leave Records:
ID Name Leaves
101 John 3
102 Alice 0
Employee Leave Management System
1. Add Employee
2. Apply for Leave
3. View Leave Records
4. Exit
Enter your choice: 4
6
Uses of Employee Leave Management
System
This system serves as a basic yet practical project for learning and implementing
structured programming concepts in C language. Here are some key uses:
1. Practical Learning of C Concepts
-Implements structures (struct Employee) for handling employee data.
-Uses arrays to store multiple employee records.
-Demonstrates file handling (if extended) for data persistence.
-Reinforces loops, conditionals, and functions for program flow.
2. Real-World Application
-Simulates leave management in small organizations, schools, or offices.
-Helps HR teams track employee leaves effectively.
-Can be extended to automate approvals based on conditions.
3. Suitability
-Simple yet effective for a college project.
-Easy to explain in presentations with real-time execution.
-Can be enhanced with features like leave balance tracking, file storage, or
admin approval.
4. Enhancements for Better Grades
-Add login authentication for better security.
-Sore data in files to maintain records after exiting the program.
-Implement leave policies (e.g., max leave per employee).
-Use linked lists instead of arrays for better memory efficiency.