Ajuda ler e calcular dados arquivo txt

1 resposta
E
Estou fazendo um programa para ler dados de um arquivo TXT:Mês (01, 02, 03, ... 12), horas trabalhadas, valor por hora, descontos, abonos estes informaçoes devem ser grvadas em um banco de dados
CREATE TABLE trabalho (                   
            mes int(2) DEFAULT NULL,                
            horas double(8,2) DEFAULT NULL,         
            vl_hora double(8,2) DEFAULT NULL,       
            desconto double(8,2) DEFAULT NULL,      
            abono double(8,2) DEFAULT NULL,         
            codigo int(6) NOT NULL AUTO_INCREMENT,  
            PRIMARY KEY (codigo)                    
          )

A tela do sistema deve ser a seguinte:

Ao clicar no botão ?Carregar dados do arquivo para o banco? deve ser feita a leitura do arquivo texto e inserir na tabela do MYSQL. Atualizar em um label quantos registros foram carregados. Se incluir ou excluir linhas do arquivo este dado deve ser exibido corretamente.
Ao clicar em pesquisar, o sistema deve ler no banco de dados o registro do mês especificado e atualizar os valores de 2 labels O primeiro se refere ao valor líquido que o funcionário recebeu no mês especificado. O segundo se refere o quanto em percentual o valor recebido no mês representa em relação ao ano. Caso o usuário não informe o mês, uma mensagem deve ser exibida informando-o que se trata de um campo obrigatório.

este foi o codigo que fiz ate agora gostaria de uma ajuda se possivel para mostrar quantos arquivos foram carregados e o calculo do valor liquido recebido e o % anual

obg

package teste_trabalho;

import java.awt.Label;
import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.PreparedStatement;

import org.eclipse.swt.widgets.Text;

public class Importacao {
	public void ImportaDados(Connection conn, Text lbArqGrav){
		String sql = "insert into trabalho (mes,horas,vl_hora,desconto,abono)"+
		" values (?,?,?,?,?)";
		try {
			FileReader fw = new FileReader("C:/arqTrab.txt");
			BufferedReader bw = new BufferedReader(fw);
			String linha;
			Integer arqGrav = 0;
			PreparedStatement ps = conn.prepareStatement(sql);
			while ((linha = bw.readLine()) != null) {
				String[] vet = linha.split(",");
				arqGrav += 1;
				ps.setInt(1, Integer.parseInt(vet[0]));
				ps.setDouble(2, Double.parseDouble(vet[1]));
				ps.setDouble(3, Double.parseDouble(vet[2]));
				ps.setDouble(4, Double.parseDouble(vet[3]));
				ps.setDouble(5, Double.parseDouble(vet[4]));
				ps.executeUpdate();
			}
			lbArqGrav.setText(String.valueOf(arqGrav));
		}catch (Exception e){
			e.printStackTrace();
	}
}

	public void LimpaDados(Connection conn){
		String sql = "delete  from trabalho ";
		try {
			PreparedStatement ps = conn.prepareStatement(sql);
			ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

1 Resposta

JoaoBluSCBR

Cara, se vc já fez isso aí, não to entendendo qual a dificuldade em fazer o resto.

O resto são selects no banco.

Para saber o número de registros (vc diz arquivos, mas não faz sentido) basta um SELECT COUNT(codigo) FROM trabalho;

Para os outros cálculos você vai ter que ver a formula e criar alguns selects para conseguir as informaçoes:

Suponho, apenas suponho, que o valor líquido tenha de ser calculado por registro.

Então seria algo como (horas * vl_hora) - desconto + abono .

Onde vc vai mostrar isso, não sei, talvez num relatorio, talvez, tenha de criar um campo para colocar.

mas certamente basta um “SELECT * from trabalho where codigo = x” para obter as informações, uma de cada vez e calcular, ou crie um campo liquido na tua tabela e use um UPDATE com um SELECT que faça o calculo conforme formula e ja atualize o campo.

O tal do % anual não faço nem idéia do que seja.

Pode ser a soma por mês e o percentual para cada mês. Pode ser a comparação no ano, da soma do líquido com o bruto. Sei lá, vc tem que ser mais claro.

Mas de qualquer jeito, alguns SELECTs resolvem qualquer coisa dessas.

boa sorte.

Criado 30 de junho de 2011
Ultima resposta 1 de jul. de 2011
Respostas 1
Participantes 2