[Código Java] Simulação de Conta (BD - Postgresql)
Olá galera IMP,
Fiz um código de Switch Case e Default com algumas classes, utilização dos metodos get e set com interação de banco de dados em postgresql. Resolvi postar para quem quiser analisar ou utilizar em outra coisa...
acessoConta.java
Código:
package newBanco;
import java.sql.SQLException;
import javax.swing.JOptionPane;
public class acessoConta
{
public static void main(String[] args) throws SQLException
{
String aux = JOptionPane.showInputDialog("Opções:\n1)Criar Conta\n2)Sacar Saldo\n3)Depositar\n4)Verificar Saldo\n5)Excluir Conta\n6)Sair");
Integer op = Integer.parseInt(aux);
switch(op)
{
case 1:
new criaConta();
break;
case 2:
new sacarSaldo();
break;
case 3:
new depositarConta();
break;
case 4:
new exibeSaldo();
break;
case 5:
new delConta();
break;
case 6:
JOptionPane.showMessageDialog(null, "Obrigado por utilizar nossos serviços!");
break;
default:
JOptionPane.showMessageDialog(null, "Opção informada é inválida!");
System.exit(1);
break;
}
}
}
admConta.java
Código:
package newBanco;
public class admConta
{
private String nome;
private String senha;
private Double saldo;
private Integer agencia;
public class delConta
{
public delConta () throws SQLException
{
Integer op = JOptionPane.showConfirmDialog(null, "Realmente deseja excluir sua conta?");
if(op == 0)
{
conexao conn = new conexao();
String aux1 = JOptionPane.showInputDialog("Digite sua agência:");
Integer agencia = Integer.parseInt(aux1);
String senha = JOptionPane.showInputDialog("Digite sua senha:");
Connection vai = conn.getConnection();
// Definindo à query de select da conta com à senha correta
String sqlDados = ("SELECT * FROM conta WHERE agencia = ? AND senha = ?");
// Preparando o bagulho
PreparedStatement pstDados = vai.prepareStatement(sqlDados);
// Vamos definir os campos ?
pstDados.setInt(1, agencia);
pstDados.setString(2, senha);
// Executando à query retornando uma resposta
ResultSet rsDados = pstDados.executeQuery();
// Se tal condição sql for verdadeira
if(rsDados.next())
{
// Definindo à query de delete da conta logada
String sqlDel = ("DELETE FROM conta WHERE agencia = ?");
// Preparando o bagulho
PreparedStatement pstDel = vai.prepareStatement(sqlDel);
// Vamos definir os campos ? - agência à ser deletada
pstDel.setInt(1, rsDados.getInt("agencia"));
// Executando à query sem retornar nada
pstDel.execute();
JOptionPane.showMessageDialog(null, "Conta apagada! Volte sempre!");
public class delConta
{
public delConta () throws SQLException
{
Integer op = JOptionPane.showConfirmDialog(null, "Realmente deseja excluir sua conta?");
if(op == 0)
{
conexao conn = new conexao();
String aux1 = JOptionPane.showInputDialog("Digite sua agência:");
Integer agencia = Integer.parseInt(aux1);
String senha = JOptionPane.showInputDialog("Digite sua senha:");
Connection vai = conn.getConnection();
// Definindo à query de select da conta com à senha correta
String sqlDados = ("SELECT * FROM conta WHERE agencia = ? AND senha = ?");
// Preparando o bagulho
PreparedStatement pstDados = vai.prepareStatement(sqlDados);
// Vamos definir os campos ?
pstDados.setInt(1, agencia);
pstDados.setString(2, senha);
// Executando à query retornando uma resposta
ResultSet rsDados = pstDados.executeQuery();
// Se tal condição sql for verdadeira
if(rsDados.next())
{
// Definindo à query de delete da conta logada
String sqlDel = ("DELETE FROM conta WHERE agencia = ?");
// Preparando o bagulho
PreparedStatement pstDel = vai.prepareStatement(sqlDel);
// Vamos definir os campos ? - agência à ser deletada
pstDel.setInt(1, rsDados.getInt("agencia"));
// Executando à query sem retornar nada
pstDel.execute();
JOptionPane.showMessageDialog(null, "Conta apagada! Volte sempre!");
public class exibeSaldo
{
private static DecimalFormat df = (DecimalFormat) DecimalFormat.getCurrencyInstance(new Locale("pt","BR"));
public exibeSaldo () throws SQLException
{
conexao conn = new conexao();
String aux1 = JOptionPane.showInputDialog("Digite sua agência:");
Integer agencia = Integer.parseInt(aux1);
String senha = JOptionPane.showInputDialog("Digite sua senha:");
Connection vai = conn.getConnection();
// Definindo à query de select da conta com à senha correta
String sqlDados = ("SELECT * FROM conta WHERE agencia = ? AND senha = ?");
// Preparando o bagulho
PreparedStatement pstDados = vai.prepareStatement(sqlDados);
// Vamos definir os campos ?
pstDados.setInt(1, agencia);
pstDados.setString(2, senha);
// Executando à query retornando uma resposta
ResultSet rsDados = pstDados.executeQuery();
// Se tal condição sql for verdadeira
if(rsDados.next())
{
JOptionPane.showMessageDialog(null, ""+rsDados.getString("nome")+" seu saldo atual é de: "+df.format(rsDados.getDouble("saldo")));
conn.closeConnnection(vai);
}
else
{
JOptionPane.showMessageDialog(null,"Dados inválidos!");
conn.closeConnnection(vai);
System.exit(1);
}
}
}
public class sacarSaldo
{
public sacarSaldo () throws SQLException
{
conexao conn = new conexao();
String aux1 = JOptionPane.showInputDialog("Digite sua agência:");
Integer agencia = Integer.parseInt(aux1);
String senha = JOptionPane.showInputDialog("Digite sua senha:");
Connection vai = conn.getConnection();
// Definindo à query de select da conta com à senha correta
String sqlDados = ("SELECT * FROM conta WHERE agencia = ? AND senha = ?");
// Preparando o bagulho
PreparedStatement pstDados = vai.prepareStatement(sqlDados);
// Vamos definir os campos ?
pstDados.setInt(1, agencia);
pstDados.setString(2, senha);
// Executando à query retornando uma resposta
ResultSet rsDados = pstDados.executeQuery();
// Se tal condição sql for verdadeira
if(rsDados.next())
{
// Obtendo valor digitado pelo usuario
String aux2 = JOptionPane.showInputDialog("Digite o valor à ser sacado:");
Double valor = Double.parseDouble(aux2);
if(rsDados.getDouble("saldo") < valor)
{
JOptionPane.showMessageDialog(null, "Você não possui esse saldo disponivel para saque!");
}
else
{
// Definindo à query de update retirando o saldo, dizendo à conta à ser sacada
String sqlSacar = ("UPDATE conta SET saldo = saldo - ? WHERE agencia = ?");
// Preparar o bagulho
PreparedStatement pstSacar = vai.prepareStatement(sqlSacar);
// Vamos definir os campos ?
pstSacar.setDouble(1, valor);
pstSacar.setInt(2, rsDados.getInt("agencia"));
// Executando sem retornar nada
pstSacar.execute();
conn.closeConnnection(vai);
}
}
else
{
JOptionPane.showMessageDialog(null,"Dados inválidos!");
conn.closeConnnection(vai);
System.exit(1);
}
}
}
Programa em linguagem Java SE realizado por [Only registered and activated users can see links. Click Here To Register...](Dorcílio Neto).
Está guardado em meu PC um bom tempo, pode haver algumas falhas, gambiarras etc... Então não necessita zomba, apenas coisas construtivas.
Atenciosamente,
João Neto.
04-09-2013, 08:02 PM
s00x
Realmente segurança esta em baixa , mas interessante a Lógica usada .
É de algum projeto em especifico tinha ou tem alguma finalidade ? se tiver como passar o algoritmo dele caso haja para dar continuidade , tem como ?
05-09-2013, 09:28 AM
João Neto
@freed0m-,
Na verdade inicialmente ele era apenas um exercicio para utilizar o metodos get e set para manipular uma criação de conta temporaria e simular um pouco de algumas operações de banco...
Porém como eu já trabalhava com sql pensei em deixar o código mais evoluido e interagir com banco de dados, escolhi postgresql pois é o que uso em minha maquina Slackware x64.
Tem algumas coisas que deixa desejar, mais tem pontos que vale ressaltar, tipo o modo que utilizei para executar os comandos sql.
Não tenho mais o algoritmo dele. Finalidade em si na verdade depende do caso, eu pretendia melhorar à ponto de criar uma tela em JFrame e deixa-lo um pouco mais limpo e organizado. Porém deixei de mão, tô focado em JSF+PrimeFaces no momento.