Red de conocimiento informático - Computadora portátil - sistema de gestión de información de empleados en lenguaje c

sistema de gestión de información de empleados en lenguaje c

/*Esto es lo que escribí cuando comencé a diseñar el curso*/

#include "stdio.h" /*Biblioteca de funciones de entrada y salida estándar*/

#include "stdlib .h" /*Biblioteca de funciones estándar*/

#include "string.h" /*Biblioteca de funciones de cadenas*/

#include "conio.h" /*Función de operación de pantalla biblioteca* /

#definir encabezado 1 " - ZGGZ - \n "

# definir encabezado 2 " | número | nombre | jbgz | jj | kk | yfgz | sk | sfgz | \n "

# definir encabezado 3 " |-|-|-|-|-|-|-|-|-| \ n "

# definir FORMATO " - 8s | -10s | 8.2f | 8.2f | 8.2f | 8.2f | 8.2f | n "

#Definición de datos p- gt; num, p-> ; jbgz, p- gt; jj, p- gt; kk, p- gt; p- gt; p- gt; p>

#Definición N 60

int save flag = 0 /*Si es necesario guardar la variable de bandera*/

/*Definir estructuras de datos relacionadas con los empleados* /

Estructura Typedef empleado/* marcado como empleado*/

{

char num: ");

scanf("d ", amp select);

If(select==1) /*Consulta por número*/

{

stringinput(searchinput, 10, "Enter el número de empleado existente: ");

p=Locate(tp, n, searchinput, " num "); /*Encuentra el elemento cuyo valor es searchinput en la matriz tp y devuelve el valor del subíndice del elemento de matriz*/

If (p!=-1) /*Si se encuentra el registro*/

{

imprimir encabezado();

imprimir datos( TP: ");

scanf("d ", ampsel);

if(sel==1)

{

stringinput(findmess, 10, "Ingrese el número de empleado existente: ");

p=Locate(tp, n, findmess, " num "); getchar();

Si (p! =-1)

{

for(I = p 1; I ltn; I ) /*Eliminar este registro, los registros posteriores avanzarán*/

{

strcpy(tp[i-1]). número,tp[i]. número);

strcpy(tp[i-1]). Nombre, tp[i]. Nombre);

tp[i-1]. jbgz=tp[i]. jbgz

tp[i-1]. jj=tp[i]. jj;

tp[i-1]. kk=tp[i]. kk;

tp[i-1]. yfgz=tp[i]. yfgz

tp[i-1]. jbgz=tp[i].

sk;

tp[i-1]. sfgz=tp[i]. sfgz

}

printf(" \ n == gt; ¡Eliminación exitosa! \ n ");

n-; getchar();

Guardar bandera = 1;

}

Otro

nofind();

getchar();

}

Else if(sel==2) /*Primero, consulta el valor del subíndice del elemento de la matriz donde se encuentra el registro por nombre*/

{

stringinput(findmess, 15, "Ingrese el nombre del empleado existente: ");

p=Locate(tp, n, findmess, " nombre ");

getchar();

si (p!=-1)

{

for(I = p 1 ; i ltn; I ) / *Eliminar este registro, los registros posteriores avanzarán*/

{

strcpy(tp[i-1]). número,tp[i]. número);

strcpy(tp[i-1]). Nombre, tp[i]. Nombre);

tp[i-1]. jbgz=tp[i]. jbgz

tp[i-1]. jj=tp[i]. jj;

tp[i-1]. kk=tp[i]. kk;

tp[i-1]. yfgz=tp[i]. yfgz

tp[i-1]. jbgz=tp[i]. sk;

tp[i-1]. sfgz=tp[i]. sfgz

}

printf(" \ n = = = = = gt; ¡Eliminación exitosa! \ n "

n-;

getchar();

Guardar bandera = 1;

}

Otro

nofind();

getchar();

}

Devuelve n;

}

/*Modificar el registro. Primero consulte el registro según el número de empleado ingresado y luego solicite al usuario que modifique valores distintos del número. Este número no se puede modificar*/

void Modify(ZGGZ tp[], int n)

