Está en la página 1de 18

DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIN

INFORME DE SOFTWARE DIRIGIDO AL APRENDIZAJE BSICO


DE MATEMTICAS

INTEGRANTES:
Michelle Torres
Juan Ruiz
Michael Valdivieso
TUTOR:
ING. RUBN ARROYO
ASIGNATURA:
PROGRAMACIN II

2015-2016
UNIVERSIDAD DE LAS FUERZAS ARMADAS
ESPE
Ingeniera de Sistemas e Informtica

Integrantes: Michelle Torres, Juan Ruiz, Michael Valdivieso


Periodo:
Octubre - Marzo 2015.
Asignatura: Programacin II.

Fecha:2016-02-09
NRC: 1009

1. Tema: Software dirigido al aprendizaje bsico de Matemticas.


2. Objetivo General:
Conocer de manera didctica, entretenida y amigable para el usuario, los principios bsicos
de las Matemticas como es la clasificacin de nmeros; afianzando los conocimientos
adquiridos dentro de las aulas convirtindose en una herramienta de apoyo para los
estudiantes que se encuentran cursando el 8vo ao de educacin.
2.1 Objetivo especfico:
Identificar de manera prctica la nocin bsica que refuerza al alumno a
equiparar los diferentes tipos de nmeros a travs del programa realizado.
3.

Desarrollo

Realizacin de conexin con la base de datos.


La herramienta que usamos para gestionar la base de datos es XAMPP.
XAMPP es un paquete formado por un servidor web Apache, una base de datos MySQL y
los intrpretes para los lenguajes PHP y Perl; por ello su nombre X (para cualquier sistema
operativo), A(Apache), M(MySQL), P (PHP), P(Perl).
Entre sus ventajas destacan que es una plataforma independiente tiene versiones para
diferentes tipos de sistemas operativos como son Windows, Linux, MacOS X y Solaris; es
una forma muy sencilla y rpida de montar en una mquina un entorno de desarrollo de
cualquier aplicacin web q use PHP y base de datos. Teniendo como principal desventaja
que la configuracin por defecto tiene algunas deficiencias de seguridad por lo que no es
recomendable usarla como una herramienta de produccin. (Spona, 2010)

Dentro de la programacin de nuestro software utilizamos un objeto de la clase Conexin


para comunicarnos con la base de datos.
Para conectarnos a la base de datos, primero obtenemos el objeto de la clase asociado al
controlador y creamos la nueva instancia, con el siguiente cdigo.
Class.forName("com.mysql.jdbc.Driver")
Para posterior usar la conexin a direccin de la base de datos "jdbc:mysql://localhost/" +
bd; indicando el usuario y contrasea indicadas en las variables login y password, usando el
siguiente cdigo conn = DriverManager.getConnection(url, login, password); logrando
obtener una conexin satisfactoria entre nuestro software y nuestra base de datos la cual nos
servir para el registro de nuestros usuarios con sus respectivos puntajes y avances de los
juegos. (Montoro, 2010)
En esta clase se hace la conexin entre NetBeans y nuestra base de datos XAMPP recibe el
nombre del script, un usuario y contrasea por defecto y la direccin de la base de datos.
public class Conexion {
static String bd ="db_mafacil";
static String login = "root";
static String password = "";
static String url = "jdbc:mysql://localhost/" + bd;
Connection conn = null;
public Conexion() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, login, password);
}
catch(SQLException e){
System.out.println(e);
}
catch(ClassNotFoundException e){
System.out.println(e);
}
}
public Connection GetConnexion(){
return conn;
}
public void Desconectar(){
conn = null;
}
}
Dentro del paquete entidades tenemos dos clases Avance y Usuario, en las cuales se tienen
los datos de los usuarios registrados como el nombre, apellido, contrasea, el color favorito,

