Система записи сотрудников в C с использованием обработки файлов

Опубликовано: 2 Сентября, 2022

Система учета сотрудников — это программное обеспечение, созданное для выполнения основных функций хозяйственного ведения компании. ERS помогает компаниям отслеживать всех сотрудников и их записи. Он используется для управления компанией с помощью компьютеризированной системы. Это программное обеспечение создано для обработки записей сотрудников любой компании. Это поможет компаниям отслеживать все записи сотрудников в файле.

Цель системы записи сотрудников: пользователю будет предоставлено 5 вариантов:

  • Добавить новую запись.
  • Удалить запись.
  • Изменить запись.
  • Посмотреть все записи.
  • Выход.

Данные сотрудников:

  • Имя.
  • Возраст.
  • Зарплата.
  • Идентификатор сотрудника.

Подход: Все функции будут предоставлены в случае переключателей. Идея состоит в том, чтобы использовать концепции обработки файлов для записи данных в текстовый файл и чтения записанных данных. Нам также нужно добавить файл data.txt в ту же папку.

Подход:

  • Открывающий фрейм состоит из имени приложения и имени разработчика: он создается с помощью нескольких операторов printf и предопределенной функции system(). Функция system() является частью стандартной библиотеки C/C++. Он используется для передачи команд, которые могут быть выполнены в командном процессоре или терминале операционной системы, и, наконец, возвращает команду после ее завершения.
  • system("Color 3F") изменит цвет консоли, т.е. фон (3), и текст на консоли, т.е. передний план (F).
  • system("pause" ) приостановит экран, поэтому пользователь получит сообщение: Нажмите любую клавишу, чтобы продолжить. . .
  • Функция gotoxy(): поможет установить координаты отображаемых данных.
  • Случай переключения : требуемая функция в случаях переключения будет выполняться в соответствии с вводом пользователя. Для разработки кода используются простые концепции обработки файлов, такие как открытие файла, закрытие файла, запись в файл, чтение файла и т. д.

Ниже приведена программа C для системы записей сотрудников:

C




// C program for  the above approach
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
  
// Structure of the employee
struct emp {
    char name[50];
    float salary;
    int age;
    int id;
};
struct emp e;
  
// size of the structure
long int size = sizeof(e);
  
// In the start coordinates
// will be 0, 0
COORD cord = { 0, 0 };
  
// function to set the
// coordinates
void gotoxy(int x, int y)
{
    cord.X = x;
    cord.Y = y;
    SetConsoleCursorPosition(
        GetStdHandle(STD_OUTPUT_HANDLE),
        cord);
}
  
FILE *fp, *ft;
  
// Function to add the records
void addrecord()
{
    system("cls");
    fseek(fp, 0, SEEK_END);
    char another = "y";
  
    while (another == "y") {
        printf(" Enter Name : ");
        scanf("%s", e.name);
  
        printf(" Enter Age : ");
        scanf("%d", &e.age);
  
        printf(" Enter Salary : ");
        scanf("%f", &e.salary);
  
        printf(" Enter EMP-ID : ");
        scanf("%d", &e.id);
  
        fwrite(&e, size, 1, fp);
  
        printf(" Want to add another"
               " record (Y/N) : ");
        fflush(stdin);
  
        scanf("%c", &another);
    }
}
  
// Function to delete the records
void deleterecord()
{
    system("cls");
    char empname[50];
    char another = "y";
  
    while (another == "y") {
        printf(" Enter employee "
               "name to delete : ");
        scanf("%s", empname);
  
        ft = fopen("temp.txt", "wb");
        rewind(fp);
  
        while (fread(&e, size,
                     1, fp)
               == 1) {
            if (strcmp(e.name,
                       empname)
                != 0)
                fwrite(&e, size, 1, ft);
        }
  
        fclose(fp);
        fclose(ft);
        remove("data.txt");
        rename("temp.txt", "data.txt");
        fp = fopen("data.txt", "rb+");
  
        printf(" Want to delete another"
               " record (Y/N) :");
        fflush(stdin);
        another = getche();
    }
}
  