{

char find mess[20];

int p = 0;

if (n lt=0)

{ system(" cls ");

printf(" \ n = = = = = gt; ¡No hay registro de empleado! \n ");

getchar();

Regresar;

}

System("cls");

printf("Modificar registro de empleado");

Disp(tp, n);

stringinput(findmess, 10 , "Ingrese el número de empleado existente:"); /*Ingrese y verifique el número*/

p=Locate(tp, n, findmess, "num"); el valor del subíndice */

If (p!=-1) /* If P! =-1, lo que indica que se ha encontrado el elemento de la matriz*/

{

printf("Number: s,\n ", tp[p].num);

printf("Nombre: s,", tp[p].

Nombre);

stringinput(tp[p]. Nombre, 15, "Ingrese nuevo nombre: "

printf("jbgz: 8.2f,", tp[p]); .jbgz);

tp[p]. jbgz = entrada numérica(" jbgz:");

printf("Jiangjin: 8.2f,", tp[p].jj);

tp[p]. jj=numberinput("Jiangjin:");

printf("koukuan:8.2f,",tp[p].kk);

tp[p]. kk = entrada numérica("kou Kuan:");

tp[n]. yfgz=tp[n]. jbgz tp[n]. jj-tp[n]. kk;

tp[n]. sk=tp[n]. yfgz * 0.12;

tp[n]. sfgz=tp[n]. yfgz-tp[n]. sk;

printf(" \ n = = = = = gt; ¡Modificación exitosa!\n ");

getchar(); , n);

getchar();

Guardar bandera = 1;

}

Otros

{ No encontrar();

getchar();

}

Regresar

}

/* Insertar registro: consulte la posición del elemento de la matriz que se insertará según el número de empleado y luego inserte un nuevo elemento de la matriz después del número.

*/

int Insert(ZGGZ tp[], int n)

{

char ch, num[10], s[10]; s[] guarda el número antes de la posición del punto de inserción, num[] guarda el número del nuevo registro ingresado*/

ZGGZ newinfo

int flag=0, i=0, kkk = 0;

sistema("cls");

Disp(tp, n);

mientras(1)

{ stringinput (s, 10, "Ingrese la posición de inserción después del número:");

flag = 0; I = 0

while(IltN) /*Consulta si; el número existe, flag=1 indica que el número existe*/

{

if(strcmp(tp[i].num, s)== 0){ kkk = I ; bandera = 1; romper; }

i;

}

if(bandera==1)

romper; si el número existe, ingrese un nuevo registro antes de insertar*/

Otro

{ getchar();

printf(" \ n = = = = = gt; El número s no existe, ¿inténtalo de nuevo? (y/n): ", s);

scanf("c ", ampch);

if(ch= =' y'||ch=='Y ')

{Continuar;}

Otro

{ return n;}

}

}

/*La operación de entrada de los siguientes registros nuevos es la misma que Add () */

while(1)

{ stringinput (num, 10, "Ingrese el nuevo número de empleado: ");

I = 0; flag = 0

while(IltN) /*Consulta si; el número existe, flag =1 indica que el número existe*/

{

if(strcmp(tp[i].num, num)== 0){ flag = 1 ; romper; }

i;

}

if(flag==1)

{

getchar();

p>

printf(" \ n = = = = = gt; Lo siento, el número s ya existe, ¿inténtalo de nuevo? (y/n): ", num); /p>

scanf(" c ", ampch);

if(ch=='y'||ch=='Y ')

{Continuar;}

Otros

{ return n;}

}

Otros

Descanso;

}

strcpy(newinfo.num, num);/*Copia la cadena num a newinfo.num */

stringinput(newinfo.name, 15, "Nombre:" );

nueva información . jbgz = number input(" jbgz:");/*Ingrese y verifique jbgz*/

newinfo.jj=numberinput("Jiangjin:"); /*Ingrese y verifique Jiangjin*/

nueva información kk = number input(" kou Kuan: "); /*Ingrese y verifique la deducción*/

n

ew info . yfgz = nueva información . jbgz nueva información .jj-nueva información kk;/*calcular yfgz*/

nueva información .sk = nueva información .yfgz * 0.12;/*calcular sk*/

nueva información. sfgz = nueva información. yfgz-nueva información sk;

Guardar bandera = 1; Si es 1, guarde */

for(I = n-1;i gtkkkI-)/*Mover una posición de elemento hacia adelante desde el último elemento de la organización*/

{ strcpy (tp[i 1]). número,tp[i]. num);

strcpy(tp[i 1]. Nombre, tp[i]. Nombre);

tp[i 1]. jbgz=tp[i]. jbgz

tp[i 1]. jj=tp[i]. jj;

tp[i 1]. kk=tp[i]. kk;

tp[i 1]. yfgz=tp[i]. yfgz

tp[i 1]. sk=tp[yo]. sk;

tp[i 1]. sfgz=tp[i]. sfgz

}

strcpy(tp[kkk 1].num,new info.num);/*Insertar un nuevo registro después de la posición del elemento kkk*/

strcpy(tp[kkk 1]. nombre, nueva información . nombre);

tp[kkk 1]. jbgz = nueva información . jbgz;

tp[kkk 1]. jj = newinfo.jj

tp[kkk 1]. kk = nuevainfo.kk

tp[kkk 1]. yfgz = nueva información .yfgz;

tp[kkk 1]. sk = newinfo.sk

tp[kkk 1].

sfgz = nueva información . sfgz;

n;

Disp(tp, n);

printf(" \ n \ n "); >

getchar();

Return n;

}

/*Estadísticas salariales de los empleados en todos los niveles de la empresa*/

void Tongji(ZGGZ tp[], int n)

{

int count10000=0, count5000=0, count2000=0, count0 = 0

int I = 0;

if (n lt=0)

{ system(" cls ");

printf(" \ n = = = = = gt; ¡No es un registro de empleado! \n ");

getchar();

Regresar;

}

Sistema("cls ");

Disp(tp, n

I = 0

mientras(iltn)

{

if(tp[i].sfgz gt= 10000){ cuenta 10000; I = I 1; continuar;}/*salario real> 10000*/

if( tp[i] .sfgz gt= 5000){ cuenta 5000;I = I 1;continuar;}/* 5000 lt;=salario real

if(tp[i].sfgz gt= 2000){ contar 2000;I = I 1; continuar }/* 2000 lt; = salario real

if(tp[i].sfgz lt2000){ contar 0; salario real < 2000 */

}

printf("\n -Tongji results-\ n ");

printf(" sfgz gt; = 10000 : d (ren )\n ", cuenta 10000);

printf(" 5000 lt; = sfgz lt10000: d(cualquiera)\n ", cuenta 5000);

printf (" 2000 lt ;= sfgz lt5000: d (cualquiera)\n ", cuenta 2000

printf (" sfgz lt; 2000: d (cualquiera)\n ", cuenta 0

printf("-\ n ");

printf(" \ n \ nPresione cualquier tecla para regresar");

}

/*Utilice el método de clasificación de burbujas para ordenar en orden descendente según el campo de salario real, de mayor a menor*/

void Sort(ZGGZ tp[], int n)

{

int i=0, j=0, bandera = 0;

ZGGZ newinfo

if (n lt=0)

{ system(" cls ");

printf(" \ n = = = = = gt; ¡No es un registro de empleado! \n ");

getchar();

Retorno;

}

Sistema("cls");

Disp(tp,n);/*Mostrar todos los registros antes de ordenar*/

for(I

= 0; i ltn; i )

{

bandera = 0;

for(j = 0; j ltn-1; j )

if((tp[j].sfgz lttp[j 1].sfgz))

{ bandera = 1;

strcpy(newinfo.num, tp[j ].num); /*Usa la variable de estructura newinfo para intercambiar elementos de matriz*/

strcpy(newinfo.name, tp[j].name);

newinfo.jbgz= tp[j]. jbgz

newinfo.jj=tp[j]. jj;

newinfo.kk=tp[j]. kk;

newinfo.yfgz=tp[j]. yfgz

newinfo.sk=tp[j]. sk;

newinfo.sfgz=tp[j]. sfgz

strcpy(tp[j].num, tp[j 1].num);

strcpy(tp[j].nombre, tp[j 1].nombre) ;

tp[j]. jbgz=tp[j 1]. jbgz

tp[j]. jj=tp[j 1]. jj;

tp[j]. kk=tp[j 1]. kk;

tp[j]. yfgz=tp[j 1]. yfgz

tp[j]. sk=tp[j 1]. sk;

tp[j]. sfgz=tp[j 1]. sfgz

strcpy(tp[j 1]. num, nueva información . num);

strcpy(tp[j 1]. nombre, nueva información . nombre

tp[j 1]. jbgz = nueva información . jbgz;

tp[j 1]. jj = nuevainfo.jj

tp[j 1]. kk = newinfo.kk

tp[j 1]. yfgz = nueva información .yfgz;

tp[j 1]. sk = newinfo.sk

tp[j 1]. sfgz = new info . sfgz;

}

if(flag = = 0)break; /*Si flag = 0, significa que no hay intercambio y la clasificación se ha completado. */

}

Disp(tp,n);/*Mostrar todos los registros ordenados*/

Guardar bandera = 1;

printf (" \ n = = = = = gt; ¡Clasificación completada!\n ");

}

/*Guardar los datos.

Si el usuario modifica los datos sin realizar específicamente esta operación, se le pedirá que guarde los datos al salir del sistema*/

void Save(ZGGZ tp[], int n)

{

ARCHIVO * fp

int I = 0;

fp=fopen("c:\\zggz","WB");/ *Método de solo escritura para abrir el archivo binario*/

If(fp==NULL) /*No se puede abrir el archivo*/

{

printf(" \ n = = = = = gt; ¡Error al abrir el archivo! \n ");

getchar();

Regresar;

}

for( I = 0;iltn;i)

{

if(fwrite(amp;TP[I], tamaño de (zggz), 1, FP) == 1)/* Escriba un registro o un elemento de matriz de estructura en el archivo a la vez*/

{

Continuar;

}

Otro

p>

{

Romper;

}

}

if (i gt0)

{

getchar();

printf(" \ n \ n = = = = = gt; guardado del archivo completado, el número total de registros guardados es: d\n ", I) ;

getchar();

Guardar bandera = 0;

}

Otros

{ system( " cls ");

printf("¡El enlace actual está vacío, no se guardan registros de empleados! \ n ");

}

fclose(FP); /*Cerrar el archivo*/

}

void main()

{

ZGGZ gz[N];/*Definir la estructura ZGGZ*/

ARCHIVO * fp/*Puntero de archivo*/

int select/*Guardar la variable de resultado de la selección*/

char ch/* Guardar (y, Y, N, N)*/

int count = 0 /*El número; de registros (o elementos) en el archivo guardado*/

fp=fopen("C:\\zggz", "a b");

/*Abra el archivo binario c :\zggz agregando, que se puede leer y escribir.

Si el archivo no existe, se creará*/

if(fp==NULL)

{

printf(" \ n = = = = = gt; ¡No se puede abrir el archivo!\n ");

Salir(0);

}

Y (!feof(fp))

{

if(fread( amp; Gz [count], sizeof (zggz), 1, FP) == 1)/*Leer los registros salariales de los empleados uno a la vez desde el file*/

count ;

}

fclose(FP); /*Cerrar el archivo*/

printf(" \ n = = gt; El archivo se abrió correctamente, el número total de registros es: d.\n ", count);

getchar();

menu();

mientras(1 )

{

Sistema("cls");

menú();

printf("\nIngrese su selección (0 ~ 9): "); /*Mostrar información del mensaje*/

scanf("d ", amp select);

if( select==0)

p>

{

If(saveflag==1) /*Si los datos del array se modifican pero no se guardan, el flag es 1 */

{ getchar() ;

printf(" \ n == gt; ¿Guardar el registro modificado en el archivo? (Sí/No):);

scanf("c ", ampch );

if(ch=='y'||ch=='Y ')

Guardar (gz, count);

}

}

p>

printf(" \ n = = = gt; ¡Gracias por la utilidad!"); getchar();

Interrupción

}

Cambiar (seleccionar)

{

Caso 1: count=Add(gz, count); /*Agregar registro de salario de empleado*/

Caso 2: count=Del(gz, count); p>

Caso 3: Corán (gz, contar); /*Consultar registro de salario de empleado*/

Caso 4: Modificar (gz, contar /*Modificar registro de salario de empleado); */

Caso 5: Conteo = insert (gz, conteo);/*Insertar registro de salario del empleado*/

Caso 6: Tongji (gz, conteo); /*Estadísticas de registros de salarios de empleados*/

Caso 7: Sort(gz, count) count) break; /* Ordenar registros de salarios de empleados*/

Caso 8: Guardar (gz); , count); /*Guardar registros de salario de los empleados*/

Caso 9: System("cls"); Disp(gz, count); p>

Predeterminado: Error(); getchar(); Break; /*Error de clave, debe ser 0-9*/

}

}

}