Escribir un programa para implementar la gestión de nóminas en una pequeña empresa. La empresa cuenta con cuatro categorías principales de personal: directivos, técnicos a tiempo parcial, vendedores y directores de ventas.

Requerir

#includelt;fstreamgt;

#includelt;iostreamgt;

#includelt;stringgt;

#includelt;iomanipgt;

p>

#includelt;stdlib.hgt;

usando el espacio de nombres std;

//Variables constantes (para modificación):

const int n1 =2, n2=2, n3=4, n4=2; /*Definir el número de varios tipos de empleados en la empresa (fácil de modificar)

(n1: Número de técnicos ; n2: Número de gerentes; n3: Número de vendedores ;n4: Número de gerentes de ventas)*/

const double m_salary=8000 //Salario mensual fijo para gerentes

const; double hourpay=100; //Salario por hora de los técnicos

const double basicpay=5000; //Salario básico del gerente de ventas

const double s_proportion=4.0/100; ratio

const double sm_proportion=0.5 /100; //Relación de comisión del gerente de ventas

//Parte de declaración:

void menu() //Menú principal

void menu2(); //Menú secundario de entrada de datos

void menu3(); //Menú secundario de impresión de datos

void data_input(); Función de entrada de datos

void data_print(); //Impresión de datos

void charthead1(); //Crear función de encabezado 1 para contar las ventas

void charthead2( ); //Crear encabezado 2 Función, impresión de datos

void chartend(); //Crear cola de tabla

void stats() //Estadísticas de datos

double sm_salary(); / /Cálculo del salario del gerente de ventas

void sm_print(); //El gerente de ventas imprime datos

void data_find() //Consulta de datos

void data_save() ; //Copia de seguridad de datos

ofstream outfile; //Abrir objeto de flujo de archivo de disco

cadena f_name; //Variable global (para consulta)

//Definición Clase:

clase Empleado //Clase de empleado (clase base)

