Crie o um sisteminha que realize as operações de adicionar, excluir, localizar e imprimir para o professor e aluno segundo os criterios abaixos: (Utilizando vetor e herança)
- Professor: nome; matricula; endereco; especialidade; curso;
- Aluno: nome; matricula; endereco; notas (vetor de notas);
Código Java
//Aluno; Thiago Campos
//Data: 18.02.13
/*
* CLASSE PAI
*/
/**
*
* @author Thiago
*/
public class Pessoa {
//Variaveis
private String nome;
private String endereco;
private int matricula;
//Construtor
public Pessoa(int matricula, String nome, String endereco){
this.nome = nome;
this.endereco = endereco;
this.matricula = matricula;
}
//Geteres e seteres
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public int getMatricula(){
return matricula;
}
public void setMatricula(int matricula){
this.matricula = matricula;
}
//equals
public boolean equals(Object obj){
return this.matricula == ((Pessoa)obj).getMatricula();
}
} //Fim da classe
/*
* CLASSE FILHA
*/
/**
*
* @author Thiago
*/
public class Professor extends Pessoa{
//variaveis
private String especialidade;
private String curso;
//Construtor
public Professor(int matricula, String nome, String endereco, String especialidade, String curso){
super(matricula, nome, endereco); //informo que esses paramentros vão para o pai
this.especialidade = especialidade;
this.curso = curso;
}
//geteres e seteres
public String getEspecialidade() {
return especialidade;
}
public void setEspecialidade(String especialidade) {
this.especialidade = especialidade;
}
public String getCurso() {
return curso;
}
public void setCurso(String curso) {
this.curso = curso;
}
} //fim da classe Professor
/*
* CLASSE FILHA
*/
/**
*
* @author Thiago
*/
public class Aluno extends Pessoa{
//variaveis
private float[] notas = new float[2]; //intanciar
//construtor
public Aluno(int matricula, String nome, String endereco, float[] notas){
super(matricula, nome, endereco); //chamando as qualidades do Pai
//receber as notas
for(int i=0; i<2; i++){
this.notas[i]= notas[i];
} //fim do for
} //fim do construtor
//geteres e seteres
public float[] getNotas() {
return notas;
}
public void setNotas(float[] notas) {
this.notas = notas;
}
} //Fim da classe Aluno
/*
* CLASSE DOS MÉTODOS DO PROFESSOR
*/
import javax.swing.JOptionPane;
/**
*
* @author Thiago
*/
public class Aula2MP {
private final int k = 100; //criando uma constate para ser utilizada nos Arrays
private int posProf= 0; //posicao a ser oculpado no Array Professor
//Variaveis relacionadas ao Professor
private int[] profMat = new int[k]; //instanciando os Arrays
private String[] profNom = new String[k];
private String[] profEnd = new String[k];
private String[] especialidade = new String[k];
private String[] curso = new String[k];
/**
* Metodo que insere um novo professor no Array
* @param matricula
* @param nome
* @param endereco
* @param especialidade
* @param curso
*/
public void inserirProfessor(int matricula, String nome, String endereco, String especialidade, String curso){
if(posProf < k){
this.profMat[this.posProf] = matricula;
this.profNom[this.posProf] = nome;
this.profEnd[this.posProf] = endereco;
this.especialidade[this.posProf] = especialidade;
this.curso[this.posProf] = curso;
this.posProf++;
} else {
JOptionPane.showMessageDialog(null, "As vagas ja se encerraram.");
}
} //fim do metodo inserir Professor
/**
* Metodo criado para remmover alunos do cadastro
* @param matricula
* @return
*/
public String removerProf(int matricula) {
//criação de variaveis temporarias
int objMat = matricula;
String objNom = null;
String objEnd = null;
String objEsp = null;
String objCur = null;
int pos = posicaoProf(matricula); //esta variavel guarda a posição do cadastro no vetor
if (pos >= 0){ //se a posição retornada for >= a zero, ele guarda os dados que serão apagados
objMat = this.profMat[posProf];
objNom = this.profNom[posProf];
objEnd = this.profEnd[posProf];
objEsp = this.especialidade[posProf];
objCur = this.curso[posProf];
//o for vai deslocar os dados para esquerda, preenchendo os espaçõs vazios
for (int i=pos; i<this.posProf-1;i++){
this.profMat[i] = this.profMat[i+1];
this.profNom[i] = this.profNom[i+1];
this.profEnd[i] = this.profEnd[i+1];
this.especialidade[i] = this.especialidade[i+1];
this.curso[i] = this.curso[i+1];
} //fim do for
//estes comandos vão apagar os dados da ultima posição uma vez que houve deslocamento
this.profMat[this.posProf-1] = 0;
this.profNom[this.posProf-1] = null;
this.profEnd[this.posProf-1] = null;
this.especialidade[this.posProf-1] = null;
this.curso[this.posProf-1] = null;
this.posProf--;
return objNom; //vai retornar o nome do aluno
} else {
System.out.println("Professor não encontrado!!!");
return null;
}
} //fim do metodo apagar
/**
* Imprimie a lista de alunos em ordem de matricul.
*/
public void imprima() {
this.ordenarProf();
for (int i = 0; i < posProf; i++) {
System.out.println("Matricula: " + profMat[i]
+ " | Nome: " + profNom[i]
+ " | Endereço: " + profEnd[i]
+ " | Especialidade: " + especialidade[i]
+ " | Curso: " + curso[i]);
} //fim do for
} //fim do metodo imprima
/**
* Metodo que vai identificar a posição da ultima entrada
* @param matricula
* @return
*/
private int posicaoProf(int matricula){
for (int i = 0; i < this.posProf; i++){
if (matricula == this.profMat[i]){
return i;
}
} //fim do for
System.out.println("Professor não encontrado!!!");
return -1; //retornando -1
} //fim do metodo posicao
private void ordenarProf(){
quick_sort(profMat, profNom, profEnd, especialidade,curso, 0, posProf-1);
} //fim do metodo ordenar professor
/**
* Variaveis do metodo quick_sort
* @param m - matricula do prof
* @param n - nome do prof
* @param e - endereço do prof
* @param s - especialidade do prof
* @param c - curso do prof
* @param ini - inicio do vetor
* @param fim - fim do vetor
*/
private void quick_sort(int[] m, String[] n, String[] e, String[] s, String[] c, int ini, int fim){
int meio;
if(ini <fim){
meio = partition(m, n, e, s, c, ini, fim);
quick_sort(m, n, e, s, c, ini, meio);
quick_sort(m, n, e, s, c, meio +1, ini);
}
} //fim do metodo quick_sort
/**
* Variaveis do metodo quick_sort
* @param m - matricula do prof
* @param n - nome do prof
* @param e - endereço do prof
* @param s - especialidade do prof
* @param c - curso do prof
* @param ini - inicio do vetor
* @param fim - fim do vetor
* @return
*/
private int partition(int[] m, String[] n, String[] e, String[] s, String[] c, int ini, int fim) {
int topo, i, pivoM;
String pivoN, pivoE, pivoS, pivoC;
pivoM = m[ini];
pivoN = n[ini];
pivoE = e[ini];
pivoS = s[ini];
pivoC = c[ini];
topo = ini;
for (i = ini + 1; i <= fim; i++) {
if (m[i] < pivoM) {
m[topo] = m[i];
n[topo] = n[i];
e[topo] = e[i];
s[topo] = s[i];
c[topo] = c[i];
m[i] = m[topo + 1];
n[i] = n[topo + 1];
e[i] = e[topo + 1];
s[i] = s[topo + 1];
c[i] = c[topo + 1];
topo++;
} //fim do if
} //fim do for
m[topo] = pivoM;
n[topo] = pivoN;
e[topo] = pivoE;
s[topo] = pivoS;
c[topo] = pivoC;
return topo;
} //fim do metodo
} //fim da classe
/*
* CLASSE DOS MÉTODOS DO ALUNO
*/
import javax.swing.JOptionPane;
/**
*
* @author Thiago
*/
public class Aula2MA {
private final int k = 100; //criando uma constate para ser utilizada nos Arrays
private int posAlu= 0; //posicao a ser oculpado no Array Aluno
//Variaveis relacionadas ao aluno
private int[] alunoMat = new int[k]; //instanciando os Arrays
private String[] alunoNom = new String[k];
private String[] alunoEnd = new String[k];
private float[] nota1 = new float[k];
private float[] nota2 = new float[k];
/**
* Metodo que insere um novo aluno no Array
* @param matricula
* @param nome
* @param endereco
* @param nota1
* @param nota2
*/
public void inserirAluno(int matricula, String nome, String endereco, float nota1, float nota2){
if(posAlu < k){
this.alunoMat[this.posAlu] = matricula;
this.alunoNom[this.posAlu] = nome;
this.alunoEnd[this.posAlu] = endereco;
this.nota1[this.posAlu] = nota1;
this.nota2[this.posAlu] = nota2;
this.posAlu++; //informo que a posição foi oculpada e passo para a seguinte
} else {
JOptionPane.showMessageDialog(null, "As vagas ja se encerraram.");
}
} //fim do metodo inserirAluno
/**
* Metodo criado para remmover alunos do cadastro
* @param matricula
* @return
*/
public String removerAluno(int matricula){
//criação de variaveis temporarias
int objMat = matricula;
String objNom = null;
String objEnd = null;
float objN1 = 0;
float objN2 = 0;
int pos = posicaoAlu(matricula); //esta variavel guarda a posição do cadastro no vetor
if (pos >= 0){ //se a posição retornada for >= a zero, ele guarda os dados que serão apagados
objMat = this.alunoMat[posAlu];
objNom = this.alunoNom[posAlu];
objEnd = this.alunoEnd[posAlu];
objN1 = this.nota1[posAlu];
objN2 = this.nota2[posAlu];
//o for vai deslocar os dados para esquerda, preenchendo os espaçõs vazios
for (int i=pos; i<this.posAlu-1;i++){
this.alunoMat[i] = this.alunoMat[i+1];
this.alunoNom[i] = this.alunoNom[i+1];
this.alunoEnd[i] = this.alunoEnd[i+1];
this.nota1[i] = this.nota1[i+1];
this.nota2[i] = this.nota2[i+1];
} //fim do for
//estes comandos vão apagar os dados da ultima posição uma vez que houve deslocamento
this.alunoMat[this.posAlu-1] = 0;
this.alunoNom[this.posAlu-1] = null;
this.alunoEnd[this.posAlu-1] = null;
this.nota1[this.posAlu-1] = 0;
this.nota2[this.posAlu-1] = 0;
this.posAlu--;
return objNom; //vai retornar o nome do aluno
} else {
System.out.println("Aluno não encontrado!!!");
return null;
}
} //fim do metodo apagar
/**
* Imprimie a lista de alunos em ordem de matricul.
*/
public void imprima() {
this.ordenarAlu();
for (int i = 0; i < posAlu; i++) {
System.out.println("Matricula: " + alunoMat[i]
+ " | Nome: " + alunoNom[i]
+ " | Endereço: " + alunoEnd[i]
+ " | Especialidade: " + nota1[i]
+ " | Curso: " + nota2[i]);
} //fim do for
} //fim do metodo imprima
/**
* Metodo que retorna a posição de oculpada
* @param matricula
* @return
*/
private int posicaoAlu(int matricula){
for (int i = 0; i < this.posAlu; i++){
if (matricula == this.alunoMat[i]){
return i;
}
} //fim do for
JOptionPane.showMessageDialog(null, "Aluno não encontrado!!!");
return -1; //retornando -1
} //fim do metodo posicao
private void ordenarAlu(){
quick_sort(alunoMat, alunoNom, alunoEnd, nota1, nota2, 0, posAlu-1);
} //fim do metodo ordenar alunos
/**
* Variaveis do metodo quick_sort
* @param m - matricula do aluno
* @param n - nome do aluno
* @param e - endereço do aluno
* @param s - especialidade do aluno
* @param c - curso do aluno
* @param ini - inicio do vetor
* @param fim - fim do vetor
*/
private void quick_sort(int[] m, String[] n, String[] e, float[] nota1, float[] nota2, int ini, int fim){
int meio;
if(ini < fim){
meio = partition(m, n, e, nota1, nota2, ini, fim);
quick_sort(m, n, e, nota1, nota2, ini, meio);
quick_sort(m, n, e, nota1, nota2, meio+1, ini);
}
} //fim do metodo quick_sort
private int partition(int[] m, String[] n, String[] e, float[] n1, float[] n2, int ini, int fim) {
int topo, i, pivoM;
String pivoN, pivoE;
float pivoN1, pivoN2; //pivo ref as notas
pivoM = m[ini];
pivoN = n[ini];
pivoE = e[ini];
pivoN1 = n1[ini];
pivoN2 = n2[ini];
topo = ini;
for (i = ini + 1; i <= fim; i++) {
if (m[i] < pivoM) {
m[topo] = m[i];
n[topo] = n[i];
e[topo] = e[i];
n1[topo] = n1[i];
n2[topo] = n2[i];
m[i] = m[topo + 1];
n[i] = n[topo + 1];
e[i] = e[topo + 1];
n1[i] = n1[topo + 1];
n2[i] = n2[topo + 1];
topo++;
} //fim do if
} //fim do for
m[topo] = pivoM;
n[topo] = pivoN;
e[topo] = pivoE;
n1[topo] = pivoN1;
n2[topo] = pivoN2;
return topo;
} //fim do metodo
} //fim da classe
/*
* CLASSE EXECUTORA - CLASSE DO MAIN
*/
/**
*
* @author Thiago
*/
public class Main {
public static void main(String[] args){
//variaveis
Aula2MP uniRN = new Aula2MP();
Aula2MA uniRNA = new Aula2MA();
uniRN.inserirProfessor(21, "Alexandre Luiz", "Av. Abel Cabral", "Java", "BSI");
uniRN.inserirProfessor(1, "Luiz Damasceno", "Eng. Roberto Freire", "Algebra Linear", "Matematica");
uniRN.inserirProfessor(41, "Joseane Sobral", "Rua do fim do canto", "Algoritimo", "BSI");
uniRN.inserirProfessor(3, "Kaio Graco", "Rua das Pricesas", "Legislação", "Direito");
uniRNA.inserirAluno(12, "Thiago Campos", "Rua Hercules", 10, 9);
uniRNA.inserirAluno(1, "Luiz Carlos", "Rua D. Pedro II", 7, 8);
uniRNA.inserirAluno(41, "Monica Silva", "Rua do Bosque", 6, 5);
uniRNA.inserirAluno(3, "Rafael Soares", "Av, das Palmeiras", 8, 10);
System.out.println("Uni-RN: RELAÇÃO DE ALUNOS");
uniRNA.imprima();
uniRNA.removerAluno(1);
System.out.println("Uni-RN");
uniRNA.imprima();
System.out.println("===================================");
System.out.println("Uni-RN: RELAÇÃO DE ALUNOS");
uniRN.imprima();
uniRN.removerProf(1);
System.out.println("Uni-RN");
uniRN.imprima();
} //Fim do main
} //fim da classe
Muito bom... Parabéns..
ResponderExcluir