Autor Tema: Java código Persona, Alumno y Docente con menú Registrar, Modificar, Mostrar eje  (Leído 3697 veces)

Baltimore

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Holaaa!, soy algo nuevo dentro de la programacion y estado usando el lenguaje de Java en Netbeans.

Quisiera saber como realizar el siguiente código y lo que tendría que hacer:

1.-Capturar Alumno
2.-Capturar Docente
3.-Mostrar Datos de Alumnos
4.-Mostrar Datos de Docentes
5.-Modificar Calificacion
 

Esta es la clase padre

Código: [Seleccionar]
//Persona
public class Persona {
     String Nombre;
    int Edad;
    char Sexo;
    String CURP;
    String Domicilio;

    public Persona(String Nombre, int Edad, char Sexo, String CURP, String Domicilio) {
        this.Nombre = Nombre;
        this.Edad = Edad;
        this.Sexo = Sexo;
        this.CURP = CURP;
        this.Domicilio = Domicilio;
    }
   
    public void getDatos (){
        System.out.println("Nombre: "+ this.Nombre);
        System.out.println("Nombre: "+ this.Edad);
        System.out.println("Nombre: "+ this.Sexo);
        System.out.println("Nombre: "+ this.CURP);
        System.out.println("Nombre: "+ this.Domicilio);
    }
 public Persona(){
     
 }
    public String getNombre() {
        return Nombre;
    }

    public void setNombre(String Nombre) {
        this.Nombre = Nombre;
    }

    public int getEdad() {
        return Edad;
    }

    public void setEdad(int Edad) {
        this.Edad = Edad;
    }

    public char getSexo() {
        return Sexo;
    }

    public void setSexo(char Sexo) {
        this.Sexo = Sexo;
    }

    public String getCURP() {
        return CURP;
    }

    public void setCURP(String CURP) {
        this.CURP = CURP;
    }

    public String getDomicilio() {
        return Domicilio;
    }

    public void setDomicilio(String Domicilio) {
        this.Domicilio = Domicilio;
    }
   
        void mostrarDatos (){
           
 
        }
}



Esta es la subclase alumno

Código: [Seleccionar]
//Alumnoimport javax.swing.JOptionPane;


public class Alumno extends Persona{
    private int No_Control;
    private String Carrera;
    private int Semestre;
    private char Grupo;
    private float Promedio;
    private String Status;

   
    public Alumno(int No_Control, String Carrera, int Semestre, char Grupo, float Promedio, String Nombre, int Edad, char Sexo, String CURP, String Domicilio) {
        super(Nombre, Edad, Sexo, CURP, Domicilio);
        this.No_Control = No_Control;
        this.Carrera = Carrera;
        this.Semestre = Semestre;
        this.Grupo = Grupo;
        this.Promedio = Promedio;
       
    }
    public Alumno(){
    }
        //Alumno(int No_Control1 String Carrera1, int Semestre1, char Grupo1, float Promedio1, String Nombre1, int Edad1, char Sexo1, String CURP1, String Domicilio1){
        //throw new UnsupportedOperationException("Not supported yet. ");
        //}
   

    public float getPromedio() {
        return Promedio;
    }

    public void setPromedio(float Promedio) {
        this.Promedio = Promedio;
    }

    public int getNo_Control() {
        return No_Control;
    }

    public void setNo_Control(int No_Control) {
        this.No_Control = No_Control;
    }

    public String getCarrera() {
        return Carrera;
    }

    public void setCarrera(String Carrera) {
        this.Carrera = Carrera;
    }

    public int getSemestre() {
        return Semestre;
    }

    public void setSemestre(int Semestre) {
        this.Semestre = Semestre;
    }

    public char getGrupo() {
        return Grupo;
    }

    public void setGrupo(char Grupo) {
        this.Grupo = Grupo;
    }

    public String getStatus() {
        return Status;
    }

    public void setStatus(String Status) {
        this.Status = Status;
    }
     

    public void calcularEstatus(){
           if (Promedio>60){
               if (Promedio>85){
                   Status="excelente";
           }
               else{
                   Status="regular";
               }
           }
           else{
               Status="irregular";
           }
    }
    @Override
    public void getDatos(){
    super.mostrarDatos();
    System.out.println("\n_No Control: " + No_Control + "\nCarrera: " + Carrera + "\nSemestre: " + Semestre + "\nGrupo: " + Grupo);
    }
        public void modificarDatos(int semestre, char grupo){
            this.Semestre=Integer.parseInt(JOptionPane.showInputDialog("Del Semestre "+ semestre + "Pasa el Semestre: "));
            this.Grupo=(char) Short.parseShort(JOptionPane.showInputDialog("Del grupo "+ grupo+"Pasa el Semestre: "));
        } 
        public void modificarDatos (float promedio){
            this.Promedio=Float.parseFloat(JOptionPane.showInputDialog("Establezca un nuevo promedio"));
        }
        public void mostrarDatos(Alumno arr[]){
            System.out.println("No.Control\nCarrera");
            for(int i=0; i<arr.length; i++)
            System.out.println(arr[i],getNo_Control()+"\n"+arr[i].getCarrera())+"\n"arr[i]get.Semestre()+"\n"arr[i]get.Grupo()+"\n"arr[i]getPromedio()+"\n"arr[i]getStatus());
        }
        public void modificarGrupo (Alumno arr[],int i)
        {
          /*
            string Grupo=JOptionPane.showInputDialog("....");
            char Grupoo=Gru´po.charAt(0);
            int Semestre= Integer.parseInt(JOptionPane.showInputDialog("Que semestre desea cambiar?));
           
            */ 
        }
        public void modificarPromedio(float Promedio){
            this.Promedio=Float.parseFloat(JOptionPane.showInputDialog("Modifica el promedio"));
        }
       
       
}




Docente

Código: [Seleccionar]
//docente
public class Docente extends Persona{
    private String id_empleado;
    private String Academia;
    private int horas;
    private float sueldo_base;
    private char Nivel;

    public Docente(String id_empleado, String Academia, int horas, float sueldo_base, char Nivel, String Nombre, int Edad, char Sexo, String CURP, String Domicilio) {
        super(Nombre, Edad, Sexo, CURP, Domicilio);
        this.id_empleado = id_empleado;
        this.Academia = Academia;
        this.horas = horas;
        this.sueldo_base = sueldo_base;
        this.Nivel = Nivel;
    }
    public Docente(){
 
    }
   
    public void calcularSueldo(int horas1){
        sueldo_base=(float) (horas1*33*.85*8*15);
    }
   
    public String getId_empleado() {
        return id_empleado;
    }

    public void setId_empleado(String id_empleado) {
        this.id_empleado = id_empleado;
    }

    public String getAcademia() {
        return Academia;
    }

    public void setAcademia(String Academia) {
        this.Academia = Academia;
    }

    public int getHoras() {
        return horas;
    }

    public void setHoras(int horas) {
        this.horas = horas;
    }

    public float getSueldo_base() {
        return sueldo_base;
    }

    public void setSueldo_base(float sueldo_base) {
        this.sueldo_base = sueldo_base;
    }

    public char getNivel() {
        return Nivel;
    }

    public void setNivel(char Nivel) {
        this.Nivel = Nivel;
    }
   
     
    @Override
    public void getDatos(){
        super.mostrarDatos();
        System.out.println("\nID Empleado: " + id_empleado + "Academia: " + Academia + "Hora: " + horas + "sueldo Base: " + sueldo_base + "Nivel: " + Nivel);
    }
    public void get
   



Main

Código: [Seleccionar]
import javax.swing.JOptionPane;
    /**
     *
     * @author ODM
     */
    public class Main {
        public static void main (String[] args){
            int opcion;
            do{
                opcion = Integer.parseInt(JOptionPane.showInputDialog("\nQue desea realizar?\n1.-Capturar Alumno\n2.-Capturar Docente\n3.-Mostrar Datos de Alumnos\n4.-Mostrar Datos de Docentes\n5.-Modificar Calificacion"));
            switch (opcion)
        {
            case 1 ->         {
            int respuesta = Integer.parseInt(JOptionPane.showInputDialog("Cuantos alumnos desea registrar"));
            Alumno arr[];
            Docente arrd[];
            arr = new Alumno [respuesta];
            arrd = new Docente [respuesta];
            for(int i=0; respuesta>i; i++)
            {
                String Nombre=JOptionPane.showInputDialog("cual es el nombre");
                var Edad=Integer.parseInt(JOptionPane.showInputDialog("cual es el edad"));
                String Sexo=JOptionPane.showInputDialog("cual es tu sexo?");
                char Sexo1= Sexo.charAt(0);
                String CURP=JOptionPane.showInputDialog("Introduzca su CURP");
                String Domicilio=JOptionPane.showInputDialog("Domicilio");
                //persona
                int No_Control=Integer.parseInt(JOptionPane.showInputDialog("Establezca su numero de control"));
                String Carrera=JOptionPane.showInputDialog("Introduce la carrera");
                int Semestre=Integer.parseInt(JOptionPane.showInputDialog("Establezca el semestre"));
                String grupo=JOptionPane.showInputDialog("Cual es el grupo");
                char Grupo=grupo.charAt(0);
                float Promedio= Float.parseFloat(JOptionPane.showInputDialog("Cual es el promedio"));

                Alumno a= new Alumno (No_Control, Carrera,Semestre,Grupo,Promedio,Nombre,Edad,Sexo1,CURP,Domicilio);
                arr[i]=a;

                }   
             break;
            }
            case 2 ->         {
            int respuesta = Integer.parseInt(JOptionPane.showInputDialog("Cuantos docentes desea registrar"));
            Docente arrd[];
            arrd = new Docente [respuesta];
            for(int i=0; respuesta>i; i++)
            {   //persona
                String Nombre=JOptionPane.showInputDialog("cual es el nombre");
                var Edad=Integer.parseInt(JOptionPane.showInputDialog("cual es el edad"));
                String Sexo=JOptionPane.showInputDialog("cual es tu sexo?");
                char Sexo1= Sexo.charAt(0);
                String CURP=JOptionPane.showInputDialog("Introduzca su CURP");
                String Domicilio=JOptionPane.showInputDialog("Domicilio");
                //Docente
             String id_empleado =JOptionPane.showInputDialog("ID del Empleado");
             String Academia=JOptionPane.showInputDialog("Academia");
             int horas=Integer.parseInt(JOptionPane.showInputDialog("Horas trabajadas"));
             float sueldo_base= Float.parseFloat(JOptionPane.showInputDialog(JOptionPane.showInputDialog("Sueldo Base"));
             float nivel=JOptionPane.showInputDialog("Nivel");
             char Nivel=nivel.charAt(0);

             Docente a = new Docente (id_empleado, Academia, horas, sueldo_base, Nivel);
                arrd[i]=a;

            }
              break;
                }
        case 3 -> {
            JOptionPane.showMessageDialog(null,"Datos Alumnos");


                    }
        }

            }while(opcion !=6);
            }
    }//fin de la clase main
« Última modificación: 19 de Agosto 2022, 19:52 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Hola.
¿El código es tuyo o copiado? Tiene errores y algunas "malas costumbres", como poner los nombres de los atributos comenzando con mayúscula. En Java, la "buena costumbre" es escribirlos en minúsculas.

A ver, tenemos una clase Persona.
Con su constructor y métodos get/set. Además queremos un método que nos retorne de una sola vez todos los datos para mostrarlos en pantalla o donde sea.
Para esto, lo apropiados es sobreescribir el método toString(), donde construiremos un único String con toda la información de los atributos (o los que creamos importantes) y retornarlo.
En este ejemplo lo construyo usando String.format(), pero el String se puede construir como se quiera.
Código: [Seleccionar]
public class Persona {

protected String nombre;
protected int edad;
protected char sexo;
protected String curp;
protected String domicilio;

public Persona(String nombre, int edad, char sexo, String curp, String domicilio) {
this.nombre = nombre;
this.edad = edad;
this.sexo = sexo;
this.curp = curp;
this.domicilio = domicilio;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public int getEdad() {
return edad;
}

public void setEdad(int edad) {
this.edad = edad;
}

public char getSexo() {
return sexo;
}

public void setSexo(char sexo) {
this.sexo = sexo;
}

public String getCURP() {
return curp;
}

public void setCURP(String curp) {
this.curp = curp;
}

public String getDomicilio() {
return domicilio;
}

public void setDomicilio(String domicilio) {
this.domicilio = domicilio;
}

@Override
public String toString() {
return String.format("Nombre: %s, Edad: %d, Sexo: %s\nCURP: %s, Domicilio: %s", nombre, edad, sexo,
curp, domicilio);
}

}

De esta clase, tienen que heredar Alumno y Docente.

La clase Alumno tiene un atributo llamado status cuyo valor no debe ser proporcionado por el usuario, si no que se calcula según el valor de su nota promedio.
Para hacer este cálculo usamos un método privado llamado calcularEstatus(), al cuál debemos invocar siempre que se modifique la nota promedio.
Por tanto, lo vamos a invocar en el constructor y también dentro del método setPromedio()

Esta clase también tiene un método toString(), lo que hace es coger el método toString que retorna su super clase (Persona) y añadirle los valores del alumno, para construir un único String con todos los datos.
Código: [Seleccionar]
public class Alumno extends Persona {

private int numControl;
private String carrera;
private int semestre;
private char grupo;
private float promedio;
private String status;

public Alumno(String nombre, int edad, char sexo, String curp, String domicilio, int numControl, String carrera,
int semestre, char grupo, float promedio) {
super(nombre, edad, sexo, curp, domicilio);
this.numControl = numControl;
this.carrera = carrera;
this.semestre = semestre;
this.grupo = grupo;
this.promedio = promedio;
calcularEstatus();
}

private void calcularEstatus(){
if (promedio>60){
if (promedio>85)
status="Excelente";
else
status="Regular";
}
else
status="Irregular";
}

public int getNumControl() {
return numControl;
}

public void setNumControl(int numControl) {
this.numControl = numControl;
}

public String getCarrera() {
return carrera;
}

public void setCarrera(String carrera) {
this.carrera = carrera;
}

public int getSemestre() {
return semestre;
}

public void setSemestre(int semestre) {
this.semestre = semestre;
}

public char getGrupo() {
return grupo;
}

public void setGrupo(char grupo) {
this.grupo = grupo;
}

public float getPromedio() {
return promedio;
}

public void setPromedio(float promedio) {
this.promedio = promedio;
calcularEstatus();
}

public String getStatus() {
return status;
}

@Override
public String toString() {
return String.format("%s\nNº Control: %d, Carrera: %s, Semestre: %d\nGrupo: %s, Promedio: %.2f, Status: %s",
super.toString(), numControl, carrera, semestre, grupo, promedio, status);
}

}

Con la clase Docente, ocurre algo similar. Tiene un atributo llamado sueldoBase cuyo valor no lo decide el usuario, si no que se autocalcula según las horas que trabaja.
Así que de nuevo usaremos un método privado para este cálculo, al que llamaremos al construir el objeto y cada vez que se cambie el valor de las horas en el método setHoras()
Código: [Seleccionar]
public class Docente extends Persona {

private String idEmpleado;
    private String academia;
    private int horas;
    private float sueldoBase;
    private char nivel;
   
public Docente(String nombre, int edad, char sexo, String curp, String domicilio, String idEmpleado,
String academia, int horas, char nivel) {
super(nombre, edad, sexo, curp, domicilio);
this.idEmpleado = idEmpleado;
this.academia = academia;
this.horas = horas;
this.nivel = nivel;
calcularSueldo();
}

private void calcularSueldo() {
sueldoBase=(float) (horas*33*.85*8*15);
    }

public String getIdEmpleado() {
return idEmpleado;
}

public void setIdEmpleado(String idEmpleado) {
this.idEmpleado = idEmpleado;
}

public String getAcademia() {
return academia;
}

public void setAcademia(String academia) {
this.academia = academia;
}

public int getHoras() {
return horas;
}

public void setHoras(int horas) {
this.horas = horas;
calcularSueldo();
}

public float getSueldoBase() {
return sueldoBase;
}

public char getNivel() {
return nivel;
}

public void setNivel(char nivel) {
this.nivel = nivel;
}
   
