#includelt;fstreamgt;
#includelt;iostreamgt;
#includelt;stringgt;
#includelt;iomanipgt; p>
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> 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>
{
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() p>
{
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: p >
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
} p>
//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) ) p>
{
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()
{ p; >
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 p >
{
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; p >
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;
}