Advertisement
Guest User

Untitled

a guest
Jan 26th, 2015
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.19 KB | None | 0 0
  1.  
  2. package javaapplication24;
  3.  
  4. /*
  5.  
  6. Trabalho realizado por:
  7. - Gonçalo Guedes Nº21301031
  8. - Jõao Torrinha Nº21400209
  9.  
  10.  */
  11.  
  12.     import java.io.File;
  13.     import java.io.FileNotFoundException;
  14.     import java.text.SimpleDateFormat;
  15.     import java.util.Scanner;
  16.     import java.io.FileWriter;
  17.     import java.io.IOException;
  18.     import java.io.PrintWriter;
  19.     import java.text.DecimalFormat;
  20.  
  21.    
  22. class Funcionario {
  23.  
  24.     public int ID_Funcionario;
  25.     public String Nome;
  26.     public int NivelExperiencia;
  27.     public int countZonaA;
  28.     public int countZonaB;
  29.     public int countZonaC;
  30.     public double countPesoA;
  31.     public double countPesoB;
  32.     public double countPesoC;
  33. }
  34.  
  35. class Entrega {
  36.  
  37.     public int ID_Motorista;
  38.     public String ZonaEncomenda;
  39.     public double PesoEncomenda;        
  40. }
  41.  
  42.     public class JavaApplication24 {
  43.  
  44.         public static int TotalEncomendas(int ZonaA, int ZonaB, int ZonaC) {
  45.             return ZonaA + ZonaB+ ZonaC;
  46.         }
  47.        
  48.         public static double TotalPeso(double PesoA, double PesoB, double PesoC) {
  49.             return PesoA + PesoB+ PesoC;
  50.         }
  51.        
  52.         static Funcionario[] Funcionarios;
  53.         static int num_Funcionarios;
  54.         static Entrega[] Entregas;
  55.         static int num_Entregas;
  56.  
  57.         public static void main(String[] args) throws IOException {
  58.        
  59.             Scanner scanner;
  60.             SimpleDateFormat Nome = new SimpleDateFormat ("yyyyMMddHHmmss");
  61.             java.util.Date Data = new java.util.Date();
  62.             DecimalFormat Dec = new DecimalFormat ("0.000");
  63.          
  64.             double [] SalarioBase = new double [100];
  65.             double [] Bonus = new double [100];
  66.             double [] SalarioBruto = new double [100];
  67.             double [] Taxa = new double [100];
  68.             double [] Imposto = new double [100];
  69.             double [] SalarioLiquido = new double [100];
  70.  
  71.             Entregas = new Entrega [100];
  72.             num_Entregas = 0;
  73.  
  74.             Funcionarios = new Funcionario[100];
  75.             num_Funcionarios = 0;
  76.             int pos, pos1;
  77.                
  78.             try{
  79.                 scanner = new Scanner( new File("funcionarios.txt") ).useDelimiter( "\\s*:\\s*|\\s*\n\\s*" );
  80.             }
  81.             catch( FileNotFoundException ex ){
  82.                 System.out.println( ex );
  83.                 return;
  84.             }
  85.  
  86.             scanner.skip( "\\s*" );
  87.             for( pos = 0;  scanner.hasNextLine();  pos++ ){
  88.                 Funcionarios[pos] = new Funcionario();
  89.                 Funcionarios[pos].ID_Funcionario   = scanner.nextInt();
  90.                 Funcionarios[pos].Nome             = scanner.next();
  91.                 Funcionarios[pos].NivelExperiencia = scanner.nextInt();
  92.                 scanner.skip( "\\s*" );
  93.                 num_Funcionarios++;
  94.             }
  95.                            
  96.             try{
  97.                 scanner = new Scanner( new File("entregas.txt") ).useDelimiter( "\\s*:\\s*|\\s*\n\\s*" );
  98.             }
  99.             catch( FileNotFoundException ex ){
  100.                 System.out.println( ex );
  101.                 return;
  102.             }
  103.                
  104.             scanner.skip( "\\s*" );
  105.             for( pos = 0;  scanner.hasNextLine();  pos++ ){
  106.                 Entregas[pos] = new Entrega();
  107.                 Entregas[pos].ID_Motorista   = scanner.nextInt();
  108.                 Entregas[pos].ZonaEncomenda  = scanner.next();
  109.                 Entregas[pos].PesoEncomenda  = scanner.nextInt();
  110.                 scanner.skip( "\\s*" );
  111.                 num_Entregas++;
  112.             }
  113.            
  114.             for( pos = 0;  pos < num_Funcionarios;  pos++ ){
  115.                 SalarioBase[pos]= 500.5 + Funcionarios[pos].NivelExperiencia * 5;
  116.             }
  117.            
  118.             for (pos = 0; pos < num_Funcionarios; pos++){
  119.                 int zA = 0,zB = 0,zC = 0;
  120.                 double pA = 0, pB = 0, pC = 0;
  121.                 for(pos1 = 0; pos1 < num_Entregas; pos1++){
  122.                     if (Funcionarios[pos].ID_Funcionario == Entregas[pos1].ID_Motorista){
  123.                         switch (Entregas[pos1].ZonaEncomenda){
  124.                             case"A":
  125.                                 zA++;
  126.                                 pA = pA + Entregas[pos1].PesoEncomenda;
  127.                                 break;
  128.                             case"B":
  129.                                 zB++;
  130.                                 pB = pB + Entregas[pos1].PesoEncomenda;
  131.                                 break;
  132.                             case"C":
  133.                                 zC++;
  134.                                 pC = pC + Entregas[pos1].PesoEncomenda;                                
  135.                                 break;
  136.                             default:
  137.                                 System.out.println("ERRO zona " + Entregas[pos1].ZonaEncomenda + " inexistente");
  138.                                 break;
  139.                         }
  140.                     }
  141.                 Funcionarios[pos].countZonaA = zA;
  142.                 Funcionarios[pos].countPesoA = pA;
  143.                 Funcionarios[pos].countZonaB = zB;
  144.                 Funcionarios[pos].countPesoB = pB;
  145.                 Funcionarios[pos].countZonaC = zC;
  146.                 Funcionarios[pos].countPesoC = pC;
  147.                 System.out.println("\n");
  148.                    
  149.                 Bonus[pos]= Funcionarios[pos].countZonaA *0.5 + Funcionarios[pos].countZonaB * 0.75 + Funcionarios[pos].countZonaC * 1.5;
  150.                 }  
  151.             }
  152.                  
  153.             for( pos = 0;  pos < num_Funcionarios;  pos++ ){
  154.                
  155.                 SalarioBruto[pos]= SalarioBase[pos] + Bonus[pos];
  156.  
  157.                 if (SalarioBruto[pos] <505)
  158.                     Taxa[pos] = 0;
  159.                 if(SalarioBruto[pos] >= 505 && SalarioBruto[pos] <1000)
  160.                     Taxa[pos] = 10;
  161.                 if(SalarioBruto[pos] > 1000 && SalarioBruto[pos] <1500)
  162.                     Taxa[pos] = 15;
  163.                 if(SalarioBruto[pos] >= 1500)
  164.                     Taxa[pos] = 20;
  165.             }
  166.                
  167.             for( pos = 0;  pos < num_Funcionarios;  pos++ ){
  168.                 Imposto[pos]= SalarioBruto[pos] * (Taxa[pos] * 0.01);
  169.             }        
  170.                
  171.             for( pos = 0;  pos < num_Funcionarios;  pos++ ) {
  172.                 SalarioLiquido[pos]= SalarioBruto[pos] - Imposto[pos];
  173.             }
  174.            
  175.            
  176.             FileWriter Output = new FileWriter("Resultados " + Nome.format(Data) + ".txt");
  177.             PrintWriter gravarOutput = new PrintWriter (Output);
  178.            
  179.             for (pos = 0; pos < num_Funcionarios ;  pos++){
  180.                     gravarOutput.print(Funcionarios[pos].Nome + " | ");
  181.                     gravarOutput.print(Funcionarios[pos].ID_Funcionario + " | ");
  182.                     gravarOutput.printf(Funcionarios[pos].NivelExperiencia + "%n");
  183.                     gravarOutput.print(TotalEncomendas(Funcionarios[pos].countZonaA,Funcionarios[pos].countZonaB,Funcionarios[pos].countZonaC) + " | ");
  184.                     gravarOutput.print(Funcionarios[pos].countZonaA + " | ");
  185.                     gravarOutput.print(Funcionarios[pos].countZonaB + " | ");                  
  186.                     gravarOutput.printf(Funcionarios[pos].countZonaC + "%n");
  187.                     gravarOutput.print(Dec.format(TotalPeso(Funcionarios[pos].countPesoA, Funcionarios[pos].countPesoB, Funcionarios[pos].countPesoC)) + " | ");
  188.                     gravarOutput.print(Dec.format(Funcionarios[pos].countPesoA) + " | ");
  189.                     gravarOutput.print(Dec.format(Funcionarios[pos].countPesoB) + " | ");
  190.                     gravarOutput.printf(Dec.format(Funcionarios[pos].countPesoC) + "%n");
  191.                     gravarOutput.printf(Dec.format(SalarioBase[pos]) + "%n");              
  192.                     gravarOutput.printf(Dec.format(Bonus[pos]));
  193.                     gravarOutput.printf(Dec.format(SalarioBruto[pos]) + "%n");
  194.                     gravarOutput.print(Taxa[pos] + "% | ");
  195.                     gravarOutput.printf(Dec.format(Imposto[pos])+ "%n");
  196.                     gravarOutput.printf(Dec.format(SalarioLiquido[pos])+ "%n %n");
  197.             }
  198.             Output.close();
  199.         }
  200.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement