581
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Re: java ayuda con este programa
« en: 29 de Noviembre 2020, 02:42 »
Sí.
Vamos a tener 3 clases: Actividad, Evento y MenuEventos.
Cada clase será un archivo .java separado.
Es decir, tu proyecto ha de tener tres archivos: Actividad.java, Evento.java y MenuEventos.java.
No se si estás usando algún IDE como NetBeans, Eclipse, etc... Pero la estructura del proyecto viene a ser igual en todos.
Estos tres archivos deberían estar dentro de lo que se llama un package, es decir dentro de un directorio.
Puedes llamarlo como quieras, yo lo he llamado actividadesYeventos
Este package estaría dentro de la carpeta src de tu proyecto.
Te muestro foto de la estructura de mi proyecto Java, que en mi caso se llama "Varios" porque tengo varios packages con distintos programas.

MenuEventos es la clase principal, la que tiene el método main() que pone en marcha el programa y además tendrá los métodos para hacer funcionar cada opción del menú, que iremos añadiendo poco a poco.
Según añadimos nuevas funcionalidades al programa, vamos a tener que ir modificando las tres clases para añadirles nuevos métodos que hagan posible esas funcionalidades.
El código de estas clases que puse al principio solo tenía lo básico, según avanzamos en el programa su código irá aumentando.
Ahora mismo, las clases deberían estar así.
Actividad
Evento
MenuEventos
Vamos a tener 3 clases: Actividad, Evento y MenuEventos.
Cada clase será un archivo .java separado.
Es decir, tu proyecto ha de tener tres archivos: Actividad.java, Evento.java y MenuEventos.java.
No se si estás usando algún IDE como NetBeans, Eclipse, etc... Pero la estructura del proyecto viene a ser igual en todos.
Estos tres archivos deberían estar dentro de lo que se llama un package, es decir dentro de un directorio.
Puedes llamarlo como quieras, yo lo he llamado actividadesYeventos
Este package estaría dentro de la carpeta src de tu proyecto.
Te muestro foto de la estructura de mi proyecto Java, que en mi caso se llama "Varios" porque tengo varios packages con distintos programas.

MenuEventos es la clase principal, la que tiene el método main() que pone en marcha el programa y además tendrá los métodos para hacer funcionar cada opción del menú, que iremos añadiendo poco a poco.
Según añadimos nuevas funcionalidades al programa, vamos a tener que ir modificando las tres clases para añadirles nuevos métodos que hagan posible esas funcionalidades.
El código de estas clases que puse al principio solo tenía lo básico, según avanzamos en el programa su código irá aumentando.
Ahora mismo, las clases deberían estar así.
Actividad
Código: [Seleccionar]
package actividadesYeventos;
public class Actividad {
private String nombre;
private String expositor;//Persona que expone
private String hora;
private int participantes;
/*
* Constructor sin parámetros.
* Con esto nos aseguramos de que al construir
* un objeto Actividad, no tendremos atributos
* con valor null
*/
public Actividad() {
nombre = "";
expositor = "";
hora = "";
participantes = 0;
}
/*
* Constructor con parámetros.
* El objeto se construye recibiendo los valores
* que vamos a asignar a los atributos.
*/
public Actividad(String nombreActiv, String nombreExpos, String horaActiv, int numParticipan) {
nombre = nombreActiv;
expositor = nombreExpos;
hora = horaActiv;
participantes = numParticipan;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombreActiv) {
nombre = nombreActiv;
}
public String getExpositor() {
return expositor;
}
public void setExpositor(String nombreExpos) {
expositor = nombreExpos;
}
public String getHora() {
return hora;
}
public void setHora(String horaActiv) {
hora = horaActiv;
}
public int getParticipantes() {
return participantes;
}
public void setParticipantes(int numParticipan) {
participantes = numParticipan;
}
@Override
public String toString() {
return "\n\t\t----------------\nNombre de ACTIVIDAD: " + nombre
+ "\nExpositor: " + expositor
+ "\nHora: " + hora + "\nParticipantes: " + participantes
+ "\n\t\t----------------\n";
}
}
Evento
Código: [Seleccionar]
package actividadesYeventos;
public class Evento {
private String nombre;
private String fecha;
private String organizador;
private String facultad;
private String tema;
//Salones de Actividades
private Actividad[] salones;
public Evento() {
nombre = "";
fecha = "";
organizador = "";
facultad = "";
tema = "";
salones = new Actividad[0]; //Contructor por defecto implica tener 0 salones.
}
public Evento(String nombreEven, String fechaEven, String organizaEven,
String facultadEven, String temaEven, int numSalones) {
nombre = nombreEven;
fecha = fechaEven;
organizador = organizaEven;
facultad = facultadEven;
tema = temaEven;
salones = new Actividad[numSalones]; //Al construir un evento, nos dirán cuantos salones tendrá
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombreEven) {
nombre = nombreEven;
}
public String getFecha() {
return fecha;
}
public void setFecha(String fechaEven) {
fecha = fechaEven;
}
public String getOrganizador() {
return organizador;
}
public void setOrganizador(String organizaEven) {
organizador = organizaEven;
}
public String getFacultad() {
return facultad;
}
public void setFacultad(String facultadEven) {
facultad = facultadEven;
}
public String getTema() {
return tema;
}
public void setTema(String temaEven) {
tema = temaEven;
}
public void setNumSalones(int numSalones) {
salones = new Actividad[numSalones];
}
public void mostrarProgramacion() {
//Es posible que no hayan salones asignados.
if (salones.length == 0)
System.out.println("\nEste EVENTO no tiene salones de ACTIVIDADES asignados");
else {
/*
* Sí hay salones asignados, pero puede que aun no hayan actividades.
* Si TODAS las posiciones del array de Actividad tienen valor null,
* es que no hay actividades programadas.
*/
boolean hayActividades = false;//Si encontramos al menos 1 actividad, pasará a true
for (int i = 0; i < salones.length; i++) {
if (salones[i] != null) {
hayActividades = true; //Sí que hay actividades programadas
System.out.println("\nNº de Salón: " + i);
System.out.println(salones[i]);//Mostramos datos de la Actividad
}
}
/*
* Terminado el bucle FOR, si la variable hayActividades
* conserva valor FALSE, es que no hay actividades
* programadas en este Evento y lo indicamos en pantalla.
*/
if (!hayActividades)
System.out.println("\nAún no se han programado ACTIVIDADES para este EVENTO");
}
}
}
MenuEventos
Código: [Seleccionar]
package actividadesYeventos;
import java.util.ArrayList;
import java.util.Scanner;
public class MenuEventos {
//Aquí se almacenarán los Eventos
private static ArrayList<Evento> eventos = new ArrayList<Evento>();
//Objeto Scanner para leer datos por teclado
private static Scanner teclado = new Scanner(System.in);
public static void main(String[] args) {
crearEventosPorDefecto(); //Invocamos método que nos proporciona dos eventos.
String opcion = "";//Variable para recoger opcion del usuario
do {
System.out.println("\n\t\tMENU EVENTOS");
System.out.println("\t\t---- -------\n");
System.out.println("[1] - Crear nuevo EVENTO");
System.out.println("[2] - Crear nueva ACTIVIDAD");
System.out.println("[3] - Mostrar ACTIVIDAD con mayor número de participantes");
System.out.println("[4] - Mostrar ACTIVIDAD con menor número de participantes");
System.out.println("[5] - Mostrar total participantes de un EVENTO");
System.out.println("[6] - Mostrar ACTIVIDADES ordenadas de mayor a menos número de participantes");
System.out.println("[7] - Consultar ACTIVIDADES de un expositor");
System.out.println("[8] - Mostrar programación de un EVENTO");
System.out.println("\n[0] - SALIR del programa");
System.out.print("\nEscoja opción: ");
opcion = teclado.nextLine();
//Evaluamos opcion escogida
switch(opcion) {
case "0":
System.out.println("\n\t\t--FIN DE PROGRAMA--");
break;
case "1":
System.out.println("\nEn construccion...");
break;
case "2":
System.out.println("\nEn construccion...");
break;
case "3":
System.out.println("\nEn construccion...");
break;
case "4":
System.out.println("\nEn construccion...");
break;
case "5":
System.out.println("\nEn construccion...");
break;
case "6":
System.out.println("\nEn construccion...");
break;
case "7":
System.out.println("\nEn construccion...");
break;
case "8":
mostrarActividadesEvento();
break;
default:
System.out.println("\nOpción no válida...");
}
pausa();
} while(!opcion.equals("0"));
}
/*
* Sencillo método que pausa la ejecución del programa
* hasta que el usuario pulse ENTER/INTRO
*/
private static void pausa() {
System.out.println("\nPulse ENTER para seguir...\n");
teclado.nextLine();
}
/*
* Crearemos dos eventos via código para que el
* programa comience con algunos datos con los
* que trabajar
*/
private static void crearEventosPorDefecto() {
/*
* Recordamos que un evento tiene los atributos:
* nombre, fecha, organizador, facultad que organiza,
* temática y salones disponibles para actividades
*/
Evento tecnotic = new Evento("Tecnotic", "03/02/2021", "Ismael Clemente",
"MIT Club of Spain", "IA aplicada en operaciones bursátiles", 5);
Evento softhard = new Evento("Softhard", "14/03/2021", "ParqueSoft",
"Universidad Antonio Jose Camacho", "Software Libre en Seguridad Informática", 3);
//Eventos creados, los agregamos al ArrayList que los almacena
eventos.add(tecnotic);
eventos.add(softhard);
}
/*
* Muestra al usuario los Eventos disponibles para que
* elija uno y saldrá en pantalla sus Actividades programadas,
* si es que las tiene.
*/
private static void mostrarActividadesEvento() {
System.out.println("\nEVENTOS disponibles:");
for (int i = 0; i < eventos.size(); i++) {
System.out.println(i + " - " + eventos.get(i).getNombre());
}
System.out.print("\nSeleccione nº de EVENTO: ");
int num = Integer.parseInt(teclado.nextLine());
/*
* Con try catch, podemos capturar la posible
* excepción que podría ocurrir si el usuario
* nos da una posición que no existe en el ArrayList
* y así obraremos en consecuencia.
*/
try {
eventos.get(num).mostrarProgramacion();
} catch(IndexOutOfBoundsException ex) {
System.out.println("Selección equivocada...");
}
}
}