Controle de saude

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?

este seria o primeiro exemplo:

  1. 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).