Está en la página 1de 13

Proyecto de

Banco
Alumno:
PSP:
Asignatura: Programacin Orientada a Objetos
Grupo:
Fecha:

Alumno | Grupo | Programacin Orientada a Objetos


Fecha

Tabla de Explicacin
Cdigo
import
import
import
import
import

java.awt.*;
java.awt.event.*;
java.sql.*;
javax.swing.*;

package programapinsql;

public
ProgramaPINSQL

public
static
main(String[] args)

class

void

VentanaPIN accion=new
VentanaPIN();
accion.setVisible(true);

Descripcin
Estas lneas son el llamado de
las libreras y siempre van al
principio
del
cdigo,
se
utilizan para especificar que
vamos a usar algn mtodo
especial, y en nuestro caso,
NetBeans ya tiene algunas
echas.
Esta lnea especfica con que
paquete
estamos
trabajando,
ya
que
al
momento de crear el proyecto
se realiza un paquete, con la
finalidad de especificar con
que archivos pueden esta
relacionados, ejemplo; el
uso de clases en el main
Esta lnea asigna una clase, y
estas
funcionan
para
organizar y agrupar el
cdigo, ya que al asignarle un
nombre, al momento de ser
llamado, los procesos que
tenga este sern usadas
Esta lnea especfica el cdigo
principal, y en este se
especifican
los
procesos
principales, y en caso de que
se haga uso de alguna clase,
en esta se llama, y en nuestro
caso, por ser un frame
(ventana), la mayor parte del
cdigo estar en la clase
asignada para ello
Esta lnea especfica que se
va a crear una clase, se
guardara en un objeto, y
despus se har uso de la
clase usando el objeto
Al ser un frame (ventana), se
especifica que su visibilidad
ser
cierta

Salida

Cualquier programa de Java

Cualquier programa de Java

Procesos especficos
Cualquier programa de Java

Cualquier programa de Java

Crea y llama a la clase

Alumno | Grupo | Programacin Orientada a Objetos


Fecha

Panel panel1=new Panel();


Frame ventana1=new
Frame();
FlowLayout posicion1=new
FlowLayout(FlowLayout.CEN
TER);
Label labelpin=new
Label("Introdusca su PIN:");
JTextField txtPINPass=new
JTextField(20);//Aqui es
donde se guarda la
contrasea, txtxPINPass sera
el objeto
Button entrarBoton=new
Button("Entrar");
Button cancelarBoton=new
Button("Cancelar");
Font lblFuente=new
Font("Verdana",0,18);
VentanaPIN()
{
crearVentana();//Hace
un llamado
acciones();
}
public void crearVentana()
{panel1.setLayout(posicion1)
;
setTitle("Ventana Principal");
setSize(400,105);
setResizable(false);
labelpin.setFont(lblFuente);
panel1.setBackground(Color.
WHITE);
panel1.setForeground(Color.b
lack);
add (panel1);
panel1.add(labelpin);
panel1.add(txtPINPass);
panel1.add(entrarBoton);
panel1.add(cancelarBoton);
//Centrar la ventana de
manera autonoma
Dimension

(setVisible(true))
Estas lneas son la parte
donde se elabora la ventana,
y aqu es donde se debe
asignar
todas
las
propiedades:
Panel: uso donde se guarda
la ventana
Label: Texto simple
JTextField: Cuadros de texto
tipo normal (sin censura)
Button: Boton
Font: Tipo de fuente
Cada
propiedad
debe
guardarse en un objeto, para
cuando queramos usarlo, la
llamemos e identifique de que
tipo es.
OJO:
SOLO
LO
HEMOS
CREADO, NO LO ESTAMOS
USANDO
Aqu estamos especificando
que cuando se haga uso de
VentanaPIN, este llamara a
2 mtodos
En esta parte realizamos el
llamado de la ventana, el
panel
es
donde
se
almacena la ventana, la
funcin add especifica que se
aumentara algo, y en la
ultima parte especifica la
posicin de la venta, que en
este caso consigue los pixeles
de la ventana, y los divide en
2 para que quede en el centro

Creacin de los elementos que


llevara la ventana

Llamado de 2 mtodos

Alumno | Grupo | Programacin Orientada a Objetos


Fecha
tamFrame=this.getSize();//Ob
tiene las dimensiones del
Frame
Dimension
tamPantalla=Toolkit.getDefau
ltToolkit().getScreenSize();//O
btiene las dimensiones de la
pantalla
setLocation((tamPantalla.widt
h-tamFrame.width)/2,
(tamPantalla.heighttamFrame.height)/2);}

