Enviar código fuente
# incluir ltiostream gt
# incluir lttime.h gt
# incluir ltvector gt
Usar nomenclatura Space std
Clase de empleado //Definir la clase de empleado.
{
Público:
Empleado(); //Constructor
Empleado virtual();
Virtual void Display() = 0;
int GetAge(); //Obtener edad
string GetName() //Obtener nombre
Protegido :
int Id//Número de identificación del empleado
String name; //Nombre del empleado
char Sex[5] //Género
int salario; //salario
string cumpleaños; //fecha de nacimiento
string tiempo de trabajo; //tiempo de trabajo
int Edad/ /age p>
};
Clase de trabajador: Empleado público // Definir clase de trabajador.
{
Público:
trabajador();
Virtual VWorker();
pantalla nula( );
};
Profesor de clase: funcionario público // Definir la clase de profesor.
{
Público:
Profesor();
VTeacher virtual();
visualización vacía( );
string GetAcademy();
Privado:
String Academy;
};
Empleado ::Empleado()
{
}
Empleado::Empleado()
{
}
int Empleado::GetAge()
{
Edad de retorno;
}
Cadena Empleado: :GetName()
{
Devolver nombre;
}
Profesor::Profesor() //Agregar información del profesor p>
{
cout lt lt"Por favor ingrese la información del maestro:"
cout lt lt"Número de empleado:" < ltendl
CIN gt ; gtid;
cout lt lt"Nombre:"
CIN gt;
cout lt lt"Género:"
CIN gt; gtSexo;
cout lt lt"Salario:"
CIN gt; gtSalario;
cout lt lt"Fecha de nacimiento:" (Formato xxxx /xx/xx)"
CIN gt; gtCumpleaños;
cout lt lt"Horas de trabajo: (Formato xxxx/xx/xx)" lt; ltendl p>
CIN gt; gtHoras de trabajo;
cout lt lt"Profesor:" < ltendl
CIN gt; gtCollege;
// Extrae el año de nacimiento del cumpleaños.
int Pos = cumpleaños. find _ first _ of('/');
Año de nacimiento de la cadena
BirthYear.assign(cumpleaños, 0, Pos). );
char chBirthYear[6];
strcpy(chBirthYear, cumpleaños. c_str());
//Obtener el año del sistema actual.
char now año[5];
time _ t tnow = time(0);
strftime(NowYear, 5, " Y ", hora local (amp;tnow));
edad = atoi(ahora año)-atoi(chBirthYear);//Calcular edad
}
Profesor: VTeacher( )
{
}
void profesor: función :display(){//display() con el mismo nombre, genera información del profesor.
cout lt lt"Número de empleado:" < ltId lt ltendl
cout lt lt"Nombre:"
cout lt lt"Género:"
cout lt lt"Salario:"
cout lt lt"Fecha de nacimiento:"
cout lt lt"Horas de trabajo:"
cout lt lt"Edad:"
}
string Profesor:: GetAcademy(){
Regresar a la academia;
}
Trabajador::Trabajador() //Agregar información del trabajador
{
cout lt lt"Ingrese la información del trabajador:"
cout lt lt"Número de empleado:" < ltendl
CIN gt;
cout lt lt"Nombre:"
CIN gtName; p>
CIN gt; p>
cout lt lt"Género:"
CIN gt; gtSexo;
cout lt lt"Salario:"
CIN gt; gt Salario;
cout lt lt"Fecha de nacimiento: (formato xxxx/xx/xx)"
CIN gt; p>cout lt lt"Tiempo de trabajo: (formato xxxx/xx/xx)" lt; ltendl
CIN gt; gtTiempo de trabajo
//Extrae el año de nacimiento del cumpleaños.
int Pos = cumpleaños. find _ first _ of('/');
Año de nacimiento de la cadena
BirthYear.assign(cumpleaños, 0, Pos). );
char chBirthYear[6];
strcpy(chBirthYear, cumpleaños. c_str());
//Obtener el año del sistema actual.
char now año[5];
time _ t tnow = time(0);
strftime(NowYear, 5, " Y ", hora local (&tnow));
edad = atoi(ahora año)-atoi(chBirthYear);//Calcular edad
}
Trabajador::VWorker ()
{
}
void trabajador::display(){//display() función con el mismo nombre, genera información del trabajador.
cout lt lt"Número de empleado:" < ltId lt ltendl
cout lt lt"Nombre:"
cout lt lt"Género:"
cout lt lt"Salario:"
cout lt lt"Fecha de nacimiento:"
cout lt lt"Horas de trabajo:"
cout lt lt"Edad:"
}
void add profesor(vector lt; profesor gt*TeaInfo) //Añadir objeto profesor
{
System("Color05A"); //Establece el color de fondo y el color de primer plano de la ventana actual.
Profesor TeaTemp;
(*TeaInfo). push_back(tea temp);
}
void AddWoker(vector lt; trabajador gt*WorkerInfo) //Agregar un nuevo objeto de trabajo.
{
System("Color05A");
Trabajador Wokertmp
(*WorkerInfo). push_back(Wokertmp);
}
void DisplayAll(vector ltteacher gt*TeaInfo, vector ltworker gt*WokerInfo){ //Mostrar todos los registros de empleados.
System("Color05A");
cout lt lt"Toda la información de los profesores:"
Vector ltteacher gt*Iterator pTeaInfo
for (pTeaInfo=(*TeaInfo).begin();(*TeaInfo).empty()!=1. amppTeaInfo!=(*TeaInfo).end();PTA info)//Si se alcanza el vector en el fin, salida.
{
(*pTeaInfo). display();
cout lt ltendl
}
cout lt lt"Información de todos los trabajadores:"
Vector lt trabajador gt *Iterador pWorkerInfo
for (pWorkerInfo=(*WokerInfo).begin();(*WokerInfo).empty()!=1. amppWorkerInfo!=(*WokerInfo).end();PWorkerInfo ) / /Salir si se alcanza el final del vector.
{
(*pWorkerInfo).
display();
cout lt ltendl
}
cout lt lt"Presione Enter para regresar"
getchar(); ();
}
void disavgthierage(vector lt; teacher gt*TeaInfo){ //Consulta la edad promedio de los profesores.
System("Color05A");
int SumAge = 0;
Vector ltteachergt*iterador pTeaInfo
for (pTeaInfo=( *TeaInfo).begin();(*TeaInfo).empty()!=1. amppTeaInfo!=(*TeaInfo).end();PTA info )//Recorre el contenedor del profesor
{/ /Si se llega al final del vector, salir.
SumaEdad = (*pTeaInfo). GetAge();
cout lt ltendl
}
if((*TeaInfo).size()!=0)
cout lt lt"La edad promedio de los profesores es"
else cout lt lt"Sin registro"
cout lt lt"Presione Enter para regresar"
getchar (); getchar();
}
void disavgworeage(vector lt; trabajador gt*WokerInfo){
System("Color05A");
p>int SumAge = 0;
Vector lt trabajador gt * iterador pWorkerInfo
for (pWorkerInfo=(*WokerInfo). comenzar(); (*WokerInfo). vacío ()! =1. amppWorkerInfo! =(*WokerInfo) //Salir si se alcanza el final del vector.
{
SumaEdad = (*pWorkerInfo). GetAge();
cout lt ltendl
}
if((*WokerInfo).size()!=0)
cout lt lt"La edad promedio de los empleados es"
else cout lt lt"Sin registro"
cout lt lt"Presione Enter para regresar"
getchar (); getchar();
}
void DelTeacher(vector ltteachergt*TeaInfo){ //Se utiliza para eliminar información del profesor.
System("Color05A");
bool Hflag = false
String SearchName
Vector lt profesor gt* iterador pTeaInfo p>
cout lt lt"Ingrese el nombre del profesor que desea eliminar:"
cout lt lt"Nombre:";
CIN gtSearchName
p> p>
for(pTeaInfo=(*TeaInfo). comenzar(); (*TeaInfo). vacío()!= 1. amppTeaInfo!=(*TeaInfo).
end(); PTA info )//Salir si se alcanza el final del vector.
{
if(0 = = buscar nombre. compare(* ptea info).getname())//Si se encuentra el nombre del profesor a eliminar, ejecutar.
{
Hflag = true//Encuentra al profesor
(*TeaInfo). erase(pTeaInfo); //Elimina el profesor especificado en el vector.
Continuar;
}
}
If (false==Hflag) //Si no hay profesor, ejecutar.
{
cout lt lt"¡No existe tal maestro!" key Return "
getchar(); getchar();
}
void del trabajador(vector lt; trabajador gt*WokerInfo) //Se usa para eliminar información de los trabajadores.
{
System("Color05A");
bool Hflag = false
String SearchName
vector lt trabajador gt * iterador pWorkerInfo
cout lt lt"Ingrese el nombre del trabajador que desea eliminar:"
cout lt lt"nombre:";
CIN gt; gtSearchName
for(pWorkerInfo=(*WokerInfo).begin(); (*WokerInfo).empty()!= 1. amppWorkerInfo!=(*WokerInfo).end( ); PWorkerInfo ) //Salir si se alcanza el final del vector.
{
if(0 == nombre de búsqueda. compare(* pworkerinfo).getname())//Si se encuentra el nombre del trabajador que se va a eliminar, ejecútelo.
{
Hflag = true//Buscar trabajadores
(*WokerInfo). erase(pWorkerInfo); //Elimina el trabajador especificado en el vector.
Continuar;
}
}
If (false==Hflag) // Si no hay ningún hilo de trabajo, ejecutar.
{
cout lt lt"¡No existe tal maestro!" key Return "
getchar(); getchar();
}
búsqueda nula por nombre(vector lt; profesor gt*TeaInfo, vector lt trabajador gt * WokerInfo){ //Buscar información del empleado por nombre.
System("Color05A");
bool Hflag = false
String SearchName
Vector lt profesor gt* iterador pTeaInfo p>
cout lt lt"Ingrese el nombre del empleado que está buscando:"
cout lt lt"Nombre:";
CIN gtSearchName
p>for(pTeaInfo=(*TeaInfo).begin();pTeaInfo!=(*TeaInfo).end();pTeaInfo)
{
if( 0 == nombre de búsqueda. compare(* ptea info).getname())//Si se encuentra el empleado ingresado, se ejecutará.
{
Hflag = true//Buscar empleados
cout lt lt"Esta persona es profesor, su información es"
(*pTeaInfo). display(); //Mostrar información del empleado
Continuar;
}
}
Vector lt trabajador gt * iterador pWorkerInfo< / p>
for(pWorkerInfo=(*WokerInfo).begin();pWorkerInfo!=(*WokerInfo).end();pWorkerInfo)
{
if( 0 == nombre de búsqueda. compare(* pworkerinfo).//Si se encuentra el empleado ingresado, se ejecutará.
{
Hflag = true//Buscar empleados
cout lt ltEsta persona es profesor y su información personal es
( *pWorkerInfo). display(); //Mostrar información del empleado
Continuar;
}
}
if (false==Hflag) p>
{
cout lt lt"¡No existe tal empleado!" Presione Enter para regresar "
getchar(); getchar();
}
void DisTeacherByAcademy(vector lt; teacher gtTeaInfo){ //Por departamento Salida información del profesor.
System("Color05A");
bool Hflag = false
String SearchName
Vector lt profesor gt* iterador pTeaInfo p>
Y ((TeaInfo).empty()!=1) {// Genera todos los profesores del departamento especificado.
pTeaInfo=(TéInfo). comenzar();
Academia de cadenas = (*pTeaInfo). GetAcademy();
cout lt lt"Departamento:"
for(pTeaInfo=(TeaInfo).begin();(TeaInfo).empty()!=1. amppTeaInfo! =(TeaInfo). end();){
if(0 = = academia . comparar(* pTeaInfo).
GetAcademy()))
{
(*pTeaInfo). display();
cout lt ltendl
(TeaInfo). borrar(pTeaInfo);
pTeaInfo=(TeaInfo). comenzar();
}
else ptea info ;
}
cout lt ltendl
}
cout lt lt"Presione Enter para regresar"
getchar(); getchar();
}
void WriteFile(vector lt ; profesor gt*TeaInfo, vector lt trabajador gt*WokerInfo) //Generar un nuevo archivo
{
FILE * fp
if(NULL = = ( FP = fopen(" empleado . txt ", " w "))
{
cout lt "Error al abrir archivo"
Salir (- 1);
}
Vector lt trabajador gt* iterador pWorkerInfo
Vector lt profesor gt* iterador pTeaInfo
for( pTeaInfo=(*TeaInfo );pTeaInfo! =(*TeaInfo);PTA info)//Escribe toda la información del profesor en el vector. p>Fputs("Información del profesor:\n", FP);
Fprintf(fp, " nombre: s\n", (*pteainfo).getname().c_str());
Fprintf(fp, "Edad: d\n ", (*pTeaInfo). GetAge());
fputs("\n ", FP);
}
Fputs("La información del profesor termina\n ", FP); p>for(pWorkerInfo=(*WokerInfo).begin(); pWorkerInfo!=(*WokerInfo ).end();PWorkerInfo) //Usa el vector para escribir la información de todos los profesores
{<. /p>
Fputs("Información del empleado:\n ", FP);
Fprintf(fp, "nombre: s\n", (*pworkerinfo).getname().c_str() );
Fprintf(fp, "edad: d\n" , (*pWorkerInfo). GetAge());
fputs("\n ", FP); p>
}
Fputs("Fin de la información del empleado\ n ", FP
fclose(FP); >
Void Mainmenu(){//Interfaz de menú
System ("Color05A"); //Establece el color de fondo y el color de primer plano de la ventana actual.
cout lt lt"╭╭╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮9 lt; endl
cout lt lt"∣Seleccione una función∣"lt; ltendl
cout lt lt"├――――――――――――――――――――――― ―― ―――――┤"lt; ltendl
cout lt lt"∣ 1. Crear e ingresar datos del empleado∣"lt; ltendl
cout lt lt"∣ 2. Según las condiciones Generar datos del empleado∣" < lt; endl
cout lt lt"∣ 3. Eliminar datos del empleado∣"endl
cout lt lt"0. /p>
cout lt "╰――――――――――――――――――――――――――――╯"lt; cout lt lt"―――――――――――――――――――――――――――――――――" lttendl
cout lt; "Seleccione la categoría que desea proporcionar: ";
}
Inserción vacía (vector lt profesor gt*TeaInfo, vector lt trabajador gt*WorkerInfo) //Interfaz de menú para agregar datos del empleado.
{
System("Color05A"); //Establece el color de fondo y el color de primer plano de la ventana actual
int select =-1 ;
Y(select!=0)
{
cout lt lt"╭╭╮╮╮╮╮╮╮╮╮╮╮╮╮╮ ╮╮╮╮ ╮╮╮╮╮╮╮╮╮9 lt;endl
cout lt lt"∣Seleccione una acción:∣"
cout lt lt"├―― ――― ――――――――――――――――――――――――┤"lt; ltendl
cout lt lt"∣ 1Agregar un registro de maestro∣"lt ; ltendl
cout lt lt《∣ 2Agregar un registro de trabajador∣》< lt; endl
cout lt lt“∣ 0Volver al menú principal∣"< lt; endl
cout lt lt"╰―――――――――――――――――――――――――――――╯"lt
CIN gt; gt select;
Cambiar(seleccionar){
Caso 1: agregar profesor(TeaInfo);
Caso 2: AddWoker(información del trabajador); ); break ;
Caso 3: menú principal(); roto;
Valor predeterminado:
cout lt lt" ¡Regrese al menú principal! ” lt ltendl
}
}
}
Búsqueda no válida (vector lt profesor gt*TeaInfo, vector lt trabajador gt*WorkerInfo ) //Interfaz del menú de consulta de datos del empleado
{
Sistema ("Color 05A"); //Establece el color de fondo y el color de primer plano de la ventana actual.
int select =-1;
Y (select!=0)
{
cout lt lt"╭╭╮╮ ╰ >
cout lt"├――――――――――――――――――――――――――――┤"lttendl
cout lt; lt"∣ 1 muestra todos los registros de empleados de ∣"lt; ltendl
cout lt lt "∣Presione ∣ en el segundo medio para generar información del maestro"< ltendl
cout lt lt " ∣ No. 3 recupera toda la información a través del nombre de ∣" endl
cout lt lt "∣ Calcula la edad promedio de ∣ profesores en ∣ 4" < ltendl
cout lt lt " ∣ 5. Calcular ∣ edad promedio de los trabajadores》< ltendl
cout lt lt“∣ 0 Volver al menú principal∣”< endl
cout lt lt“╰――― ――――― -----
Caso 1: DisplayAll(TeaInfo, información del trabajador roto);
Caso 2: DisTeacherByAcademy(* TeaInfo roto); p>
Caso 3: SearchByName( TeaInfo, información del trabajador);
Caso 4: disavgthierage(TeaInfo);
Caso 5: DisAvgWorkerAge(información del trabajador) ; break;
Caso 6: menú principal();
Valor predeterminado:
cout lt lt" ¡Regrese al menú principal! ” lt ltendl
}
}
}
eliminación nula (vector lt profesor gt*TeaInfo, vector lt trabajador gt*WorkerInfo ) //Eliminar datos de los empleados
{
System("Color05A"); //Establece el color de fondo y el color de primer plano de la ventana actual.
int select =-1;
Y (select!=0)
{
cout lt lt"╭╭╮╮ ╰ >
cout lt"├――――――――――――――――――――――――――――┤"lttendl
cout lt; lt"∣ 1 eliminar un ∣"lt registro de maestro; ltendl
cout lt lt《∣ 2 eliminar∣ un registro de trabajador》< ltendl
cout lt lt" ∣ 0 Volver al menú principal∣" < lt; endl
cout lt lt "╰―――――――――――――――――――――――――――――― ―╯ "lt; ltendl
CIN gt; gtselect;
switch(select){
Caso 1: del profesor(TeaInfo); break;
Caso dos: del trabajador(información del trabajador); descanso;
Caso tres: menú principal(); descanso;
Valor predeterminado:
cout lt lt"¡Volver al menú principal! ” lt ltendl
}
}
}
void MainCho(vector lt; profesor gt*TeaInfo, vector lt trabajador gt* Información del trabajador)
{//Operación del menú principal
int Choice =-1;
Y (choice!=0){
menú principal();
CIN gt; gt select;
Cambiar(seleccionar){
Caso 1: Insertar(TeaInfo, información del trabajador); ;
Caso 2: Buscar (TeaInfo, información del trabajador);
Caso 3: Eliminar (TeaInfo, información del trabajador);
Caso 0; : roto;
Valor predeterminado:
cout lt lt"¡Error de operación! ” lt ltendl
}
}
}
Void main() //Función principal
{
Vector lt profesor gtTeaInfo//
Vector lt trabajador gtWorkerInfo//
Vector lt profesor gt* iterador pTeacher//
Vector lt trabajador gt * iterador pWoker//
pte acher = información del té . comenzar(); //
pwo ker = información del trabajador .
Mainjo(ampTeaInfo.worker info); //Llamar al controlador principal
WriteFile(amp;TeaInfo.worker info); //Guardar operación del archivo
}