// Function to display the record
void displayrecord()
{
    system("cls");
  
    // sets pointer to start
    // of the file
    rewind(fp);
  
    printf(" ========================="
           "==========================="
           "======");
    printf(" NAME AGE SALARY "
           " ID ",
           e.name, e.age,
           e.salary, e.id);
    printf("==========================="
           "==========================="
           "==== ");
  
    while (fread(&e, size, 1, fp) == 1)
        printf(" %s %d %.2f %10d",
               e.name, e.age, e.salary, e.id);
  
    printf(" ");
    system("pause");
}
  
// Function to modify the record
void modifyrecord()
{
    system("cls");
    char empname[50];
    char another = "y";
  
    while (another == "y") {
        printf(" Enter employee name"
               " to modify : ");
        scanf("%s", empname);
  
        rewind(fp);
  
        // While File is open
        while (fread(&e, size, 1, fp) == 1) {
            // Compare the employee name
            // with ename
            if (strcmp(e.name, empname) == 0) {
                printf(" Enter new name:");
                scanf("%s", e.name);
                printf(" Enter new age :");
                scanf("%d", &e.age);
                printf(" Enter new salary :");
                scanf("%f", &e.salary);
                printf(" Enter new EMP-ID :");
                scanf("%d", &e.id);
  
                fseek(fp, -size, SEEK_CUR);
                fwrite(&e, size, 1, fp);
                break;
            }
        }
  
        // Ask for modifying another record
        printf(" Want to modify another"
               " record (Y/N) :");
        fflush(stdin);
        scanf("%c", &another);
    }
}
  
// Driver code
int main()
{
    int choice;
  
    // opening the file
    fp = fopen("data.txt", "rb+");
  
    // showing error if file is
    // unable to open.
    if (fp == NULL) {
        fp = fopen("data.txt", "wb+");
        if (fp == NULL) {
            printf(" Cannot open file...");
            exit(1);
        }
    }
  
    system("Color 3F");
    printf(" ============="
           "============================="
           "===========");
    printf(" ~~~~~~~~~~~~~~~~~~~"
           "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
           "~~~~~");
    printf(" ==================="
           "============================="
           "=====");
    printf(" [|:::>:::>:::>::>  "
           "EMPLOYEE RECORD  <::<:::<:::"
           "<:::|] ");
    printf(" ==================="
           "============================="
           "=====");
    printf(" ~~~~~~~~~~~~~~~~~~~~"
           "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
           "~~~");
    printf(" ====================="
           "============================== ");
    printf(" "
           "Developer : @Sushant_Gaurav"
           " ");
  
    system("pause");
  
    while (1) {
        // Clearing console and asking the
        // user for input
        system("cls");
        gotoxy(30, 10);
        printf(" 1. ADD RECORD ");
        gotoxy(30, 12);
        printf(" 2. DELETE RECORD ");
        gotoxy(30, 14);
        printf(" 3. DISPLAY RECORDS ");
        gotoxy(30, 16);
        printf(" 4. MODIFY RECORD ");
        gotoxy(30, 18);
        printf(" 5. EXIT ");
        gotoxy(30, 20);
        printf(" ENTER YOUR CHOICE... ");
        fflush(stdin);
        scanf("%d", &choice);
  
        // Switch Case
        switch (choice) {
        case 1:
  
            // Add the records
            addrecord();
            break;
  
        case 2:
  
            // Delete the records
            deleterecord();
            break;
  
        case 3:
  
            // Display the records
            displayrecord();
            break;
  
        case 4:
  
            // Modify the records
            modifyrecord();
            break;
  
        case 5:
            fclose(fp);
            exit(0);
            break;
  
        default:
            printf(" INVALID CHOICE... ");
        }
    }
  
    return 0;
}

Выход:

  • Сначала отображается название программного обеспечения:
  • Отображение всех параметров:
  • Добавление записей:
  • Отображение записей:
  • Удалить запись:

  • Запись после удаления:
  • Изменение или редактирование записи:
  • Запись после модификации: