Nuova tipologia di ricerca

This commit is contained in:
Orange_Dugongo 2016-10-26 18:11:51 +02:00
parent a12e3db815
commit 6903e571a0
10 changed files with 203 additions and 111 deletions

Binary file not shown.

View File

@ -1,49 +1,59 @@
import java.util.Scanner; import java.util.Scanner;
import java.io.PrintStream;
public class Esame{ public class Esame{
public Esame(String nome, int voto, int mat){ public Esame(int matricola, String nomeEsame, String data, int voto){
this.nome=nome; this.nomeEsame=nomeEsame;
this.voto=voto; this.voto=voto;
this.mat=mat; this.matricola=matricola;
this.data=data;
} }
public int getVoto(){ public int getVoto(){
return voto; return voto;
} }
public int getMat(){ public int getMatricola(){
return mat; return matricola;
} }
public String getNome(){ public String getNomeEsame(){
return nome; return nomeEsame;
} }
public boolean lookUp(int mat){ public String getData(){
if(this.mat==mat) return data;
return true; }
return false;
public String toString(){
return matricola + " " + nomeEsame + " " + data + " " + voto;
}
public void print(PrintStream ps){
ps.println(toString());
} }
public static Esame read(Scanner sc) throws Exception{ public static Esame read(Scanner sc) throws Exception{
String nome; String nomeEsame;
int voto; int voto;
int mat; int matricola;
if(sc.hasNext()){ String data;
nome=sc.next();
if(sc.hasNextInt()){ if(!sc.hasNextInt()) return null;
matricola=sc.nextInt();
if(!sc.hasNext()) return null;
nomeEsame=sc.next();
if(!sc.hasNext()) return null;
data=sc.next();
if(!sc.hasNextInt()) return null;
voto=sc.nextInt(); voto=sc.nextInt();
if(sc.hasNextInt()){
mat=sc.nextInt(); return new Esame(matricola, nomeEsame, data, voto);
return new Esame(nome, voto, mat);
}
}
}
return null;
} }
private String nome; private String nomeEsame;
private String data;
private int voto; private int voto;
private int mat; private int matricola;
} }

View File

@ -1,12 +1,6 @@
Chimica 1313 Chimica 24-10-2016 18
18 1212 Economia 25-12-2016 25
1313 1414 Economia 16-09-2016 30
Economia 1212 Chimica 12-12-2016 30
25 1212 Cucina 03-04-2016 30
1212 1313 Cucina 12-06-2016 27
Economia
30
1414
Chimica
30
1212

Binary file not shown.

View File

@ -1,43 +0,0 @@
import java.util.Scanner;
import java.io.*;
public class Main{
public static void main(String [] args) throws Exception{
File srcStudenti = new File("Studenti.dati");
File srcEsami = new File("Esami.dati");
Scanner sc = new Scanner(System.in);
Esame e;
Studente s;
int i=0;
double media=0;
String nome, cnome;
System.out.println("Inserisci il nome dello studente");
nome=sc.nextLine();
System.out.println("Inserisci il cognome dello studente");
cnome=sc.nextLine();
sc=new Scanner(srcStudenti);
s=Studente.read(sc);
while(s!=null){
if(s.lookUp(nome, cnome)){
sc=new Scanner(srcEsami);
e=Esame.read(sc);
while(e!=null){
if(e.lookUp(s.getMat())){
media+=e.getVoto();
i++;
}
e=Esame.read(sc);
}
break;
}
s=Studente.read(sc);
}
if(s!=null)
System.out.println("lo studente "+s.getNomeCognome()+" ha la media di: "+media/i);
else
System.out.println("Impossibile trovare delle corrispondenze.");
}
}

View File

@ -0,0 +1,105 @@
import java.util.Scanner;
import java.util.ArrayList;
import java.io.*;
public class Segreteria{
public Segreteria(String srcEsami, String srcStudenti) throws Exception{
esami = new ArrayList<Esame>();
studenti = new ArrayList<Studente>();
Esame e;
Studente s;
Scanner sc = new Scanner(new File(srcEsami));
e=Esame.read(sc);
while(e!=null){
esami.add(e);
e=Esame.read(sc);
}
sc = new Scanner(new File(srcStudenti));
s=Studente.read(sc);
while(s!=null){
studenti.add(s);
s=Studente.read(sc);
}
}
private Segreteria(ArrayList<Esame> esami, ArrayList<Studente> studenti){
this.esami=esami;
this.studenti=studenti;
}
public void print(PrintStream ps){
for(Studente s: studenti)
s.print(ps);
for(Esame e: esami)
e.print(ps);
}
public Segreteria filtroMaggioreVoto(int voto){
ArrayList<Esame> esami = new ArrayList<Esame>();
for(Esame e: this.esami){
if(e.getVoto()>=voto)
esami.add(e);
}
if(esami.size()==0) return null;
return new Segreteria(esami, this.studenti);
}
public Segreteria filtroMinoreVoto(int voto){
ArrayList<Esame> esami = new ArrayList<Esame>();
for(Esame e: this.esami){
if(e.getVoto()<voto)
esami.add(e);
}
if(esami.size()==0) return null;
return new Segreteria(esami, this.studenti);
}
public Segreteria filtroMatricola(int matricola){
ArrayList<Esame> esami = new ArrayList<Esame>();
ArrayList<Studente> studenti = new ArrayList<Studente>();
int i=0;
boolean trovato=false;
for(Esame e: this.esami){
if(e.getMatricola()==matricola)
esami.add(e);
}
while(i<this.studenti.size() && !trovato){
if(this.studenti.get(i).getMatricola()==matricola){
studenti.add(this.studenti.get(i));
trovato=true;
}
i++;
}
if(!trovato) return null;
return new Segreteria(esami, studenti);
}
public int getMatricola(String nome, String cnome){
int i=0;
boolean trovato=false;
while(i<this.studenti.size() && !trovato){
if(this.studenti.get(i).equals(nome, cnome))
trovato=true;
i++;
}
if(!trovato) return 0;
return this.studenti.get(i-1).getMatricola();
}
private ArrayList<Esame> esami;
private ArrayList<Studente> studenti;
}

Binary file not shown.

View File

@ -1,45 +1,50 @@
import java.util.Scanner; import java.util.Scanner;
import java.io.PrintStream;
public class Studente{ public class Studente{
public Studente(String nome, String cnome, int mat){ public Studente(String nome, String cnome, int matricola){
this.nome=nome; this.nome=nome;
this.cnome=cnome; this.cnome=cnome;
this.mat=mat; this.matricola=matricola;
} }
public int getMat(){ public int getMatricola(){
return mat; return matricola;
} }
public String getNomeCognome(){ public String getNomeCognome(){
return nome.concat(" ").concat(cnome); return nome.concat(" ").concat(cnome);
} }
public boolean lookUp(String nome, String cnome){ public boolean equals(String nome, String cnome){
if(this.nome.equals(nome) && this.cnome.equals(cnome)) return this.nome.equals(nome) && this.cnome.equals(cnome);
return true;
return false;
} }
public static Studente read(Scanner sc) throws Exception{ public static Studente read(Scanner sc) throws Exception{
String nome; String nome;
String cnome; String cnome;
int mat; int matricola;
if(sc.hasNext()){
if(!sc.hasNext()) return null;
nome=sc.next(); nome=sc.next();
if(sc.hasNext()){ if(!sc.hasNext()) return null;
cnome=sc.next(); cnome=sc.next();
if(sc.hasNextInt()){ if(!sc.hasNextInt()) return null;
mat=sc.nextInt(); matricola=sc.nextInt();
return new Studente(nome, cnome, mat);
return new Studente(nome, cnome, matricola);
} }
public String toString(){
return nome + " " + cnome + " " + matricola;
} }
}
return null; public void print(PrintStream ps){
ps.println(toString());
} }
private String nome; private String nome;
private String cnome; private String cnome;
private int mat; private int matricola;
} }

View File

@ -1,9 +1,3 @@
Walter Walter White 1212
White Jesse Pinkman 1313
1212 Gustavo Fring 1414
Jesse
Pinkman
1313
Gustavo
Fring
1414

View File

@ -0,0 +1,27 @@
import java.io.*;
import java.util.Scanner;
public class Test{
public static void main(String [] args) throws Exception{
Scanner sc = new Scanner(System.in);
PrintStream ps = new PrintStream(System.out);
Segreteria segreteria = new Segreteria("Esami.dati", "Studenti.dati");
Segreteria filtro;
int matricola, x=20, y=27;
ps.println("Inserisci il nome e cognome dello studente.");
matricola=segreteria.getMatricola(sc.next(), sc.next());
if(matricola==0)
ps.println("Errore");
else{
filtro = segreteria.filtroMatricola(matricola);
ps.println("Esami sostenuti dallo studente ");
filtro.print(ps);
}
filtro = segreteria.filtroMatricola(matricola).filtroMaggioreVoto(x).filtroMinoreVoto(y);
ps.println("Esami con voti compresi tra " + x + " e " + y + " sostenuti dallo studente ");
filtro.print(ps);
}
}