ola pessoal, voces podem me ajudar a criar um sistema em java para controlar a saude de uma pessoa, seu imc, nivel de atividade fisica, etc, ou pelo menos um exemplo.
tenho o exercicios mas nao tenho base para iniciá-lo.
grato.
ola pessoal, voces podem me ajudar a criar um sistema em java para controlar a saude de uma pessoa, seu imc, nivel de atividade fisica, etc, ou pelo menos um exemplo.
tenho o exercicios mas nao tenho base para iniciá-lo.
grato.
Coloque pelo menos o que vc quer fazer?
Sem saber por onde começar, como podemos te ajudar?
Criar uma Classe Pessoa:
Atributos:
atributo de nível de atividade física, que aceite somente os valores de 0 a 4. Onde:
0 = sedentário
1 = leve
2 = moderado
3 = intenso
4 = muito intenso
# lembre-se da possibilidade de controlar os valores atribuídos através dos métodos set.
Métodos:
o crie um método que retorne a idade calculada, a partir da data de nascimento
+ pesquise no Google por algoritmos de calculo de idade com java
o crie um método que calcule e retorne o gasto energético diário de uma pessoa, baseado nas seguintes fórmulas:
# MULHERES:
* GEB = 655,1 + (9,56 X P) + (1,85 X A) - (4,7 X I)
# MASCULINO:
* GEB = 66,5 + (13,7 X P) + (5 X A) - (6,8 X I)
# ONDE:
* GEB = gasto energético basal (resultado)
* P = peso em KG
* A = altura em cm
* I = idade em anos (ignora meses)
# PARA AMBOS OS SEXOS, calcular o custo adicional baseado no nível da atividade física:
* Sedentário = + 20 %
* Atividade leve = + 30 %
* Atividade Moderada = + 40 %
* Atividade Intensa = + 50 %
* Atividade Muito Intensa = + 70
Vc tem alguma restrição em usar alguma estrutura de dados ou vc pode usar qualquer uma?
Vc ja tem alguma coisa implementada ?
tenho a classe pessoa apenas:
public class Pessoa {
private String nome;
private int idade;
private float altura;
private float peso;
private char sexo;
public String getNome() {
return nome;
}
public float getImc() {
return peso / (altura * altura);
}
public void setNome(String nome) {
this.nome = nome;
}
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
public float getAltura() {
return altura;
}
public void setAltura(float altura) {
this.altura = altura;
}
public float getPeso() {
return peso;
}
public void setPeso(float peso) {
this.peso = peso;
}
public char getSexo() {
return sexo;
}
public void setSexo(char sexo) {
if (sexo != 'M' && sexo != 'F') {
sexo = 'I';
}
this.sexo = sexo;
}
public void setAtributos(String nome, int idade, float altura, float peso) {
setNome(nome);
setIdade(idade);
setAltura(altura);
setPeso(peso);
}
}
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
Object vetor_pessoas[];
Pessoa2 p;
int n, idade;
float altura, peso;
String nome;
char sexo;
System.out.println("Digite a quantidade de pessoas");
n = input.nextInt();
vetor_pessoas = new Object[n];
for (int i = 0; i < n; i++) {
System.out.println("Digite o nome da " + (i + 1) + "ª pessoa");
nome = input.next();
System.out.println("Digite idade da " + (i + 1) + "ª pessoa");
idade = input.nextInt();
System.out.println("Digite a altura da " + (i + 1) + "ª pessoa");
altura = input.nextFloat();
System.out.println("Digite o peso da " + (i + 1) + "ª pessoa");
peso = input.nextFloat();
System.out.println("Digite o sexo da " + (i + 1) + "ª pessoa");
sexo = input.next().charAt(0);
p = new Pessoa2();
p.setAtributos(nome, idade, altura, peso, sexo);
vetor_pessoas[i] = p;
}// for
}// main
Esta é uma possivel implementação da classe main
ok, este tópico já ajudou e muito a implementação, vou montar agora o sistema e vou enviar para ver se está certo, ok ?
mas preciso alterar uma outra situação agora, ja fiz isso, :
public class ExameSaude {
private Pessoa pessoa;
public void setPessoa (Pessoa p) {
pessoa = p;
}
public String getEstadoSaude() {
// pede o imc para pessoa
float imc = pessoa.getImc();
// avalia o estado saude
if (imc <= 18.5) {
return "Abaixo";
} else if (18.5 < imc && imc <= 25) {
return "Normal";
} else if (25 < imc && imc <= 30) {
return "Acima";
} else {
return "Obeso";
}
}
}
agora preciso alterar para isso:
Classe Exame de Saúde
* o retorno do método de avaliação do IMC, deve ser baseado em constantes com os seguintes valores:
ABAIXO
NORMAL
ACIMA
OBESO
# as constantes devem ser declaradas como públicas para que outros objetos possam utilizá-las
# cada valor acima deve ser declarado em uma constante de mesmo nome, e usado no momento de teste da avaliação do IMC
como poderia implementar este sistema ?
ok, mas quando for postar codigo aqui, coloca entre as tags “[code/] [code/]”
As tags CODE estão no inicio desta pagina.
Clica nelas no inicio coloca o que vc precisa e clica nela no final
ok, eu tenho o costume de passar para o bloco de notas primeiro, mas vou passar direto do eclipse agora
e se eu quiser implementar uma classe chamada treinador
alterando os testes comparativos com o resultado da avaliação do IMC e utilizar a comparação com as constantes do objeto utilizado de exame de saúde, eu poderia fazer isso ou altero a classe :
public class Treinador {
public void avaliarTreinando (Pessoa p) {
ExameSaude es = new ExameSaude();
es.setPessoa(p);
String estado = es.getEstadoSaude();
String msg = "";
if (estado.equals("Abaixo")) {
msg = msg + "Ganho de massa";
} else if (estado.equals("Normal")) {
msg = msg + "Manutenção";
} else {
msg += "Perda de gordura";
}
System.out.println("Treinando " + p.getNome() + " treinamento indicado " + msg);
}
}
Pode fazer isso sim.
No caso vc terá as classes
.Treinador
.ExameSaude
.Pessoa
e como fica o retorno da avaliação do imc ?
Nao entendi muito bem pq vc usou msg+=
Ps: sei que msg+= é a mesma coisa que msg = msg + …
Para o retorno coloca return(msg); O metodo principal que será o que chama tera que armazenar a resposta
isso quer dizer que o código não mudaria por ocasião do return ?
Acho que o que vc quer é isso
[code]
public String ABAIXO = “Abaixo”;
public String NORMAL= “Normal”;
public String ACIMA= “Acima”;
public String OBESO= “Obesa”;
public String Avaliacao(float imc){
if (imc <= 18.5) {
return ABAIXO;
} else if (18.5 < imc && imc <= 25) {
return NORMAL;
} else if (25 < imc && imc <= 30) {
return ACIMA;
} else {
return OBESO;
}
return “”;
}[/code]
Alguma variavel ira chamar esta função, tipo assim:(OBS: Não sei qual classe e qual variavel vc vai usar, isso é so um exemplo)
Pessoa P = new Pessoa();
. . .
float imc ;
String resposta_imc;
. . .
resposta_imc = P.Avaliacao(imc);
System.out.println(" A pessoa esta "+imc);
ok, eu a solução do return foi o desvio condicional
[code]
public String ABAIXO = “Abaixo”;
public String NORMAL= “Normal”;
public String ACIMA= “Acima”;
public String OBESO= “Obesa”;
public String Avaliacao(float imc){
if (imc <= 18.5) {
return ABAIXO;
} else if (18.5 < imc && imc <= 25) {
return NORMAL;
} else if (25 < imc && imc <= 30) {
return ACIMA;
} else {
return OBESO;
}
return "";
} [/code]
[b]"""""""“ele aceitou o teste agora”"""""""[/b]
[quote=Jose_48]ok, eu a solução do return foi o desvio condicional
[code]
public String ABAIXO = “Abaixo”;
public String NORMAL= “Normal”;
public String ACIMA= “Acima”;
public String OBESO= “Obesa”;
public String Avaliacao(float imc){
if (imc <= 18.5) {
return ABAIXO;
} else if (18.5 < imc && imc <= 25) {
return NORMAL;
} else if (25 < imc && imc <= 30) {
return ACIMA;
} else {
return OBESO;
}
return "";
} [/code]
[b]"""""""“ele aceitou o teste agora”"""""""[/b][/quote]
Pra que esse tanto de declaração de string?
public String Avaliacao(float imc){
if (imc <= 18.5) {
return "abaixo";
} else if (18.5 < imc && imc <= 25) {
return "normal";
} else if (25 < imc && imc <= 30) {
return "acima";
} else {
return "obesa";
}
return "";
}
ele funcionou também,
mas da mesma forma achei interessante as declarações do tipo string .
Jose_48, vc não precisa seguir a risca a forma que o seu professor escreveu.
Vc pode ABAIXO, NORMAL, ACIMA e OBESO e tacar numa interface, já que são constantes que deverão estar acessíveis a N membros, só para citar um exemplo(o mesmo pode ser feito com SEDENTÀRIO e outros).