miércoles, 28 de diciembre de 2011
Python, ejemplos prácticos no. 2
1. Programa que acepte un año escrito en cifras arábigas y visualice el año en números romanos, dentro del rango 1000-1999
'''
autor: yo
fecha: 24 de diciembre de 2011
'''
anyo,anyo_desglosado,aux=0,0,0
romano=""
while anyo<=0 and anyo<=1999:
anyo=int(raw_input('Introduce año:'))
print "Año en arábigo [",anyo,"]"
print "\nAño desglosado: "
if (anyo>=1000):
anyo_desglosado=anyo%1000
romano=romano+"M"
aux=1000
print "arábigo:",aux
if (anyo_desglosado>=900):
anyo_desglosado=anyo_desglosado%900
romano=romano+"CM"
aux=900
print "arábigo:",aux
if (anyo_desglosado>=800):
anyo_desglosado=anyo_desglosado%800
romano=romano+"DCCC"
aux=800
print "arábigo:",aux
if (anyo_desglosado>=700):
anyo_desglosado=anyo_desglosado%700
romano=romano+"DCC"
aux=700
print "arábigo:",aux
if (anyo_desglosado>=600):
anyo_desglosado=anyo_desglosado%600
romano=romano+"DC"
aux=600
print "arábigo:",aux
if (anyo_desglosado>=500):
anyo_desglosado=anyo_desglosado%500
romano=romano+"D"
aux=500
print "arábigo:",aux
if (anyo_desglosado>=400):
anyo_desglosado=anyo_desglosado%400
romano=romano+"CD"
aux=400
print "arábigo:",aux
if (anyo_desglosado>=300):
anyo_desglosado=anyo_desglosado%300
romano=romano+"CCC"
aux=300
print "arábigo:",aux
if (anyo_desglosado>=200):
anyo_desglosado=anyo_desglosado%200
romano=romano+"CC"
aux=200
print "arábigo:",aux
if (anyo_desglosado>=100):
anyo_desglosado=anyo_desglosado%100
romano=romano+"C"
aux=100
print "arábigo:",aux
if (anyo_desglosado>=90):
anyo_desglosado=anyo_desglosado%90
romano=romano+"XC"
aux=90
print "arábigo:",aux
if (anyo_desglosado>=80):
anyo_desglosado=anyo_desglosado%80
romano=romano+"LXXX"
aux=80
print "arábigo:",aux
if (anyo_desglosado>=70):
anyo_desglosado=anyo_desglosado%70
romano=romano+"LXX"
aux=70
print "arábigo:",aux
if (anyo_desglosado>=60):
anyo_desglosado=anyo_desglosado%60
romano=romano+"LX"
aux=60
print "arábigo:",aux
if (anyo_desglosado>=50):
anyo_desglosado=anyo_desglosado%50
romano=romano+"L"
aux=50
print "arábigo:",aux
if (anyo_desglosado>=40):
anyo_desglosado=anyo_desglosado%40
romano=romano+"XL"
aux=40
print "arábigo:",aux
if (anyo_desglosado>=30):
anyo_desglosado=anyo_desglosado%30
romano=romano+"XXX"
aux=30
print "arábigo:",aux
if (anyo_desglosado>=20):
anyo_desglosado=anyo_desglosado%20
romano=romano+"XX"
aux=20
print "arábigo:",aux
if (anyo_desglosado>=10):
anyo_desglosado=anyo_desglosado%10
romano=romano+"X"
aux=10
print "arábigo:",aux
if (anyo_desglosado==9):
anyo_desglosado=anyo_desglosado%9
romano=romano+"IX"
aux=9
print "arábigo:",aux
if (anyo_desglosado==8):
anyo_desglosado=anyo_desglosado%8
romano=romano+"VIII"
aux=8
print "arábigo:",aux
if (anyo_desglosado==7):
anyo_desglosado=anyo_desglosado%7
romano=romano+"VII"
aux=7
print "arábigo:",aux
if (anyo_desglosado==6):
anyo_desglosado=anyo_desglosado%6
romano=romano+"VI"
aux=6
print "arábigo:",aux
if (anyo_desglosado==5):
anyo_desglosado=anyo_desglosado%5
romano=romano+"V"
aux=5
print "arábigo:",aux
if (anyo_desglosado==4):
anyo_desglosado=anyo_desglosado%4
romano=romano+"IV"
aux=4
print "arábigo:",aux
if (anyo_desglosado==3):
anyo_desglosado=anyo_desglosado%3
romano=romano+"III"
aux=3
print "arábigo:",aux
if (anyo_desglosado==2):
anyo_desglosado=anyo_desglosado%2
romano=romano+"II"
aux=2
print "arábigo:",aux
if (anyo_desglosado==1):
anyo_desglosado=anyo_desglosado%1
romano=romano+"I"
aux=1
print "arábigo:",aux
print "\nAño en romano: ",romano
2. Obtener salario nuevo
#código Python
'''
autor: yo
fecha : viernes 9 de diciembre del 2011
'''
#función que calcula el nuevo salario --> ganancia
def obtenerGanancia(m,p):
return m+(m*(p/100))
#función que calcula el nuevo salario --> perdida
def obtenerPerdida(m,p):
return m-(p*(p/100))
#variables
salir="s"
monto,porcentaje=0,0
opc=0
while salir == "s":
print "***************************************"
print "[Programa que calcula el salario nuevo]"
print "***************************************"
print ""
#menú
print "1. Obtener ganancia"
print "2. Obtener pérdida"
opc=int(raw_input('Introduce opción: '))
#obtener ganancia
if opc==1:
print "[Obtener ganancia]"
monto=float(raw_input('Monto: '))
print "$",monto,"\n"
porcentaje=float(raw_input('Porcentaje:'))
print porcentaje,"% \n"
print "Ganancia: $",obtenerGanancia(monto,porcentaje)
print ""
#obtener pérdida
if opc==2:
print "[Obtener pérdida]"
monto=float(raw_input('Monto: '))
print "$",monto,"\n"
porcentaje=float(raw_input('Porcentaje:'))
print porcentaje,"% \n"
print "Ganancia: $",obtenerPerdida(monto,porcentaje)
print ""
else:
print "opción inválida"
salir=raw_input('Desea hacer otra operación? (s/n):')
print ""
if salir=="n":
print "adios"
lunes, 26 de diciembre de 2011
Tarot básico en Python
Aqui el código escrito en Python para calcular tu carta del tarot.
def obtenerArcano(arc):
if arc==1:
return "El Mago"
if arc==2:
return "La Papisa"
if arc==3:
return "La Emperatriz"
if arc==4:
return "El Emperador"
if arc==5:
return "El Papa"
if arc==6:
return "El Enamorado"
if arc==7:
return "El Carro"
if arc==8:
return "La Justicia"
if arc==9:
return "El Ermitaño"
if arc==10:
return "La Rueda"
if arc==11:
return "La Fuerza"
if arc==12:
return "El Colgado"
if arc==13:
return "La Muerte"
if arc==14:
return "La Templanza"
if arc==15:
return "El Diablo"
if arc==16:
return "La Torre"
if arc==17:
return "La Estrella"
if arc==18:
return "La Luna"
if arc==19:
return "El Sol"
if arc==20:
return "El Juicio"
if arc==21:
return "El Mundo"
if arc==22:
return "El Loco"
dia_nac=0
mes_nac=""
anyo_nuevo=0
aux=0
suma,i=0,0
cadena=""
sumaTotal=0
dia_nac=int(raw_input('Dia de nacimiento:'))
mes_nac=raw_input('Mes de nacimiento:')
anyo_nuevo=int(raw_input('Año nuevo:'))
print "Datos leidos:\n"
print "\tDía de nacimiento || Mes de nacimiento || Año nuevo que empieza"
print "\t",dia_nac," || ",mes_nac," || ",anyo_nuevo
print ""
if mes_nac=="diciembre":
aux=12
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="noviembre":
aux=11
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="octubre":
aux=10
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="septiembre":
aux=9
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="agosto":
aux=8
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="julio":
aux=7
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="junio":
aux=6
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="mayo":
aux=5
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="abril":
aux=4
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="marzo":
aux=3
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="febrero":
aux=2
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="enero":
aux=1
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
def obtenerArcano(arc):
if arc==1:
return "El Mago"
if arc==2:
return "La Papisa"
if arc==3:
return "La Emperatriz"
if arc==4:
return "El Emperador"
if arc==5:
return "El Papa"
if arc==6:
return "El Enamorado"
if arc==7:
return "El Carro"
if arc==8:
return "La Justicia"
if arc==9:
return "El Ermitaño"
if arc==10:
return "La Rueda"
if arc==11:
return "La Fuerza"
if arc==12:
return "El Colgado"
if arc==13:
return "La Muerte"
if arc==14:
return "La Templanza"
if arc==15:
return "El Diablo"
if arc==16:
return "La Torre"
if arc==17:
return "La Estrella"
if arc==18:
return "La Luna"
if arc==19:
return "El Sol"
if arc==20:
return "El Juicio"
if arc==21:
return "El Mundo"
if arc==22:
return "El Loco"
dia_nac=0
mes_nac=""
anyo_nuevo=0
aux=0
suma,i=0,0
cadena=""
sumaTotal=0
dia_nac=int(raw_input('Dia de nacimiento:'))
mes_nac=raw_input('Mes de nacimiento:')
anyo_nuevo=int(raw_input('Año nuevo:'))
print "Datos leidos:\n"
print "\tDía de nacimiento || Mes de nacimiento || Año nuevo que empieza"
print "\t",dia_nac," || ",mes_nac," || ",anyo_nuevo
print ""
if mes_nac=="diciembre":
aux=12
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="noviembre":
aux=11
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="octubre":
aux=10
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="septiembre":
aux=9
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="agosto":
aux=8
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="julio":
aux=7
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="junio":
aux=6
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="mayo":
aux=5
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="abril":
aux=4
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="marzo":
aux=3
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="febrero":
aux=2
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
if mes_nac=="enero":
aux=1
suma=dia_nac+aux+anyo_nuevo
print "Suma [",suma,"]"
cadena=str(suma)
print "Cadena: [",cadena,"]"
print list(cadena)
for i in range(len(cadena)):
sumaTotal=sumaTotal+int(cadena[i])
print "Número: ",sumaTotal
print "Te corresponde el signo del ",obtenerArcano(sumaTotal)
domingo, 18 de diciembre de 2011
JavaServer Faces: ejemplos básicos
JavaServer Faces
Es una framework (ya tiene varios años que apareció) que nos permite crear aplicaciones web muy parecidas a las de escritorio. JSF trabaja en base a eventos (algo parecido a Swing), mientras que JSP en base a petición(es)/respuesta(s).Existen otras variantes como:
- RichFaces
- PrimeFaces
- OpenFaces
- IceFaces
- MyFaces
Enlaces
OpenFaceshttp://openfaces.org/documentation/developersGuide/index.html
http://openfaces.org/demo/overview/homepage.jsf
RichFaces
http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html_single/
http://livedemo.exadel.com/richfaces-demo/index.jsp
PrimeFaces
http://www.primefaces.org/documentation.html
http://www.primefaces.org/showcase/ui/home.jsf
IceFaces
http://www.icefaces.org/main/resources/
http://www.icefaces.org/main/demos/
MyFaces
http://myfaces.apache.org/docindex.html
Cada una de ellas con diversos componentes muy útiles. Hace algunos meses decidi dejar de usar JSP y probar JSF. No me arrepiento. Creo que ahora escribo código más limpio y legible.
EL: Expression Language
Es un lenguaje especial que nos permite acceder directamente a las propiedades o métodos de los beans desde el código de las páginas (jsp y/o xhtml).Ejemplo
<h3>
#{"Este es un ejemplo"}</h3>
#{"Este es un ejemplo"}</h3>
Este es un ejemplo
Otro ejemplo23+64= #{23+65}
En fin, se pueden realizar todas las operaciones aritméticas y lógicas al igual que en JSP.
ManagedBean
Algo parecido a los Servlets, es una clase java que recibe peticiones y procesa resultados de las páginas web.Faces config
Es un documento xml en el cual defines los beans de tu aplicación. También defines las "reglas de navegación"entre tus páginas . Es importante tenerlo para saber que página debe mostrarse de acuerdo al suceso/evento que la invoca.Bueno, ahora un ejemplo sencillo.
1. Crear una aplicación que genere un número aleatorio, y que el usuario trate de adivinarlo.
Primero creo el Bean
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.primefaces.ejemplos; import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import java.util.Random;
/**
*
* */
@ManagedBean
@RequestScoped
public class RandomBean {
private int numero;
/** Creates a new instance of RandomBean */
public RandomBean() {
}
/**
* @return the numero
*/
public int getNumero() {
return numero;
}
/**
* @param numero the numero to set
*/
public void setNumero(int numero) {
this.numero = numero;
}
public String ir_calculo(){
return "calculo02";
}
public int obtenerNumero(){
return (int)(Math.random()*100);
}
}
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.primefaces.ejemplos; import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import java.util.Random;
/**
*
* */
@ManagedBean
@RequestScoped
public class RandomBean {
private int numero;
/** Creates a new instance of RandomBean */
public RandomBean() {
}
/**
* @return the numero
*/
public int getNumero() {
return numero;
}
/**
* @param numero the numero to set
*/
public void setNumero(int numero) {
this.numero = numero;
}
public String ir_calculo(){
return "calculo02";
}
public int obtenerNumero(){
return (int)(Math.random()*100);
}
}
<h2>Generar número aleatorio</h2>
<h:form>
<h:panelGrid>
<h:outputLabel value="#{msgs.titulo4}"></h:outputLabel>
<h:inputText value="#{randomBean.numero}"></h:inputText>
<h:commandButton action="#{randomBean.ir_calculo()}" value="adivinar" />
</h:panelGrid>
</h:form>
<h:form>
<h:panelGrid>
<h:outputLabel value="#{msgs.titulo4}"></h:outputLabel>
<h:inputText value="#{randomBean.numero}"></h:inputText>
<h:commandButton action="#{randomBean.ir_calculo()}" value="adivinar" />
</h:panelGrid>
</h:form>
<h2>Datos obtenidos</h2>
<h:form>
<h:panelGrid>
<h:outputLabel value="#{msgs.titulo5}"></h:outputLabel>
<h:outputLabel value="#{randomBean.numero}"></h:outputLabel>
<h:outputLabel value="#{msgs.titulo6}"></h:outputLabel>
<h:outputText value="#{randomBean.obtenerNumero()}"></h:outputText>
<!-- aqui hago la comparación-->
<h:outputLabel value="#{msgs.titulo7}"></h:outputLabel>
<h:outputLabel value="#{randomBean.numero==randomBean.obtenerNumero() ?'Correcto':'Incorrecto'}">
</h:outputLabel>
</h:panelGrid>
</h:form>
<h:outputLink value="http://localhost:8080/pruebaPrimeFaces/faces/index.xhtml"><h:outputText value="Regreso"/></h:outputLink>
<h:form>
<h:panelGrid>
<h:outputLabel value="#{msgs.titulo5}"></h:outputLabel>
<h:outputLabel value="#{randomBean.numero}"></h:outputLabel>
<h:outputLabel value="#{msgs.titulo6}"></h:outputLabel>
<h:outputText value="#{randomBean.obtenerNumero()}"></h:outputText>
<!-- aqui hago la comparación-->
<h:outputLabel value="#{msgs.titulo7}"></h:outputLabel>
<h:outputLabel value="#{randomBean.numero==randomBean.obtenerNumero() ?'Correcto':'Incorrecto'}">
</h:outputLabel>
</h:panelGrid>
</h:form>
<h:outputLink value="http://localhost:8080/pruebaPrimeFaces/faces/index.xhtml"><h:outputText value="Regreso"/></h:outputLink>
<?xml version='1.0' encoding='UTF-8'?> <!-- =========== FULL CONFIGURATION FILE ================================== -->
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee <a href="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
" title="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
">http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigatio...</a> <from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>calculo02</from-outcome>
<to-view-id>/datos.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>RandomBean</managed-bean-name>
<managed-bean-class>org.primefaces.ejemplos.RandomBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
<faces-config version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee <a href="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
" title="http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigation-rule>
">http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
<navigatio...</a> <from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>calculo02</from-outcome>
<to-view-id>/datos.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>RandomBean</managed-bean-name>
<managed-bean-class>org.primefaces.ejemplos.RandomBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
Etiquetas:
aprender java,
aprender jsf,
faces,
javaserver,
jsf
martes, 13 de diciembre de 2011
Ejemplo de uso de MySQL: una pequeña bitácora
Tener una bitácora nos ayuda a tener un mejor control de nuestra información:
- ver quien hace cambios por “error”
- ver la fecha
- tipo de operación (inserción, actualización y/o borrado)
Bueno he aquí los pasos para crear una pequeña bitácora
1. Crear la base de datos
create database prueba1;
show databases;
use prueba1;
2. Crear una tabla llamadas personas
create table personas (id_persona int auto_increment primary key, nombre varchar (50), apellido_p varchar (50), apellido_m varchar(50), edad int, peso double, talla double);
3. Crear un procedimiento almacenado para insertar registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `prueba1`.`Insertar` $$
CREATE PROCEDURE `prueba1`.`Insertar`(in nombre varchar (50), apellido_p varchar (50), apellido_m varchar(50), edad int, peso double, talla double)
BEGIN
INSERT INTO personas (nombre,apellido_p, apellido_m , edad , peso , talla) VALUES (nombre,apellido_p, apellido_m , edad , peso , talla );
END $$
DELIMITER ;
4. Crear un procedimiento almacenado para actualizar registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `prueba1`.`Actualizar` $$
CREATE PROCEDURE `prueba1`.`Actualizar` (in id_personax int,edadx int,pesox double)
BEGIN
update personas set edad=edadx,peso=pesox where id_persona=id_personax;
END $$
DELIMITER ;
5. Crear un procedimiento almacenado para eliminar registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `prueba1`.`Borrar` $$
CREATE PROCEDURE `prueba1`.`Borrar` (in id int)
BEGIN
delete from personas where id_persona=id;
END $$
DELIMITER ;
6. Invocar los procedimientos almacenados
Call Insertar (‘Horacio’,’Gomez’,’Carmona’,25,65,1.68);
Call Insertar (‘Hugo’,’Torres’,’Mendez’,32,67,1.70);
Call Actualizar (1, 26, 66);
Call Borrar (2)
Ver registros
Select * from personas;
7. Crear un procedimiento almacenado que muestre todos los registros
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_verPersonas` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_verPersonas`()
select *from personas $$
DELIMITER ;
Para invocarlo
Call sp_verPersonas();
8. Crear tabla que lleve un control de quien hace cambios en la base de datos prueba1
CREATE TABLE infobase (usuario varchar (50), descripcion varchar (50),
fecha TIMESTAMP default now());
9. Crear trigger para la inserción
delimiter $$
create trigger tr_insercion
befote insert on personas
for each row
begin
insert into infobase values(user(),’persona creada’,now());
end $$
10. Crear trigger para la actualización
delimiter $$
create trigger tr_actualizacion
befote update on personas
for each row
begin
insert into infobase(usuario,descripcion,fecha) values(user(),’persona modificada’,now());
end $$
11. Crear trigger para la eliminación
delimiter $$
create trigger tr_borrado
befote delete on personas
for each row
begin
insert into infobase values(user(),’persona eliminada’,now());
end $$
Ver cambios
Select *from infobase;
12. Crear procedimiento almacenado para ver un registro en particular
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_verPersona` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_verPersona`(in id_buscar int)
select *from personas where id_persona=id_buscar $$
DELIMITER ;
13. Ahora hacer una operación: calcular el I.M.C. (Índice de Masa Corporal) de las personas registradas
Fórmula: peso/(talla*talla)
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_verImc` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_verImc`()
select id_persona,nombre,edad,peso,talla,peso/(talla*talla) from personas $$
DELIMITER ;
14. Programa en Java para ver los registros
package control.pruebas;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
public class Codemonkey {
public static void main(String[] args) {
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conecta=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/prueba1","root","root");
System.out.println("Conexión exitosa\n");
Statement sentencia= conecta.createStatement();
ResultSet registro=sentencia.executeQuery("select id_persona,nombre,edad,peso,talla,peso/(talla*talla) from personas");
while(registro.next()){
System.out.println("\t\nId: "+registro.getInt("id_persona"));
System.out.println("Nombre: "+registro.getString("nombre"));
System.out.println("Edad:"+registro.getInt("edad"));
System.out.println("Peso:"+registro.getDouble("peso"));
System.out.println("Talla: "+registro.getDouble("talla"));
System.out.println("IMC: "+registro.getDouble("peso/(talla*talla)"));
}
conecta.close();
System.out.println("\nConexión cerrada");
}catch(Exception ex){
ex.printStackTrace();
}
}
}
package control.pruebas;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
public class Codemonkey {
public static void main(String[] args) {
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conecta=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/prueba1","root","root");
System.out.println("Conexión exitosa\n");
Statement sentencia= conecta.createStatement();
ResultSet registro=sentencia.executeQuery("select id_persona,nombre,edad,peso,talla,peso/(talla*talla) from personas");
while(registro.next()){
System.out.println("\t\nId: "+registro.getInt("id_persona"));
System.out.println("Nombre: "+registro.getString("nombre"));
System.out.println("Edad:"+registro.getInt("edad"));
System.out.println("Peso:"+registro.getDouble("peso"));
System.out.println("Talla: "+registro.getDouble("talla"));
System.out.println("IMC: "+registro.getDouble("peso/(talla*talla)"));
}
conecta.close();
System.out.println("\nConexión cerrada");
}catch(Exception ex){
ex.printStackTrace();
}
}
}
Suscribirse a:
Entradas (Atom)