elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Creando un programa para controlar faltas de asistencia (Curso)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Creando un programa para controlar faltas de asistencia (Curso)  (Leído 8,144 veces)
Yunkito

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Creando un programa para controlar faltas de asistencia (Curso)
« en: 1 Septiembre 2013, 00:29 am »

Hola muy buenas que tal.
Os explico un poco lo que estoy haciendo. Resulta que nos han puesto como ejercicio que en un par de dias expongamos cada uno un programa, yo he pensado en hacer un programa para controlar las faltas de asistencia.

Creia que seria un poco mas facil pero creo que me he complicado yo mismo o me he saturado. jeje, que tambien suele pasar con esto.

Os expongo un poco lo que estoy haciendo o trato de hacer.

La idea como he dicho es crear un programa o app que controle las faltas de asistencia de un sitio determinado.

Una cosa basica, con estas opciones:

Añadir Faltas, Borrar Faltas (En caso de que sean justificadas o se hubiesen puesto por error), Mostrar Faltas (Mostras todas las faltas de todas las personas), Resetear Faltas.

Mas o menos eso es lo que quiero hacer y se que tampoco es muy complicado para los conocimientos que ya tengo. Pero muchas veces me atasco en cosas que tampoco tienen tanta dificultad y ya no se salir. Sera porque no lo enfoco bien o se puede hacer de otra manera mas facil o no lo se.

He hecho lo siguiente:

Código
  1.  
  2. import java.awt.Container;
  3.  
  4. import javax.swing.JFrame;
  5.  
  6. import java.awt.FlowLayout;
  7. import java.awt.GridLayout;
  8. import java.awt.Container;
  9.  
  10.  
  11. public class principal extends JFrame {
  12.  
  13. panelanadirfaltas anadirfaltas; // Creamos estos objetos una vez creadas las clases (tipo nombre). Definicimos los tres Atributos
  14. panelborrarfaltas borrarfaltas;
  15. panelfaltastotales faltastotales;
  16. String (((((AQUI VAN LOS NOMBRES DE LAS PERSONAS DEL CURSO)))))
  17.  
  18. principal (){  //CREAMOS EL CONSTRUCTOR
  19. super ("Falteitor 1.0");  //Nombre de la Aplicacion
  20. setBounds(200, 200, 200, 200); // Tamaño de la ventana
  21. setVisible(true); // Hacemos Visible la ventana, por defecto viene "invisible"
  22. setResizable(false); // Con ese metodo no podemos cambiar el tamaño de la ventana
  23.  
  24. Container contentpane = getContentPane();
  25. contentpane.setLayout (new GridLayout(3,3)); //Cremos el aspecto del panel, con tres columnas y tres filas
  26.  
  27. // Inicializamos los atributos
  28. anadirfaltas = new panelanadirfaltas();
  29. borrarfaltas = new panelborrarfaltas();
  30. faltastotales = new panelfaltastotales();
  31.  
  32. contentpane.add(anadirfaltas);
  33. contentpane.add(borrarfaltas);
  34. contentpane.add(faltastotales);
  35.  
  36.  
  37.  
  38. }
  39.  
  40.  
  41.  
  42. public static void main (String []args){ // Creamos esta clase para inicializar la ventana
  43.  
  44. principal ventana = new principal();
  45.  
  46.  
  47. }
  48.  
  49. }
  50. [/quote]
  51.  
  52. Clase para Añadir Faltas:
  53.  
  54. [quote]
  55. import java.awt.Color;
  56. import java.awt.FlowLayout;
  57. import java.awt.event.ActionEvent;
  58. import java.awt.event.ActionListener;
  59. import javax.swing.JButton;
  60. import javax.swing.JPanel;
  61.  
  62.  
  63. public class panelanadirfaltas extends JPanel implements ActionListener {
  64.  
  65. JButton boton1;
  66.  
  67. panelanadirfaltas(){
  68. this.setBackground(Color.red);
  69.  
  70. FlowLayout layout = new FlowLayout();
  71. layout.setHgap(20);
  72. setLayout (layout);
  73.  
  74. boton1 = new JButton();
  75.  
  76. add(boton1);
  77.  
  78. }
  79.  
  80.  
  81. public void actionPerformed(ActionEvent e) {
  82.  
  83.  
  84. }
  85.  
  86. }
  87.  

Y aqui es donde me he quedado pillado. Ahora en la ultima linea tengo que poner que quiero que haga el boton cuando le doy. Supuestamente ese metodo escucha lo que quiero hacer con clickee en el boton que deberia poner alli?

Porque lo que quiero es que se me habra otro panel y salga un JTextField y que el usuario introduzca un nombre y a ese nombre le sume 1.

Hay cosas que si se, pero no se como hacer que se le sume 1 al nombre de los 15 o 20 que hay. Estaria bien echo con un Case?





« Última modificación: 3 Septiembre 2013, 11:01 am por Debci » En línea

Zoik

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: Creando un programa para controlar faltas de asistencia (Curso)
« Respuesta #1 en: 1 Septiembre 2013, 11:14 am »

A continuación del botón ponle:

Código
  1. boton1.addActionListener(this);

En el método que recoge los eventos le pones:

Código
  1. if(e.getSource() == boton1){
  2. // Código que quieres ejecutar al pulsar ese botón
  3. }

Yo en tu lugar haría una class tipo alumno y allí estipularia sus datos.
Dime si te sirve.
Un saludo.


« Última modificación: 1 Septiembre 2013, 11:35 am por Zoik » En línea

Yunkito

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Creando un programa para controlar faltas de asistencia (Curso)
« Respuesta #2 en: 2 Septiembre 2013, 14:44 pm »

Muchas gracias Zoik.

Todo eso ya lo hice y va perfecto pero el problema esta en que no se que poner despues del ActionListener para que me muestre un nuevo Panel, o que me muestre una pantalla en la que pueda poner un nombre y darle a un boton que sume 1 a el nombre que yo ponga.

