Olá, galera ! Estou fazendo um trabalho que tem que fazer um sistema para distribuidora para controlar produtos e fornecedores em JAVA com manipulação de arquivos Txt. O trabalho já está 90% pronto, porém está com uns pequenos bugs. Como por exemplo, quando o programa não está com nenhuma informação cadastrada no arquivo txt e eu vou na opção pesquisar, excluir ou baixar estoque do produto, ele não está informando nenhuma msg de aviso, como: “código não encontrado” ou “arquivo vazio”, embora eu já ter implementado uma condição para ele fazer isso. Alguem poderia dá uma olhada ? Ficaria muito agradecido se puderem me ajudar.
Segue o link de download do trabalho .doc e workspace dos arquivos em Java pelo Google Drive.
Link de Download: https://drive.google.com/folderview?id=0B1byGOA6GJMWd0lDWXFweHpzVlk&usp=sharing
Aqui está o Main do trabalho:
package trabalho;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Locale;
import javax.swing.JOptionPane;
import io.InOut;
public class MainDistribuidora {
static StringBuffer memoria = new StringBuffer();
static int aux=1;
public static void main(String[] args) {
char resp = 'N';
char opcao;
try {
do {
opcao = menu();
switch (opcao) {
case '1':
char forn = InOut.leChar("Escolha:\n"
+ "1 - Cadastrar Fornecedores:\n"
+ "2 - Pesquisar fornecedores cadastrados:\n"
+ "3 - Voltar:\n");
switch (forn) {
case '1':
inserirFornecedores();
break;
case '2':
pesquisarFornecedores();
break;
default:
break;
}
break;
case '2':
char prod = InOut.leChar("Escolha:\n"
+ "1 - Cadastrar produtos:\n"
+ "2 - Pesquisar produtos cadastrados:\n"
+ "3 - Excluir produtos cadastrados:\n"
+ "4 - Baixar estoque do produto:\n"
+ "5 - Voltar:\n");
switch (prod) {
case '1':
if(inserirProdutos())
aux++;
break;
case '2':
pesquisarProdutos();
break;
case '3':
excluirProdutos();
break;
case '4':
baixarProduto();
default:
break;
}
break;
case '3':
resp = Character.toUpperCase(InOut.leChar("Deseja realmente sair do programa? S/N"));
break;
default:
InOut.MsgDeInformação("", "opção invalida, tente novamente");
}
} while (resp != 'S');
System.exit(0);
} catch (Exception e) {
}
}
public static String ler(int primeiro, int ultimo) {// PERCORRE O ARQUIVO
String dados = "";
dados = memoria.substring(primeiro, ultimo);
return dados;
}
private static void inserirFornecedores() {// CADASTRO DE FORNECEDORES
try {
BufferedWriter saida;
saida = new BufferedWriter(new FileWriter("fornecedores.txt", true));// NOME
// DO
// ARQUIVO
// QUE
// SERÁ
// GRAVADO
String nomeForn = InOut.leString(" Informe o nome do fornecedor");
nomeForn = nomeForn.toUpperCase();
String cpfForn = InOut.leString(" Informe o CPF do fornecedor");
String telefoneForn = InOut.leString(" Informe o telefone do fornecedor");
cadastroFornecedor cadE = new cadastroFornecedor (nomeForn, cpfForn, telefoneForn);
saida.write(cadE.getNome() + "\t");
saida.write(cadE.getCpf() + "\t");
saida.write(cadE.getTelefone() + "\n");
saida.flush();
saida.close();// GRAVA EM ARQUIVO
JOptionPane.showMessageDialog(null,"Operação realizada com sucesso");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro de gravação");
}
}
static void iniciarArquivoFornecedores() {
String linha;
try {
BufferedReader arqEntrada;
arqEntrada = new BufferedReader(new FileReader("fornecedores.txt"));
linha = "";
memoria.delete(0, memoria.length());
while ((linha = arqEntrada.readLine()) != null) {
memoria.append(linha + "\n");
}
arqEntrada.close();
} catch (FileNotFoundException erro) {
InOut.MsgDeAviso("", "Arquivo não encontrado");
} catch (Exception e) {
InOut.MsgDeErro("", "Erro de Leitura !");
}
}
public static void pesquisarFornecedores() {
try {
// BUSCA EQUIPAMENTO CADASTRO PELO CÓDIGO
String nome, cpf , telefone;
int inicio = -1, fim, ultimo, primeiro;
iniciarArquivoFornecedores();
String arquivo = "fornecedores.txt";
BufferedReader arqentrada;
arqentrada = new BufferedReader(new FileReader(arquivo));
if (memoria.length() != 0) {
nome = InOut.leString("Digite o nome para pesquisar:");
nome=nome.toUpperCase();
String linha;
cpf = "";
telefone = "";
while ((linha = arqentrada.readLine()) != null) {
memoria.append(linha + "\n");
}
inicio = memoria.indexOf(nome);
if (inicio != -1) {
ultimo = memoria.indexOf("\t", inicio);// PERCORRE OS CAMPOS
// DO ARQUIVO
nome = ler(inicio, ultimo);
primeiro = ultimo + 1;
ultimo = memoria.indexOf("\t", primeiro);
cpf = ler(primeiro, ultimo);
primeiro = ultimo + 1;
fim = memoria.indexOf("\n", primeiro);
telefone = ler(primeiro, fim);
cadastroFornecedor cadE = new cadastroFornecedor(
nome,cpf, telefone);
InOut.MsgDeInformação(
"",
"Nome do Fornecedor:"
+ cadE.getNome() + "\n"
+ " CPF do Fornecedor: " + cadE.getCpf()
+ "\n\t" + " Telefone "
+ cadE.getTelefone() +"\n");
} else {
JOptionPane.showMessageDialog(null, "Não cadastrado");
}
}
arqentrada.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro de leitura");
}
}
static void iniciarArquivoProdutos() {
String linha;
try {
BufferedReader arqEntrada;
arqEntrada = new BufferedReader(new FileReader("produtos.txt"));
linha = "";
memoria.delete(0, memoria.length());
while ((linha = arqEntrada.readLine()) != null) {
memoria.append(linha + "\n");
}
arqEntrada.close();
} catch (FileNotFoundException erro) {
InOut.MsgDeAviso("", "Arquivo não encontrado");
} catch (Exception e) {
InOut.MsgDeErro("", "Erro de Leitura !");
}
}
public static void gravarProdutos() {
try {
BufferedWriter arqSaida;
arqSaida = new BufferedWriter(new FileWriter("produtos.txt"));
arqSaida.write(memoria.toString());
arqSaida.flush();
arqSaida.close();
} catch (Exception erro) {
InOut.MsgDeErro("", "Erro de gravação!");
}
}
private static boolean inserirProdutos() {// CADASTRO DE PRODUTOS
try {
BufferedWriter saida;
saida = new BufferedWriter(new FileWriter("Produtos.txt", true));// NOME
// DO
// ARQUIVO
// QUE
// SERÁ
// GRAVADO
String cpfForn = InOut.leString(" Informe o CPF do fornecedor");
String descricao = InOut.leString(" Informe a descrição do produto");
int estoque = InOut.leInt(" Informe a quantidade de estoque");
double preco = InOut.leDouble(" Informe o preço do produto");
// String telefoneForn = InOut.leString(" Informe o telefone do fornecedor");
cadastroProduto cadP = new cadastroProduto ( aux,cpfForn,descricao, estoque, preco);
saida.write(aux + "\t");
saida.write(cadP.getCpfForn() + "\t");
saida.write(cadP.getDescricao() + "\t");
saida.write(cadP.getEstoque() + "\t");
saida.write(cadP.getPreco() + "\n");
saida.flush();
saida.close();// GRAVA EM ARQUIVO
JOptionPane.showMessageDialog(null,"Operação realizada com sucesso");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro de gravação");
}
return true;
}
public static void pesquisarProdutos() {
try {
// BUSCA EQUIPAMENTO CADASTRO PELO CÓDIGO
boolean achou=false;
String codProduto, cpfForn, descricao , estoque, preco;
int inicio = 0, fim, ultimo, primeiro, procura;
iniciarArquivoProdutos();
String arquivo = "Produtos.txt";
BufferedReader arqentrada;
arqentrada = new BufferedReader(new FileReader(arquivo));
if (memoria.length() != 0)
{
procura=InOut.leInt("Digite o código para pesquisar:");
String linha;
cpfForn = "";
descricao = "";
estoque = "";
preco = "";
while ((linha = arqentrada.readLine()) != null) {
memoria.append(linha + "\n");
}
inicio = 0;
if (inicio != -1)
while (inicio != memoria.length()&& (!achou))
{
ultimo = memoria.indexOf("\t", inicio);// PERCORRE OS CAMPOS
// DO ARQUIVO
codProduto = ler(inicio, ultimo);
primeiro = ultimo + 1;
ultimo = memoria.indexOf("\t", primeiro);
cpfForn = ler(primeiro, ultimo);
primeiro = ultimo + 1;
ultimo = memoria.indexOf("\t", primeiro);
descricao = ler(primeiro, ultimo);
primeiro = ultimo + 1;
ultimo = memoria.indexOf("\t", primeiro);
estoque = ler(primeiro, ultimo);
primeiro = ultimo + 1;
fim = memoria.indexOf("\n", primeiro);
preco = ler(primeiro, fim);
cadastroProduto cadP = new cadastroProduto(
Integer.parseInt(codProduto),
cpfForn,
descricao,
Integer.parseInt(estoque),
Double.parseDouble(preco));
if (procura==cadP.getCodProduto()){
InOut.MsgDeInformação(
"",
"Código do Produto:"
+ cadP.getCodProduto() + "\n"
+ " CPF: " + cadP.getCpfForn()
+ "\n\t" + " Descrição: "
+ cadP.getDescricao() + "\n\t"
+ " Quantidade em estoque: "
+ cadP.getEstoque() + "\n\t"
+ " Preço do produto: "
+ cadP.getPreco() + "\n\t"
+ "\n");
achou=true;
}else inicio=fim+1;
} else {
JOptionPane.showMessageDialog(null, "Não cadastrado");
}
}
arqentrada.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro de leitura");
}
}
private static void excluirProdutos() {
String codProduto, cpfForn, descricao, estoque, preco;
char resp;
int inicio = -1, fim, ultimo, primeiro;
iniciarArquivoProdutos();
if (memoria.length() != 0) {
codProduto = InOut.leString(" Digite o código para excluir");
inicio = memoria.indexOf(codProduto);
codProduto = "";
cpfForn = "";
descricao = "";
estoque = "";
preco = "";
if (inicio != -1) {
ultimo = memoria.indexOf("\t", inicio);
codProduto = ler(inicio, ultimo);
primeiro = ultimo + 1;
ultimo = memoria.indexOf("\t", primeiro);
cpfForn = ler(primeiro, ultimo);
primeiro = ultimo + 1;
ultimo = memoria.indexOf("\t", primeiro);
descricao = ler(primeiro, ultimo);
primeiro = ultimo + 1;
ultimo = memoria.indexOf("\t", primeiro);
estoque = ler(primeiro, ultimo);
primeiro = ultimo + 1;
fim = memoria.indexOf("\n", primeiro);
preco = ler(primeiro, fim);
cadastroProduto cadP = new cadastroProduto(
Integer.parseInt(codProduto),
cpfForn,
descricao,
Integer.parseInt(estoque),
Double.parseDouble(preco));
resp = Character.toUpperCase(InOut
.leChar(" Deseja excluir? Digite S ou N \n\n"
+ "codigo do Produto: "
+ cadP.getCodProduto() + "\n"
+ " CPF do fornecedor: "
+ cadP.getCpfForn() + "\n"
+ " Descrição: " + cadP.getDescricao()
+ "\n" + " Estoque: "
+ cadP.getEstoque() + "\n" + "Preço: "
+ cadP.getPreco() + "\n" ));
if (resp == 'S') {
memoria.delete(inicio, fim + 1);
InOut.MsgDeInformação("", "Registro excluido.");
} else {
InOut.MsgDeInformação("", "Exclusão cancelada.");
}
gravarProdutos();
} else {
InOut.MsgDeAviso("", "Codigo não encontrado");
}
}
}
private static void mostrarProdutos() {
String cpfForn, codProduto, descricao, estoque, preco;
String resp = "Produtos cadastrados\n";
int inicio, fim, ultimo, primeiro;
iniciarArquivoProdutos();
inicio = 0;
if (memoria.length() != 0) {
while (inicio != memoria.length()) {
cpfForn = "";
codProduto = "";
descricao = "";
estoque = "";
preco = "";
if (inicio != -1) {
ultimo = memoria.indexOf("/t", inicio);
cpfForn = ler(inicio, ultimo);
primeiro = ultimo + 1;
ultimo = memoria.indexOf("/t", inicio);
codProduto = ler(inicio, ultimo);
primeiro = ultimo + 1 ;
ultimo = memoria.indexOf("/t", inicio);
descricao = ler(inicio, ultimo);
primeiro = ultimo + 1;
ultimo = memoria.indexOf("/t", inicio);
estoque = ler(inicio, ultimo);
primeiro = ultimo + 1;
fim = memoria.indexOf("/n", ultimo);
preco = ler(primeiro, fim);
cadastroProduto cadP = new cadastroProduto(
Integer.parseInt(codProduto),
cpfForn,
descricao,
Integer.parseInt(estoque),
Double.parseDouble(preco));
resp += " Codigo:" + cadP.getCodProduto() + " Produto:"
+ "\t" + cadP.getPreco() + "\n";
inicio = fim + 1;
}
}
InOut.MsgSemIcone(null, resp);
}
}
public static void baixarProduto() {
String codProduto, cpfForn, descricao, estoque, preco;
int inicio, fim, ultimo, primeiro;
boolean achou=false;
int procura;
iniciarArquivoProdutos();
if (memoria.length() != 0) {
procura = InOut.leInt(" Digite o codigo para alterar:");
codProduto = "";
cpfForn = "";
descricao = "";
estoque = "";
preco = "";
inicio = 0;
while (inicio != memoria.length()&& (!achou)){
ultimo = memoria.indexOf("\t", inicio);
codProduto = ler(inicio, ultimo);
primeiro = ultimo + 1;
ultimo = memoria.indexOf("\t", primeiro);
cpfForn = ler(primeiro, ultimo);
primeiro = ultimo + 1;
ultimo = memoria.indexOf("\t", primeiro);
descricao = ler(primeiro, ultimo);
primeiro = ultimo + 1;
ultimo = memoria.indexOf("\t", primeiro);
estoque = ler(primeiro, ultimo);
primeiro = ultimo + 1;
fim = memoria.indexOf("\n", primeiro);
preco = ler(primeiro, fim);
cadastroProduto cadE = new cadastroProduto(
Integer.parseInt(codProduto), cpfForn,descricao,Integer.parseInt(estoque),Double.parseDouble(preco));
if (procura==cadE.getCodProduto()){
InOut.MsgDeInformação("", "Descrição: " + cadE.getDescricao() +
"\n" + "Estoque: " + cadE.getEstoque());
estoque = InOut.leString("Digite a quantidade a ser baixada do estoque");
if((cadE.getEstoque()-Integer.parseInt(estoque))<=0)
InOut.MsgDeInformação("","Não foi possivel realizar a operação");
else
cadE.setEstoque(cadE.getEstoque()-Integer.parseInt(estoque));
InOut.MsgDeAviso(null,"Quantidade atual do estoque : "+cadE.getEstoque());
memoria.replace(inicio,fim, cadE.getCodProduto() + "\t"
+ cadE.getCpfForn()+ "\t"
+ cadE.getDescricao()+ "\t"
+ cadE.getEstoque()+ "\t"
+ cadE.getPreco()+ "\t"
+ "\r\n");
gravarProdutos();
achou = true;
}
inicio = fim + 1;
}
if (achou){
}else{
InOut.MsgDeErro("","Código não encontrado");
}
}else{
InOut.MsgDeErro("","Arquivo vazio");
}
}
static char menu()
{Locale localBR = new Locale("pt", "BR");
Calendar agora = Calendar.getInstance();
DateFormat formatoDeData = DateFormat.getDateInstance(DateFormat.FULL,
localBR);
return InOut.leChar(formatoDeData.format(agora.getTime())
+ "\n\nSISTEMA DISTRIBUIDORA VERMELHA "
+ "\n(Mateus Mascarenhas, Plassede Senra)"
+ "\n\n Escolha uma Opção:\n" + "1- Menu - Fornecedores\n"
+ "2- Menu - Produtos\n"
+ "3- Sair");
}
}