Autor Tema: Java NetBeans proyecto menú opciones agregar encuesta recorrer vector contar vot  (Leído 2889 veces)

Mander

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Hola, estoy intentado resolver este problema en Java NetBeans y agradezco ayuda.


Ejercicio

Se requiere llevar el registro sobre la preferencia adquirir artículos no contaminantes, a sí para implementar el “hoy no circula” (sí o no) en la región., las personas encuestadas son mayores de edad entre 20 y 45 años (validar la edad).  Diseñe un proyecto en Java que permita capturar 2 tipos de encuesta:

· En la primera encuesta solicitar la edad, sexo, escolaridad (P=Primaria, S=secundaria, B=Bachillerato, L=Licenciatura) y respuesta sobre la pregunta de la encuesta (sí o no).

· En la segunda encuesta solicitar la edad, sexo, tiene auto (true o false) y respuesta sobre la pregunta de la encuesta (1=si, 2=no, 3=me es indiferente).

 Las encuestas se almacenarán en un vector de N elementos uno por uno (donde los elementos pueden ser de dos clases de Encuesta tipo 1 o Encuesta tipo 2). El proyecto deberá ofrecer las siguientes opciones:

1.  Agregar encuesta 1
2.  Agregar encuesta 2
3.  Recorrer el vector y mostrar cuantos votaron a favor del no circula
4.  Recorrer el vector y mostrar el total de encuestas tipo1 y tipo 2
5.  Recorrer el vector y mostrar el total de votantes mujeres en la encuesta tipo 2
6.  Mostrar cuantos hombres de la encuesta 2 les es indiferente
7.  Terminar
« Última modificación: 12 de Marzo 2022, 17:52 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Ayuda
« Respuesta #1 en: 15 de Noviembre 2021, 11:28 »
Hola.

No pienses en el ejercicio al completo. Centrate solo en escribir estas dos clases, puedes llamarlas Encuesta1 y Encuesta2 por ejemplo:

Citar
·       En la primera encuesta solicitar la edad, sexo, escolaridad (P=Primaria, S=secundaria, B=Bachillerato, L=Licenciatura) y respuesta sobre la pregunta de la encuesta (sí o no).

·       En la segunda encuesta solicitar la edad, sexo, tiene auto (true o false) y respuesta sobre la pregunta de la encuesta (1=si, 2=no, 3=me es indiferente).

Puesto que se guardarán juntas en un mismo vector, debería ser hijas de una clase Encuesta "madre".

Intenta escribirlas, da igual si no te salen bien, comparte por aquí lo que consigas y te ayudamos a corregirlas o ver en que pueden mejorarse.

Y ya luego se irá viendo las demás cosas que pide el enunciado.

Pero es importante que comiences tú el código.
Saludos.
« Última modificación: 15 de Noviembre 2021, 23:51 por Kabuto »
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

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re: Ayuda
« Respuesta #2 en: 17 de Noviembre 2021, 01:20 »
Por si sirve de más ayuda....

Primero se necesita una clase "madre", ya que habrán dos clases de Encuestas, pero se han poder guardar juntas en un mismo vector.
Para ello, es necesario poder instanciarlas bajo una misma clase común a ambas, una clase "madre".

Esta clase tendría los atributos comunes a ambas encuestas: edad y sexo.
Podemos declararla abstracta, no es necesario, pero como no vamos a querer instanciar objetos de esta clase "madre", si no de las clases "hijas", es buena costumbre declararla como abstracta.

Código: [Seleccionar]
public abstract class Encuesta {

protected int edad;
protected String sexo;

public Encuesta(int edad, String sexo) {
this.edad = edad;
this.sexo = sexo;
}

public int getEdad() {
return edad;
}

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

public String getSexo() {
return sexo;
}

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

}

La primera clase "hija" puede llamarse Encuesta1 y aporta los atributos propios de este tipo de encuesta.
Además, podemos darle un método estático que se encargue de mostrar las preguntas acordes a esta encuesta y recoger los datos para construir un objeto Encuesta1.
Código: [Seleccionar]
import java.util.Scanner;

public class Encuesta1 extends Encuesta {

private char escolaridad;
private String hoyNoCircula;

public Encuesta1(int edad, String sexo, char escolaridad, String hoyNoCircula) {
super(edad, sexo);
this.escolaridad = escolaridad;
this.hoyNoCircula = hoyNoCircula;
}

public char getEscolaridad() {
return escolaridad;
}

public void setEscolaridad(char escolaridad) {
this.escolaridad = escolaridad;
}

public String getHoyNoCircula() {
return hoyNoCircula;
}

public void setHoyNoCircula(String hoyNoCircula) {
this.hoyNoCircula = hoyNoCircula;
}

public static Encuesta1 hacerEncuesta1() {
Scanner teclado = new Scanner(System.in);
int edad = 0;
while (edad < 20 || edad > 45) {
System.out.print("Introduzca edad(20/55): ");
edad = Integer.parseInt(teclado.nextLine());
}
System.out.print("Introduzca sexo(Hombre/Mujer): ");
String sexo = teclado.nextLine();
System.out.println("Nivel de Escolaridad(P=Primaria, S=Secundaria, B=Bachillerato, L=Licenciatura");
System.out.print("Introduzca nivel: ");
char escolaridad = teclado.nextLine().toUpperCase().charAt(0);
System.out.println("¿A favor del movimiento \"Hoy no Circula\"?(Si/No): ");
String noCircula = teclado.nextLine();

return new Encuesta1(edad, sexo, escolaridad, noCircula);
}

}

Con la otra clase "hija", llamada Encuesta2, seguimos el mismo patrón.
Código: [Seleccionar]
import java.util.Scanner;

public class Encuesta2 extends Encuesta {

private boolean tieneAuto;
private int hoyNoCircula;

public Encuesta2(int edad, String sexo, boolean tieneAuto, int hoyNoCircula) {
super(edad, sexo);
this.tieneAuto = tieneAuto;
this.hoyNoCircula = hoyNoCircula;
}

public boolean tieneAuto() {
return tieneAuto;
}

public void setTieneAuto(boolean tieneAuto) {
this.tieneAuto = tieneAuto;
}

public int getHoyNoCircula() {
return hoyNoCircula;
}

public void setHoyNoCircula(int hoyNoCircula) {
this.hoyNoCircula = hoyNoCircula;
}

public static Encuesta2 hacerEncuesta2() {
Scanner teclado = new Scanner(System.in);
int edad = 0;
while (edad < 20 || edad > 45) {
System.out.print("Introduzca edad(20/55): ");
edad = Integer.parseInt(teclado.nextLine());
}
System.out.print("Introduzca sexo(Hombre/Mujer): ");
String sexo = teclado.nextLine();
System.out.print("¿Tiene auto?(Si/No): ");
boolean tieneAuto = teclado.nextLine().toLowerCase().equals("si");
int noCircula = 0;
while(noCircula < 1 || noCircula > 3) {
System.out.print("¿A favor del movimiento \"Hoy no Circula\"?(1=si/2=no/3=me es indiferente): ");
noCircula = Integer.parseInt(teclado.nextLine());
}

return new Encuesta2(edad, sexo, tieneAuto, noCircula);
}

}

Ya por último, una clase main donde declaramos un vector de clase Encuesta, que aceptará por igual objetos de Encuesta1 y Encuesta2.

El tamaño de este vector lo decide el usuario al comienzo, es decir, nos dirá cuántas encuestas como máximo se podrán realizar.
Con una variable int podemos controlar cuántas encuestas llevamos hechas en cada momento, para así saber donde se ha de guardar cada nueva encuesta y cuándo hay que parar de aceptar nuevas encuestas.

Se mostrará un menú con las 7 opciones y con un switch se llamará a distintos métodos, según la opción escogida.

Lo importante en este ejercicio, es saber distinguir los objetos según si son instancias de Encuesta1 o Encuesta2, teniendo en cuenta que van a estar guardados como Encuesta

Código: [Seleccionar]
import java.util.Scanner;

public class MenuEncuestas {

private static Encuesta[] encuestas;
private static int encuestasHechas = 0;

public static void main(String[] args) {

Scanner teclado = new Scanner(System.in);

System.out.print("¿Máxima cantidad de encuestas?: ");
encuestas = new Encuesta[Integer.parseInt(teclado.nextLine())];

int opcion = 0;
while (opcion != 7) {
System.out.println("\n1.  Agregar encuesta 1");
System.out.println("2.  Agregar encuesta 2");
System.out.println("3.  Mostrar cuantos votaron a favor del no circula");
System.out.println("4.  Mostrar el total de encuestas tipo1 y tipo 2");
System.out.println("5.  Mostrar el total de votantes mujeres en la encuesta tipo 2");
System.out.println("6.  Mostrar cuantos hombres de la encuesta 2 les es indiferente");
System.out.println("7.  Terminar");
opcion = Integer.parseInt(teclado.nextLine());
switch(opcion) {
case 1:
agregarEncuesta1();
break;
case 2:
agregarEncuesta2();
break;
case 3:
cuantosaFavor();
break;
case 4:
totalEncuestasPorTipo();
break;
case 5:
totalMujeresTipo2();
break;
case 6:
hombresTipo2Indiferentes();
break;
case 7:
System.out.println("\nFIN DE PROGRAMA");
break;
default:
System.out.println("\nOpción equivocada...");
}
}
teclado.close();
}

private static void agregarEncuesta1() {
if (encuestasHechas == encuestas.length)
System.out.println("\nNo se admiten más encuestas.");
else {
encuestas[encuestasHechas] = Encuesta1.hacerEncuesta1();
encuestasHechas++;
}
}

private static void agregarEncuesta2() {
if (encuestasHechas == encuestas.length)
System.out.println("\nNo se admiten más encuestas.");
else {
encuestas[encuestasHechas] = Encuesta2.hacerEncuesta2();
encuestasHechas++;
}
}

private static void cuantosaFavor() {
if (encuestasHechas == 0)
System.out.println("\nAún no se ha hecho ninguna encuesta.");
else {
int aFavor = 0;

for (int i = 0; i < encuestasHechas; i++) {
if (encuestas[i] instanceof Encuesta1) {
Encuesta1 encu1 = (Encuesta1) encuestas[i];
if (encu1.getHoyNoCircula().toLowerCase().equals("si"))
aFavor++;
}
else {
Encuesta2 encu2 = (Encuesta2) encuestas[i];
if (encu2.getHoyNoCircula() == 1)
aFavor++;
}
}

System.out.printf("\nDe %d encuestas realizadas, hay %d votos a favor del \"Hoy no Circula\"\n",
encuestasHechas, aFavor);
}
}

private static void totalEncuestasPorTipo() {
if (encuestasHechas == 0)
System.out.println("\nAún no se ha hecho ninguna encuesta.");
else {
int tipo1 = 0, tipo2 = 0;

for (int i = 0; i < encuestasHechas; i++) {
if (encuestas[i] instanceof Encuesta1)
tipo1++;
else
tipo2++;
}

System.out.println("\nTotal encuestas de Tipo 1: " + tipo1);
System.out.println("Total encuestas de Tipo 2: " + tipo2);
}
}

private static void totalMujeresTipo2() {
if (encuestasHechas == 0)
System.out.println("\nAún no se ha hecho ninguna encuesta.");
else {
int mujeres = 0;

for (int i = 0; i < encuestasHechas; i++) {
if (encuestas[i] instanceof Encuesta2) {
Encuesta2 encu2 = (Encuesta2) encuestas[i];
if (encu2.getSexo().toLowerCase().equals("mujer"))
mujeres++;
}
}

System.out.println("\nMujeres encuestadas en el tipo 2: " + mujeres);
}
}

private static void hombresTipo2Indiferentes() {
if (encuestasHechas == 0)
System.out.println("\nAún no se ha hecho ninguna encuesta.");
else {
int hombres = 0;

for (int i = 0; i < encuestasHechas; i++) {
if (encuestas[i] instanceof Encuesta2) {
Encuesta2 encu2 = (Encuesta2) encuestas[i];
if (encu2.getHoyNoCircula() == 3)
hombres++;
}
}

System.out.println("\nHombres indiferentes en el tipo 2: " + hombres);
}
}
}
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

Mander

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Re: Ayuda
« Respuesta #3 en: 19 de Noviembre 2021, 19:35 »
muchas gracias por la ayuda y explicacion

 

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".