Estoy buscando un sistema de gestión de nóminas en lenguaje C. ¡Gracias por la ayuda de los expertos en lenguaje C!
La información del empleado incluye número de empleado, nombre, sexo, salarios a pagar, impuestos, salarios reales, etc. (los números de los empleados no se repiten).
Requisitos funcionales y descripción:
El sistema funciona en modo menú
La función de ingresar información básica de los empleados y los salarios a pagar (guardados en un archivo) p>
Ingrese datos desde el teclado y cree el archivo de datos de disco salario.txt
Función de exploración de información salarial de los empleados:
Lea toda la información salarial de los empleados del archivo de datos de disco y mostrar el resultado en la pantalla;
Funciones de consulta y cálculo de salarios a pagar:
Fórmula de cálculo:
Salarios a pagar*tasa impositiva: impuesto=salarios a pagar*impuesto rate;
Salario real = salario a pagar - impuestos
Tasa de impuesto al salario
lt 1000 0
1000~4999 5 bool; check( int , int); // Comprobar si el número de empleado está repetido y consultar el número de empleado
void get() // Obtener datos
void put(); /salida a mostrar
void put_txt(ofstreamamp;); //salida a texto
void change_pay ( ) //convertir impuestos y a pagar
void come ( ifstreamamp; ) ; //leer del texto
privado:
int número; // número de empleado
char nombre[10]; /p>
char sex; //género
int pay; //pagable
doble pago_out; //impuestos
doble pago_true; pago real
};
apertura nula ( ifstream amp; , ofstreamamp;
cierre nulo ( ifstreamamp; , ofstreamamp;
);int show_menu ();
int main()
{
ifstream entra;
ofstream sale;
abrir (entrar, salir)
int elegir1; //elegir menú principal
char elegir2; //elegir si desea salir
/ / vectorlt;Persongt. persona ;
Persona persona[100] ;
while(!in.eof())
{
char b ;
in.get(b);
if(b==':')
{
in putback(b)
persona[Contar].come(en)
Contar
}
} p>
}
hacer
{
sistema ("cls"
elegir1=mostrar_ menú();
<p> sistema ("cls");
switch(choose1)
{
caso 1:
{
for(int i=0; ilt; 80; i )
cout lt; "# " ;
cout lt; lt; "Información básica del empleado y entrada de salario a pagar\n"
for(int j=0; jlt; 80; j )
cout lt;
hacer
{
//a.push_back(0)
persona[Contar].get()
p>
p>
//person.push_back(0);
Contar;
cout lt; o n):" ;
cin gt; gt; elegir2 ;
}mientras(elegir2=='y');
}
ruptura ;
caso 2:
{
for(int i=0; ilt; 80; i)
cout lt; "#" ;
cout lt; setw(20) lt; "Vista de información salarial del empleado\n" ; 0; jlt; 80 ; j )
cout lt; "#" ; <
cout lt; =0; mlt; m )
persona[m].put();
cout lt; >
romper ;
caso 3:
{
int p=0; ilt; 80; i )
cout lt; "#"
cout lt; setw(20) lt; ;
para (int j=0; jlt; 80; j)
cout lt; "#"
int número ; >
cout lt; lt; "\nIngrese el número del empleado que desea consultar:";
cin gt; 0; mlt; contar; m )
if( persona[m].check(número, 2) )
{
cout lt; \n ¡lo encontré! \n" ;
persona[m].put () ;
p=1 ;
descanso;
} pag
>
if(p==0)
cout lt;lt; "\n ¡no tiene este número de trabajo!\n";
descanso;
predeterminado:
cout lt; "\n error de entrada!"; lt; lt; "\n ¿Quieres continuar viendo el menú principal? (y o n):"
cin gt; =='y');
for (int i=0; ilt; =Count; i)
persona[i].put_txt (out); p>cierre (entrada, salida);
retorno 0;
}
apertura nula (ifstreamamp; ins, ofstreamamp; outs)
{
ins.open("c:\\tc\c\s a l a r y.txt" );
if (ins.fail())
{
cout lt; "no podemos abrir salario.txt!";
outs.open ("c:\tc\tc\s a l a r y.txt" )
if (outs.fail())
{
<; p> cout lt; lt; "no podemos abrir s a l a r y.txt!"; >cierre vacío ( ifstreamamp; ins , ofstreamamp; outs )
{
ins.close();
outs.close();
}
int show_ menu ()
{
int palabra
for(int i=0; ; ilt; 80; i )
cout lt; "#" ;
cout lt "1. Ingrese la información básica del empleado y los salarios adeudados;
cout lt; "2. Consultar información salarial de los empleados; (n)" ;
for(int j=0;jlt;80;j)
cout lt;lt; "#" ;
cout lt;lt " Por favor ingrese su salario seleccionado.
): " ;
cin gt; gt; palabra ;
devolver palabra ;
}
void Persona::change_pay()
{
if(paylt; 1000)
{
pay_out = 0
pay_true = pagar; ;
}
if( (paylt; 4999) amp; amp; (paygt; = 1000) )
{
pay_out = pagar*0.05;
pay_ true = pagar - pay_out
}
if(paygt;=5000)
{
pago_out = pago*0.1
pay_true = pago - pago_out
}
}
}
Persona vacía:: come(ifstreamamp; in)
{
char b
in.get(b); p>
p>
if(b==':')
in gt;
a[Count]= número; >
hacer
{
in.get(b
}mientras(b!=':'); p> if(b ==':')
en gt; gt;
hacer
{
en. get(b);
} while(b. =':');
hacer
{
en! :');
en gt; pagar
hacer
{
in.get(b); p>
} while(b! =':');
in gt; pay_out;
hacer
{
en. get(b);
} while(b!=':');
en gt;
persona vacía::get()
{
hacer
{
cout lt; "\n número de empleado: " ;
cin gt; gt número
a[Count]=número
if( check(número, 1; ) )
break;
cout lt; "Hay un duplicado del número de trabajador \n, ¡vuelva a ingresar! " ;
}mientras(1);
cout lt; lt; "\n nombre: " ;
cin gt; gt; nombre; p>
cin gt;
p>cout lt;lt;"\n pagadero:";
cin gt;gt; p>cin gt;gt; pagar;
p>
}
persona vacía:: put()
{
cambiar_pago();
for(int i =0; ilt; 80; i )
cout lt; "#" ;
cout lt; "\n número de empleado:" /p>
lt; "\n nombre:" lt; nombre
lt; "\n a pagar:" lt; lt; lt; "\n impuesto:" lt; pay_out
lt.lt; "\n salario de bolsillo:" lt; cout lt; lt; endl;
}
persona vacía:: put_txt(ofstreamamp; fuera)
{
for(int i= 0; ilt; 80; i )
cout lt; "#"
out lt; "\n número de empleado:" lt;
lt;lt; "\n Nombre:" lt;lt; nombre
lt;lt; "\n Debe ser pago:" lt;lt;
lt; lt; "\n pago real: " lt;
bool Persona::check(int b, int elegir)
{
cambiar(elegir)
{
caso 1:
{
for(int i=0;ilt;Count;i)
if(b ==a[i] )
return (b. =a[i])=a[i]);
Devuelve 1; caso 2:
return (b==número);
predeterminado:
cout lt; "\n error del sistema!"; >
salir(1);
}
}
}