Código fuente de la clase escolar
# incluir & ltiostream & gt
# incluir & lttime.h & gt
# incluir & ltvector & gt
Usar espacio de nombres estándar
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/ /Edad p>
};
Clase de trabajador: Empleado Público // Definir la clase de trabajador.
{
Público:
trabajador();
Virtual VWorker();
visualización vacía( );
};
Profesor de clase: funcionario público // Definir la clase de docente.
{
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; lt"Género:"
CIN>>Sexo;
cout & lt& lt"Salario:"
CIN>>Salario
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
CIN>& gtHorario de trabajo;
cout & lt& lt"Profesor:" < <endl
CIN>& gtColegio;
//Extraer 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 ", local tiempo(& tnow));
edad = atoi(ahora año)-atoi(chBirthYear);//Calcular edad
}
Profesor: VTeacher( )
{
}
función void profesor::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 Teacher::GetAcademy(){
Regresar a la academia;
}
Worker::Worker() //Agregar información del trabajador
{
cout & lt& lt"Ingrese la información del trabajador información :"
cout & lt& lt"Número de empleado:" < & ltendl
CIN & gt;& gtid;
cout & lt& lt"Nombre: "
CIN>>Nombre;
cout & lt& lt"Género:"
CIN> p>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
CIN>>Horas de trabajo;
//Extracto el año de nacimiento a partir 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 ", local tiempo(& tnow));
edad = atoi(ahora año)-atoi(chBirthYear); //Calcular edad
}
Trabajador: :VWorker ()
{
}
void trabajador::display(){//La función display() 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 p>
{
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<worker>*WorkerInfo) //Agrega un nuevo objeto de trabajo.
{
System("Color05A");
Trabajador Wokertmp
(*WorkerInfo). push_back(Wokertmp);
}
void DisplayAll(vector<teacher>*TeaInfo, vector<worker>*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 el final de Se alcanza el vector, salida.
{
(*pTeaInfo). display();
cout & lt& ltendl
}
cout & lt& lt"Información de todos los trabajadores:"
Vector& ltWorker> *Iterador pWorkerInfo
for (pWorkerInfo=(*WokerInfo).begin();(*WokerInfo).empty()!=1.& amppWorkerInfo!=(*WokerInfo).end ();PWorkerInfo++) //Salir si se llega al final del vector.
{
(*pWorkerInfo).
display();
cout & lt& ltendl
}
cout & lt& lt"Presione Enter para regresar"
getchar() ; getchar();
}
void disavgthierage(vector & lt;teacher>*TeaInfo){ //Consulta la edad promedio de los profesores.
System("Color05A");
int SumAge = 0;
Vector <teacher>*Iterador pTeaInfo
for (pTeaInfo=( *TeaInfo).begin();(*TeaInfo).empty()!=1.& amppTeaInfo!=(*TeaInfo).end();PTA info++)//Atravesar el contenedor del profesor
{ //Si se llega al final del vector, sal.
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(" Color 05A ");
int SumAge = 0;
Vector <Worker>*Iterador pWorkerInfo
for (pWorkerInfo=(*WokerInfo). begin();( *WokerInfo)!=1.& amppWorkerInfo!=(*WokerInfo).PWorkerInfo++) //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<teacher>*TeaInfo){ //Se utiliza para eliminar información del profesor.
System("Color05A");
bool Hflag = false
String SearchName
Vector<teacher>* Iterador pTeaInfo
cout & lt& lt"Ingrese el nombre del profesor que desea eliminar:"
cout & lt& lt"Nombre:";
CIN & gt;& gtSearchName
for(pTeaInfo=(*TeaInfo). comenzar(); (*TeaInfo). vacío()!= 1. & amppTeaInfo!=(*TeaInfo).end(); PTA info++)//Salir si se alcanza el final del vector.
{
if(0 = = nombre de búsqueda. 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!"& lt& ltendl
}
cout & lt& lt" Al presionar la tecla Enter se devuelve "
getchar(); getchar();
}
void del trabajador(vector & lt; trabajador & gt*WokerInfo) / / se utiliza para eliminar información del trabajador.
{
System("Color05A");
bool Hflag = false
String SearchName
vector <worker>*iterator pWorkerInfo
cout<<"Ingrese el nombre del trabajador que desea eliminar:"
cout<<"name:" ;
CIN>& 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!"& lt& ltendl
}
cout & lt& lt" Al presionar la tecla Intro se devuelve "
getchar(); getchar();
}
búsqueda vacía por nombre(vector & lt; profesor & gt*TeaInfo, vector & ltWorker& gt*WokerInfo){ //Buscar información del empleado por nombre.
System("Color05A");
bool Hflag = false
String SearchName
Vector<teacher>* Iterador pTeaInfo
cout & lt& lt"Ingrese el nombre del empleado que está buscando:"
cout & lt& lt"Nombre:";
CIN & gt;& gtSearchName
for(pTeaInfo=(*TeaInfo). comenzar(); pTeaInfo!=(*TeaInfo).
end(); pTeaInfo++)
{
if(0 = = nombre de búsqueda. compare(* ptea info). getname())//Si se encuentra el empleado ingresado, implementará.
{
Hflag = true//Buscar empleados
cout & lt& lt"Esta persona es profesor, su información es"
(*pTeaInfo). display(); //Mostrar información del empleado
Continuar;
}
}
Vector <Worker>*Iterator pWorkerInfo
for(pWorkerInfo=(*WokerInfo).begin();pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++)
{
if(0 == nombre de búsqueda. compare(* pworkerinfo).getname())//Si se encuentra el empleado ingresado, se ejecutará.
{
Hflag = true//Buscar empleados
cout & lt& ltEsta persona es profesor, su información personal es
( *pWorkerInfo). display(); //Mostrar información del empleado
Continuar;
}
}
if (false==Hflag) p>
{
cout & lt& lt"¡No existe tal empleado!"& lt& ltendl//No se encontró información
}
cout & lt& lt"Presione Enter para regresar"
getchar(); getchar();
}
void DisTeacherByAcademy(vector & lt;Teacher& gtTeaInfo) { / / Salida de información de profesores por departamento.
System("Color05A");
bool Hflag = false
String SearchName
Vector<teacher>* Iterador pTeaInfo
while ((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. compare(* 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<teacher>*TeaInfo, vector<worker>*WokerInfo) //Generar un nuevo archivo
{
FILE * fp
if(NULL = =(FP = fopen (" empleado . txt ", " w+"))
{
cout & lt& lt"Error al abrir archivo"
Salir(-1);
}
Vector<Worker>*Iterador pWorkerInfo
Vector<Teacher>*Iterador Dispositivo pTeaInfo
for(pTeaInfo=(*TeaInfo).begin(); pTeaInfo!=(*TeaInfo).end();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);
for(pWorkerInfo=(* WokerInfo). comenzar(); pWorkerInfo! =(*WokerInfo). end(); PWorkerInfo++) //Usar vector para escribir toda la información del profesor.
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);
}
Fputs("Fin de la información del empleado\n ", FP)
fclose(FP);
}
Void Mainmenu(){//Interfaz de menú
Sistema ("Color 05A " ) ; //Establece el color de fondo y el color de primer plano de la ventana actual.
cout & lt& lt<
cout & lt& lt“∣Seleccione una función∣"<& ltendl
cout & lt& lt“├―――――― ―――――――――――――― ――――――――――┤"<& ltendl
cout & lt& lt"∣ 1. Crear e ingresar los datos del empleado ∣"<& ltendl
cout & lt& lt"∣ 2. Generar datos de los empleados según las condiciones∣" < & lt;endl
cout & lt& lt"∣ 3. Eliminar datos del empleado∣"endl
cout & lt& lt"0.Exit" < & ltendl
cout & lt& lt"╰―――――――――――――― ―――――――――――――――― ╯"<& ltendl
cout & lt& lt"――――――――――――――――― ――――――――――――――――' & lt;& ltendl
cout & lt& lt"Seleccione la categoría que desea proporcionar:";
}
Inserción vacía (vector & ltteacher& gt*TeaInfo, vector & ltWorker& gt*WorkerInfo) //Agregar interfaz de menú de datos de empleado
{
System("Color 05A"); //Establece la ventana actual
int select =-1
while (select!=0)
{
cout & lt& lt"╭╭╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮╮9 & lt;endl
cout & lt& lt" ∣Seleccione una acción:∣”
cout & lt& lt“├―――――――――――――――――――――― ――――――― ┤"<& ltendl
cout & lt& lt"∣ 1Agregar un registro de maestro∣"<& ltendl
cout & lt& lt《∣ 2Agregar un registro de trabajador∣" < & lt;endl
cout & lt& lt“∣ 0Volver al menú principal∣”< & lt;endl
cout & lt& lt“╰―― ――――――― ―――――――――――――――――――――╯"< Seleccionar) {
Caso 1: agregar profesor(TeaInfo); break;
Caso 2: AddWoker(información del trabajador); break;
Caso 3: menú principal(); >
cout & lt& lt" ¡Volver al menú principal! ”& lt& ltendl
}
}
}
Búsqueda no válida (vector & ltteacher& gt*TeaInfo, vector & lt Worker>* WorkerInfo) //Interfaz del menú de consulta de 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"╭╭╮ ╰ ”
cout & lt& lt“├―――――――――――――――――――――――――――――――┤"<& ltendl
cout & lt& lt"∣ 1 muestra todos los registros de empleados de ∣"<& ltendl
cout & lt& lt"∣ Presione ∣ para generar la 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 p>
cout & lt& lt《∣ Calculado en 5 días∣Edad promedio de los trabajadores》< & ltendl
cout & lt& lt“∣ 0Volver al menú principal∣”< & lt; endl
cout & lt& lt"╰――――――――――――――――――――――――――――――╯"<& ltendl p>
CIN> & gtSelect;
Cambiar(seleccionar){
Caso 1: MostrarTodo(TeaInfo, información del trabajador;
Caso); 2: DisTeacherByAcademy(* TeaInfo); descanso;
Caso 3: SearchByName(TeaInfo, información del trabajador);
Caso 4: desavgthierage(TeaInfo); >
Caso 5: DisAvgWorkerAge(información del trabajador);
Caso 6: menú principal();
Valor predeterminado:
cout; & lt& lt"¡Volver al menú principal! ”& lt& ltendl
}
}
}
eliminación nula (vector & ltteacher& gt*TeaInfo, vector & lt Worker>* WorkerInfo) //Eliminar 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"╭╭╮ ╰ ”
cout & lt& lt“├―――――――――――――――――――――――――――――――┤"<& ltendl
cout & lt& lt"∣ 1 eliminar un ∣"<registro de profesor; & ltendl
cout & lt& lt《∣ 2 eliminar∣ un registro de trabajador》< & ltendl p>
cout & lt& lt“∣ 0Volver al menú principal∣”< & lt; endl
cout & lt& lt“╰―――――――――――――――― - ----
Caso 1: del profesor(TeaInfo);
Caso 2: del trabajador(información del trabajador);
Caso 3: menú principal( ); break;
Valor predeterminado:
cout & lt& lt" ¡Volver al menú principal! ”& lt& ltendl
}
}
}
void MainCho(vector & lt;Teacher& gt*TeaInfo, vector & ltworker> *información del trabajador)
{//Operación del menú principal
int Choice =-1;
And (choice!=0){
menú principal();
CIN>>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); 0: Roto;
Valor predeterminado:
cout & lt& lt"¡Error de operación! ”& lt& ltendl
}
}
}
Void main() //Función principal
{
Vector<Teacher>TeaInfo//
Vector<Worker>WorkerInfo//
Vector<Teacher>*Iterator pTeacher//
vector <worker>*iterator pWoker// p>
pte acher = información del té .begin(); //
pwo ker = información del trabajador .begin(); //
Mainjo(&TeaInfo.info del trabajador) ; //Llamar al controlador principal
WriteFile(&TeaInfo.worker info);/ /Guardar operación de archivo
}