Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package javaapplication24;
- /*
- Trabalho realizado por:
- - Gonçalo Guedes Nº21301031
- - Jõao Torrinha Nº21400209
- */
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.text.SimpleDateFormat;
- import java.util.Scanner;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.text.DecimalFormat;
- class Funcionario {
- public int ID_Funcionario;
- public String Nome;
- public int NivelExperiencia;
- public int countZonaA;
- public int countZonaB;
- public int countZonaC;
- public double countPesoA;
- public double countPesoB;
- public double countPesoC;
- }
- class Entrega {
- public int ID_Motorista;
- public String ZonaEncomenda;
- public double PesoEncomenda;
- }
- public class JavaApplication24 {
- public static int TotalEncomendas(int ZonaA, int ZonaB, int ZonaC) {
- return ZonaA + ZonaB+ ZonaC;
- }
- public static double TotalPeso(double PesoA, double PesoB, double PesoC) {
- return PesoA + PesoB+ PesoC;
- }
- static Funcionario[] Funcionarios;
- static int num_Funcionarios;
- static Entrega[] Entregas;
- static int num_Entregas;
- public static void main(String[] args) throws IOException {
- Scanner scanner;
- SimpleDateFormat Nome = new SimpleDateFormat ("yyyyMMddHHmmss");
- java.util.Date Data = new java.util.Date();
- DecimalFormat Dec = new DecimalFormat ("0.000");
- double [] SalarioBase = new double [100];
- double [] Bonus = new double [100];
- double [] SalarioBruto = new double [100];
- double [] Taxa = new double [100];
- double [] Imposto = new double [100];
- double [] SalarioLiquido = new double [100];
- Entregas = new Entrega [100];
- num_Entregas = 0;
- Funcionarios = new Funcionario[100];
- num_Funcionarios = 0;
- int pos, pos1;
- try{
- scanner = new Scanner( new File("funcionarios.txt") ).useDelimiter( "\\s*:\\s*|\\s*\n\\s*" );
- }
- catch( FileNotFoundException ex ){
- System.out.println( ex );
- return;
- }
- scanner.skip( "\\s*" );
- for( pos = 0; scanner.hasNextLine(); pos++ ){
- Funcionarios[pos] = new Funcionario();
- Funcionarios[pos].ID_Funcionario = scanner.nextInt();
- Funcionarios[pos].Nome = scanner.next();
- Funcionarios[pos].NivelExperiencia = scanner.nextInt();
- scanner.skip( "\\s*" );
- num_Funcionarios++;
- }
- try{
- scanner = new Scanner( new File("entregas.txt") ).useDelimiter( "\\s*:\\s*|\\s*\n\\s*" );
- }
- catch( FileNotFoundException ex ){
- System.out.println( ex );
- return;
- }
- scanner.skip( "\\s*" );
- for( pos = 0; scanner.hasNextLine(); pos++ ){
- Entregas[pos] = new Entrega();
- Entregas[pos].ID_Motorista = scanner.nextInt();
- Entregas[pos].ZonaEncomenda = scanner.next();
- Entregas[pos].PesoEncomenda = scanner.nextInt();
- scanner.skip( "\\s*" );
- num_Entregas++;
- }
- for( pos = 0; pos < num_Funcionarios; pos++ ){
- SalarioBase[pos]= 500.5 + Funcionarios[pos].NivelExperiencia * 5;
- }
- for (pos = 0; pos < num_Funcionarios; pos++){
- int zA = 0,zB = 0,zC = 0;
- double pA = 0, pB = 0, pC = 0;
- for(pos1 = 0; pos1 < num_Entregas; pos1++){
- if (Funcionarios[pos].ID_Funcionario == Entregas[pos1].ID_Motorista){
- switch (Entregas[pos1].ZonaEncomenda){
- case"A":
- zA++;
- pA = pA + Entregas[pos1].PesoEncomenda;
- break;
- case"B":
- zB++;
- pB = pB + Entregas[pos1].PesoEncomenda;
- break;
- case"C":
- zC++;
- pC = pC + Entregas[pos1].PesoEncomenda;
- break;
- default:
- System.out.println("ERRO zona " + Entregas[pos1].ZonaEncomenda + " inexistente");
- break;
- }
- }
- Funcionarios[pos].countZonaA = zA;
- Funcionarios[pos].countPesoA = pA;
- Funcionarios[pos].countZonaB = zB;
- Funcionarios[pos].countPesoB = pB;
- Funcionarios[pos].countZonaC = zC;
- Funcionarios[pos].countPesoC = pC;
- System.out.println("\n");
- Bonus[pos]= Funcionarios[pos].countZonaA *0.5 + Funcionarios[pos].countZonaB * 0.75 + Funcionarios[pos].countZonaC * 1.5;
- }
- }
- for( pos = 0; pos < num_Funcionarios; pos++ ){
- SalarioBruto[pos]= SalarioBase[pos] + Bonus[pos];
- if (SalarioBruto[pos] <505)
- Taxa[pos] = 0;
- if(SalarioBruto[pos] >= 505 && SalarioBruto[pos] <1000)
- Taxa[pos] = 10;
- if(SalarioBruto[pos] > 1000 && SalarioBruto[pos] <1500)
- Taxa[pos] = 15;
- if(SalarioBruto[pos] >= 1500)
- Taxa[pos] = 20;
- }
- for( pos = 0; pos < num_Funcionarios; pos++ ){
- Imposto[pos]= SalarioBruto[pos] * (Taxa[pos] * 0.01);
- }
- for( pos = 0; pos < num_Funcionarios; pos++ ) {
- SalarioLiquido[pos]= SalarioBruto[pos] - Imposto[pos];
- }
- FileWriter Output = new FileWriter("Resultados " + Nome.format(Data) + ".txt");
- PrintWriter gravarOutput = new PrintWriter (Output);
- for (pos = 0; pos < num_Funcionarios ; pos++){
- gravarOutput.print(Funcionarios[pos].Nome + " | ");
- gravarOutput.print(Funcionarios[pos].ID_Funcionario + " | ");
- gravarOutput.printf(Funcionarios[pos].NivelExperiencia + "%n");
- gravarOutput.print(TotalEncomendas(Funcionarios[pos].countZonaA,Funcionarios[pos].countZonaB,Funcionarios[pos].countZonaC) + " | ");
- gravarOutput.print(Funcionarios[pos].countZonaA + " | ");
- gravarOutput.print(Funcionarios[pos].countZonaB + " | ");
- gravarOutput.printf(Funcionarios[pos].countZonaC + "%n");
- gravarOutput.print(Dec.format(TotalPeso(Funcionarios[pos].countPesoA, Funcionarios[pos].countPesoB, Funcionarios[pos].countPesoC)) + " | ");
- gravarOutput.print(Dec.format(Funcionarios[pos].countPesoA) + " | ");
- gravarOutput.print(Dec.format(Funcionarios[pos].countPesoB) + " | ");
- gravarOutput.printf(Dec.format(Funcionarios[pos].countPesoC) + "%n");
- gravarOutput.printf(Dec.format(SalarioBase[pos]) + "%n");
- gravarOutput.printf(Dec.format(Bonus[pos]));
- gravarOutput.printf(Dec.format(SalarioBruto[pos]) + "%n");
- gravarOutput.print(Taxa[pos] + "% | ");
- gravarOutput.printf(Dec.format(Imposto[pos])+ "%n");
- gravarOutput.printf(Dec.format(SalarioLiquido[pos])+ "%n %n");
- }
- Output.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement