Requerir
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
#include
#include
#include
#include #include 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 managers; 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; //Relación de comisión salarial del vendedor const double sm_proportion=0.5 /100; //Proporción de comisión del gerente de ventas //Parte de la 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(); 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 string 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 { cout<<"Número:" cin>>num; cout<<"; su nombre :"; cin>>nombre; cout<<"Género (m/w):"; cin>>sexo; cout<<"Edad:" cin>>edad; } void print() //Función de impresión de datos { cout<<"├─────┼─────┼─────┼──── ─┼─────┤"< cout<<"│"< < } void find() // Función de consulta { if(f_name== nombre) { charthead2(); print(); chartend(); cout< } } void save() //Función de copia de seguridad de datos { archivo de salida <<"├─────┼─────┼─────┼────┼─────┤"< archivo de salida < <"│"< < } protected: int num; //Número de empleado nombre de cadena; //Nombre del empleado char sex //Género del empleado int age; //Edad del empleado doble salario; //Salario del empleado }; clase Técnico:empleado público //Clase de técnico (público Heredado) ) { público: void input() { cout<<"Técnico de "; Empleado::input(); cout<<"Tiempo de trabajo:"; cin>>tiempo de trabajo; } void print() { pay=worktime*hourpay; Empleado::print() } void find() { Empleado::find(); } > void save() { pay=worktime*hourpay; Empleado::save() } protected: doble tiempo de trabajo; //Tiempo de trabajo (horas) }; clase Gerente: público Empleado //Clase Gerente { público: void input() { cout<<"Administrador"; Empleado::input(); } void print() { pay=m_salary; Empleado: : print(); } void find() { Empleado::find(); } void save() { pay=m_salary; Empleado::save(); }< / p> }; clase Sell_manager:empleado público //clase de gerente de ventas { público: entrada nula () { cout<<"Gerente de ventas"; Empleado::input(); } int sm_number( ) //Llamar al número de empleado del gerente de ventas { return num; } string sm_name() //Llamar a Ventas nombre del administrador { nombre de devolución; } void print() { p> cout<<"├──────┼─────┼─────┼─────┼─────┤"< cout<<"│"< < } void save() { archivo de salida<<"├─────┼─────┼─────┼─────┼─────┤"< archivo de salida<<"│"< < } }; p> clase Vendedor:public Empleado //Vendedor clase { public: Vendedor(){ sold_amount=0 } // Constructor , el volumen de ventas se inicializa en 0 void input() { cout<<"Vendedor"; Empleado:: input(); cout<<"Ventas:"; cin>>sold_amount; cout<<"El número del gerente de ventas: "; cin>>nu; } void grade() //Resultado del desempeño del vendedor { cout<<"├─────┼─────┼─────┤"< cout<<"│"< } void print() { pay=sold_amount*s_proportion; cout<<"├─────┼─────┼ ─────┼ ─────┼─────┼──────────┤"< cout<<"│"<< setw(6)< < } int s_number() //Llamando al número de empleado del gerente de ventas al que pertenece el vendedor { return nu; } p> double cantidad() // Llamando al volumen de ventas del vendedor { return sold_amount; } void find( ) { if(f_name==nombre) {cout<<"┌─────┬────┬─────┬─ ─── ─┬─────┬───────────┐"< cout<<"│ ID de empleado│ Nombre│ Género│ Edad│ Salario │ Gerente de departamento número│"< print(); cout<<"└─────┴── ───┴─────┴─────┴─────┴───────────┘"; } } void save() { pay=sold_amount*s_proportion; outfile<<"├─────┼───── ┼─────┼─────┼─────┼──────────┤"< archivo<<"│"< < setw(6)< < } protected: double sold_amount; //Volumen de ventas int nu; //Número de empleado del gerente de ventas } ; //Definir matriz de objetos global Técnico t[n1]; //Técnico Gerente m[n2] //Gerente 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 ;i<1000;i++) //Establece el número de ciclos (para facilitar el cambio de varias operaciones y realizar consultas convenientes) { cin>>n; switch(n) { case'1': //Entrada de datos cout< data_input(); cout< menu();< / p> break; case'2': //Estadísticas de datos cout< estadísticas(); cout< sm_print(); cout< menú(); romper; case'3': //Impresión de datos cout<& lt;endl<<"La operación que seleccionó es impresión de datos, continúe -"< cout<<'\a'<<"Impresión de datos, espere... …"<<'\n'<<'\n'< cout<<"La situación básica de los empleados es la siguiente:"<<'\n'< data_print(); cout< cout<<'\a'<<"——Impresión de datos completada—— "<< '\n'<<'\n'< menú(); descanso; caso'4': / /Consulta de datos cout< cout<<"Por favor ingrese el consulta que desea realizar Nombre del empleado: "; cin>>f_name; cout< cout<<"La información que estás consultando es la siguiente:"< data_find(); cout<; menu(); break; case'5': //Copia de seguridad de datos archivo externo .open("Internship de diseño de programa C++.txt",ios::out); //Abre el objeto de flujo de archivos del disco cout< outfile<<"La situación básica de los empleados es la siguiente:"<<'\n'< data_save( ); archivo de salida .close(); cout< cout<<'\a'<<"——Datos copia de seguridad completada, continúe——"<< endl< menu(); break; case'0': //Salir el sistema cout< cout<<" Sí (y)"<<" "<<"No ( n ) "; cin>>n; if(n=='y') { cout<&l t;'\n'<<"——Presione cualquier tecla para salir del sistema——"< else menu(); break; predeterminado: cout< menú(); romper } } devolver 0; p> } //Parte de función personalizada: void menu() //Función de menú { cout << " ★★Sistema de gestión de nóminas para pequeñas empresas★★ "< cout<<"┌──────────────┐"< cout<<"│ Seleccione la operación que necesita│"< cout<<"│ Entrada de datos: 1 y presione Enter; │"< cout<<"│ Estadísticas de datos: 2, y presione Enter; │"< cout<<"│ Impresión de datos: 3, y presione Enter; │"< cout<<"│ Consulta de datos: 4, y presione la tecla Enter │"< cout<<"│ Copia de seguridad de datos: 5; , y presione la tecla Enter; │"< cout<<"│ Salga del sistema: 0 y presione la tecla Enter; cout<<"└──────────────┘"< cout<<" Seleccione una operación:"; } void menu2() //Función del menú secundario de entrada de datos { cout<<" ★★Sistema de gestión de nóminas para pequeñas empresas★ ★ "<< endl; cout<<"┌───────────────────┐"< cout <<" │ Seleccione la operación que necesita│"< cout<<"│ Entrada de datos del administrador: 1 y presione Entrar │"< cout<; <"│ Ingreso de datos del técnico: 2, y presione Enter; │"< cout<<"│ Ingreso de datos del vendedor: 3, y presione la tecla Enter; │"< cout<<"│ Entrada de datos del gerente de ventas: 4, y presione la tecla Enter; │"< cout<<" │ Regresar al nivel anterior: 5, y presione la tecla Intro; cout<<" Por favor seleccione una operación:"; } void menu3() //Función del menú secundario de impresión de datos { cout<<" ★★Sistema de gestión de nóminas para pequeñas empresas★★ "< cout<<"┌────────── ─ ───────┐"< cout<<"│ Seleccione la operación que necesita│"< cout<<" │ Administrador impresión de datos: 1, y presione la tecla Enter; │"< cout<<"│ Impresión de datos del técnico: 2, y presione la tecla Enter │"< cout<<"│ Impresión de datos del vendedor: 3, y presione la tecla Enter; │"< cout<<"│ Impresión de datos del gerente de ventas: 4, y presione Enter key; │"< cout<<"│ Regresa al nivel anterior: 5, y presiona la tecla Enter │"< cout <<; "└───────────────────┘"< cout<<" Por favor seleccione una operación:"; } void data_input() //función de entrada de datos { char p;int i; menu2() ; for(int j=0;j<100;j++) { cin>>p; if ( p=='5') descanso; else { cambiar(p) { caso'1': for(i=0;i m[i].input(); cout < case'2': for(i=0; i t[i].input(); cout< caso'3': for(i=0;i s[i].input(); cout < caso'4': for(i=0;i sm[i].input(); > cout< } } } } void charthead1() //Encabezado de tabulación 1 (para estadísticas de datos) { cout<<"┌───── ┬─ ────┬─────┐"< cout<<"│Número de empleado│ Nombre│Ventas│"< } void charthead2() //Cabeza del gráfico 2 (para impresión de datos y estadísticas de datos del gerente de ventas) { cout<<"┌──── ─┬─────┬─────┬─────┬─────┐"< cout<<"│ ID de empleado│ Nombre│ Género│ Edad│Salario│"< } void chartend() //Cola de tabulación (para impresión de datos y estadísticas de datos del gerente de ventas) { cout<<"└──────┴─────┴────┴─────┴─────┘"; } void stats() //Función de estadísticas de datos { int i,j; for(i=0;i { double sum=0; cout< <<"El desempeño del vendedor subordinado es:"< charthead1(); for(j=0;j if(s[j].s_number()==sm[i].sm_number()) { suma=sum+s[j].cantidad(); s[j].grado(); } cout<<"├─────┼─────┴─────┤"< cout<<"│Ventas totales│"< cout<<"└─────┴───────────┘"< } } salario doble[n4]; doble sm_salary() //Cálculo y clasificación del salario del gerente de ventas { int i,j;doble a ;Sell_manager b; for(int k=0;k salario [k]=0; p> for(i=0;i { doble suma=0; for(j=0;j if(s[j].s_number()==sm[i].sm_number()) { suma=sum+s[j].cantidad(); p> salario[i]=sum*sm_proportion+pago básico; } } for( j=0;j for( i=0;i if(salario[i] { a=salario[i+1];salario[i+1]=salario[i];salario[i]=a; b=sm[i+1];sm [i+1]=sm[i];sm[i]=b; } devuelve 0; } void sm_print() { sm_salary(); charthead2(); for(int i=0;i { sm[i].print(); cout< } chartend(); cout< } void data_print( ) //Impresión de datos { char p;int i,j; menu2(); for(j= 0;j<100;j++) { cin>>p; if(p=='5') descanso; else { switch(p) {case'1': cout< charthead2(); for(i=0;i m[i ].print(); chartend(); cout< menu3();break; case'2': cout< charthead2(); for(i=0;i t[i] .print(); chartend(); cout< t;<"---------------------------------------------- ------------------------"< menu3();break; case'3': cout< cout<<"┌─────┬─ ── ──┬─────┬─────┬────┬───────────┐"< cout<< "│ Empleado número│ Nombre│ Género│ Edad│ Salario│ Número de gerente de departamento│"< for(i=0;i s [i]. print(); cout<<"└─────┴────┴─────┴─────┴─────┴ ───── ──────┘"; cout< menu3();break; case'4': cout< sm_salary(); sm_print(); cout< menu3();break; } } } } void data_find() //función de consulta de datos { for(int i=0;i t[i].find(); for(i=0;i m[i].find(); for(i=0;i s[i].find() ; for(i=0;i if(f_name==sm[i].sm_name()) { charthead2 (); p> sm[i].print(); cout< chartend(); cout< break; } } void data_save () //función de copia de seguridad de datos { outfile< outfile<<"┌─────┬ ─────┬────┬─────┬─────┐"< outfile<<"│ ID de empleado│ Nombre│ Sexo│ Edad│ Salario │"< for(int i=0;i t[i].save(); archivo de salida <<"└─────┴─────┴─────┴─────┴─────┘"; outfile< archivo de salida< outfile<<"┌─────┬────┬────┬─────┬─────┐ "< outfile<<"│ ID de empleado│ Nombre│ Género│ Edad│ Salario│"<