Codigo
Citar
public void actionPerformed(ActionEvent e) {
   if (e.getSource() == anadirfaltas){
       JLabel texto = new JLabel("Introduzca Nombre");
       add(texto);
      
   }

Un saludo y gracias.
En línea

Zoik

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: Creando un programa para controlar faltas de asistencia (Curso)
« Respuesta #3 en: 2 Septiembre 2013, 18:45 pm »

Bueno a ver, lo ideal a mi parecer no sería introducir un nombre y que le ponga falta, lo que estaría bien sería, mostrar una JTable con todos los nombres de la clase y a raíz de hay poner al lado de cada nombre un JCheckBox, para ir marcando los alumnos que han "faltado", al acabar darle al botón aceptar y se le sumaría una falta a cada alumno con el JCheckBox marcado, no se si me e explicado.

Bien, sabiendo esto,estaría bien que al darle a tu botón, se abriese una ventana con dicha tabla, para ello normalmente se utiliza un JDialog.

Código
  1. /*
  2.  * Autor: Zoik
  3.  */
  4. public class Main {
  5.  
  6. public static void main(String[] args) {
  7. new Gui();
  8. }
  9.  
  10. }
  11.  

Código
  1. /*
  2.  * Autor: Zoik
  3.  */
  4. import java.awt.BorderLayout;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.util.ArrayList;
  8.  
  9. import javax.swing.JButton;
  10. import javax.swing.JDialog;
  11. import javax.swing.JFrame;
  12. import javax.swing.JScrollPane;
  13. import javax.swing.JTable;
  14. import javax.swing.table.DefaultTableModel;
  15. import javax.swing.table.TableColumn;
  16.  
  17. public class Gui extends JFrame implements ActionListener{
  18.  
  19. private static final long serialVersionUID = 1L;
  20. private JButton boton = new JButton("Pulsame!");
  21. private JDialog pasarLista = new JDialog();
  22. private DefaultTableModel model = new DefaultTableModel(){
  23. private static final long serialVersionUID = 1L;
  24. public boolean isCellEditable(int row, int col){
  25. if(col == 2){
  26. return true;
  27. }
  28. return false;
  29. }
  30. };
  31. private JTable tabla = new JTable(model);
  32. private JScrollPane pane = new JScrollPane(tabla);
  33. private JButton botonAceptar = new JButton("Aceptar");
  34. private ArrayList<Alumno> alumnos = new ArrayList<Alumno>();
  35. private final int columnas = 3;
  36. private TableColumn tableColumn;
  37.  
  38. public Gui(){
  39. setSize(200,200);
  40. setLocationRelativeTo(null);
  41. setDefaultCloseOperation(EXIT_ON_CLOSE);
  42. setVisible(true);
  43. add(boton);
  44. boton.addActionListener(this);
  45. defineTable();
  46. agregarAlumnos();
  47. }
  48.  
  49. public void agregarAlumnos(){ // Este método lo agrego para que veas como darías de alta alumnos, hay dos formas
  50.  
  51. alumnos.add(new Alumno("Pepe","Benito","Fraguas")); // Hacerlo todo directamente pasandole por parámetro al constructor sobrecargado lo que tiene que asignarles a las variables
  52.  
  53. alumnos.add(new Alumno());
  54. alumnos.get(1).setNombre("Juan");
  55. alumnos.get(1).setPrimerApellido("Armando"); // No pasarle nada por constructor y hacerlo a mano con los métodos de la calss Alumno
  56. alumnos.get(1).setSegundoApellido("No se que poner");
  57.  
  58. }
  59.  
  60. public void actionPerformed(ActionEvent e) {
  61. if(e.getSource() == boton){
  62. definePasarLista();
  63. addRow();
  64. } else if(e.getSource() == botonAceptar){
  65. int rowsCount = model.getRowCount();
  66. for(int i = 0; i < rowsCount; i++){
  67. if(((Boolean) tabla.getValueAt(i, 2)).booleanValue() == true){
  68. alumnos.get(i).addFalta();
  69. }
  70. }
  71. /*for(int i = 0; i < rowsCount; i++){
  72. System.out.println(alumnos.get(i).getNombre()+" - "+alumnos.get(i).getFaltas()); //Con esto compruebas al darle a aceptar, las faltas que tienen todos en consola.
  73. }*/
  74. pasarLista.dispose();
  75. }
  76.  
  77. }
  78.  
  79. public void defineTable(){
  80. model.addColumn("Nombre");
  81. model.addColumn("Apellidos");
  82. model.addColumn("Falta");
  83. tableColumn = tabla.getColumnModel().getColumn(2);
  84. tableColumn.setCellEditor(tabla.getDefaultEditor(Boolean.class));  
  85. tableColumn.setCellRenderer(tabla.getDefaultRenderer(Boolean.class));
  86. }
  87.  
  88. public void addRow(){
  89. Object [] data = new Object[columnas];
  90. int size = alumnos.size();
  91. int rowsCount = model.getRowCount();
  92. for(int i = 0; i < rowsCount; i++){
  93. model.removeRow(0);
  94. }
  95. for(int i = 0; i < size; i++){
  96. data[0] = alumnos.get(i).getNombre();
  97. data[1] = alumnos.get(i).getPrimerApellido()+ " " +alumnos.get(i).getSegundoApellido();
  98. data[2] = false;
  99. model.addRow(data);
  100. }
  101. }
  102.  
  103. public void definePasarLista(){
  104. pasarLista.setTitle("Pasar Lista");
  105. pasarLista.setSize(800,800);
  106. pasarLista.setLocationRelativeTo(null);
  107. pasarLista.setLayout(new BorderLayout());
  108. pasarLista.setVisible(true);
  109. pasarLista.add(pane, BorderLayout.CENTER);
  110. pasarLista.add(botonAceptar, BorderLayout.SOUTH);
  111. botonAceptar.addActionListener(this);
  112. }
  113.  
  114. }
  115.  

Código
  1. /*
  2.  * Autor: Zoik
  3.  */
  4. public class Alumno {
  5.  
  6. private String nombre,primerApellido,segundoApellido;
  7. private int faltas = 0;
  8.  
  9. public Alumno(){
  10.  
  11. }
  12.  
  13. public Alumno(String nombre, String primerApellido, String segundoApellido){
  14. this.nombre = nombre;
  15. this.primerApellido = primerApellido;
  16. this.segundoApellido = segundoApellido;
  17. }
  18.  
  19. public void setNombre(String value){
  20. nombre = value;
  21. }
  22.  
  23. public void setPrimerApellido(String value){
  24. primerApellido = value;
  25. }
  26.  
  27. public void setSegundoApellido(String value){
  28. segundoApellido = value;
  29. }
  30.  
  31. public String getNombre(){
  32. return nombre;
  33. }
  34.  
  35. public String getPrimerApellido(){
  36. return primerApellido;
  37. }
  38.  
  39. public String getSegundoApellido(){
  40. return segundoApellido;
  41. }
  42.  
  43. public void addFalta(){
  44. faltas++;
  45. }
  46.  
  47. public void removeFalta(){
  48. faltas--;
  49. }
  50.  
  51. public int getFaltas(){
  52. return faltas;
  53. }
  54. }
  55.  

Lo e hecho suponiendo que ya tienes lo anterior hecho, obviamente no pondrías únicamente un botón al abrir la aplicación. Si quieres hacer interfaces rápido, NetBeans está genial con su bonito drag and drop, si quieres aprender mucho yo recomiendo Eclipse, yo empece con el y  no me e separado nunca, no vayas al lado oscuro  :o.

Un saludo y ya comentaras que tal te a ido.
« Última modificación: 2 Septiembre 2013, 18:57 pm por Zoik » En línea

Yunkito

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Creando un programa para controlar faltas de asistencia (Curso)
« Respuesta #4 en: 2 Septiembre 2013, 21:05 pm »

Muy buenas de nuevo Zoik y muchas gracias por dedicarme un poco de tu tiempo en decirme como van las cosas, de verdad que te lo agradecezco muchisimo.

He copiado el programa y lo he echado andar haciendo unas cuantas modificaciones. Y es una cosa basica tal y como queria, el poder agregar faltas a los alumnos de una clase.

He metido los alumnos (dar de alta) manuales por el primer metodo que pones ya que es mas rapido y tiene menos lineas de codigo.

Hay algunas cosas que no entiendo, si me pongo a enumerartelas te volveria loco, pero para eso esta internet para ver que siginifica y que hace cada cosa, con mis conocimientos y el codigo que hay alrededor de esas cosas que no entiendo seguro que sabre lo que es.

Lo que si nose es lo siguiente. He echo andar el programa y lo he ejecutado desde el pc como si estuviese terminado para ver la muestra de las faltas. Y si me las muestra por consola, pero para verlas por PC cuando la aplicacion este terminada como lo hago?
Nunca he terminado una aplicacion y nose como se hace.

Un saludo y muchisimas gracias nuevamente Zoik ;)


