/*****************************************************************
* Prog: EntSalida.java
* Propósito: Probar diferentes tipos de entrada y su salida
* Creado: Sabado, 03 de Febrero de 2001
* Modificado:Lunes, 0
*****************************************************************/
import java.io.*; //Importamos bibliotecas externas
class ExamenI{
public static void main(String[] args)throws java.io.IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
PrintStream out = System.out; // variables objetos in y out para
// control de teclado y pantalla
String nombreCap,nombreParti,apellParti,infoParti; // Nombre de la capacitacion , Nombre del Participante , Apellido del Participante
String nombreDpto = "";
String infoCapa = "";
String totalCap = "";
String nombreMayorArea = "";
String nombreArea = "";
String nomMasEmplCap = "";
String nombreMayorDepto = "";
int deptoParti;
int areaParti;
int tipoCap; // Tipo de Capacitacion: 1-Externa, 2-Interna, 3-Salir
int cantParti; // Cantidad de Participantes por Capacitacion
int idProveedor;
int idParti;
int cantDpts = 11;
int cantAreas = 4;
int dptoMasEmplCap = -1;
int areaMasEmplCap = -1;
int empleaCapac = 0;
int countCap = 0;
double mayorHoraDepto = -1;
double mayorHoraArea = -1;
double costoProvePorPart;
double cantHorasCap;
double salarioPorHoraPorParti;
double salarioBase = 3000;
double costoPorParti;
double inversionPorInternas = 0;
double inversionPorExternas = 0;
double inversionesTotales;
double horasArea = 0;
double horasDpto = 0;
double costoPromPeriodo;
//inicializar los Acumuladores de horas por Area
double horasArea1 = 0; // Area Administrativa
double horasArea2 = 0; // Area Financiera
double horasArea3 = 0; // Area Comercial
double horasArea4 = 0; // Area Produccion
// inicializar los Acumuladores de horas por Departamento
double horasDepto1 = 0; // Horas del Departamento Administrativo
double horasDepto2 = 0; // Horas del Departamento Gerencial
double horasDepto3 = 0; // Horas del Departamento Finanzas
double horasDepto4 = 0; // Horas del Departamento Contabilidad
double horasDepto5 = 0; // Horas del Departamento Importaciones
double horasDepto6 = 0; // Horas del Departamento Mercadeo
double horasDepto7 = 0; // Horas del Departamento Bodegas
double horasDepto8 = 0; // Horas del Departamento Planta Produccion A
double horasDepto9 = 0; // Horas del Departamento Planta Produccion B
double horasDepto10 = 0; // Horas del Departamento Investigacion & Desarrollo
double horasDepto11 = 0; // Horas del Departamento Ingenieria
//Factores para calcular el salario minimo:
double factor = 0;
double factor1 = 1.45 * 1.35;
double factor2 = 1.015 * 1.30;
double factor3 = 1.7 * 1.35;
//inicializar los contadores de Participantes por Departamento
int cantPart1 = 0; // Contador de participantes del departamento Administrativo
int cantPart2 = 0; // Contador de participantes del departamento Gerencial
int cantPart3 = 0; // Contador de participantes del departamento Finanzas
int cantPart4 = 0; // Contador de participantes del departamento Contabilidad
int cantPart5 = 0; // Contador de participantes del departamento Importaciones
int cantPart6 = 0; // Contador de participantes del departamento Mercadeo
int cantPart7 = 0; // Contador de participantes del departamento Bodegas
int cantPart8 = 0; // Contador de participantes del departamento Planta Produccion A
int cantPart9 = 0; // Contador de participantes del departamento Planta Produccion B
int cantPart10 = 0; // Contador de participantes del departamento Investigacion & Desarrollo
int cantPart11 = 0; // Contador de participantes del departamento Ingenieria
out.println("Ingrese el tipo de Capacitacion \n 1. Externa \n 2. Interna \n 3. Salir");
tipoCap = Integer.parseInt(in.readLine());
while (tipoCap != 3){
String participantes= "";
double sumaSalarios = 0;
double inversionTotalCap = 0;
double pagoCap = 0;
out.println("Ingrese el nombre de la capacitacion"); //Leer nombreCap
nombreCap = in.readLine();
out.println("Ingrese la cantidad de Participantes"); // Leer cantPart
cantParti = Integer.parseInt(in.readLine());
out.println("Ingrese la cantidad de horas de la capacitacion " + nombreCap); // Leer cantHorasCap
cantHorasCap = Double.parseDouble(in.readLine());
if(tipoCap == 1){
out.println("Ingrese el ID del proveedor"); // Leer IDProveedor
idProveedor = Integer.parseInt(in.readLine());
out.println("Ingrese el costo de la capacitacion " + nombreCap); // Leer pagoCap
pagoCap = Double.parseDouble(in.readLine());
costoProvePorPart = pagoCap / cantParti;
}
else{
costoProvePorPart= 0;
}
for (int countParti=0;countParti<cantParti;countParti++){
out.println("Ingrese el ID del participante " + "No. " + (countParti + 1)); // Leer idParti
idParti = Integer.parseInt(in.readLine());
out.print("Ingrese el nombre del participante: ");
nombreParti = in.readLine();
out.print("Ingrese el apellido del participante: ");
apellParti = in.readLine();
out.println("Ingrese el departamento del participante: \n 1: Administrativo, \n 2: Gerencial, \n 3: Finanzas, \n 4: Contabilidad, \n 5: Importaciones, \n 6: Mercadeo, \n 7: Bodegas, \n 8: Planta Produccion A, \n 9: Planta Produccion B, \n 10: Investigacion & Desarrollo, \n 11: Ingenieria"); // Leer deptoParticipante
deptoParti = Integer.parseInt(in.readLine());
out.println();
switch(deptoParti){
case 1:
case 2: //Opcion Agregar Productor
horasArea1 = horasArea1 + cantHorasCap;
if(deptoParti == 1){
horasDepto1= horasDepto1 + cantHorasCap;
cantPart1 = cantPart1 +1;
nombreDpto = "Administrativo";
factor = factor1;
}
else{
horasDepto2= horasDepto2 + cantHorasCap;
cantPart2 = cantPart2 +1;
nombreDpto = "Gerencial";
factor = factor1;
}
out.println (horasDepto1);
out.println (horasArea1);
break;
case 3:// 'Opcion Total de leche entregada a la Cia
case 4:
horasArea2 = horasArea2 + cantHorasCap;
if(deptoParti == 3){
horasDepto3= horasDepto3 + cantHorasCap;
cantPart3 = cantPart3 +1;
nombreDpto = "Finanzas";
factor = factor1;
}
else{
horasDepto4= horasDepto4 + cantHorasCap;
cantPart4 = cantPart4 +1;
nombreDpto = "Contabilidad";
factor = factor1;
}
break;
case 5: //Opcion Numero de entregas por productor
case 6:
horasArea3 = horasArea3 + cantHorasCap;
if(deptoParti == 5){
horasDepto5= horasDepto5 + cantHorasCap;
cantPart5 = cantPart5 +1;
nombreDpto = "Importaciones";
factor = factor1;
}
else{
horasDepto6= horasDepto6 + cantHorasCap;
cantPart6 = cantPart6 +1;
nombreDpto = "Mercadeo";
factor = factor1;
}
break;
case 7: //
case 8:
case 9:
case 10:
case 11:
horasArea4 = horasArea4 + cantHorasCap;
if(deptoParti == 7){
horasDepto7= horasDepto7 + cantHorasCap;
cantPart7 = cantPart7 +1;
nombreDpto = "Bodegas";
factor = factor2;
} else{
if(deptoParti == 8){
horasDepto8= horasDepto8 + cantHorasCap;
cantPart8 = cantPart8 +1;
nombreDpto = "Planta Prod. A";
factor = factor2;
} else{
if(deptoParti == 9){
horasDepto9= horasDepto9 + cantHorasCap;
cantPart9 = cantPart9 +1;
nombreDpto = "Planta Prod. B";
factor = factor2;
} else{
if(deptoParti == 10){
horasDepto10= horasDepto10 + cantHorasCap;
cantPart10 = cantPart9 +1;
nombreDpto = "Investigacion & Desarrollo";
factor = factor3;
} else{
horasDepto11= horasDepto11 + cantHorasCap;
cantPart11 = cantPart11 +1;
nombreDpto = "Ingenieria";
factor = factor3;
}
}
}
}
break;
default: //Cualquier otro valor dado por el usuario se considera inválido
out.println("Opcion inv\u00a0lida");
out.println();
break;
}
salarioPorHoraPorParti = salarioBase * factor;
//out.println("SalarioporHoraPorPArti" + salarioPorHoraPorParti);
costoPorParti = (salarioPorHoraPorParti + costoProvePorPart) * cantHorasCap;
//out.println("CostoPor Parti" + costoPorParti);
infoParti = idParti + " - " + nombreParti + " " + apellParti + " " + "- Depto No." + deptoParti + "-" + nombreDpto + " - Inversion: " + costoPorParti;
participantes = participantes + "\n" + infoParti; // acumula los participantes por capacitacion
infoCapa = "------------- \n Capacitacion " + nombreCap + "\n" + participantes + "\n------------- \n" ;
sumaSalarios = sumaSalarios + salarioPorHoraPorParti;
if(tipoCap == 1){
inversionTotalCap = (sumaSalarios * cantHorasCap) + pagoCap;
inversionPorExternas = inversionPorExternas + inversionTotalCap;
} else{
inversionTotalCap = sumaSalarios * cantHorasCap;
inversionPorInternas = inversionPorInternas + inversionTotalCap;
}
inversionesTotales = inversionPorExternas + inversionPorInternas;
out.println(inversionesTotales);
out.println(infoCapa);
out.println();
} // del For de cada participante
totalCap = totalCap + infoCapa;
countCap = countCap++;
// costoPromPeriodo = inversionesTotales / countCap;
out.println("Ingrese el tipo de Capacitacion \n 1. Externa \n 2. Interna \n 3. Salir");
tipoCap = Integer.parseInt(in.readLine());
out.println(totalCap); // Imprime Nombre de la Capacitacion, participantes (ced,nombre completo, departamento y la inversion por esa capacitacion)
// out.println("\n- Costo Promedio por Periodo:" + costoPromPeriodo);
} //del while
// mayorHoraDepto = -1;
// dptoMasEmplCap = -1;
for (deptoParti = 1; deptoParti< cantDpts; deptoParti++);{
out.println("deptoParti" + deptoParti);
switch(deptoParti){
case 1:
horasDpto = horasDepto1;
empleaCapac = cantPart1;
nombreDpto = "Administrativo";
break;
case 2:
horasDpto = horasDepto2;
empleaCapac = cantPart2;
nombreDpto = "Gerencial";
break;
case 3:
horasDpto = horasDepto3;
empleaCapac = cantPart3;
nombreDpto = "Finanzas";
break;
case 4:
horasDpto = horasDepto4;
empleaCapac = cantPart4;
nombreDpto = "Contabilidad";
break;
case 5:
horasDpto = horasDepto5;
empleaCapac = cantPart5;
nombreDpto = "Importaciones";
break;
case 6:
horasDpto = horasDepto6;
empleaCapac = cantPart6;
nombreDpto = "Mercadeo";
break;
case 7:
horasDpto = horasDepto7;
empleaCapac = cantPart7;
nombreDpto = "Bodegas";
break;
case 8:
horasDpto = horasDepto8;
empleaCapac = cantPart8;
nombreDpto = "Planta Prod. A";
break;
case 9:
horasDpto = horasDepto9;
empleaCapac = cantPart9;
nombreDpto = "Planta Prod. B";
break;
case 10:
horasDpto = horasDepto10;
empleaCapac = cantPart10;
nombreDpto = "Investigacion & Desarrollo";
break;
case 11:
horasDpto = horasDepto11;
empleaCapac = cantPart11;
nombreDpto = "Ingenieria";
break;
} // del switch
if (horasDpto > mayorHoraDepto){
mayorHoraDepto = horasDpto;
nombreMayorDepto = nombreDpto;
//out.println(mayorHoraDepto + nombreMayorDepto);
}
if (empleaCapac > dptoMasEmplCap){
dptoMasEmplCap = empleaCapac;
nomMasEmplCap = nombreDpto;
}
} // del for del MayorHoraDepto
out.println("\n- Departamento con mas horas de capacitacion: " + nombreMayorDepto + " - Horas: " + mayorHoraDepto); // Imprime el Departamento con mas horas de capacitacion acumulada
out.println("\n- Departamento con mas empleados capacitados: " + nomMasEmplCap + " - Cantidad: " + dptoMasEmplCap); // Imprime el departamento con mas empleados capacitados
// mayorHoraArea = -1;
// areaMasEmplCap = -1;
for (areaParti = 1; areaParti<cantAreas;areaParti++);{
switch(areaParti){
case 1:
horasArea = horasArea1;
nombreArea = "Administrativa";
break;
case 2:
horasArea = horasArea2;
nombreArea = "Financiera";
break;
case 3:
horasArea = horasArea3;
nombreArea = "Comercial";
break;
case 4:
horasArea = horasArea4;
nombreArea = "Produccion";
break;
} // del switch
if (horasArea > mayorHoraArea){
mayorHoraArea = horasArea;
nombreMayorArea = nombreArea;
}
out.println("\n- Area con mas horas de capacitacion: " + nombreMayorArea + "- Horas: " + mayorHoraArea); // Imprime el Area con mas horas de capacitacion acumulada
} // del for del MayorHoraDepto
// ***********************IMPRESIONES FINALES***********************
out.println("\n- Inversion total en capacitaciones Internas: " + inversionPorInternas); // Imprime la inversion total en capacitaciones internas
out.println("\n- Inversion total en capacitaciones Externas " + inversionPorExternas); // Imprime la inversion total en capacitaciones externas
out.println();
} // del main
} // de la clase