public
boolean
validarPIN(String PIN)

if
(txtPINPass.getText().isEmp
ty())

JOptionPane.showMessag
eDialog(null,"Deve introducir
su PIN");
return(false);

Los mtodos bolanos sirve


para dar como un resultado SI
o NO, y este lo usaremos para
especificar en su caso la
sentencia mencionada en esta
es correcta, que ser la
obtencin del texto en el
JTextField
Los
procesos
IF
y
su
contradiccin ELSE realizan la
comparacin
de
una
sentencia (operacin o simple
lectura de una variable con
una condicion), en caso de
que
sea
positiva
la
comparacin
realiza
el
proceso, de lo contrario niega
el proceso.
En esta parte llamamos al
nombre de la variable a
comparar, el .getTextField
especifica que se conseguir
el texto de esta variable, y el
.isEmpty especifica que en
caso de que el texto sea
nulo
Esta
funcin
sirve
para
mostrar un mensaje, y el
return da un valor, al estar
este dentro de un mtodo
booleano, tiene que regresar
un valor, y al regresar un
valor falso, ese tiene en claro
que le regreso el valor

Uso de mtodo booleano

Validacin del PIN

Alumno | Grupo | Programacin Orientada a Objetos


Fecha

try

Connection
unaConexion=DriverManager
.getConnection("jdbc:mysql://
localhost/baseprogramacion",
"root","");

Statement
instruccionSQL=unaConexion
.createStatement();
ResultSet
resultadosConsulta=instrucci
onSQL.executeQuery("SELEC
T * FROM usuarios WHERE
PIN='"+PIN+"'");

addWindowListener(new
WindowAdapter(){public void
windowClosing(WindowEvent
we){System.exit(0);}});

cancelarBoton.addActionListe
ner (new ActionListener()
{public
void
actionPerformed(ActionEvent
evt){System.exit(0);}});
public class menuWindow
extends JFrame{}

negativamente y no realizara
un proceso
El try es un proceso en la que
intenta de realizar lo que este
dentro de este, y en caso de
que falle durante ello, esta su
contraria que es catch, y en
esta, algo similar como el
IF/ELSE, realizara los procesos
en caso de que sea falso en
try
Esta lnea especfica que se
est realizando una conexin
con una Base de datos,
haciendo usa de un conector,
una direccin y unos datos de
administracin de esta (el
servidor local)
Especificamos que de la
conexin obtenida, vamos a
realizar un proceso, y este
proceso debe tener un objeto
donde guardarse
Aqu
se
especifica
la
operacin,
y
al
ser
administracin de Base de
datos, se utiliza condigo que
entienda el conector, en este
caso, el SQL
Especifica que de la ventana
permitir realizar un proceso
(WindowListener
y
WindowAdapter), y que en
pocas
palabras,
que
al
momento de darle clic en el
icono de cerrar, este realice el
proceso correspondiente
Aqu damos a entender los
procesos que llevara a cabo
un botn en caso de que se
usa, y en este ejemplo, al ser
Cancelas, este se saldr
(System.exit 0)
Este cdigo da a entender
que se inicia una clase con
atributos de una ventana, por

Intenta realizar un proceso

Realiza una conexin

Proceso

Proceso

Proceso

Proceso

Proceso

Alumno | Grupo | Programacin Orientada a Objetos


Fecha
la palabra extends Frame
Panel panel1=new Panel();
FlowLayout posicion1=new
FlowLayout(FlowLayout.CENT
ER);
Label labelMENSAJE1=new
Label("
Bienvenido
");
Label labelMENSAJE2=new
Label("
Este es
el
menu
principal
");
Button salirBoton=new
Button("Salir");
Button consultaBoton=new
Button("Consulta");
Button
depositoBoton=new
Button("Deposito");
Button retiroBoton=new
Button("Retiro");
Font lblFuente1=new
Font("Century Gothic",0,70);
Font lblFuente2=new
Font("Century Gothic",0,40);
Font lblFuente3=new
Font("Century Gothic",0,28);
Label
lblnombrecli=new
Label();

Estos son los elementos a


usar para la elaboracin de
nuestra nueva ventana

Este es un rea de texto, la


razn de que no se le asign
un valor de forma directa es
porque en el cdigo de la
ventana anterior ya se le
asigno, en la siguiente parte;
ventana1.lblnombrecli.setText
(resultadosConsulta.getString
("nombre"));
Este cdigo menciona que de
nuesto objeto (crado en ese
momento para hacer posible
que se realice la accin de
crear la nueva ventana) se le
va a asignar un valor a la
variable
lblnombrecli,
el
setText da a entender que se
va a obtener el valor del

Proceso

Proceso

Alumno | Grupo | Programacin Orientada a Objetos


Fecha

private
private
private
private

float vSaldo;
float ctd;
String PIN;
Statement SQLst;

menuWindow()
{
crearVentana();
acciones();
conectarBD();
}
public void crearVentana()
{
panel1.setLayout(posici
on1);
setTitle("Ventana
Principal");
setSize(700,320);
setResizable(false);
labelMENSAJE1.setFont(l
blFuente1);
labelMENSAJE2.setFont(l
blFuente3);
lblnombrecli.setFont(lblF
uente2);
panel1.setBackground(n
ew Color(183,0,0,198));
panel1.setForeground(n
ew Color(22,0,149,179));
add (panel1);
panel1.add(labelMENSAJ

texto, asi que en este caso


nuestra variable donde vamos
a guardar el valor tiene que
ser tipo String, de la variable
resultadosConsukta, que es
donde realizamos la consulta
de nuestro pin, al indicar en el
cdigo SQL SELECT *FROM,
podemos aprovechar esto y
obtener otras variables, y en
este caso va a tomar el valor
de nuestra columna llamada
nombre
Este cdigo menciona que se
crearan
nuevas
variables,
cada uno de diferente tipo, y
el private indica que son
nicas las variables, y no se
podrn modificar por algn
elemento externo
Procesos que se realizaran al
ejecutarse la ventana , porque
tiene el mismo nombre que
nuestra clase
Proceso que le corresponde a
la creacin de la ventana, con
sus elementos

Proceso

Proceso

Alumno | Grupo | Programacin Orientada a Objetos


Fecha
E1);
panel1.add(lblnombrecli
);
panel1.add(labelMENSAJ
E2);
panel1.add(consultaBot
on);
panel1.add(depositoBot
on);
panel1.add(retiroBoton);
panel1.add(salirBoton);
//Centrar la ventana de
manera autonoma
Dimension
tamFrame=this.getSize();//Ob
tiene las dimensiones del
Frame
Dimension
tamPantalla=Toolkit.getDefau
ltToolkit().getScreenSize();//O
btiene las dimensiones de la
pantalla
setLocation((tamPantall
a.width-tamFrame.width)/2,
(tamPantalla.heighttamFrame.height)/2);
}
public void acciones()
addWindowListener(new
WindowAdapter(){public void
windowClosing(WindowEvent
we){System.exit(0);}});
consultaBoton.addActionListe
ner(new ActionListener(){
public void
actionPerformed(ActionEvent
evt){
JOptionPane.showM
essageDialog(null,"Saldo
actual: "+vSaldo);
}
});

Indica donde inicia el cdigo


para este mtodo

Proceso

Cdigo
que
realiza
que
funcione el botn de salida

Proceso

Cdigo que le corresponde al


botn de Consulta, toma el
valor de la variable vSaldo y
la imprime, la funcin de
JOptionPane.showMessageDia
log indica que se creara una
ventana, es como un atajo
que ya incluye un Frame

Alumno | Grupo | Programacin Orientada a Objetos


Fecha
depositoBoton.addActionListe
ner(new ActionListener(){
public void
actionPerformed(ActionEvent
evt){
if(CantidadValida())
{
depositar();
}
}});;
retiroBoton.addActionListener
(new ActionListener(){
public void
actionPerformed(ActionEvent
ev){
boolean ok=true;
while(ok){
if(CantidadValida
()){
if(vSaldo>=ct
d){
retirar();
ok=false;
}
else{
JOptionPane
.showMessageDialog(null,"El
saldo no es suficiente");
}
}
else {ok=false;}
}
}
});

Cdigo que le corresponde al


botn de depsito, primero
hace el llamado del mtodo
CantidadValida, y este al ser
booleano, si da cierto, realiza
el mtodo depositar

Cdigo que le corresponde al


botn de retiro, donde toma
un valor booleano ok, y
mientras este sea cierto se
llama el proceso y realiza la
comparacin
de
CantidadValida, y este al ser
al ser un mtodo de valor
booleano, y este al ser cierto
se llama al mtodo retirar. En
caso
contrario
este
se
muestra un dialogo que nos
menciona que el proceso est
mal echo

Alumno | Grupo | Programacin Orientada a Objetos


Fecha
salirBoton.addActionListener(
new ActionListener(){
public void
actionPerformed(ActionEvent
evt){
dispose();
VentanaPIN
ventana1=new VentanaPIN();
ventana1.setVisible
(true);
}
}
);
public void depositar()
{
try{
vSaldo=vSaldo+ct
d;
int
n=SQLst.executeUpdate("UP
DATE
usuarios
SET
Saldo='"+vSaldo+"' WHERE
PIN='"+PIN+"'");
if(n>0)
{
JOptionPane.sho
wMessageDialog(null,"Deposi
to
Realizado\nCanidad:
"+ctd+"\nSaldo
actual:
"+vSaldo);
}
}
catch(SQLException
ex)
{
JOptionPane.showM
essageDialog(null,ex);
}
}
public
boolean
CantidadValida(){
boolean ok=true;
while(ok){
String
sCtd=JOptionPane.showInput

Cdigo que le corresponde al


botn Salir, lo que hace es
cerrar la ventana y muestra la
del inicio

Cdigo que le corresponde al


mtodo de depositar, que
este realiza una actualizacin
de la Base de datos, usando
la variable vSaldo como
principal

Proceso que le corresponde a


la validacin de la cantidad,
analiza si la cantidad es
lgica,
si
es
de
valor
numrico, y si tiene un
alcance lgico

Proceso

Proceso

Alumno | Grupo | Programacin Orientada a Objetos


Fecha
Dialog("Saldo
actual:"+vSaldo+"\nIntroduc
e la cantidad");
if(sCtd!=null){
if(sCtd.isEmpty()
){
JOptionPane.s
howMessageDialog(this,"Dev
e introducir una cantidad");
}
else{
try{
ctd=Float.p
arseFloat(sCtd);
if(ctd<=0){
JOptionPa
ne.showMessageDialog(this,"
Debe introducir una cantidad
lgica");
}
else{
return
true;
}
}
catch(Number
FormatException e)
{
JOptionPane
.showMessageDialog(this,"El
dato
digiado
no
es
unnmero","Error",JOptionPan
e.ERROR_MESSAGE);
}
}
}
else {ok=false;}
};
return ok;
}
public void setDatos(String
getPIN, Float getSaldo){
this.PIN=getPIN;
this.vSaldo=getSaldo;
}

Mtodo que asigna la funcin


de los datos

Proceso

Alumno | Grupo | Programacin Orientada a Objetos


Fecha
public void retirar(){
try{
vSaldo=vSaldo-ctd;
int
n=SQLst.executeUpdate("UP
DATE
usuarios
SET
Saldo='"+vSaldo+"' WHERE
PIN='"+PIN+"'");
if(n>0)
{
JOptionPane.sho
wMessageDialog(null,"Retiro
Realizado\nCantidad:"+ctd+"
\nSaldo Actual:"+vSaldo);
}
else
{
JOptionPane.sho
wMessageDialog(this,"No se
a podido realizar el retiro");
}
}
catch(SQLException
ex)
{
JOptionPane.showM
essageDialog(null,ex);
}
}
public void conectarBD(){
try{
Connection
conexion=DriverManager.get
Connection("jdbc:mysql://loca
lhost/baseprogramacioniddr4
04","root","");
SQLst=conexion.cr
eateStatement();
}
catch(SQLException
ex)
{
JOptionPane.showM
essageDialog(null,ex);
}
}

Proceso que le corresponde al


retiro, analiza si la cantidad es
lgica,
si
es
de
valor
numrico, y si tiene un
alcance lgico

Proceso

Mtodo que le corresponde a


la conexin con la BD

Proceso

Alumno | Grupo | Programacin Orientada a Objetos


Fecha