Por cierto mis inicios fueron con NetBeans ;) y ya me quedo con eclipse que llevo poco tiempo probando. Me gusta mas. Asi que aqui me quedo.
En línea

Zoik

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: Creando un programa para controlar faltas de asistencia (Curso)
« Respuesta #5 en: 2 Septiembre 2013, 21:31 pm »

Bueno puedes hacerlo de muchas maneras distintas, la idea sería coger otro JTable distinto y printar todos los alumnos, y en vez de tener el JCheckBox para poner faltas le pones el número de faltas que tiene cada alumno con el método de getFaltas(), con el código que te e pasado tendría que ser muy fácil hacer esta parte.

PD: Cuando tengas mas tiempo si veo que no tiras ya te posteo código, pero primero intentalo buscando en internet.

Un saludo.
En línea

Yunkito

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Creando un programa para controlar faltas de asistencia (Curso)
« Respuesta #6 en: 2 Septiembre 2013, 21:39 pm »

Ok Zoik muchas gracias otra vez!!!!

No te preocupes que llevo todo el dia rompiendome el coco buscando cosas, si molesto es porque ya le he dado muchas vueltas jejeje.

En el momento que saque algo en claro te comento.

Un saludo y gracias nuevamente, no me cansare de dartelas!! :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Creando un Videojuego <Curso> « 1 2 3 4 5 »
Programación General
Isirius 49 32,564 Último mensaje 15 Febrero 2012, 01:32 am
por anonimo12121
Programa para controlar el PC con gamepad
Programación C/C++
Kherom 0 3,203 Último mensaje 15 Mayo 2010, 02:33 am
por Kherom
Programa para controlar la activadad en C++
Programación C/C++
malospelosmalon 0 2,537 Último mensaje 15 Julio 2011, 09:59 am
por malospelosmalon
solicitud de asistencia para trabajo solidario.
Desarrollo Web
magnotecx 1 1,896 Último mensaje 26 Agosto 2013, 21:53 pm
por 1mpuls0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines