1
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Re: Programa Java para hacer un Calendario de exámenes para una Universidad
« en: 15 de Enero 2025, 20:55 »
Hola Gustavo.
Un poco enrevesado este ejercicio.
Quizás si empezamos a definir algunas clases se vayan clarificando las cosas.
A ver, nos dicen que hay Grupos con 5 Materias, y cada Materia consta de 4 examenes, tres parciales y un ordinario.
La clase Materia podría componerse de un String para el nombre y de 4 booleans que representen los exámenes y así con false/true se puede saber que exámenes se han realizado y cuáles no.
Y un Grupo podría componerse de un String para el nombre, un int para saber cuántos alumnos compone dicho grupo, y un array para las 5 Materias
Luego nos dicen que hay 8 Licenciaturas que se componen de 10 Semestres.
Cada Semestre tiene un número de Grupos, que puede ser distinto de un semestre a otro.
La clase Semestre podría componerse entonces de un ArrayList al que podamos ir añadiendo Grupos
Y una Licenciatura tendría un nombre y un array de 10 Semestres:
Todas estas clases son provisionales. Luego según las necesidades del programa se puede añadir más código, reescribir por completo, desechar por no ser necesarias, etc...
De momento son algo con lo que poder empezar y definir algunos conceptos.
Quizás lo siguiente sería pensar en las Salas de Computo y sobre todo pensar cuál sería la mecánica ideal a la hora de asignar una sala a un grupo, como controlar que haya espacio suficiente, que pasa si sobra espacio en una sala, que pasa si parte de un grupo no cabe y hay que asignar unos pocos alumnos a otra sala...
O sea, que una sala, en una hora concreta, puede contener uno o más grupos.
Y un grupo, para una hora concreta, puede tener asignada una o más salas...
No es fácil decidir como relacionar unas clases con otras para gestionar esto...
A mi se me ha acabado el tiempo por hoy..., a ver si a ti se te ocurre alguna idea la respecto.
Un saludo.
Un poco enrevesado este ejercicio.
Quizás si empezamos a definir algunas clases se vayan clarificando las cosas.
A ver, nos dicen que hay Grupos con 5 Materias, y cada Materia consta de 4 examenes, tres parciales y un ordinario.
La clase Materia podría componerse de un String para el nombre y de 4 booleans que representen los exámenes y así con false/true se puede saber que exámenes se han realizado y cuáles no.
Código: [Seleccionar]
public class Materia {
private String nombre;
private boolean parcial1, parcial2, parcial3, ordinario;
public Materia(String nombre) {
this.nombre = nombre;
//false indica que los examenes aún no se han realizado
parcial1 = false;
parcial2 = false;
parcial3 = false;
ordinario = false;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public boolean isParcial1() {
return parcial1;
}
public void setParcial1(boolean parcial1) {
this.parcial1 = parcial1;
}
public boolean isParcial2() {
return parcial2;
}
public void setParcial2(boolean parcial2) {
this.parcial2 = parcial2;
}
public boolean isParcial3() {
return parcial3;
}
public void setParcial3(boolean parcial3) {
this.parcial3 = parcial3;
}
public boolean isOrdinario() {
return ordinario;
}
public void setOrdinario(boolean ordinario) {
this.ordinario = ordinario;
}
}
Y un Grupo podría componerse de un String para el nombre, un int para saber cuántos alumnos compone dicho grupo, y un array para las 5 Materias
Código: [Seleccionar]
public class Grupo {
private String nombre;
private int alumnos;
private Materia[] materias;
public Grupo(String nombre, int alumnos, Materia[] materias) {
this.nombre = nombre;
this.alumnos = alumnos;
this.materias = materias;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getAlumnos() {
return alumnos;
}
public void setAlumnos(int alumnos) {
this.alumnos = alumnos;
}
public Materia[] getMaterias() {
return materias;
}
public void setMaterias(Materia[] materias) {
this.materias = materias;
}
}
Luego nos dicen que hay 8 Licenciaturas que se componen de 10 Semestres.
Cada Semestre tiene un número de Grupos, que puede ser distinto de un semestre a otro.
La clase Semestre podría componerse entonces de un ArrayList al que podamos ir añadiendo Grupos
Código: [Seleccionar]
import java.util.ArrayList;
public class Semestre {
private ArrayList<Grupo> grupos;
public Semestre() {
grupos = new ArrayList<Grupo>();
}
public void addGrupo(Grupo gru) {
grupos.add(gru);
}
public int getCantidadGrupos() {
return grupos.size();
}
}
Y una Licenciatura tendría un nombre y un array de 10 Semestres:
Código: [Seleccionar]
public class Licenciatura {
private String nombre;
private Semestre[] semestres;
public Licenciatura(String nombre) {
this.nombre = nombre;
semestres = new Semestre[10];//Una licenciatura tiene 10 semestres
for (int i = 0; i < 10; i++)
semestres[i] = new Semestre();
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public Semestre[] getSemestres() {
return semestres;
}
}
Todas estas clases son provisionales. Luego según las necesidades del programa se puede añadir más código, reescribir por completo, desechar por no ser necesarias, etc...
De momento son algo con lo que poder empezar y definir algunos conceptos.
Quizás lo siguiente sería pensar en las Salas de Computo y sobre todo pensar cuál sería la mecánica ideal a la hora de asignar una sala a un grupo, como controlar que haya espacio suficiente, que pasa si sobra espacio en una sala, que pasa si parte de un grupo no cabe y hay que asignar unos pocos alumnos a otra sala...
O sea, que una sala, en una hora concreta, puede contener uno o más grupos.
Y un grupo, para una hora concreta, puede tener asignada una o más salas...
No es fácil decidir como relacionar unas clases con otras para gestionar esto...
A mi se me ha acabado el tiempo por hoy..., a ver si a ti se te ocurre alguna idea la respecto.
Un saludo.