#Definición empleado_H
//Empleado h
Categoría de empleado
{
Protegido:
char nombre[20]; //nombre
int individualEmpNo//número personal
int nivel; //nivel
p>Doble salario acumulado; //Salario mensual total
int tag;
Estático int empleadoNo//Número máximo de empleados actual de la empresa.
Público:
Empleado(); //Constructor
~ empleado(); //Destructor
Pago virtual nulo() ; //Calcular la función de salario mensual (función virtual)
Promoción nula virtual (int incremento = 0); //Función de actualización (función virtual)
nombre del conjunto vacío (char *) ; //Establece el nombre de la función
char * GetName(); //Extrae el nombre de la función
int GetindividualEmpNo() //Selecciona la función numérica
int Getgrade(); //Extraer función de nivel
double GetaccumPay(); //Extraer función de salario mensual
void Tg();
int Gettag () ;
void add(char *na, int code, int gr, double p);
};
Técnico de clase: empleado público// técnico a tiempo parcial.
{
Privado:
Doble tarifa por hora//tarifa por hora
int workHours//horas laborables del mes
Público:
Técnico(); //Constructor
void setwork hours(int wh); //Establecer función de horas de trabajo
void pay( ); //Función calcular salario mensual
void promove(int); //Función de actualización
};
Tipo de vendedor: servidor público virtual//part -Tiempo de trabajo Clase de vendedor
{
Protegido:
Double CommRate//Retirar comisión según las ventas.
Ventas dobles; //Ventas del mes actual
Público:
Vendedor(); //Constructor
Ventas de conjuntos nulos. (double s 1); //Establecer función de ventas
void pay(); //Calcular función de salario mensual
void promove(int);
};
Classmanager:Empleado público virtual//clase gerente
{
Protegido:
Pago bimestral;
Público:
manager(); //Constructor
void pay(); //Calcular la función de salario mensual
void promover (int); //Función de actualización
};
Escriba gerente de ventas: gerente público, vendedor público//gerente de ventas
{
Público:
gerente de ventas(); //Constructor
void pay(); //Calcular la función de salario mensual
void promover(int); //Función de actualización
};
Base de datos de clase //Clase de datos del empleado
{
Privado:
int top
Lectura del empleado[100];
Público:
base de datos(); //Leer la información del empleado de empleado.txt, leer [].
int addemp (char *na, int code, int gr, double p //Agregar personal
Consulta de empleado * (int empid);
empleado * consulta 1(char empna[20]);
void disp(); //Visualización de información del empleado
void clear();
~ Base de datos (); //Leer la información en read[] como en empleado.txt
};
#endif
//Employee.cpp
# include & ltiostream & gt
# include & ltcstring & gt
#Include "employee.h"
# include & ltfstream & gt
Usar espacio de nombres std
int empleado::empleado no = 1000 //El número base de empleados es 1000.
//Definición fuera de clase de función miembro
Empleado::Empleado()
{
empno individual = empleado no++;/ /El número de empleado recién ingresado es el número máximo actual más 1.
Nivel = 1; //El valor inicial del nivel es 1.
accumPay = 0.0//El valor inicial del salario mensual total es 0
}
void empleado::add(char *na, int code, int gr, pago doble)
{
tag = 0;
set name(na); individualEmpNo = codegrade = graccumPay = pay
}
anular empleado::pagar(){};
Empleado::~empleado()
{}
Empleado anulado:: :Promoción (incremento entero)
{Level+=increment;}//Actualización, el nivel de actualización se especifica mediante el incremento.
void empleado::nombre de la colección (char * nombres)
{ strcpy(name, name);}//Establecer nombre
char * empleado:: GetName()
{Return name;}//Seleccione el nombre del miembro
int empleado::GetindividualEmpNo()
{ return individualEmpNo}
int empleado::Getgrade()
{Devolver calificación;}//Seleccionar nivel de miembro
Empleado dual::GetaccumPay()
{ devolver accumPay }//Retirar salario mensual
Técnico::Técnico()
{ tarifa por hora = 100 } //Recompensa por hora 100.
técnico nulo::setwork hours(int wh)
{ workHours = wh}//Establecer horario laboral
Técnico nulo::pay()
{pago acumulado = tarifa por hora *(doble)hora de trabajo;}//Calcular el salario mensual y pagar por hora.
Técnico no válido::Promote(integer)
{Employee::Promote(2);}// Llame a la función de actualización de la clase base para actualizar al segundo nivel.
Vendedor:Vendedor
{ CommRate = 0.04}//El ratio de comisión de ventas es del 4%
void sales::set sales(double s 1)
{ sales = s 1;}//Establecer el monto de las ventas
void salesman::pay()
{ accumPay = sales * CommRate}//Mensual salario = Comisión de ventas
void salesman::promote(int)
{ empleado::promote(0);}// Llame a la función de actualización de clase base para actualizar al nivel 0.
Manager::Manager()
{ MonthlyPay = 8000}//Salario mensual fijo de 8.000 yuanes.
void manager::pay()
{ accumPay = MonthlyPay}//El salario mensual total es un salario mensual fijo.
void manager::promote(int)
{Employee::Promote(3);}// Llame a la función de actualización de la clase base para actualizar al nivel tres.
Gerente de ventas::Gerente de ventas()
{
Pago mensual = 5000
CommRate = 0,005
}
void salesmanager::pay()
{
pago acumulado =(doble)pago mensual+CommRate * ventas;
}
void salesmanager::promote(int)
{ empleado::promote(1);}//Llame a la función de actualización de la clase base para actualizar al nivel 1.
int empleado::Gettag()
{Etiqueta de retorno;}
void empleado::Tg()
{ p>
p>
tag = 1;
}
Database::Database()//Lea la información del empleado desde empleado.txt para leer [].
{
Empleado;
top =-1;
archivo fstream("empleado.txt", IOs::in ) ;
mientras (1)
{
archivo leído((char *)&s,sizeof(s));
if(!archivo)interrumpir;
top++;
leer[top]= s;
}
archivo cerrar. ();
}
Base de datos int:: agregar EMP (char * na, código int, int gr, doble p) // Agregar empleados.
{
empleado * EMP = consulta 1(na
if(emp==NULL)
{
arriba++;
Leer [arriba]. add(na, code, gr, p);
Retorno 1;
}Retorno 0;
}
Empleado * base de datos ::query(int empid)
{
for(int I = 0;i<=topi++)
if(read[i].GetindividualEmpNo () = = empid &&read[I]. Gettag()==0)
Volver y cambiar a [I];
Devolver NULL
}
Empleado * base de datos::query1(char empna[20])
{
for(int I = 0; i< = topi++)
if (strcmp(read[i].GetName(), empna)== 0&&&read[i].Gettag()==0)
Return & amp se cambia a [I] ;
Devolver NULL
}
void base::disp()//Visualización de información del empleado
p>{
for(int I = 0; i& lt= topi++)
{
cout & lt& lt"nombre:"
if (leer [ i]. obtener calificación() = = 1) cout <<"título:"
else if (lea [i]. obtener calificación() = = 2)cout <<"Título:"
else if(read[i].get grade()= = 3)cout<<"Título:"
else cout & lt& lt"Título:"
cout & lt& lt"Salario:"
}
}
void base de datos::clear()
{ arriba =-1;
}
Database::~Database() //Como en empleado.txt Lee la información en read[] como en
{
archivo fstream ("empleado.txt", IOs::out
for(int i = 0;i<=topi++)
if (leer); [i].
Gettag()==0)
archivo . write((char *)& leer[i], tamaño de(leer[I]);
archivo . close() ;
}
//rygl.cpp
# incluir & ltiostream.h & gt
# incluir & ltcstring & gt< / p>
#Include "empleado.h"
# include & ltfstream & gt
void main()
{
Gerente m;
Técnico t;
Gerente de ventas sm;
Vendedor s;
Nombre del personaje [20], Clave[ 20];
código int, wh;
Doble am;
Empleado * emp
Datos de la base de datos;
int i, k, j=0, kk = 3;
while(kk)
{
cout & lt& lt"Ingrese la contraseña ( también tienes "
CIN>>Key;kk-;
if(strcmp(key, "sm 0903410")== 0)break;
p >
else cout & lt& lt" O (︶ ︶)¡Oh, la contraseña es incorrecta!"& lt& ltendl
if(kk = = 0){ cout & lt;& lt"Puedes ¡No vuelvas a ingresar a este sistema! (_)/~ ~Adiós"; exit (0); }
}
do { system(" cls ");
cout & lt& lt"******************Bienvenido al sistema de gestión de personal* * * * * * * * * * * * * * * * * * * *"& lt; & ltendl
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*! *!*!*!*!*!* !*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!1. !*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!2 ¡Aumento!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!3. ¡Encuéntralo! *!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!4. *!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!5 salida! *!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!6. *!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!* !*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"Por favor seleccione su operación:";CIN>>i ;
Conmutador (1)
{
Caso 1: datos . clear();
hacer { system(" cls ");
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!* !*! *!*!"& lt
& ltendl
cout & lt& lt"!*!*!*!*!*!1.¡Gerente!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!2. ¡Técnico a tiempo parcial!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"! *! *!*!*!*!3. Gerente de ventas!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*! *! 4. ¡Promoción a tiempo parcial! *!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!5. el menú anterior *!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!*!*!*!*!* !*!* !*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt" Seleccione su operación: "; CIN & gt; & gtk;
Interruptor (k)
{
Caso 1: cout <<"Ingrese el nombre:";CIN>>Name; Nombre de la colección (nombre); m.promoción(0);m.pagar();m.GetName(),m.GetindividualEmpNo(),m.Getgrade(),m.GetaccumPay());
Caso 2: cout<<"Ingrese el nombre:"CIN>>Name;cout<<"Ingrese sus horas de trabajo este mes:";CIN > )); Break;
Caso 3: cout & lt& lt"Ingrese el nombre: "; CIN & gt; & gtName; :CIN>>sm. establecer ventas(soy); SetName(nombre); sm. promover(0); sm. pagar(); sm. GetName(), sm. GetindividualEmpNo(), sm. Getgrade(), sm.
GetaccumPay());Break;
Caso 4: cout<<"Ingrese el nombre:"CIN>>Name;cout<<"Ingrese el monto total de ventas de este mes: "CIN>>am; establecer ventas (soy); s.setName (nombre); s.promote(0); s.pay(); s.GetName(), s. GetindividualEmpNo(), s.Getgrade(), s. GetaccumPay()); break;
Valor predeterminado: cout & lt& lt" ~ ~ o(& gt; _ & lt)o~~ ¡Incorrecto! "& lt& ltendlBreak;
Caso 5: Romper;
}
}mientras(k!=5);Romper;
Caso 2:
hacer { system(" cls ");
cout & lt& lt"!*!*!*!*!*!*!*! *!*!*!*!*!*!*!*! *!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!* !*!*!1. !*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!2 Técnico a tiempo parcial !*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!3. ¡Gerente de ventas! !*!"& lt& ltendl
cout & lt& lt"!* !*!*!*!*!4. ¡Promoción a tiempo parcial!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!* !*!5. ¡Volver al menú anterior!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!*! *!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!" & lt& ltendl
cout & lt& ltPor favor seleccione el tipo a agregar: ";CIN>>k;
Switch (k)
{
Caso 1: cout<<"Ingrese el nombre:" CIN>>Name; m. Nombre de la colección (nombre); m. ()); break;
Caso 2:cout <<"Ingrese el nombre:"CIN>>Name;cout<<"Ingrese sus horas de trabajo este mes:"CIN>>twh;t.setwork hours (wh);t.set nombre(nombre) ); t .promover(0); t.getgrade(); t. GetaccumPay()); break;
Caso 3: cout<<"Ingrese su nombre:"; CIN>>Name;cout<<"Ingrese las ventas totales de su departamento este mes":CIN>>am; establecer ventas(soy);
SetName(nombre); sm. promover(0); sm. pagar(); sm. GetName(), sm. GetindividualEmpNo(), sm. Getgrade(), sm.
GetaccumPay());Break;
Caso 4: cout<<"Ingrese el nombre:"CIN>>Name;cout<<"Ingrese el monto total de ventas de este mes: "CIN>>am; establecer ventas (soy); s.setName(nombre); s.promote(0); s.pay(); s.GetName(), s. GetindividualEmpNo(), s.Getgrade(), s. GetaccumPay()); roto;
Caso 5: roto;
Valor predeterminado: cout & lt& lt" ~ ~ o(& gt;_ & lt)o~~ ¡Incorrecto! ”& lt& ltendlbreak;
}
} while(k!=5);break;
Caso 3:
Hacer {
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!* !*!*!*!*!*!*!*!* !*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!1. ¡Nombre! lt& ltendl
cout & lt& lt"!*!*!*!*!*!2.¡No.! !*!"& lt& ltendl
cout & lt& lt"! *!*!*!*!*!3¡Volver al menú anterior! *!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!* !*!*!*!*!*!*!*!*!*!*!*!*!*!*! *!*!*!"& lt& ltendl
cout & lt& ltPor favor seleccione su método de búsqueda:; CIN & gt; & gtk;
Interruptor (k)
{
Caso 1:cout<<"Ingrese el nombre estás buscando:"CIN>>Name;
emp=data .query1(name);
if(EMP == NULL){ cout <<" ~ ~ o( >_<)o~~No existe tal persona"<<endlBreak ;}
else cout & lt& lt"Nombre:"
Caso 2:cout & lt;& lt" Ingrese el número que está buscando:" CIN & gt;& gt code;
emp=data.query(code);
if(EMP == NULL){ cout & lt; & lt" ~ ~ o(& gt; _ & lt)o~~No existe tal persona"< & ltendlBreak;}
else cout & lt& lt"Nombre:"
Caso 3: Roto;
Valor predeterminado: cout & lt& lt" ~ ~ o(& gt;_ & lt)o~~¡Incorrecto! "& lt& ltendlBreak;
}
} while(k!=3);Break;
Caso 4:
hacer { system(" cls ");
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*! * !*!*!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!1. *!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!2.No.! *!*!*!*!
*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!3 ¡Volver al menú anterior! *!*!*!*!*!"& lt& ltendl
cout & lt& lt"!*!*!*!*!*!*!*!*!*!*!*!* !*!*!*!*!*!*!*!*!*!"& lt& ltendl
cout & lt& ltSeleccione el método de eliminación:; CIN & gt; & gtk;
Cambiar (k)
{
Caso 1:cout<<"Ingrese el nombre que desea eliminar:"CIN>>Name ;
emp=data.query1(name);
if(EMP == NULL){ cout & lt; & lt" ~ ~ o(& gt; _ & lt) o~~No existe tal person"<<endlbreak;}
EMP->TG();break;
Caso 2:cout <<"Ingrese su número para eliminarlo: "CIN>>Code;
emp=data.query(código);
if(EMP==NULL){ cout< & lt" ~ ~ o(& gt;_ & lt)o~~ No existe tal persona" < & ltendlbreak;}
EMP->;TG();
break ;
Caso 3: Roto;
Valor predeterminado: cout & lt& lt" ~ ~ o(& gt;_ & lt)o~~ ¡Incorrecto! "& lt& ltendlBreak;
}
} while(k!=3);Break;
Caso 5: data. disp(); system( " pausa"); break;
Caso 6: cout & lt; & lt "(_)/~~Bye" < & ltendl break;
Valor predeterminado: cout & lt& lt " ~ ~ o(& gt;_ & lt)o~~¡Incorrecto! "& lt& ltendl break;
}
}Y (I!=6);
}
Somos casi iguales Como tú, simplemente cambiamos el curso del año pasado.