Sistema de Registro de Empleados en C usando Manejo de Archivos

Employee Record System es un software creado para manejar las principales funciones de limpieza de una empresa. ERS ayuda a las empresas a realizar un seguimiento de todos los empleados y sus registros. Se utiliza para gestionar la empresa mediante un sistema informático. Este software construido para manejar los registros de los empleados de cualquier empresa. Ayudará a las empresas a realizar un seguimiento de todos los registros de los empleados en un archivo.

Objetivo del Sistema de Registro de Empleados: El usuario dispondrá de 5 opciones:

  • Agregar un nuevo registro.
  • Eliminar un registro.
  • Modificar un registro.
  • Ver todos los registros.
  • Salida.

Datos de los Empleados:

  • Nombre.
  • Años.
  • Salario.
  • ID de empleado.

Enfoque: todas las funciones se proporcionarán en casos de interruptores . La idea es usar los conceptos de manejo de archivos para escribir los datos en un archivo de texto y leer los datos escritos también. Necesitamos agregar un archivo data.txt en la misma carpeta también.

Acercarse:

  • El cuadro de apertura consiste en el nombre de la aplicación y el desarrollador: se crea utilizando algunas instrucciones printf y una función predefinida llamada system(). La función system() es parte de la biblioteca estándar de C / C++ . Se utiliza para pasar los comandos que se pueden ejecutar en el procesador de comandos o en la terminal del sistema operativo y finalmente devuelve el comando una vez que se ha completado.
  • system («Color 3F») cambiará el color de la consola, es decir, el fondo (3) y el texto de la consola, es decir, el primer plano (F).
  • El sistema («pausa» ) pausará la pantalla, por lo que el usuario recibirá un mensaje: Presione cualquier tecla para continuar. . .
  • función gotoxy(): ayudará a establecer las coordenadas de los datos mostrados.
  • Caso de interruptor : la función requerida bajo los casos de interruptor se ejecutará según la entrada del usuario. Se utilizan conceptos simples de manejo de archivos como abrir un archivo, cerrar un archivo, escribir en un archivo y leer el archivo, etc. para desarrollar el código.

A continuación se muestra el programa C para el sistema de registro de empleados:

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("\nEnter Name : ");
        scanf("%s", e.name);
  
        printf("\nEnter Age : ");
        scanf("%d", &e.age);
  
        printf("\nEnter Salary : ");
        scanf("%f", &e.salary);
  
        printf("\nEnter EMP-ID : ");
        scanf("%d", &e.id);
  
        fwrite(&e, size, 1, fp);
  
        printf("\nWant 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("\nEnter 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("\nWant 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("\n========================="
           "==========================="
           "======");
    printf("\nNAME\t\tAGE\t\tSALARY\t\t"
           "\tID\n",
           e.name, e.age,
           e.salary, e.id);
    printf("==========================="
           "==========================="
           "====\n");
  
    while (fread(&e, size, 1, fp) == 1)
        printf("\n%s\t\t%d\t\t%.2f\t%10d",
               e.name, e.age, e.salary, e.id);
  
    printf("\n\n\n\t");
    system("pause");
}
  
// Function to modify the record
void modifyrecord()
{
    system("cls");
    char empname[50];
    char another = 'y';
  
    while (another == 'y') {
        printf("\nEnter 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("\nEnter new name:");
                scanf("%s", e.name);
                printf("\nEnter new age :");
                scanf("%d", &e.age);
                printf("\nEnter new salary :");
                scanf("%f", &e.salary);
                printf("\nEnter new EMP-ID :");
                scanf("%d", &e.id);
  
                fseek(fp, -size, SEEK_CUR);
                fwrite(&e, size, 1, fp);
                break;
            }
        }
  
        // Ask for modifying another record
        printf("\nWant 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("\nCannot open file...");
            exit(1);
        }
    }
  
    system("Color 3F");
    printf("\n\n\n\n\t\t\t\t============="
           "============================="
           "===========");
    printf("\n\t\t\t\t~~~~~~~~~~~~~~~~~~~"
           "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
           "~~~~~");
    printf("\n\t\t\t\t==================="
           "============================="
           "=====");
    printf("\n\t\t\t\t[|:::>:::>:::>::>  "
           "EMPLOYEE RECORD  <::<:::<:::"
           "<:::|]\t");
    printf("\n\t\t\t\t==================="
           "============================="
           "=====");
    printf("\n\t\t\t\t~~~~~~~~~~~~~~~~~~~~"
           "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
           "~~~");
    printf("\n\t\t\t\t====================="
           "==============================\n");
    printf("\n\n\n\t\t\t\t\t\t\t\t\t\t"
           "Developer : @Sushant_Gaurav"
           "\n\n\t\t\t\t");
  
    system("pause");
  
    while (1) {
        // Clearing console and asking the
        // user for input
        system("cls");
        gotoxy(30, 10);
        printf("\n1. ADD RECORD\n");
        gotoxy(30, 12);
        printf("\n2. DELETE RECORD\n");
        gotoxy(30, 14);
        printf("\n3. DISPLAY RECORDS\n");
        gotoxy(30, 16);
        printf("\n4. MODIFY RECORD\n");
        gotoxy(30, 18);
        printf("\n5. EXIT\n");
        gotoxy(30, 20);
        printf("\nENTER YOUR CHOICE...\n");
        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("\nINVALID CHOICE...\n");
        }
    }
  
    return 0;
}

Producción:

  • Primero mostrando el nombre del software:
  • Mostrando todas las opciones:
  • Adición de registros:
  • Visualización de registros:
  • Eliminar un registro:
  • Registro después de la eliminación:
  • Modificar o editar un registro:
  • Registro después de la modificación:

Publicación traducida automáticamente

Artículo escrito por imsushant12 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *