Red de conocimiento del abogados - Preguntas y respuestas sobre conocimientos de patentes - Uso del diseño de cursos en lenguaje C: sistema de gestión de salarios de empleados (programación utilizando una matriz de estructura y una lista vinculada respectivamente)

Uso del diseño de cursos en lenguaje C: sistema de gestión de salarios de empleados (programación utilizando una matriz de estructura y una lista vinculada respectivamente)

#includelt;stdio.hgt;

#define NUM 100

void input()

;void search()

p>

;void search_num();

void dele()

;void dele_name();

void dele_num( )

void modi()

void modi_num()

void salida()

void stat()

;void fun()

void run();

struct emploee /*estructura de datos del empleado*/

{

char no[5];

char nombre[8];

char sexo[3];

int edad

int; salar;

}emp[NUM], newemp;

main()

{int x;

printf(" 1. Ingresar registros de empleados\n");

printf(" 2. Consultar registros de empleados\n");

printf(" 3. Modificar registros de empleados\n");

p>

printf(" 4. Eliminar registros de empleados\n");

printf(" 5. Imprimir registros de empleados\n"); printf(" 6. Investigar situación salarial\n");

printf(" 7. Agregar registro de empleado\n");

printf(" 8. Finalizar uso\n");

printf(" 0. Salga del sistema\n");

printf("\n"); Bienvenido al sistema de gestión de salarios de los empleados ***\n");

printf("Por favor seleccione (0-8):\n");

scanf("d" ,amp;x);

cambiar(x)

{

caso 1: entrada(); : buscar(); romper;

caso 3: modi(); romper

caso 4: borrar(); (); romper;

p>

caso 6: stat(); romper

caso 7: ejecutar(); 8: divertido(); romper;

predeterminado: printf("\n ¡Incorrecto!");

}

}

entrada nula()

{

ARCHIVO *fp; >

int n, i;

if ((fp=fopen("emp","wb"))==NULL)

{

imprimirf

("No se puede crear el archivo emp\n");

exit(1);

}

printf("Ingrese el número de empleados:");

p>

scanf("d",amp; n);

printf("Formato de entrada: número de empleado, nombre, sexo, edad, salariolt; Entergt;\ n");

for(i=0;ilt;n;i) /* Bucle para obtener n registros de empleados*/

{

printf( "El désimo empleado:",i 1 );

scanf("sssdd", emp[i].no, emp[i].name, emp[i].sex,

amp; emp[i]. edad, amp; emp[i].

}

for(i=0; ilt; n; i) /* Escriba n registros de empleados en el archivo* /

fwrite(amp; emp[i], sizeof(struct emploee), 1, fp

fclose(fp); p>

}

/************************Módulo de estadísticas********** ************** *****/

void stat( )

{

ARCHIVO *fp;

int n, num;

p>

if((fp=fopen("emp","rb"))==NULL)

{

printf("No se puede abrir el archivo emp\n" );

exit(1);

}

printf("Salario: ");

scanf("d" , amp; num);

printf("Número de registro número de empleado nombre género edad salario\n");

for(n=0; fread(amp; emp, sizeof( struct emploee), 1, fp); n )

if (emp[n].salargt; =num)

printf("6d6s9s4s5d6d\n", n 1, emp[ n].no, emp[n].nombre, emp[n].sexo,

emp[n].edad, emp[ n].salar);

fclose( fp);

}

/**************** ****Eliminar módulo********* **********/

void dele()

{

int x;

while(1 )

{

printf("\n\n\t\tEliminar submenú\n");

printf("\t\t* ********\n");

printf("\t\t 1. Eliminar registros por número de empleado\n" );

printf("\ t\t 0. Regresar al menú principal\n");

printf("\t\t******** ****\n");

printf( "\t Seleccione (0-1):");

scanf("d",amp;x);

cambiar(x)

{

caso 1: dele_num(); romper;

predeterminado: printf("\nIncorrecto!"); ;

}

}

void dele_num()

{

ARCHIVO *fp;

int i, j, n;

char num[5]

if((fp=fopen("emp", "rb"))==NULL )

{

printf("No se puede abrir el archivo emp\n");

exit(1); p>

printf("Antes de la eliminación:\n");

printf("Número de registro número de empleado nombre sexo edad salario\n"); 0; fread(amp; emp[n], sizeof(struct empleado), 1, fp n )

printf("6s6s9s4s5d6d\n", n 1, emp[n].no, emp); [n].name, emp[n].sex,

emp[n].age, emp[n].salar /*n es el número de registros en el archivo emp*/<); /p>

printf("Número de empleado que se eliminará: ");

scanf("s", num

for(i=0;(strcmp( emp[i ].no,num)!=0amp;amp;ilt;n);i )

if(igt;=n)

{

printf( "\tEmpleados sin número de empleado\n", num);

exit(2);

}

fclose(fp);

p>

fp=fopen("emp", "w ");

if(n==1) /*Se ha eliminado un registro*/

{

fclose(fp);

salir(3);

}

for(j=0; jlt;i;j)

fwrite(amp; emp[j], sizeof(struct emploee), 1, fp

for(j=i 1; jlt; n); ; j)

fwrite(amp; emp[j], sizeof(struct emploee), 1, fp

printf("Después de la eliminación:\n"); p>

fseek (fp, 0, SEEK_SET);

printf("Número de registro número de empleado nombre sexo edad salario\n"); fread(amp; emp[ i], sizeof(struct empleado), 1, fp);

printf("6s6s9s4s5d6d\n", i 1, emp[i].no, emp[i] ].nombre, emp[ i].sexo,

emp[i].edad, emp[i].salar

fclose(fp); p>}

/************

**********Modificar módulo************************/

void modi()

{

int x;

mientras(1)

{

printf("\n\n\ t\tmodificador Menú\n");

printf("\t\t************************\n" );

printf("\t\t1. Modificar por número de empleado\n");

printf("\t\t0. Volver al menú principal\n");

printf("\t\t************************\n");

printf("\tPor favor seleccione (0- 1): ");

scanf("d",amp;x);

switch(x)

{

caso 1: modi_num(); break;

predeterminado: printf("\nError de entrada!"); p>if(x==0 )break;

}

}

void modi_num()

{

ARCHIVO *fp;

int i, j;

char num[5];

if((fp=fopen("emp", "rb "))==NULL )

{

printf("No se puede abrir el archivo emp\n");

exit(1); p>

}

printf("Número de empleado a modificar: ");

scanf("s", num

for( i=0; fread(amp; emp[i], sizeof(struct emploee), 1, fp )

if(!strcmp(emp[i].no, num))break;

if (feof(fp))

{

printf("\tEmpleado sin número de empleado\n", num);

exit(2) ;

}

printf("Número de registro número de empleado nombre sexo edad salario\n"); n", i 1, emp[i].no, emp[i].nombre, emp[i].sexo,

emp[i].edad, emp[i].salar);

printf("Formato de entrada: número de empleado nombre género edad salariolt; Entergt; \n");

printf("registro dth: ", i 1); p> scanf ("sssdd", newemp.no, newemp.name, newemp.sex, amp; newemp.age,

amp; newemp.salar); /*Obtener nuevos registros de empleados*/

fseek(fp, -(long)sizeof(struct emploee), SEEK_CUR);

/*El puntero del archivo apunta al comienzo del registro modificado*/

fwrite(amp; newemp,sizeof(struct empleado),1,fp

); /*Sobrescribir el registro actual con newemp*/

printf("Después de la modificación:\n");

fseek(fp, 0, SEEK_SET); modificación Datos del archivo*/

printf("Número de registro número de empleado nombre género edad salario\n"

for(i=0; fread(amp; emp[i], sizeof(struct emploee), 1, fp)!=0; i )

printf("6d6s9s4s5d6d\n", i 1, emp[i].no, emp[i].nombre, emp[ i].sexo,

emp[i].edad, emp[i].salar

fclose(fp); >

/******************************Módulo de consulta************* ***** *****/

búsqueda nula( )

{

int x;

while(1 )

{

printf("\n\n\t\tComprobar submenú\n");

printf("\t\t*** *** ****************\n");

printf("\t\t 1. Consulta por número de empleado\n");

printf("\t\t 0.Volver al menú principal\n");

printf("\t\t************ ****** **\n");

printf("\tPor favor seleccione (0-1):");

scanf("d",amp; x);

p>

switch(x)

{

caso 1: search_num(); ("\n ¡Mal!" );

}

if(x==0) descanso;

}

}

void search_num()

{

ARCHIVO *fp

int i

char num; /p>

if ((fp=fopen("emp","rb"))==NULL)

{

printf("No se puede abrir el archivo emp\n ");

exit(1);

}

printf("Número de empleado a consultar: ");

scanf ("s", num) ;

for(i=0;fread(amp;emp[i],sizeof(struct emploee),1,fp);i)

if(!strcmp(emp[ i].no, num)) break;

if(feof(fp))

{

printf("\ tNo se encontró dicha persona\n ");

exit(2);

}

printf("Número de registro número de empleado nombre sexo edad salario\n"

printf("6d6s9s4s5d6d\n",i 1,emp[i].no,emp[i].nombre,emp[i].sexo,

);

emp[i].edad, emp[i].salar

fclose(fp

}

/****); ***************Módulo de salida************************/

salida nula( )

{int i;

ARCHIVO *fp;

if((fp=fopen("emp", "r"))==NULL)

{printf("No se puede abrir el archivo emp\n");

exit(0);

}

printf(" Número de registro Número de empleado, nombre, sexo, edad, salario\n");

for(i=0; fread(amp; emp[i], sizeof(struct emploee), 1, fp)! =0; i )

{

printf("6d6s9s4s5d6d\n",i 1,emp[i].no,emp[i].nombre,emp[i]. sexo,

emp[i].edad, emp[i].salar

}

fclose(fp); >}

/******************Módulo adicional********************* ****/

void run()

{

ARCHIVO *fp

int n, i, j; /p>

if((fp= fopen("emp","ab "))==NULL)

{printf("No se puede abrir el archivo emp\n");

exit(0);

}

printf("Número de empleados a agregar: ");

scanf("d", amp ; n);

for (i=0; ilt; n; i)

{ printf("Formato de entrada: número de empleado, nombre, sexo, edad, salariolt; entergt; \n");

printf(" Registro de empleado: ");

scanf("sssdd", newemp.no, newemp.name, newemp.sex, amp; newemp. age,

amp; newemp.salar) ;

/*Obtener un registro de empleado*/

fwrite(amp; newemp, sizeof(struct emploee), 1, fp);

/*Se escribirá el registro del empleado en el archivo */

}

fclose(fp); p>}

/****** *************Módulo de visualización******************/

diversión vacía()

{printf("\t\t*************************** ***************** \n");

printf("\t\t* *\n");

imprimirf(

"\t\t* *\n");

printf("\t\t* ¡Gracias por usar! *\n");

printf("\t \t * *\n");

printf("\t\t* *\n");

printf("\t\t****** ** **********************************\n");

}