Physical Address
Godawari 2 Attariya Kailali
Physical Address
Godawari 2 Attariya Kailali
This is a very simple Employee Record Management System Project in C. In this project, you can manage easily employee records – add, list, modify and delete records of employees. overall this project will help you learn File handling in c and how to add, view, change and remove databases.
Here, you can Add and list the employee’s records but cannot search them. If you have more experience with C language you modify this project and write your own code to implement the search function in the records.
This project is a console-based application without graphics this project is compiled in Code::Blocks using GCC compiler. The source code for this project is easy to understand and short, and simple. we have used comments in the code to easy to understand
If you want to run the Employee Record management system on other compiler platforms you may require modifications to the code, and the current code will show errors. if you are interested in a similar project check out this Department Store Management System.
One of the main features of this project includes basic file-handling operations; you can easily learn how to add, list, modify and delete data from the records. you can analyze how things such as functions, pointers, files, and arrays are implemented.
Currently, listed below are the features that make up this Employee record System project, but you can add new features as you like to make this project the best one
#include <stdio.h> ///for input output functions like printf, scanf #include <stdlib.h> #include <conio.h> #include <windows.h> ///for windows related functions (not important) #include <string.h> ///string operations /** List of Global Variable */ COORD coord = {0,0}; /// top-left corner of window /** function : gotoxy @param input: x and y coordinates @param output: moves the cursor in specified position of console */ void gotoxy(int x,int y) { coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); } /** Main function started */ int main() { FILE *fp, *ft; /// file pointers char another, choice; /** structure that represent a employee */ struct emp { char name[40]; ///name of employee int age; /// age of employee float bs; /// basic salary of employee }; struct emp e; /// structure variable creation char empname[40]; /// string to store name of the employee long int recsize; /// size of each record of employee /** open the file in binary read and write mode * if the file EMP.DAT already exists then it open that file in read write mode * if the file doesn't exit it simply create a new copy */ fp = fopen("EMP.DAT","rb+"); if(fp == NULL) { fp = fopen("EMP.DAT","wb+"); if(fp == NULL) { printf("Connot open file"); exit(1); } } /// sizeo of each record i.e. size of structure variable e recsize = sizeof(e); /// infinite loop continues untile the break statement encounter while(1) { system("cls"); ///clear the console window gotoxy(30,10); /// move the cursor to postion 30, 10 from top-left corner printf("1. Add Record"); /// option for add record gotoxy(30,12); printf("2. List Records"); /// option for showing existing record gotoxy(30,14); printf("3. Modify Records"); /// option for editing record gotoxy(30,16); printf("4. Delete Records"); /// option for deleting record gotoxy(30,18); printf("5. Exit"); /// exit from the program gotoxy(30,20); printf("Your Choice: "); /// enter the choice 1, 2, 3, 4, 5 fflush(stdin); /// flush the input buffer choice = getche(); /// get the input from keyboard switch(choice) { case '1': /// if user press 1 system("cls"); fseek(fp,0,SEEK_END); /// search the file and move cursor to end of the file /// here 0 indicates moving 0 distance from the end of the file another = 'y'; while(another == 'y') /// if user want to add another record { printf("\nEnter name: "); scanf("%s",e.name); printf("\nEnter age: "); scanf("%d", &e.age); printf("\nEnter basic salary: "); scanf("%f", &e.bs); fwrite(&e,recsize,1,fp); /// write the record in the file printf("\nAdd another record(y/n) "); fflush(stdin); another = getche(); } break; case '2': system("cls"); rewind(fp); ///this moves file cursor to start of the file while(fread(&e,recsize,1,fp)==1) /// read the file and fetch the record one record per fetch { printf("\n%s %d %.2f",e.name,e.age,e.bs); /// print the name, age and basic salary } getch(); break; case '3': /// if user press 3 then do editing existing record system("cls"); another = 'y'; while(another == 'y') { printf("Enter the employee name to modify: "); scanf("%s", empname); rewind(fp); while(fread(&e,recsize,1,fp)==1) /// fetch all record from file { if(strcmp(e.name,empname) == 0) ///if entered name matches with that in file { printf("\nEnter new name,age and bs: "); scanf("%s%d%f",e.name,&e.age,&e.bs); fseek(fp,-recsize,SEEK_CUR); /// move the cursor 1 step back from current position fwrite(&e,recsize,1,fp); /// override the record break; } } printf("\nModify another record(y/n)"); fflush(stdin); another = getche(); } break; case '4': system("cls"); another = 'y'; while(another == 'y') { printf("\nEnter name of employee to delete: "); scanf("%s",empname); ft = fopen("Temp.dat","wb"); /// create a intermediate file for temporary storage rewind(fp); /// move record to starting of file while(fread(&e,recsize,1,fp) == 1) /// read all records from file { if(strcmp(e.name,empname) != 0) /// if the entered record match { fwrite(&e,recsize,1,ft); /// move all records except the one that is to be deleted to temp file } } fclose(fp); fclose(ft); remove("EMP.DAT"); /// remove the orginal file rename("Temp.dat","EMP.DAT"); /// rename the temp file to original file name fp = fopen("EMP.DAT", "rb+"); printf("Delete another record(y/n)"); fflush(stdin); another = getche(); } break; case '5': fclose(fp); /// close the file exit(0); /// exit from the program } } return 0; }