1. UNIVERSIDAD TÉCNICA DE MACHALA
FACULTAD DE INGENIERÍA CIVIL
ESCUELA DE INFORMÁTICA
PRIMER QUIMESTRE
PARALELO A
PROGRAMACIÓN 1
UTILITARIOS 1
“TABLAS DE MULTIPLICAR”
Proyecto Final de Asignatura
Autor es :
Torres Reyes , Carolina Vanessa
Tapia Moreno, Cristhofer Jonathan
Docente :
Ing. Fausto Redrován Castillo, Mg.
MACHALA - ECUADOR
AGOSTO, 2013
2. AUTORÍA:
Nosotros, Carolina Vanessa Torres Reyes, Cristhofer Jonathan Tapia Moreno, como
autores del presente trabajo de investigación, somos responsables de las
ideas, conceptos, procedimientos y resultados vertidos en la misma.
f………………………………. f……………………………….
Carolina Vanessa Torres Reyes Cristhofer Jonathan Tapia Moreno
C.I.: 0705827525 C.I.: 0706028016
3. Proyecto Final de Programación I Y UTILITARIOS i
Índice
1JUSTIFICACIÓN ...................................................................................5
2OBJETIVOS..........................................................................................6
Objetivo General.................................................................................6
Objetivos Específicos...........................................................................6
3ANTECEDENTES...................................................................................6
4MARCO TEÓRICO..................................................................................6
Swing...............................................................................................6
Awt..................................................................................................7
Componentes de Swing.......................................................................7
5MARCO METODOLÓGICO.......................................................................9
Análisis de resultados..........................................................................9
Ventana Inicio.................................................................................9
VENTANA MENU.............................................................................10
Solución...........................................................................................13
6CONCLUSIONES..................................................................................18
7RECOMENDACIONES...........................................................................18
8REFERENCIAS BIBLIOGRÁFICAS............................................................19
9ANEXOS............................................................................................19
Código fuente del programa................................................................19
Ventana Inicial..................................................................................19
Ventana Menu................................................................................21
Ventana Tablas...............................................................................23
Ventana Conceptos.........................................................................24
Ventana Juega Razona....................................................................25
Ventana Instrucciones.....................................................................29
Ventana Ahorcado..........................................................................30
Persistencia...................................................................................35
Documentación fotográfica..................................................................35
Índice de ilustraciones
Ilustración 1: Ingreso de nombre y edad del usuario..................................15
Ilustración 2: Elegir una opción ..............................................................16
Ilustración 3: Concepto de la multiplicación .............................................16
Ilustración 4: Aprende las tablas de multiplicar.........................................16
Ilustración 5: Nivel avanzado..................................................................17
Ilustración 6: Juega y Razona- Nivel facil.................................................17
Torres, Tapia
5. Proyecto Final de Programación I Y UTILITARIOS i
1 JUSTIFICACIÓN
Este programa es necesario para aplicar los conocimientos aprendidos al transcurso del
semestre.
Se realiza para tener una mayor aprehensión en cuanto a os conocimientos adquiridos
en clase y asimismo, realizar uno en donde se combine la creatividad con las cualidades,
teniendo en cuenta las normas que se den en el mismo con un entorno sano.
Hasta hoy las metodologías utilizadas con relación a la enseñanza de la matemática se
han centrado principalmente en darle al estudiante una definición o una fórmula, para
luego resolver ejercicios siguiendo patrones de imitación, sin que los estudiantes
entiendan a veces lo que están haciendo, y en general no se desarrollara la capacidad
creadora e integradora del estudiante.
No se enfatizan los conceptos, pero sí los procedimientos, sin mucho sentido y dando
énfasis a la memorización.
La siguiente proyecto que mostraremos a continuación está basado en un lenguaje de
programación JAVA, en el IDE eclipse klepeer, ya que este es multiplataforma y funciona
en diferentes sistemas operativos.
Con este programa el usuario podrá jugar de una manera más fácil ya que tiene un
entorno interactivo y es muy fácil de manejar.
En la actualidad se ha superado la creencia o tendencia de considerar el juego como un
“tiempo perdido”. Este cambio, se ha visto reflejado en la inclusión de éste en las
actividades recreativas y aprendizaje de las habilidades lingüísticas básicas, siendo un
recurso educativo fundamental para potenciar la maduración del usuario.
Torres, Tapia
6. Proyecto Final de Programación I Y UTILITARIOS i
2 OBJETIVOS
Objetivo General
◦ Aplicar los conocimientos adquiridos durante el semestre para desarrollo e
implementación de una aplicación en JAVA, que ayude al aprendizaje del
niño en el área de matemáticas.
Objetivos Específicos
• Determinar los procesos necesarios para la realización de la aplicación
• Realizar una interfaz gráfica adecuado, para que el usuario maneje con
facilidad la aplicación.
• Realizar una aplicación en java, utilizando algoritmos, estructuras y lo
necesario para realizar un buen programa.
3 ANTECEDENTES
En la actualidad el aprendizaje es un poco mas fácil ya de esta manera la
programación tiene como necesidad del ser humano de contar con herramientas y
medios que le permitan registrar y manipular la información y desarrollar
procedimientos lógicos para obtener diversos resultados a partir de la información ;
la cual se ha manifestado desde el caso simple de sumar y restar cantidades, hasta
alcanzar las nuevas formas de almacenar, procesar y manipular todo tipo de
información.
4 MARCO TEÓRICO
Swing
“ El paquete Swing es el nuevo paquete gráfico que ha aparecido en la versión 1.2
de Java. Esta compuesto por un amplio conjunto de componentes de interfaces de
usuario y que pretenden funcionar en el mayor numero posible de plataformas. Ca
a uno de los componentes de este paquete puede presentar diversos aspectos y
Torres, Tapia
7. Proyecto Final de Programación I Y UTILITARIOS i
comportamientos en función de una biblioteca de clases.
Awt
componentes pesados (dependen del sistema de ventanas de la plataforma local
para determinar su funcionalidad y su apariencia visual). Cada componente pesado
tiene un componente asociado (del paquete java.awt.peer), el cual es responsable
de las interacciones entre el componente pesado y la plataforma local para
mostrarlo y manipularlo.
Componentes de Swing
JFrame: Representa una ventana básica, capaz de contener otros componentes.
Casi todas las aplicaciones construyen al menos un Jframe.
JDialog, JOptionPane, etc: Los cuadros de diálogo son JFrame restringidos,
dependientes de un JFrame principal. Los JOptionPane son cuadros de diálogo
sencillos predefinidos para pedir confirmación, realizar advertencias o notificar
errores. Los Jdialog son cuadros de diálogo generales, normalmente utilizados para
peticiones de datos.
JButton: Distintos tipos de botones. Un check box sirve para marcar una opción. Un
radio button permite seleccionar una opción entre varias disponibles.
JtextField: Permite indicar el conjunto de caracteres legales que pueden
introducirse.
JLabel: Permite situar un texto, un texto con una imagen o una imagen únicamente
en la ventana. No son interactivos y puede utilizarse código HTML para escribir
texto en varias líneas y con varios atributos.
Eventos
Las GUI`s están controladas por eventos (generan eventos cuando el usuario
interactúa con la GUI). Siempre que ocurre una interacción con el usuario se envía
un evento al programa. La información de los eventos de la GUI se almacena en un
objeto de una clase que extiende a AWTEvent.
Los eventos que vamos a gestionar en los ejemplos correspondientes a nuestros
componentes pertenecen al paquete java.awt.event. También se han agregado
tipos de eventos adicionales, específicos para varios tipos de componentes Swing.
Torres, Tapia
8. Proyecto Final de Programación I Y UTILITARIOS i
Estos eventos se definen en el paquete javax.swing.event.
Para procesar un evento de interfaz gráfica de usuario, el programador debe
realizar dos tareas clave:
-Registrar un componente que escuche eventos (es un objeto de una clase que
implementa una o más de las interfaces que escuchan eventos correspondientes a
los paquetes java.awt.event y javax.swing.event).
-Implementar un manejado de eventos (método que se invoca automáticamente en
respuesta a un tipo específico de evento).
ActionListener: captura cierto tipo de acción realizada sobre ciertos componentes.
Por ejemplo, pulsar un botón, seleccionar un elemento en una lista desplegable o
una opción en un menú.
String getText(): Selecciona u obtiene el texto mostrado en el botón.
void setIcon(Icon):Selecciona u obtiene la imagen mostrada por el botón cuando no
está seleccionado o pulsado. “[Javier Ovejero Sánchez]
Final :es un atributo que le pones ya sea a una variable o a un método, para
indicar que ya no puede ser cambiado una vez declarado.
Su valor ya no puede ser cambiado una vez inicializado por lo que es útil para
ciertos casos en los que deseas que una variable contenga un valor en el que
quieras estar seguro que su valor es constante. Debido a esto, debes inicializarla al
momento de declararla, o en el caso de las versiones mas recientes del JDK,
dentro del constructor de la clase (por si quisieras que tuviera un valor constante al
momento de crear el objeto.) Esto es para evitar que el método sea sobrescrito
('overriden') por una subclase de la clase que contenga dicho método con el fin de
preservar el comportamiento original deseado en la clase base.
static:los atributos miembros de una clase pueden ser atributos de clase o
atributos de instancia; se dice que son atributos de clase si se usa la palabra clave
static: en ese caso la variable es única para todas las instancias (objetos) de la
clase (ocupa un único lugar en memoria). A veces a las variables de clase se les
llama variables estáticas. Si no se usa static, el sistema crea un lugar nuevo para
esa variable con cada instancia (la variable es diferente para cada objeto). En el
caso de una constante no tiene sentido crear un nuevo lugar de memoria por cada
Torres, Tapia
9. Proyecto Final de Programación I Y UTILITARIOS i
objeto de una clase que se cree. Por ello es adecuado el uso de la palabra clave
static. Cuando usamos “static final” se dice que creamos una constante de clase,
un atributo común a todos los objetos de esa clase. [Alex Rodríguez]
5 MARCO METODOLÓGICO
Análisis de resultados
Ventana Inicio
1. Inicio
2. Mostrar “ Ingrese su nombre”
3. Leer --> Nombredeljugador
4. Mostrar “ Ingrese su edad”
5. Leer --> edades
6. Clic botón btnMenuJuego
7. Si nombredeljugador <0 && edades <0 entonces
8. Si edad<=2 entonces
9. Si edades ==0 || edades <9 entonces
10. Mostrar "Ingresa una edad valida entre 9 Y 15"
11. Caso contrario
12. Si edades>8 && edades<13
13. Mostrar "EL EXITO ES JUGAR Y APRENDER CUANDO ERES NIÑO,
DISFRUTA EL JUEGO"
14. Visualiza VentanaMenu
15. Oculta VentanaInicio
16. Caso contrario
17. Si edades<16
18. Mostrar "JOVEN ERES EL FUTURO DE LA PATRIA, DISFRUTA EL
JUEGO"
19. Visualiza VentanaMenu
Torres, Tapia
10. Proyecto Final de Programación I Y UTILITARIOS i
20. Oculta VentanaInicio
21. Caso contrario
22. Mostrar "INGRESA UNA EDAD VALIDA ENTRE 9 Y 15"
23. Caso contrario
24. Mostrar “INGRESA UNA EDAD DE DOS DIGITOS COMO MAXIMO"
25. Caso contrario
26. Mostrar "LLENA TODOS LOS CAMPOS"
27. Fin_Si
28. Fin_Si
29. Fin_Si
30. Fin_Si
31. Fin_Si
32. Fin_Si
33. Fin_No
34. Fin_No
35. Fin_No
36. Fin_No
37. Fin_No
38. Fin
VENTANA MENU
1. Botón visualizar las tablas
2. Inicio
3. Crear Objeto Botón
4. Objeto Botón == btnAprendeLasTablas
5. Asignar Evento Clic al botón
6. Si Clic en btnAprendeLasTablas
7. Visualizo ventanaTablas
Torres, Tapia
11. Proyecto Final de Programación I Y UTILITARIOS i
8. Ocultar ventanaMenu
9. Fin_Si
10. Fin
Botón Concepto
1. Inicio
2. Crear Objeto Botón
3. Objeto Botón == btnConceptos
4. Asignar Evento Clic al botón
5. Si Clic en btnConceptos
6. Visualizo ventanaConceptos
7. Ocultar ventanaMenu
8. Fin_Si
9. Fin
Botón Nivel Fácil
1. Inicio
2. Crear Objeto Botón
3. Objeto Botón == btnNivelFacil
4. Asignar Evento Clic al botón
5. Si Clic en btnNivelFacil
6. Visualizo ventanaJuegaRazona
7. Ocultar ventanaMenu
8. Fin_Si
9. Fin
Torres, Tapia
12. Proyecto Final de Programación I Y UTILITARIOS i
Botón Nivel Avanzado
1. Inicio
2. Crear Objeto Botón
3. Objeto Botón == btnNivelAvanzado
4. Asignar Evento Clic al botón
5. Si Clic en btnNivelAvanzado
6. Visualizo ventanaInicio
7. Ocultar ventanaMenu
8. Fin_Si
9. Fin
Botón Salir
1. Inicio
2. Crear Objeto Botón
3. Objeto Botón == btnSalir
4. Asignar Evento Clic al botón
5. Si Click en btnSAlir
6. Fin_Si
7. Fin
Botón Instrucciones
1. Inicio
2. Crear Objeto Botón
3. Objeto Botón == btnInstrucciones
4. Asignar Evento Clic al botón
Torres, Tapia
13. Proyecto Final de Programación I Y UTILITARIOS i
5. Si Clic en btnInstrucciones
6. Visualizo ventanaInicio
7. Ocultar ventanaMenu
8. Fin_Si
9. Fin
Botón Instrucciones
1. Inicio
2. Crear Objeto Botón
3. Objeto Botón == btnNuevoNombre
4. Asignar Evento Clic al botón
5. Si Click en btnNuevoNombre
6. Visualizo ventanaInicio
7. Ocultar ventanaMenu
8. Fin_Si
9. Fin
Solución
Complementar los conocimientos básicos relacionados con la
multiplicación.
En esta pantalla el usuario ingresa su nombre y su edad, da clic en el
botón inicio e ingresa al menú
Torres, Tapia
15. Proyecto Final de Programación I Y UTILITARIOS i
En esta pantalla en usuario elige una opción, encontramos:
• Instrucciones
• Conceptos
• Tablas de multiplicar
• Nuevo nombre
• Juega y razona – Nivel Fácil
• Nivel Avanzado
• Salir
Torres, Tapia
Ilustración 1: Ingreso de nombre y edad del usuario
16. Proyecto Final de Programación I Y UTILITARIOS i
En esta pantalla muestra información acerca de las tablas de multiplicar
Aquí Visualiza Las Tablas para que así pueda repasar y aprenderlas y poder
jugar.
Torres, Tapia
Ilustración 2: Elegir una opción
Ilustración 3: Concepto de la multiplicación
Ilustración 4: Aprende las tablas de multiplicar
17. Proyecto Final de Programación I Y UTILITARIOS i
Nivel avanzado, este nivel nos vota tablas de multiplicar de mas de 2
cifras
Nivel fácil, este nivel nos da multiplicaciones de solo 1 dígito.
Torres, Tapia
Ilustración 5: Nivel avanzado
Ilustración 6: Juega y Razona- Nivel facil
18. Proyecto Final de Programación I Y UTILITARIOS i
6 CONCLUSIONES
• El proyecto realizado permite aplicar nuestros conocimientos tratados en el
transcurso del semestre.
• Para la utilización de la interfaz gráfica se requiera la importación de
paquetes.
• Todo código bien estructurado se le permite aplicar un mantenimiento
colectivo rápido.
7 RECOMENDACIONES
• En presencia de errores de compilación o en tiempo de ejecución realice una
revisión secuencial, inspeccionando el código de arriba hacia abajo
• Implementar el uso convencional de documentación de todo proceso de la
aplicación.
• Utilizar la información respectiva necesaria que contiene el API de JAVA,
sobre todo si se emplea excepciones.
• Escribir código antes que copiar y pegar, pues permite ir asegurándose de
que se esta utilizando de manera correcta la sintaxis en el lenguaje de
programación.
• Implementar una interfaz amigable y así permitir hacer que la aplicación y
sus procesos sean mas intuitivos.
• Almacenar y visualizar la información del usuario de la aplicación,
permitiendo observar avances que se consigue con la practica, estimulando
de esta forma la superación y competitividad; Ademas de respaldo de
información ingresada en la aplicación.
Torres, Tapia
19. Proyecto Final de Programación I Y UTILITARIOS i
8 REFERENCIAS BIBLIOGRÁFICAS
[Javier Ovejero Sánchez]
[Alex Rodríguez]
9 ANEXOS.
Código fuente del programa
Ventana Inicial
final JTextField nombre = new JTextField();
final JTextField edad = new JTextField();
ventanaInicio.setSize(800, 359);
ventanaInicio.setVisible(true);
ventanaInicio.setResizable(false);
ventanaInicio.setLayout(null);
ventanaInicio.setLocationRelativeTo(null);
ventanaInicio.setIconImage(Toolkit.getDefaultToolkit().getImage(TablasDeMultiplicar.cla
ss.getResource("/imagenes/icono.jpg")));
ventanaInicio.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton btnMenuJuego = new JButton("Menu de Juego");
btnMenuJuego.setForeground(Color.WHITE);
btnMenuJuego.setFont(new Font("Broadway", Font.PLAIN, 20));
btnMenuJuego.setBackground(new Color(30, 144, 255));
btnMenuJuego.setBounds(300, 270, 200, 50);
btnMenuJuego.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if(edad.getText().length()>0 && nombre.getText().length()>0){
if(edad.getText().length()<=2){
int edades = Integer.parseInt(edad.getText());
if (edades ==0 || edades <9) {
JOptionPane.showMessageDialog(TablasDeMultiplicar.ventanaInicio,"INGRESA UN EDAD
VALIDA ENTRE 9 Y 15", "CRISVAN MENSAJE", JOptionPane.WARNING_MESSAGE);
} else {
if(edades>8 && edades<13){
JOptionPane.showMessageDialog(TablasDeMultiplicar.ventanaInicio, "EL EXITO ES
JUGAR Y APRENDER CUANDO ERES NIÑO, DISFRUTA EL JUEGO", "CRISVAN MENSAJE",
JOptionPane.INFORMATION_MESSAGE);
ventanaMenu.setVisible(true);
ventanaInicio.setVisible(false);
Torres, Tapia
20. Proyecto Final de Programación I Y UTILITARIOS i
nombreJuegador = nombre.getText();
}
else{
if (edades<16) {
JOptionPane.showMessageDialog(TablasDeMultiplicar.ventanaInicio, "JOVEN ERES EL
FUTURO DE LA PATRIA, DISFRUTA EL JUEGO", "CRISVAN MENSAJE",
JOptionPane.INFORMATION_MESSAGE);
ventanaMenu.setVisible(true);
ventanaInicio.setVisible(false);
nombreJuegador = nombre.getText();
}
else{
JOptionPane.showMessageDialog(TablasDeMultiplicar.ventanaInicio, "INGRESA UNA
EDAD VALIDA ENTRE 9 Y 15", "CRISVAN MENSAJE", JOptionPane.WARNING_MESSAGE);
}
}
}
}
else{
JOptionPane.showMessageDialog(TablasDeMultiplicar.ventanaInicio, "INGRESA UNA
EDAD DE DOS DIGITOS COMO MAXIMO", "ADVERTENCIA...!", JOptionPane.WARNING_MESSAGE);
}
}
else{
JOptionPane.showMessageDialog(TablasDeMultiplicar.ventanaInicio, "LLENA TODOS LOS
CAMPOS", "ADVERTENCIA...!", JOptionPane.WARNING_MESSAGE);
}
}
});
ventanaInicio.add(btnMenuJuego);
nombre.setBounds(90, 100, 300, 30);
nombre.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent e) {
char c = e.getKeyChar();
if((c<'A' || c>'Z') && (c<'a' || c>'z')
&& (c!=(char)KeyEvent.VK_SPACE))
{
e.consume();
}
}
});
ventanaInicio.add(nombre);
edad.setBounds(90, 200, 300, 30);
edad.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent e) {
char caracter = e.getKeyChar();
if(((caracter < '0') ||
(caracter > '9')) &&
Torres, Tapia
21. Proyecto Final de Programación I Y UTILITARIOS i
(caracter != KeyEvent.VK_BACK_SPACE))
{
e.consume();
}
}
});
ventanaInicio.add(edad);
JLabel lblTextoEdad = new JLabel("Ingresa tu edad");
lblTextoEdad.setForeground(Color.WHITE);
lblTextoEdad.setFont(new Font("Broadway", Font.PLAIN, 20));
lblTextoEdad.setBounds(90, 150, 300, 45);
ventanaInicio.add(lblTextoEdad);
JLabel lblTextoNombre = new JLabel("Ingresa tu nombre");
lblTextoNombre.setForeground(Color.WHITE);
lblTextoNombre.setFont(new Font("Broadway", Font.PLAIN, 20));
lblTextoNombre.setBounds(90, 45, 300, 45);
ventanaInicio.add(lblTextoNombre);
JLabel lblTextoBienvenido = new JLabel("BIENVENIDO");
lblTextoBienvenido.setForeground(Color.WHITE);
lblTextoBienvenido.setFont(new Font("Broadway", Font.PLAIN, 25));
lblTextoBienvenido.setBounds(325, 0, 300, 50);
ventanaInicio.add(lblTextoBienvenido);
JLabel lblFondoVentaniaInicio = new JLabel();
lblFondoVentaniaInicio.setBounds(0,0,800, 359);
lblFondoVentaniaInicio.setIcon(new
ImageIcon(TablasDeMultiplicar.class.getResource("/imagenes/inicio.jpg")));
ventanaInicio.add(lblFondoVentaniaInicio);
Ventana Menu
ventanaMenu.setSize(898, 562);
ventanaMenu.setVisible(false);
ventanaMenu.setResizable(false);
ventanaMenu.setLayout(null);
ventanaMenu.setLocationRelativeTo(null);
ventanaMenu.setIconImage(Toolkit.getDefaultToolkit().getImage(TablasDeMultiplicar.class
.getResource("/imagenes/icono.jpg")));
ventanaMenu.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
JButton btnAprendeLasTablas = new JButton("Tablas de Multiplicar");
btnAprendeLasTablas.setForeground(Color.WHITE);
btnAprendeLasTablas.setFont(new Font("Broadway", Font.PLAIN, 12));
btnAprendeLasTablas.setBounds(30, 350, 200, 50);
btnAprendeLasTablas.setBackground(new Color(30, 144, 255));
btnAprendeLasTablas.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
ventanaTablas.setVisible(true);
ventanaMenu.setVisible(false);
Torres, Tapia