su puntuacin y sus avances en los juegos; con sus respectivos constructores getters y
setter.
public class Usuario {
public String getColor() {
return Color;
}
public void setColor(String Color) {
this.Color = Color;
}
private String Nombre;
private String Apellido;
private String Usu;
private String Contrasea;
private String Tipo;
private String Color;
public Usuario(String Nombre, String Apellido, String Usu, String Contrasea,
String Tipo, String Color) {
this.Nombre = Nombre;
this.Apellido = Apellido;
this.Usu = Usu;
this.Contrasea = Contrasea;
this.Tipo = Tipo;
this.Color = Color;
}
public String getTipo() {
return Tipo;
}
public void setTipo(String Tipo) {
this.Tipo = Tipo;
}
public Usuario() {
}
public String getNombre() {
return Nombre;
}
public void setNombre(String Nombre) {
this.Nombre = Nombre;
}
public String getApellido() {
return Apellido;
}
public void setApellido(String Apellido) {
this.Apellido = Apellido;
}

public String getUsu() {


return Usu;
}
public void setUsu(String Usu) {
this.Usu = Usu;
}
public String getContrasea() {
return Contrasea;
}
public void setContrasea(String Contrasea) {
this.Contrasea = Contrasea;
}
}
public class Avance {
private int Nivel;
private float Puntuacion;
private String _Usuario;
public Avance(int Nivel, float Puntuacion, String _Usuario) {
this.Nivel = Nivel;
this.Puntuacion = Puntuacion;
this._Usuario= _Usuario;
}
public Avance() {
}
public int getNivel() {
return Nivel;
}
public void setNivel(int Nivel) {
this.Nivel = Nivel;
}
public float getPuntuacion() {
return Puntuacion;
}
public String getUsuario() {
return _Usuario;
}
public void setUsuario(String _Usuario) {
this._Usuario = _Usuario;
}
public void setPuntuacion(float Puntuacion) {
this.Puntuacion = Puntuacion;
}
}
Reproductor de audio y video en Java