{

público:

void input() //Función de entrada de datos

{

coutlt;lt;"Número:"

cingt;gt;num;

coutlt;lt; "Su nombre:";

cingt;gt;nombre;

coutlt;lt; "Género (m/w):"; >

cingt;gt ;sexo

;

coutlt;lt;"Edad:";

cingt;gt;edad;

}

void print() / /Función imprimir datos

{

coutlt;lt;"├─────┼─────┼─────┼─────┼─ ────┤"lt;lt;endl;

coutlt;lt;"│"lt;lt;setw(6)lt;lt;numlt;lt;" │"lt;lt;setw (8)lt;lt;namelt;lt;" │"lt;lt;setw(6)lt;lt;sexlt;lt;" │"lt;lt;setw(6)

lt; lt;agelt;lt;" │"lt;lt;setw(7)lt;lt;paylt;lt;" │"lt;lt;endl;

}

void find() //Función de consulta

{

if(f_name==name)

{

charthead2(); p>

print();

chartend();

coutlt; }

void save() //Función de copia de seguridad de datos

{

outfilelt;lt;"├─────┼─────┼ ── ───┼─────┼─────┤"lt;lt;endl;

outfilelt;lt;"│"lt;lt;setw(6)lt;lt ;numlt ;lt;" │"lt;lt;setw(8)lt;lt;namelt;lt;" │"lt;lt;setw(6)lt;lt;sexlt;lt;" │"lt;lt; setw( 6)

lt;lt;agelt;lt;" │"lt;lt;setw(7)lt;lt;paylt;lt;" │"lt;lt;endl; >

}

protected:

int num; //número de empleado

nombre de cadena //nombre del empleado

char; sex; //Género del empleado

int edad; //Edad del empleado

salario doble; //Salario del empleado

}; clase Técnico: empleado público // Clase de técnico (herencia pública)

{

público:

void input()

{

coutlt;lt;"Técnico";

Empleado::input();

coutlt;lt;"Horas de trabajo:"

<; p > cingt; gt; tiempo de trabajo;

}

void print()

{ pay=worktime*hourpay;

Empleado: : imprimir()

}

void find()

{

Empleado::find();

void save()

{ pay=worktime*hourpay

Empleado::save()

}

protected:

double worktime; //Tiempo de trabajo (horas)

};

Clase Gerente: Empleado público //Clase Gerente p>

{

público:

void input()

{

coutlt;lt;"gerente" ;

Empleado::entrada();

}

void print()

{ pago=m_salario

Empleado:: imprimir();

}

void buscar()

{

Empleado:: buscar()

}

void save()

{ pay=m_salary

Empleado::save();

}

};

clase Sell_manager: clase pública de empleado //gerente de ventas

{

pública:

void input()

{ coutlt;lt;"Gerente de ventas";

Empleado::input();

}

int sm_number() //Llamar al número de empleado del gerente de ventas

{

return num;

}

string sm_name () // Llama el nombre del gerente de ventas

{

return name;

}

void print()

{

coutlt;lt;"├─────┼─────┼─────┼─────┼─────┤ "lt;lt ;endl;

coutlt;lt;"│"lt;lt;setw(6)lt;lt;numlt;lt;" │"lt;lt;setw(8)lt; lt;namelt; lt;" │"lt;lt;setw(6)lt;lt;sexlt;lt;" │"lt;lt;setw(6)

lt;lt;agelt;lt ;" │" ;

}

void save()

{

outfilelt;lt;"├───── ┼─── ──┼─────┼──────┼─────┤"lt;lt;endl;

outfilelt;lt;"│"lt;lt ;setw(6) lt;lt;numlt;lt;" │"lt;lt;set

w(8)lt;lt;namelt;lt;" │"lt;lt;setw(6)lt;lt;sexlt;lt;" │"lt;lt;setw(6)

lt ;lt;agelt;lt;" │";

}

};

clase Vendedor: public Empleado //Vendedor clase

{

public:

Vendedor(){ sold_amount=0 } //Constructor, el volumen de ventas se inicializa en 0

void input()

{

coutlt;lt;"Vendedor";

Empleado::input();

coutlt;lt;" Volumen de ventas: ";

cingt; gt; sold_amount;

coutlt; lt; "El número del gerente de ventas: ";

cingt; gt; nu ;

}

void grade() //Resultado del desempeño del vendedor

{

coutlt;lt;"├─── ──┼ ─────┼──────┤"lt;lt;endl;

coutlt;lt;"│"lt;lt;setw(6)lt;lt;numlt; lt; " │"lt;lt;setw(8)lt;lt;namelt;lt;" │"lt;lt;setw(7)lt;lt;sold_amountlt;lt;" │"lt;lt;endl;

}

void print()

{ pay=sold_amount*s_proportion;

coutlt;lt;"├───── ┼─ ────┼─────┼─────┼─────┼──────────┤"lt;lt;endl;

coutlt; lt;"│"lt;lt;setw(6)lt;lt;numlt;lt;" │"lt;lt;setw(8)lt;lt;namelt;lt;" │"lt;setw(6) )lt;lt;sexlt;lt;" │"lt;lt;setw(6)

lt;lt;agelt;lt;" │"lt;lt;setw(7)lt ;lt; paylt;lt;" │"lt;lt;setw(13)lt;lt;nult;lt;" │"lt;lt;endl;

}

int s_number( ) //Llamando al número de empleado del jefe de ventas al que pertenece el vendedor

{

return nu;

}

double cantidad() // Llamar al volumen de ventas del vendedor

{

return sold_amount;

}

void find()

{ if(f_name==nombre)

{coutlt;lt;"┌─────┬────┬────┬─────┬── ───┬───────────┐"lt;lt;endl;

<

p> coutlt;lt;"│ Número de empleado│ Nombre│ Sexo│ Edad│ Salario│ Número de gerente de departamento│"lt;lt;endl;

print();

coutlt ; lt;"└─────┴─────┴─────┴────┴─────┴───────── ───┘";< / p>

}

}

void save()

{ pay=sold_amount*s_proportion

outfilelt;lt ; "├─────┼─────┼─────┼─────┼─────┼───────── ──┤"lt;lt; endl ;

outfilelt;lt;"│"lt;lt;setw(6)lt;lt;numlt;lt;" │"lt;lt;setw(8)lt;lt;namelt;lt ; " │"lt;lt;setw(6)lt;lt;sexlt;lt;" │"lt;lt;setw(6)

lt;lt;agelt;lt;" │"lt ; lt;setw(7)lt;lt;paylt;lt;" │"lt;lt;setw(13)lt;lt;nult;lt;" │"lt;lt;endl;

}

protected:

double sold_amount; //Volumen de ventas

int nu; //El número de empleado del gerente de ventas

} ;

//Definir matriz de objetos global

Técnico t[n1]; //Técnico

Gerente m[n2];

Vendedor s[n3]; //Vendedor

Sell_manager sm[n4]; //Gerente de ventas (varios vendedores subordinados)

//Parte de función principal:

int main()

{

char n;

menú()

for(int i= 0; ;ilt;1000;i) //Establece el número de ciclos (para facilitar el cambio de varias operaciones y realizar consultas convenientes)

{

cingt;gt;n;

switch(n)

{

case'1': //Entrada de datos

coutlt;lt;endllt;lt;"Seleccionaste El la operación es entrada de datos, continúe - "lt;lt;endllt;lt;endl;

data_input();

coutlt;lt;endl;

menu();

break;

case'2': //Estadísticas de datos

coutlt;lt;endllt;lt;"La operación que seleccionó para estadísticas de datos, continúe - "lt;lt;endllt;lt;endl;

stats();

coutlt;lt;endllt;lt;"

Ordenar por salario es: "lt;lt;'\n'lt;lt;endl;

sm_print();

coutlt;lt;endl;

menu();

break;

case'3': //Impresión de datos

lt; endllt; es impresión de datos, continúe - "lt;lt;endllt;lt;endl;

coutlt;lt;'\a'lt;lt;"Impresión de datos, espere..."lt ;lt ;'\n'lt;lt;'\n'lt;lt;endl;

coutlt;lt;"La situación básica de los empleados es la siguiente:"lt;lt;'\n'lt ; lt;endl;;

data_print();

coutlt;lt;endllt;lt;endl;

coutlt;lt;'\a'lt ; lt;"——Impresión de datos completada——"lt;lt;'\n'lt;lt;'\n'lt;lt;endl;

menu();

break;

case'4': //Consulta de datos

coutlt;lt;endllt;lt;"La operación que seleccionó es consulta de datos, continúe——"lt ; lt; endllt; lt; endl;

coutlt; "Ingrese el nombre del empleado que desea consultar: " p>

coutlt;lt;endllt;lt;" - Consultando, por favor espere - "lt;lt;endllt;lt;endl;

coutlt;lt;"La información que está consultando es la siguiente sigue:"lt ;lt;endllt;lt;endl;

data_find();

coutlt;lt;endllt;lt;endl;

menu( );

p>

break;

case'5': //Copia de seguridad de datos

outfile.open("Pasantía de programación en C.txt" , ios::out); / /Abrir objeto de flujo de archivos de disco

coutlt;lt;endllt;lt;"La operación que seleccionó es copia de seguridad de datos, continúe -"lt;lt;endllt;lt; endl;

outfilelt;lt;"La situación básica de los empleados es la siguiente:"lt;lt;'\n'lt;endl;

data_save(); /p>

outfile.close( );

coutlt;lt;endllt;lt;endl;

coutlt;lt;'\a'lt;lt;"— —Copia de seguridad de datos completada, continúe——" lt; lt; endllt; lt; endl;

menu();

break;

case'0 ': //Salir del sistema

coutlt;lt;endllt;lt;"La operación que seleccionó es salir del sistema, por favor confirme——"lt;

lt;endllt;lt;endl;

coutlt;lt;" Sí (y)"lt;lt;" "lt;lt;"No (n) ";

cingt ;gt;n;

if(n=='y')

{ coutlt;lt;'\n'lt;lt;"——Presione cualquier tecla para salir el sistema ——"lt;lt;endl; exit(0); coutlt;lt;endl;}

else menu();

break;

predeterminado:

coutlt;lt;endllt;lt;"——¡Error! ¡Elija la operación nuevamente! "lt;lt;'\n'lt;lt;endl;

menú( );

romper

}

}

devolver

}

//Parte de función personalizada:

void menu() //Función de menú

{

coutlt;lt;" ★★Pequeña empresa Sistema de gestión de nómina★★ "lt;lt;endl;

coutlt;lt;"┌──────────────┐"lt;lt;endl;

coutlt;lt;"│ Seleccione la operación que necesita│"lt;lt;endl;

coutlt;lt;"│ Entrada de datos: 1 y presione la tecla Enter; │" lt ;lt;endl;

coutlt;lt;"│ Estadísticas: 2, y presione la tecla Enter; │"lt;lt;endl;

coutlt;lt;"│ Impresión de datos: 3, y presione la tecla Enter; │"lt;lt;endl;

coutlt;lt;"│ Consulta de datos: 4, y presione la tecla Enter; ;

coutlt;lt;"│ Copia de seguridad de datos: 5, y presione la tecla Enter; │"lt;lt;endl;

coutlt;lt;"│ Salga del sistema: 0 y presione la tecla Enter; │"lt;lt;endl;

coutlt;lt;"└──────────────┘"lt;lt;endl ;

coutlt;lt;" Seleccione una operación:"

}

void menu2() //Función del menú secundario de entrada de datos

{

coutlt;lt;" ★★Sistema de gestión de nóminas para pequeñas empresas★★ "lt;lt;endl;

coutlt;lt;"┌───── ─────────────┐"lt;lt;endl;

coutlt;lt;"│ Seleccione la operación que necesita│"lt;lt;endl;< / p>

coutlt;lt;"│ Entrada de datos del administrador: 1 y presione Enter; │"lt;lt;endl;

coutlt;lt;"│ Entrada de datos del técnico: 2 y presione la tecla Tecla Enter; │"lt;lt;endl;

coutlt;lt;"│ Ingreso de datos del vendedor: 3, y presione la tecla Enter;

p> coutlt;lt;"│ Ingreso de datos del gerente de ventas: 4, y presione la tecla Enter; │"lt;lt;endl;

coutlt;lt;"│ Regresar al nivel anterior: 5, y presione la tecla Enter; │"lt;lt;endl;

coutlt;lt;"└───────────────────┘"lt; lt; endl;

coutlt;lt;" Seleccione una operación:";

}

void menu3() //Función del menú secundario de impresión de datos< / p>

{

coutlt;lt;" ★★Sistema de gestión de nóminas para pequeñas empresas★★ "lt;lt;endl;

coutlt;lt;"┌── ─ ───────────────┐"lt;lt;endl;

coutlt;lt;"│ Seleccione la operación que necesita│"lt;lt;endl ;

coutlt;lt;"│ Impresión de datos del administrador: 1, y presione la tecla Enter; │"lt;lt;endl;

coutlt;lt;"│ Impresión de datos del técnico :2, y presione la tecla Enter; │"lt;lt;endl;

coutlt;lt;"│ Impresión de datos del vendedor: 3, y presione la tecla Enter │"lt;lt;endl ;

coutlt;lt;"│ Imprimir datos del gerente de ventas: 4, y presionar la tecla Enter; │"lt;lt;endl;

coutlt;lt;"│ Volver al anterior Nivel 1: 5, y presione Enter; │"lt;lt;endl;

coutlt;lt;"└─────────────────── ┘ "lt;lt;endl;

coutlt;lt;" Seleccione una operación: ";

}

void data_input() //Función de entrada de datos

{

char p; int i;

menú2();

for(int j=0; jlt; 100 ; j )

{

cingt; p;

if(p=='5') descanso

else

{

cambiar(p)

{

caso'1':

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

m[i].input();

coutlt;lt;endllt;lt;"---------- - -----------------------------------------"lt;lt;endl; menú2( ); romper;

caso'2':

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

t[i].entrada () ;

coutlt;lt;endllt;lt;"--------------------------------- - -----------------------"lt;lt;endl;menu2();break;

caso'3':

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

s[i].

input();

coutlt;lt;endllt;lt;"------------------------------ ------------------------"lt;lt;endl;menu2();break;

caso'4':

p>

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

sm[i].input();

coutlt;lt;endllt; es;"- ---------------------------------------------- ----" lt;lt;endl;menu2();break;

}

}

}

}

void charthead1() //Encabezado de tabulación 1 (para estadísticas de datos)

{

coutlt;lt;"┌─────┬─── ──┬─ ────┐"lt;lt;endl;

coutlt;lt;"│ID de empleado│Nombre│Ventas│"lt;lt;endl;

}

p>

void charthead2() //Cabeza del gráfico 2 (para impresión de datos y estadísticas de datos del gerente de ventas)

{

coutlt;lt;"┌ ──── ─┬─────┬─────┬─────┬─────┐"lt;lt;endl;

coutlt;lt;"│ ID de empleado│ Nombre │Sexo│Edad│Salario│"lt;lt;endl;

}

void chartend() //Cola de tabulación (para impresión de datos y estadísticas de datos del gerente de ventas) )

{

coutlt;lt;"└─────┴────┴─────┴─────┴───── ┘" ;

}

void stats() //función de estadísticas de datos

{ int i, j;

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

{ double sum=0;

coutlt;lt;endllt;lt;"El número de empleado es "lt;lt;sm[i ].sm_number ()lt;lt;" Gerente de ventas "lt;lt;sm[i].sm_name()

lt;lt;" El desempeño del vendedor subordinado es: "lt;lt; endllt;lt; endl;

charthead1();

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

if(s[j]. s_number()= =sm[i].sm_number())

{

suma=sum s[j].cantidad()

s[; j].grado ();

}

coutlt;lt;"├─────┼─────┴─────┤"lt; ;endl;

coutlt;lt;"│Ventas totales│"lt;lt;setw(12)lt;lt;sumlt;lt;" │"lt;lt;endl;

c

outlt;lt;"└─────┴──────────┘"lt;lt;endl;

doble salario[n4];

double sm_salary() // Cálculo y clasificación del salario del gerente de ventas

{

int i, j; ; Sell_manager b;

for(int k=0; klt; n4; k )

salario[k]=0; ; ilt; n4; i )

{ doble suma=0;

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

si(s [ j].s_number()==sm[i].sm_number())

{ suma=suma s[j].amount();

salario[i]= suma *sm_proportion pago básico;

}

}

para( j=0; jlt; n4-1; j )

para ( i=0;ilt;n4-1-j;i)

if(salario[i]lt;salario[i 1])

{ a=salario[i 1 ] ; salario[i 1]=salario[i]; salario[i]=a;

b=sm[i 1]; b;

}

devuelve 0

}

void sm_print()

{

sm_salary();

charthead2();

for(int i=0; ilt; n4; i )

{ sm[ i ].print();

coutlt;lt;setw(7)lt;lt;salario[i]lt;lt;" │"lt;lt;endl;

}

chartend();

coutlt; endl;

}

void data_print() //Impresión de datos

{

char p; int i, j;

menú2();

para(j=0; jlt; 100; j )

{

cingt; p;

if(p=='5') descanso

else p>

{

switch(p)

{case'1':

coutlt;lt;endllt;lt;"manager"lt ; lt; endl; //Información del administrador

charthead2();

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

m[i] . print();

chartend();

coutlt;lt;endllt;lt;endllt;lt;"-------------- - ---------------

----------------------------------------"lt;lt;endl;

menu3(); break;

case'2':

coutlt;lt;endllt;lt;"Técnico"lt;lt;endl;

charthead2();

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

t[i].print();

chartend();

coutlt;lt;endllt;lt;endllt;lt;"---------------------- - --------------------------------------------------" lt; lt; endl;

menú3();

caso'3':

lt; ;lt;endl; //Información del vendedor

coutlt;lt;"┌─────┬─────┬────┬─────┬── ─── ┬───────────┐"lt;lt;endl;

coutlt;lt;"│ ID de empleado│ Nombre│ Sexo│ Edad│ Salario│ Número de gerente de departamento│"lt ;lt;endl;

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

s[i].print();

coutlt;lt ;"└─────┴─────┴─────┴─────┴────┴───────── ───┘" ​​;

coutlt;lt;endllt;lt;endllt;lt;"-------------------------------- - --------------------------------------------------" lt;lt;'\ n'lt;lt;endl;

menu3();break;

case'4':

coutlt;lt; endllt;lt;"Gerente de Ventas"lt;lt;endl; //Información del gerente de ventas

sm_salary();

sm_print();

coutlt; lt;endllt;lt; endllt;lt;"--------------------------------- ------ --------------------------"lt;lt;endllt;lt;endl;

menu3();break; }

}

}

}

void data_find() //Función de consulta de datos

{

for(int i=0;ilt;n1;i)

t[i].find();

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

m[i].find();

para(i=0; ilt; n3

; i )

s[i].find();

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

if(f_name== sm[i].sm_name())

{ charthead2();

sm[i].print();

coutlt;lt;sew( 7)lt;lt;salario[i]lt;lt;" │"lt;lt;endl;

chartend();

coutlt;lt;endl;

break;

}

}

void data_save() //función de copia de seguridad de datos

{

outfilelt;lt;endllt;lt;"Técnico"lt;lt;endl; //Información del técnico

outfilelt;lt;"┌─────┬─────┬─ ────┬─────┬─────┐"lt;lt;endl;

outfilelt;lt;"│ ID de empleado│ Nombre│ Sexo│ Edad│ Salario│"lt ;lt; endl;

for(int i=0; ilt; n1; i )

t[i].save();

outfilelt; lt; "└─────┴─────┴─────┴────┴─────┘";

endllt;lt;"--------------------------------------------------- ----- ----------------------------------"lt;lt;endl;

outfilelt;lt;endllt ;lt;"Administrador"lt;lt;endl; //Información del administrador

outfilelt;lt;"┌─────┬────┬── ───┬─── ──┬─────┐"lt;lt;endl;

outfilelt;lt;"│ ID de empleado│ Nombre│ Género│ Edad│ Salario│"lt; lt;endl;

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

m[i].save();

outfilelt;lt; "└───── ┴─────┴─────┴─────┴─────┘";

outfilelt;lt;endllt;lt;endllt ;es;"--- ------------------------------------------- ------- -----------------------"lt;lt;endl;

outfilelt;lt;endllt; lt;"Gerente de Ventas"lt ;lt; endl; //Información del gerente de ventas

sm_salary();

outfilelt;lt;"┌─────┬─── ──┬──── ─┬─────┬─────┐"lt;lt;endl;

outfilelt;lt;"│ Número de empleado│ Apellido

Nombre│ Sexo│ Edad│ Salario│"lt;lt;endl;

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

{ sm[i].save() ;

outfilelt;lt;setw(7)lt;lt;salario[i]lt;lt;" │"lt;lt;endl;}

outfilelt;lt;" └─────┴─────┴─────┴─────┴─────┘";

outfilelt;lt;endllt;lt;endllt; es;"----------------------------------------------- --- -----------------------"lt;lt;endllt;lt;endl;

outfilelt;lt ;endllt;lt;"Vendedor"lt;lt;endl; //Información del vendedor

outfilelt;lt;"┌─────┬─────┬──── ─ ┬─────┬─────┬───────────┐"lt;lt;endl;

outfilelt;lt;"│ Número de empleado│ Nombre │ Sexo│Edad│Salario│Número de gerente de departamento│"lt;lt;endl;

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

s[i].save ();

outfilelt;lt;"└─────┴─────┴────┴────┴─────┴──── ── ─────┘";

outfilelt;lt;endllt;lt;endllt;lt;"---------------------- ---- ---------------------------------------------- ---- -------"lt;lt;'\n'lt;lt;endl;

}