Alguém pode me ajudar?
Preciso fazer um programa em Java mas sou iniciante e não consegui pegar todos os conceitos ainda.
O programa consiste em manipular duas classes com os seguintes atributos: Curso(nomeCurso, turno, cargaHoraria) e Disciplina(nomeDisciplina, creditos, cargaHoraria e semestre).
1)Deve solicitar ao usuário os dados de um curso e cria um objeto do tipo “Curso”;
2)Realiza um laço que fica solicitando os dados de todas as disciplinas de um curso e cria os objetos “Disciplina” do curso, associando ao curso criado no item anterior;
3)Após sair do laço de leitura das disciplinas, imprime o nome do curso e em seguida todas as disciplinas do curso.
Não consigo usar o ArrayList para vincular uma classe a outra e sempre que faço um laço, as informações da disciplina não ficam armazenadas no curso
public class Disciplina {
private String nomeDisciplina;
private String creditos;
private String cargaHoraria;
private String semestre;
public String getNomeDisciplina() {
return nomeDisciplina;
}
public void setnomeDisciplina(String nomeDisciplina) {
this.nomeDisciplina = nomeDisciplina;
}
public String getCreditos() {
return creditos;
}
public void setCreditos(String creditos) {
this.creditos = creditos;
}
public String getcargaHoraria() {
return cargaHoraria;
}
public void setcargaHoraria(String cargaHoraria) {
this.cargaHoraria = cargaHoraria;
}
public String getSemestre() {
return semestre;
}
public void setSemestre(String semestre) {
this.semestre = semestre;
}
}
import java.util.ArrayList;
import java.util.List;
public class Curso {
private Disciplina[] disciplina;
List<Disciplina> Disciplinas = new ArrayList<Disciplina>();
private String nomeCurso;
private String turno;
private String cargaHoraria;
public String getNome() {
return nomeCurso;
}
public void setNome(String nomeCurso) {
this.nomeCurso = nomeCurso;
}
public String getTurno() {
return turno;
}
public void setTurno(String turno) {
this.turno = turno;
}
public String getcargaHoraria() {
return cargaHoraria;
}
public void setcargaHoraria(String cargaHoraria) {
this.cargaHoraria = cargaHoraria;
}
}
E cadê o código onde você tenta fazer isso?
O Programa vai ser sem banco de dados ? e sem interface ?
observando, vc só vai precisar programar o main_principal
vão ser duas etapas , informação a respeito do curso , no mesmo curso ele armazena as diciplinas do curso 1. curso possui varias disciplinas , então depois de armazenar todas ele volta e pedi informações do curso 2.
for(){ // laço de todo o cadastro
1- curso1:
1.1- nomecurso= "sistema de informação",
1.2- turno=" noturno",
1.3- cargahoraria= "1600h,"
for(){ //laço de cadastro de diciplinas
1.4- diciplinas1:
1.4.1- nomediciplina="Sistemas Operacionais",
1.4.2- creditos="24h",
1.4.3- cargahoraria="40h",
1.4.4- semestre= 1,
1.4.5- curso=1,
}
}
cara da pra fazer usando for encadeado , dei um exemplo para entender um pouco ,
são dicas ,
vc pode criar listadecurso contendo objeto curso , e lista de diciplinas contendo objeto diciplina com atributo que salva o curso referente.
agora vc precisa aprender a pegar informação do usuario dentro do laço e salvar nos objetos e salvar em uma lista,
como ler dados do teclado e salvar nas variaveis:
Usando Scanner
é ao contrario , a identificação ,no caso numero do curso ,vai para a disciplina como atributo.
Pensei em fazer uma opção de buscar o nome do curso que o usuário digitar e cadastrar as disciplinas desse curso que for encontrado (seria a opção 3, no caso)
package lista;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class Cadastro {
public static void main(String[] args) {
dadosCadastro();
}
public static void dadosCadastro() {
Scanner sc = new Scanner(System.in);
Curso curso;
List<Curso> listaCursos = new ArrayList <Curso> ();
Disciplina disciplina;
ArrayList<Disciplina> listaDisciplinas = new ArrayList<Disciplina>();
int opcao=0;
do {
System.out.println("Opção 1 - Cadastra curso");
System.out.println("Opção 2 - Imprime cursos cadastrados");
System.out.println("Opção 3 - Cadastra disciplinas de um curso");
System.out.println("Opção 0 - Sair do programa");
System.out.print("Digite aqui sua opção: ");
opcao = Integer.parseInt(sc.nextLine());
Scanner entrada = new Scanner (System.in);
if(opcao==1) {
curso = new Curso();
//disciplina = new Disciplina();
System.out.print("Digite o nome do curso: ");
curso.setNome(sc.nextLine());
System.out.print("Digite o turno: ");
curso.setTurno(sc.nextLine());
System.out.print("Digite a carga horaria: ");
curso.setcargaHoraria(sc.nextLine());
listaCursos.add(curso);
}else if(opcao == 2){
System.out.println(listaCursos.toString());
System.out.println("Pressione um tecla para continuar.");
sc.nextLine();
} else if(opcao==3) {
disciplina = new Disciplina();
System.out.print("Digite o nome da Disciplina: ");
disciplina.setnomeDisciplina(sc.nextLine());
System.out.print("Digite os creditos: ");
disciplina.setCreditos(sc.nextLine());
System.out.print("Digite a carga horaria: ");
disciplina.setcargaHoraria(sc.nextLine());
System.out.print("Digite o semestre: ");
disciplina.setSemestre(sc.nextLine());
listaDisciplinas.add(disciplina);
String busca;
System.out.print("Procure por um curso cadastrado");
busca = entrada.nextLine();
for(Curso item: listaCursos) {
if(item.getNome().equals(busca)) {
break;
} else {
System.out.println("Curso não encontrado!");
}
}
}
}
while (opcao != 0);
sc.close();
}
}
Sim sim, eu já sei fazer essa parte do Scanner, depois que percebi que tinha esquecido de postar o main do código. Mas enfim, não havia pensado em fazer dois for, pensei em cadastrar os cursos, uma opção que o usuario buscaria por um curso especifico ja cadastrado(opcao 3) e cadastraria as disciplinas nesse curso, porém ainda não consegui fazer isso.
package lista;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class Cadastro {
public static void main(String[] args) {
dadosCadastro();
}
public static void dadosCadastro() {
Scanner sc = new Scanner(System.in);
Curso curso;
List<Curso> listaCursos = new ArrayList <Curso> ();
Disciplina disciplina;
ArrayList<Disciplina> listaDisciplinas = new ArrayList<Disciplina>();
int opcao=0;
do {
System.out.println("Opção 1 - Cadastra curso");
System.out.println("Opção 2 - Imprime cursos cadastrados");
System.out.println("Opção 3 - Cadastra disciplinas de um curso");
System.out.println("Opção 0 - Sair do programa");
System.out.print("Digite aqui sua opção: ");
opcao = Integer.parseInt(sc.nextLine());
Scanner entrada = new Scanner (System.in);
if(opcao==1) {
curso = new Curso();
//disciplina = new Disciplina();
System.out.print("Digite o nome do curso: ");
curso.setNome(sc.nextLine());
System.out.print("Digite o turno: ");
curso.setTurno(sc.nextLine());
System.out.print("Digite a carga horaria: ");
curso.setcargaHoraria(sc.nextLine());
listaCursos.add(curso);
}else if(opcao == 2){
System.out.println(listaCursos.toString());
System.out.println("Pressione um tecla para continuar.");
sc.nextLine();
} else if(opcao==3) {
disciplina = new Disciplina();
System.out.print("Digite o nome da Disciplina: ");
disciplina.setnomeDisciplina(sc.nextLine());
System.out.print("Digite os creditos: ");
disciplina.setCreditos(sc.nextLine());
System.out.print("Digite a carga horaria: ");
disciplina.setcargaHoraria(sc.nextLine());
System.out.print("Digite o semestre: ");
disciplina.setSemestre(sc.nextLine());
listaDisciplinas.add(disciplina);
String busca;
System.out.print("Procure por um curso cadastrado");
busca = entrada.nextLine();
for(Curso item: listaCursos) {
if(item.getNome().equals(busca)) {
break;
} else {
System.out.println("Curso não encontrado!");
}
}
}
}
while (opcao != 0);
sc.close();
}
}
limitar o seu sistema seria mais facil , exemplo ele entra cadastra o curso e suas disciplinas de uma vez , assim não vai dar problema a nivel de usuario sabe .
faz usando esses dois ‘for’ ficara mais certinho.
quando souber integrar java com banco de dados ficara facil manipular essas informações que se relacionam. esse exercicio é pra vc entender como é trabalhoso criar relacionamento na pratica em algoritmo