Para realizar nuestro de proyecto de manera ms interactiva con el usuario, hemos utilizado
el API Java Media Framework (JMF) la cual es una interfaz de programacin de
aplicaciones para la incorporacin de audio, video y otros medios de comunicacin basadas
en el tiempo de las aplicaciones y applets Java.
El API se centra en la reproduccin y transmisin de medios de comunicacin
almacenados, es decir son compatibles con la sincronizacin, control, procesamiento y
presentacin de tales medios. JMF es un paquete opcional que ampla las capacidades de
multimedia de la plataforma Java, API fue desarrollada por Microsystems, Silicon
Graphics e Intel Corporation. (Oracle, s.f.)
Funcin por la cual con la cual creamos los controladores para la reproduccin de video,
imagen y sonido mediante una direccin.
private void init() {
//panel principal
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
URL url=null;
try {
url = new
URL("file:/c:/Users/USER/Documents/NetBeansProjects/Menues/src/Videos/Teoria
_Divicion.mpg");
} catch (MalformedURLException ex) {
Logger.getLogger(Ventana_Divicion.class.getName()).log(Level.SEVERE, null,
ex);
}
try {
player = Manager.createRealizedPlayer(new MediaLocator(url));
video = player.getVisualComponent();
video.setSize(800,500);
video.setVisible(true);
if(video != null)
panel.add("Center",video);
controles = player.getControlPanelComponent();
controles.setSize(800,100);
controles.setVisible(true);
if(controles != null)
panel.add("South",controles);
add(panel);
player.start();
panel.updateUI();

} catch (Exception ex) {


Logger.getLogger(Ventana_Divicion.class.getName()).log(Level.SEVERE, null,
ex);
}
}
Mtodo de la burbuja
Consiste en acomodar el vector moviendo el mayor hasta la ltima casilla comenzando
desde la casilla cero del vector hasta haber acomodado el nmero ms grande en la ltima
posicin, una vez acomodado el ms grande, prosigue a encontrar y acomodar el siguiente
ms grande comparando de nuevo los nmeros desde el inicio del vector, y as sigue hasta
ordenar todos los elementos el arreglo. (Astrachan & Owen, 2003)
Con la ayuda de este mtodo la funcin del primer juego del mdulo uno ordena un arreglo
de nmeros comparando el arreglo que se genera con los datos que el usuario ingresa, de
acuerdo a la cantidad de aciertos se da la puntuacin, los aciertos se cuentan con un
acumulador (cont).
public void Evaluar()
{
int ver = 0;
int aux = 0;
for(int i = 0; i < 8; i++)
{
for(int j = 0; j < 8; j++)
{
if(num[i] < num[j])
{
aux = num[i];
num[i] = num[j];
num[j] = aux;
}
}
}
for(int i = 0; i < 8; i++)
{
if(num[i] == numAux[i])
ver++;
}
if(ver == 8){
JOptionPane.showMessageDialog(null, "Nota obtenida:
"+ver+"\nPerfecto !!!");
ponerCeros();
}
if(ver == 7){

JOptionPane.showMessageDialog(null, "Nota obtenida: "+ver+"\nCorrecto,


sigue estudiando !!!");
btnRespuesta.setEnabled(true);
ponerCeros();
}
if(ver == 6){
JOptionPane.showMessageDialog(null, "Nota obtenida: "+ver+"\nMuy bien,
sigue estudiando !!!");
btnRespuesta.setEnabled(true);
ponerCeros();
}
if(ver == 5){
JOptionPane.showMessageDialog(null, "Nota obtenida: "+ver+"\nBien,
sigue estudiando !!!");
btnRespuesta.setEnabled(true);
ponerCeros();
}
if(ver == 4){
JOptionPane.showMessageDialog(null, "Nota obtenida: "+ver+"\nRegular,
revisa la materia !!!");
btnRespuesta.setEnabled(true);
ponerCeros();
}
if(ver == 3){
JOptionPane.showMessageDialog(null, "Nota obtenida: "+ver+"\nInorrecto,
vuelva a intentarlo !!!");
btnRespuesta.setEnabled(true);
ponerCeros();
}
if(ver == 2){
JOptionPane.showMessageDialog(null, "Nota obtenida: "+ver+"\nInorrecto,
vuelva a intentarlo !!!");
btnRespuesta.setEnabled(true);
ponerCeros();
}
if(ver == 1){
JOptionPane.showMessageDialog(null, "Nota obtenida: "+ver+"\nInorrecto,
vuelva a intentarlo !!!");
btnRespuesta.setEnabled(true);
ponerCeros();
}
if(ver == 0){
JOptionPane.showMessageDialog(null, "Nota obtenida: "+ver+"\nInorrecto,
vuelva a intentarlo !!!");
btnRespuesta.setEnabled(true);

ponerCeros();
}
}
Esta funcin compara un arreglo de enteros asignada a cada uno de los botones del juego
comparando las condiciones del tres en raya el jugador con el cual el programa determinara
si el usuario gana o pierde la partida.
public void evaluar()
{
float puntaje=0.0f;
Puntuacion pun=new Puntuacion();
if (((band1[0] == 1) && (band1[1] == 1) && (band1[2] == 1)) ||
((band2[0] == 1) && (band2[1] == 1) && (band2[2] == 1)) ||
((band3[0] == 1) && (band3[1] == 1) && (band3[2] == 1)) ||
((band4[0] == 1) && (band4[1] == 1) && (band4[2] == 1)) ||
((band5[0] == 1) && (band5[1] == 1) && (band5[2] == 1)) ||
((band6[0] == 1) && (band6[1] == 1) && (band6[2] == 1)) ||
((band7[0] == 1) && (band7[1] == 1) && (band7[2] == 1)) ||
((band8[0] == 1) && (band8[1] == 1) && (band8[2] == 1)))
{
puntaje=puntaje+100;
pun.setPuntaje(puntaje);
JOptionPane.showMessageDialog(null,"Respuestas correctas, usted a
ganado \n Puntaje: "+pun.getPuntaje());
//this.dispose();
}
else
{
if (((band1[0] == 0) && (band1[1] == 0) && (band1[2] == 0)) ||
((band2[0] == 0) && (band2[1] == 0) && (band2[2] == 0)) ||
((band3[0] == 0) && (band3[1] == 0) && (band3[2] == 0)) ||
((band4[0] == 0) && (band4[1] == 0) && (band4[2] == 0)) ||
((band5[0] == 0) && (band5[1] == 0) && (band5[2] == 0)) ||
((band6[0] == 0) && (band6[1] == 0) && (band6[2] == 0)) ||
((band7[0] == 0) && (band7[1] == 0) && (band7[2] == 0)) ||
((band8[0] == 0) && (band8[1] == 0) && (band8[2] == 0)))
{
pun.setPuntaje(puntaje);
JOptionPane.showMessageDialog(null,"USTED A PERDIDO, LO
SENTIMOS\n Puntaje: "+pun.getPuntaje());
//this.dispose();
}
}
}
Numero randmico

Math.random() funcin que retorna un punto flotante, un nmero aleatorio dentro de un


rango establecido [0,100). La implementacin selecciona inicia hasta que el algoritmo
genere el nmero aleatorio; el cual no puede ser modificado por el usuario. (Sotelio &
Daiant, 2015)
Con la ayuda de esta funcin generaremos nuestros nmeros (randmicos), para el juego
de tres en raya que definen la operacin y los nmeros de la operacin.
public OP() {
initComponents();
ImageIcon uno=new
ImageIcon(this.getClass().getResource("/Imagenes_Juego/fondop.jpg"));
JLabel fondo= new JLabel();
fondo.setIcon(uno);
fondo.setBounds(0,0,uno.getIconWidth(),uno.getIconHeight());
aux = (int)(Math.random() * 20 + 0);
num1=(int)(Math.random() * (100 + 100) - 100);
num2=(int)(Math.random() * (100 + 100) - 100);
num3=(int)(Math.random() * (30 + 30) - 30);
num4=(int)(Math.random() * (30 + 30) - 30);
if(selecionSigno()==1){
lblnum1.setText(num1+" ");
lblnum2.setText(num2+" ");
lblsigno.setText("+");
}else{
if(selecionSigno()==2){
lblnum1.setText(num1+" ");
lblnum2.setText(num2+" ");
lblsigno.setText("-");
}else{
if(selecionSigno()==3){
lblnum1.setText(num1+" ");
lblnum2.setText(num2+" ");
lblsigno.setText("*");
}else{
if(selecionSigno()==4){
//num1 dividendo y num2 divisor
tempcociente=(int)(Math.random() * (30 + 30) - 30);
num3=tempcociente*num4;
if(num4==0){
num4+=1;
lblnum1.setText(num3+" ");
lblnum2.setText(num4+" ");
lblsigno.setText("/");
}else{
lblnum1.setText(num3+" ");

lblnum2.setText(num4+" ");
lblsigno.setText("/");
}
}
}
}
}
}
Dentro de la clase Usuarios es donde podemos gestionar el ingreso de los nuevos usuarios
en donde se valida que no se repita el nombre de usuario y la contrasea, si todo se ingresa
correctamente ingresa un nuevo usuario en la base de datos.
public class Usuarios {
public int Ingreso(String Nombre,String Apellido,String Usuario_,String
Pass,String Tipo, String Color){
Usuario _Usuario = new Usuario();
_Usuario.setNombre(Nombre);
_Usuario.setApellido(Apellido);
_Usuario.setUsu(Usuario_);
_Usuario.setContrasea(Pass);
_Usuario.setTipo(Tipo);
_Usuario.setColor(Color);
return Ingresar(_Usuario);
}
public Usuarios(){
}
private int Ingresar(Usuario _Usuario)
{
int ok=0;
Conexion _Conexion= new Conexion();
try
{
Statement Query = _Conexion.GetConnexion().createStatement();
Query.executeUpdate("INSERT INTO Usuarios VALUES
(NULL,'"+_Usuario.getNombre() +"', '"
+_Usuario.getApellido()+"', '"+_Usuario.getUsu()+"', '"
+_Usuario.getContrasea()+"', '"+_Usuario.getTipo()
+"','"+_Usuario.getColor()+"')");
JOptionPane.showMessageDialog(null, "Se ha registrado
Exitosamente","Informacin",JOptionPane.INFORMATION_MESSAGE);
ok=1;
Query.close();
_Conexion.Desconectar();
} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "No se Registro el Usuario");


ok=0;
}
return ok;
}
public int Validar(String Usu, String Pass)
{
int Ok=0;
try{
Conexion conectar = new Conexion();
Statement st;
st = conectar.GetConnexion().createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM usuarios WHERE
usuario='"+Usu+"' AND Pass ='"+Pass+"'");
rs.last();
int encontrado=rs.getRow();
// System.out.println(String.valueOf(encontrado));
if(encontrado==1)
{
Ok=1;
}
else
{
JOptionPane.showMessageDialog(null, "Sus datos son incorrectos,
reviselos");
Ok=2;
}
rs.close();
st.close();
}catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error interno");
Ok=0;
}
return Ok;
}
public int NuevaClave(String Clave, String Usuario){
int ok = 0;
Conexion _Conexion = new Conexion();
try {
Statement Query = _Conexion.GetConnexion().createStatement();
Query.executeUpdate("UPDATE usuarios set Pass= '" + Clave +
"' where Usuario ='" + Usuario + "'");
ok = 1;
Query.close();
_Conexion.Desconectar();
} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "Ha ocurrido un erro interno en el


programa");
ok = 0;
}
return ok;
}
public int ExisteUsuario(String Usu)
{
int Ok=0;
try{
Conexion conectar = new Conexion();
Statement st;
st = conectar.GetConnexion().createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM usuarios WHERE
usuario='"+Usu+"'" );
rs.last();
int encontrado=rs.getRow();
System.out.println(String.valueOf(encontrado));
if(encontrado==1)
{
Ok=1;
}
else
{
Ok=2;
}
rs.close();
st.close();
}catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error interno");
Ok=0;
}
return Ok;
}
}
Dentro de la clase Avances se actualizar los datos de los avances y puntajes de los usuarios
en cada uno de los mdulos de nuestra base de datos.
public class Avances {
public void Ingreso(int Nivel, float Puntuacion, String _Usuario) {
Avance _Avance = new Avance();
_Avance.setNivel(Nivel);
_Avance.setPuntuacion(Puntuacion);
_Avance.setUsuario(_Usuario);
Ingresar(_Avance);
}

public Avances() {
}
private int Ingresar(Avance _Avance) {
int ok = 0;
Conexion _Conexion = new Conexion();
try {
Statement Query = _Conexion.GetConnexion().createStatement();
Query.executeUpdate("INSERT INTO Puntuacion VALUES (NULL,'" + _
Avance.getUsuario() + "', '" + _Avance.getPuntuacion() + "','" +
_Avance.getNivel() + "')");
ok = 1;
Query.close();
_Conexion.Desconectar();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Ha ocurrido un erro interno en el
programa "+ e);
ok = 0;
}
return ok;
}
public void Actualizar(Avance _Avance) {
int ok = 0;
Conexion _Conexion = new Conexion();
try {
Statement Query = _Conexion.GetConnexion().createStatement();
Query.executeUpdate("UPDATE puntuacion set Puntuacion= " +
_Avance.getPuntuacion() + ",Nivel="
+ _Avance.getNivel() + " where idUsuario ='" + _Avance.getUsuario()
+ "'");
ok = 1;
Query.close();
_Conexion.Desconectar();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Ha ocurrido un erro interno en el
programa");
ok = 0;
}
}
}
Pide una nueva contrasea en caso de olvido, valida que la nueva contrasea sea
correcta y actualiza la nueva contrasea.
private void BtnVerificarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

if(TxtAnterior.getText().length()==0){
JOptionPane.showMessageDialog(null, "Falta la
contrasea","Informacin",JOptionPane.INFORMATION_MESSAGE);
}else
if(TxtNueva.getText().length()==0){
JOptionPane.showMessageDialog(null, "Falta la
confirmacin","Informacin",JOptionPane.INFORMATION_MESSAGE);
}else
If (TxtNueva.getText().equals(TxtAnterior.getText())==false){
JOptionPane.showMessageDialog(null, "No coinciden las
contraseas","Informacin",JOptionPane.INFORMATION_MESSAGE);
}else{
_Usuarios.NuevaClave(TxtNueva.getText(), Global.getUsuario());
}
}
Esta funcin valida todos los datos para el ingreso de un nuevo usuario como el nombre, el
apellido, el usuario y la contrasea, etc, si todo est correcto llama a la funcin que ingresa
los nuevos usuarios a la base de datos.
private void BtnAccederActionPerformed(java.awt.event.ActionEvent evt) {
int usuarioExistente;
usuarioExistente= _Usuarios.ExisteUsuario(TxtUsuario.getText());
int ok=0;
int cont=0;
if(TxtNombre.getText().length()==0){
JOptionPane.showMessageDialog(null, "Falta el Nombre
","Informacin",JOptionPane.INFORMATION_MESSAGE);
cont++;
}
else if(TxtApellido.getText().length()==0){
JOptionPane.showMessageDialog(null, "Falta el Apellido
","Informacin",JOptionPane.INFORMATION_MESSAGE);
cont++;

}
if(TxtUsuario.getText().length()==0){
JOptionPane.showMessageDialog(null, "Falta el Usuario
","Informacin",JOptionPane.INFORMATION_MESSAGE);
cont++;
}else if(TxtUsuario.getText().length()!=0 && usuarioExistente==1 ){
JOptionPane.showMessageDialog(null, "El usuario ya esta registrado
","Informacin",JOptionPane.INFORMATION_MESSAGE);
cont++;
}else if(TxtColor.getText().length()==0){
JOptionPane.showMessageDialog(null, "Falta completar la pregunta
secreta","Informacin",JOptionPane.INFORMATION_MESSAGE);
cont++;
}
else if(TxtPass1.getText().length()==0){
JOptionPane.showMessageDialog(null, "Falta la
contrasea","Informacin",JOptionPane.INFORMATION_MESSAGE);
cont++;
}
else if(TxtPass2.getText().length()==0){
JOptionPane.showMessageDialog(null, "Falta la confirmacin de la
contrasea","Informacin",JOptionPane.INFORMATION_MESSAGE);
cont++;
}else if(TxtPass1.getText().equals(TxtPass2.getText())==false){
JOptionPane.showMessageDialog(null, "No coinciden las
contraseas","Informacin",JOptionPane.INFORMATION_MESSAGE);
cont++;

}
if(usuarioExistente==2){
ok=_Usuarios.Ingreso(TxtNombre.getText(),TxtApellido.getText(),TxtUsuario.getT
ext(), TxtPass1.getText(), "US",TxtColor.getText());
_Avances.Ingreso(1, 0, TxtUsuario.getText());
}
if(ok==2){
this.dispose();
FrmIngreso o = new FrmIngreso();
o.setVisible(true);
}
}

4. Conclusiones
Se finiquita que las Matemticas como ciencia cubren un campo extenso que es
aplicado en la vida diaria, siendo los nmeros de fundamental importancia, los
conocimientos impartidos en el 8vo ao de educacin son pilar fundamental para el
desarrollo y motricidad a largo plazo, convirtindose nuestro producto (software) en
una herramienta complementaria.
Se concluye que el reconocer de forma sencilla los diferentes tipos de nmeros a
travs del programa, fortifica altamente los conocimientos del alumno y permite
prctica con respecto al tpico tratado.
5. Recomendaciones
Se recomienda tener conocimientos bsicos del manejo de una computadora.
Se sugiere realizar ms ejercicios como los expuestos dentro del producto
software para desarrollar ms habilidades.
6. Bibliografa

Astrachan, & Owen. (2003). Ordenamiento de burbuja: Un anlis arqueolgico de un


algoritmo.
Montoro, G. (22 de 03 de 2010). Manual de NetBeans y XAMPP versin 1.0.
Oracle. (s.f.). Oracle Java Software. Obtenido de https://www.oracle.com/java/index.html
Sotelio, & Daiant. (09 de Julio de 2015). Mozilla Developer Network. Obtenido de MDN:
https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/
Math/random
Spona, H. (2010). Programacin de base de datos con MySql y PHP. marcombo.

También podría gustarte