    @Override
    public String toString() {
    return String.format("%s\nID Emp.: %s, Academia: %s, Horas: %d\nSueldo: %.2f, Nivel: %s",
    super.toString(), idEmpleado, academia, horas, sueldoBase, nivel);
    }
}


Vale, tendríamos modeladas las entidades principales que actúan en este programa.
Ahora necesitamos una forma de gestionarlas, es decir, registrarlas en algún tipo de colección y que luego se pueda consultar.
En el código que has puesto, parece que se intenta usar un arreglo primitivo, pero con error en su sintaxis.
De todos modos, no es el tipo de colección ideal porque hay que establecerle un tamaño fijo que luego no puede aumentarse.

Es mejor usar un ArrayList, que tiene un tamaño dinámico y puede crecer según se van añadiendo objetos.

De hecho, usaremos dos, uno para Alumnos y otro para Docentes.
Habrá que escribir código para todo lo relativo a la gestión de estos datos y también código para escribir un menú en pantalla, capturar opción escogida, etc...
Se puede hacer todo junto en una sola clase.

O bien, separarlo en dos. Una clase exclusivamente para gestionar los dos ArrayList y la otra exclusivamente para encargarse del menú principal.

Yo prefiero esta última opción y esta podría ser la clase "gestora" de datos:
Código: [Seleccionar]
import java.util.ArrayList;

import javax.swing.JOptionPane;

public class GestionDatos {

private ArrayList<Alumno> alumnos = new ArrayList<Alumno>();
private ArrayList<Docente> docentes = new ArrayList<Docente>();

public void registrarAlumno() {
String nombre = JOptionPane.showInputDialog("Nombre:");
int edad = Integer.parseInt(JOptionPane.showInputDialog("Edad:"));
char sexo = JOptionPane.showInputDialog("Sexo: ").charAt(0);
String curp = JOptionPane.showInputDialog("CURP:");
String domicilio = JOptionPane.showInputDialog("Domicilio:");
int nControl = Integer.parseInt(JOptionPane.showInputDialog("Nº Control:"));
String carrera = JOptionPane.showInputDialog("Carrera:");
int semestre = Integer.parseInt(JOptionPane.showInputDialog("Semestre:"));
char grupo = JOptionPane.showInputDialog("Grupo:").charAt(0);
float promedio = Float.parseFloat(JOptionPane.showInputDialog("Promedio:"));

alumnos.add(new Alumno(nombre, edad, sexo, curp, domicilio, nControl, carrera, semestre, grupo, promedio));

JOptionPane.showMessageDialog(null, "Nuevo Alumno registrado");
}

public void listarAlumnos() {
if (alumnos.isEmpty())
JOptionPane.showMessageDialog(null, "No hay Alumnos registrados");
else {
for (int i = 0; i < alumnos.size(); i++)
JOptionPane.showMessageDialog(null, alumnos.get(i),
String.format("Alumno %d/%d", (i+1), alumnos.size()), 1);
}
}

}
¡¡NO ESTÁ TERMINADA!!
Solo he puesto lo necesario para registrar Alumnos y también poder listar los que ya están registrados.
Luego intenta por tu parte, añadir dos métodos más registrar y listar Docentes. Casi es copiar lo que yo he puesto.

Veamos ahora la clase principal, usaremos un menú hecho con JOptionPane, tal y como se hace en el código que tú has puesto antes.
Su principal atributo, será un objeto de la clase "gestora" de datos

De momento, solo ofrecemos 5 opciones: registrar alumno, listarlos, registrar docentes, listarlos y TERMINAR.

Con un switch analizamos que ha pedido el usuario, y según su opción, llamamos al método adecuado de la clase "gestora".
Creo que es sencillo de entender el código.

Código: [Seleccionar]
public class Principal {

private static GestionDatos gestor = new GestionDatos();
private static final String MENU = "[1] -- Registrar Alumno\n[2] -- Registrar Docente"
+ "\n[3] -- Listar Alumnos\n[4] -- Listar Docentes\n[0] -- TERMINAR PROGRAMA";

public static void main(String[] args) {

String opcion = "";

do {
opcion = JOptionPane.showInputDialog(MENU);
switch(opcion) {
case "0":
JOptionPane.showMessageDialog(null, "FIN DE PROGRAMA");
break;
case "1":
gestor.registrarAlumno();
break;
case "2":
//gestor.registrarDocente();
break;
case "3":
gestor.listarAlumnos();
break;
case "4":
//gestor.listarDocentes();
break;
default:
JOptionPane.showMessageDialog(null, "Opcion equivocada");
}
}while(!opcion.equals("0"));

}

}

Pues como dije, intenta completar lo necesario para poder gestionar los Docentes.

Y cuando lo tengas, tú mismo intenta añadir más opciones, como modificar la nota promedio de un Alumno, o las horas que trabaja un Docente..., lo que se te ocurra.

Cuando te atasques, o si hay cosas que no te han quedado claras, vuelve a preguntar por aquí.
Un saludo.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".