Lo acabo de probar y sí funciona bien. Cuando elijo la opción 2 me muestra los datos de las N personas ingresadas
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
if (condición) {
// ....
} else {
// ...
}
if (condición) {
// ....
} else if (condición) {
// ...
} else if (condición) {
// ...
} else if (condición) {
// ...
} else {
// ...
}
while (expresion) {
if (expresion) {
if (expresion) {
while (expresion) {
; //solo hace lo de adentro del while
}
} else {
while(expresion) {
; //solo hace lo de adentro del while
}
}
} else {
if (expresion) {
expresión; //solo una linea
} else if (expresion) {
expresion; //solo una linea
} else if (expresion) {
expresion; //solo una linea
} else if (expresion) {
expresion; //solo una linea
}
if (expresion) {//nuevo if
expresion;
}
}
}
if (expresion) { //este if no estaria adentro del primer while
expresion; //solo una linea
} else {
expresion; //solo una linea
}
package ManagedBean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class Usuario {
private static int contador = 0;
private int id;
private String username;
private String password;
private String nombres;
private String apellidoMaterno;
private String apellidoPaterno;
private int edad;
private String sexo;
private String ciudad;
public Usuario() {
this.setId(contador++);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNombres() {
return nombres;
}
public void setNombres(String nombres) {
this.nombres = nombres;
}
public String getApellidoMaterno() {
return apellidoMaterno;
}
public void setApellidoMaterno(String apellidoMaterno) {
this.apellidoMaterno = apellidoMaterno;
}
public String getApellidoPaterno() {
return apellidoPaterno;
}
public void setApellidoPaterno(String apellidoPaterno) {
this.apellidoPaterno = apellidoPaterno;
}
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;
}
public String getCiudad() {
return ciudad;
}
public void setCiudad(String ciudad) {
this.ciudad = ciudad;
}
@Override
public int hashCode() {
int hash = 5;
hash = 47 * hash + this.id;
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Usuario other = (Usuario) obj;
if (this.id != other.id) {
return false;
}
return true;
}
}
package ManagedBean;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class ListaUsuarios {
private List<Usuario> usuarios;
private List<String> ciudades;
public ListaUsuarios() {
usuarios = new ArrayList<>();
ciudades = new ArrayList<>();
ciudades.add("Lima");
ciudades.add("Arequipa");
ciudades.add("Cusco");
ciudades.add("Tacna");
ciudades.add("Tumbes");
ciudades.add("Madre de Dios");
}
public List<Usuario> getUsuarios() {
return usuarios;
}
public void setUsuarios(List<Usuario> usuarios) {
this.usuarios = usuarios;
}
public void agregaUsuario(Usuario usuario) {
usuarios.add(usuario);
}
public void eliminaUsuario(Usuario usuario) {
usuarios.remove(usuario);
}
public List<String> getCiudades() {
return ciudades;
}
public void setCiudades(List<String> ciudades) {
this.ciudades = ciudades;
}
}
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Data Table</title>
</h:head>
<h:body>
<h:form>
<h:panelGrid columns="2">
<h:outputLabel for="txtValor" value="Valor:"/>
<h:inputText id="txtValor" value="#{dato.valor}" label="Valor" required="true"/>
<h:outputLabel for="txtNombre" value="Nombre:"/>
<h:inputText id="txtNombre" value="#{dato.nombre}" label="Nombre" required="true"></h:inputText>
<h:outputLabel for="btnAgregar"/>
<h:commandButton id="btnAgregar" action="#{holaMundo.addValor(dato)}" value="Añadir"/>
</h:panelGrid>
</h:form>
<h:dataTable id="tabla" value="#{holaMundo.datos}" var="dato">
<h:column>
<f:facet name="header">
<h:outputText value="valor"/>
</f:facet>
<h:outputText value="#{dato.valor}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nombre"/>
</f:facet>
<h:outputText value="#{dato.nombre}"/>
</h:column>
<h:column>
<h:form>
<h:commandButton id="btnBorrar" value="Borrar" action="#{holaMundo.removeValor(dato)}"/>
</h:form>
</h:column>
</h:dataTable>
<br/>
</h:body>
</html>
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Data Table</title>
</h:head>
<h:body>
<h:dataTable id="tabla" value="#{holaMundo.datos}" var="dato">
<h:column>
<f:facet name="header">
<h:outputText value="valor"/>
</f:facet>
<h:outputText value="#{dato.valor}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nombre"/>
</f:facet>
<h:outputText value="#{dato.nombre}"/>
</h:column>
<h:column>
<h:form>
<h:commandButton id="btnBorrar" value="Borrar" action="#{holaMundo.removeValor(dato)}"/>
</h:form>
</h:column>
</h:dataTable>
<br/>
<h:form>
<h:panelGrid columns="2">
<h:outputLabel for="txtValor" value="Valor:"/>
<h:inputText id="txtValor" value="#{dato.valor}" label="Valor" required="true"/>
<h:outputLabel for="txtNombre" value="Nombre:"/>
<h:inputText id="txtNombre" value="#{dato.nombre}" label="Nombre" required="true"></h:inputText>
<h:outputLabel for="btnAgregar"/>
<h:commandButton id="btnAgregar" action="#{holaMundo.addValor(dato)}" value="Añadir"/>
</h:panelGrid>
</h:form>
</h:body>
</html>
// EmpleadoPorComision.h
#ifndef COMISION_H
#define COMISION_H
#include <string>
using std::string;
class EmpleadoPorComision {
public:
EmpleadoPorComision(const string &, const string &, const string &,
double = 0.0, double = 0.0);
~EmpleadoPorComision(); // destructor
void setPrimerNombre(const string &);
string getPrimerNombre() const;
void setApellidoPaterno(const string &);
string getApellidoPaterno() const;
void setNumeroSeguroSocial(const string &);
string getNumeroSeguroSocial() const;
void setVentasBrutas(double);
double getVentasBrutas() const;
void setTarifaComision(double);
double getTarifaComision() const;
virtual double ingresos() const;
virtual void imprimir() const;
private:
string primerNombre;
string apellidoPaterno;
string numeroSeguroSocial;
double ventasBrutas;
double tarifaComision;
};
#endif
// EmpleadoPorComision.cpp
#include <iostream>
using std::cout;
using std::endl;
#include "EmpleadoPorComision.h"
// Constructor
EmpleadoPorComision::EmpleadoPorComision(
const string &nombre, const string &apellido, const string &nss,
double ventas, double tarifa)
: primerNombre(nombre), apellidoPaterno(apellido), numeroSeguroSocial(nss) {
setVentasBrutas(ventas);
setTarifaComision(tarifa);
}
EmpleadoPorComision::~EmpleadoPorComision() {
}
void EmpleadoPorComision::setPrimerNombre(const string &nombre) {
primerNombre = nombre;
}
string EmpleadoPorComision::getPrimerNombre() const {
return primerNombre;
}
void EmpleadoPorComision::setApellidoPaterno(const string &apellido) {
apellidoPaterno = apellido;
}
string EmpleadoPorComision::getApellidoPaterno() const {
return apellidoPaterno;
}
void EmpleadoPorComision::setNumeroSeguroSocial(const string &nss) {
numeroSeguroSocial = nss;
}
string EmpleadoPorComision::getNumeroSeguroSocial() const {
return numeroSeguroSocial;
}
void EmpleadoPorComision::setVentasBrutas(double ventas) {
ventasBrutas = (ventas < 0.0) ? 0.0 : ventas;
}
double EmpleadoPorComision::getVentasBrutas() const {
return ventasBrutas;
}
void EmpleadoPorComision::setTarifaComision(double tarifa) {
tarifaComision = (tarifa > 0.0 && tarifa < 1.0) ? tarifa : 0.0;
}
double EmpleadoPorComision::getTarifaComision() const {
return tarifaComision;
}
double EmpleadoPorComision::ingresos() const {
return getTarifaComision() * getVentasBrutas();
}
void EmpleadoPorComision::imprimir() const {
cout << "empleado por comision: "
<< getPrimerNombre() << ' ' << getApellidoPaterno()
<< "\nnumero de seguro social: " << getNumeroSeguroSocial()
<< "\nventas brutas: " << getVentasBrutas()
<< "\ntarifa de comision: " << getTarifaComision();
}
// EmpleadoBaseMasComision.h
#ifndef BASEMAS_H
#define BASEMAS_H
#include <string>
using std::string;
#include "EmpleadoPorComision.h" // Declaración de la clase EmpleadoPorComision
class EmpleadoBaseMasComision : public EmpleadoPorComision {
public:
EmpleadoBaseMasComision(string const &, string const &, string const &,
double = 0.0, double = 0.0, double = 0.0);
~EmpleadoBaseMasComision();
void setSalarioBase(double);
double getSalarioBase() const;
virtual double ingresos() const;
virtual void imprimir() const;
private:
double salarioBase;
};
#endif
// EmpleadoBaseMasComision.cpp
#include <iostream>
using std::cout;
using std::endl;
#include "EmpleadoBaseMasComision.h"
// Constructor
EmpleadoBaseMasComision::EmpleadoBaseMasComision(
const string &nombre, const string &apellido, const string &nss,
double ventas, double tarifa, double salario)
// Llamada explícita al constructor de la clase base
: EmpleadoPorComision(nombre, apellido, nss, ventas, tarifa) {
setSalarioBase(salario);
}
// Destructor
EmpleadoBaseMasComision::~EmpleadoBaseMasComision() {
}
void EmpleadoBaseMasComision::setSalarioBase(double salario) {
salarioBase = (salario < 0.0) ? 0.0 : salario;
}
double EmpleadoBaseMasComision::getSalarioBase() const {
return salarioBase;
}
double EmpleadoBaseMasComision::ingresos() const {
return EmpleadoPorComision::ingresos() + getSalarioBase();
}
void EmpleadoBaseMasComision::imprimir() const {
cout << "con salario base ";
// Invoca a la función imprimir de EmpleadoPorComision
EmpleadoPorComision::imprimir();
cout << "\nsalario base: " << getSalarioBase();
}
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
using std::fixed;
#include <iomanip> // setprecision
using std::setprecision;
// Incluye las definiciones de las clases
// #include "EmpleadoPorComision.h"; // Ya está incluído dentro de EmpleadoBaseMasComision.h
#include "EmpleadoBaseMasComision.h"
int main(int argc, char** argv) {
// Crea el objeto de la clase base
EmpleadoPorComision empleadoPorComision(
"Sue", "Jones", "222-22-2222", 10000, .06);
// Crea un apuntandor de la clase base
EmpleadoPorComision *empleadoPorComisionPtr = 0; // 0
// Crea un objeto de la clase derivada
EmpleadoBaseMasComision empleadoBaseMasComision(
"Bob", "Lewis", "333-33-3333", 5000, .04, 300);
// Crea un apuntador de la clase derivada
EmpleadoBaseMasComision *empleadoBaseMasComisionPtr = 0;
// Establece el formato de salida de punto flotante
cout << fixed << setprecision(2);
// Imprime los objetos usando vinculación estática
cout << "Invocando a la funcion imprimir en objetos de la clase base "
<< "\ny la clase derivada con vinculacion estatica\n\n";
empleadoPorComision.imprimir(); // vinculación estática
cout << "\n\n";
empleadoBaseMasComision.imprimir(); // vinculación estática
// Imprime los objetos usando vinculación dinámica
cout << "\n\n\nInvocando a la funcion imprimir en objetos de la clase base "
<< "y la \nclase derivada con vinculacion dinamica";
// Orienta el apuntador de la clase base al objeto de la clase base e imprime
empleadoPorComisionPtr = &empleadoPorComision;
cout << "\n\nAl llamar a la funcion virtual imprimir con un apuntador"
<< "\nde la clase base a un objeto de la clase base se invoca a la "
<< "funcion imprimir de la clase base:\n\n";
empleadoPorComisionPtr->imprimir(); // Invoca a la función imprimir de la clase base
// Orienta el apuntador de la clase derivada al objeto de la clase derivada e imprime
empleadoBaseMasComisionPtr = &empleadoBaseMasComision;
cout << "\n\nAl llamar a la funcion virtual imprimir con un apuntador"
<< "de la clase derivada\na un objeto de la clase base se invoca a "
<< "la funcion imprimir de la clase derivada:\n\n";
empleadoBaseMasComisionPtr->imprimir(); // Invoca a la función imprimir de la clase derivada
// Orienta un apuntador de la clase base a un objeto de la clase derivada e imprime
empleadoPorComisionPtr = &empleadoBaseMasComision;
cout << "\n\nAl llamar a la funcion virtual imprimir con un apuntador de la clase base"
<< "\na un objeto de la clase derivada se invoca a la funcion "
<< "imprimir de la clase derivada\n\n";
// Polimorfismo: invoca a la función imprimir de EmpleadoBaseMasComision;
// Apuntador de la clase base a un objeto de la clase derivada
empleadoPorComisionPtr->imprimir(); // invoca a la función imprimir de la clase base. Manda el tipo del puntero
cout << endl;
cin.get();
cin.get();
return 0;
}