//:workspace/LibrettoScolastico/LibrettoScolastico.java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
private static final long serialVersionUID = 1L;
private ArrayList<Materia> arrMaterie;
private int mat; //Indice della materia su cui operare
public LibrettoScolastico(){
if(leggiFile())
return;
arrMaterie=new ArrayList<Materia>();
mat=-1;
}
public static void main
(String args
[]){
frame.
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE);
frame.setSize(500,375);
frame.setVisible(true);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
}
if(size()==0){
return "Nessuna materia inserita!";
}
for(int j=0;j<arrMaterie.size();j++){
double rec;
s+="\n"+arrMaterie.get(j).getNome()+":\n";
if(arrMaterie.get(j).getNumVoti()==0){
s+=("Nessun voto presente\n");
s+="\n---------------------\n";
continue;
}
//Riepilogo voti Scritti
if(arrMaterie.get(j).getGVS().size()!=0){
s+=" Scritto: Voti:"+arrMaterie.get(j).getVotiScritto()+
String.
format(" Media : %.2f",
Math.
round(arrMaterie.
get(j
).
getMediaScritto()*100.0
)/100.0
);
rec=arrMaterie.get(j).getRecScritto();
if(rec!=0){
s+="\n "+
(rec==-1?
"Impossibile recuperare con un voto":
"Recupero con:"+rec);
}
s+="\n";
}
//Riepilogo voti Orali
if(arrMaterie.get(j).getGVO().size()!=0){
s+=" Orale: Voti:"+arrMaterie.get(j).getVotiOrale()+
Math.
round(arrMaterie.
get(j
).
getMediaOrale()*100.0
)/100.0
);
rec=arrMaterie.get(j).getRecOrale();
if(rec!=0){
s+="\n "+
(rec==-1?
"impossibile recuperare con un voto":
"recupero con:"+rec);
}
s+="\n";
}
//Riepilogo voti di Laboratorio
if(arrMaterie.get(j).getGVL().size()!=0){
s+=" Laboratorio: Voti:"+arrMaterie.get(j).getVotiLaboratorio()+
Math.
round(arrMaterie.
get(j
).
getMediaLaboratorio()*100.0
)/100.0
);
rec=arrMaterie.get(j).getRecLaboratorio();
if(rec!=0){
s+="\n "+
(rec==-1?
"impossibile recuperare con un voto":
"recupero con:"+rec);
}
}
s+="\n---------------------\n";
}
return s;
}
public void addMateria
(String nome
){
Materia mat=new Materia();
mat.setNome(nome);
arrMaterie.add(mat);
OrdinaMaterie();
salvaFile();
}
public void remove(int j){
arrMaterie.remove(j);
salvaFile();
}
public void modMateria
(int j,
String nome
){
get(j).setNome(nome);
OrdinaMaterie();
salvaFile();
}
public double getMedia(){
double somma=0;
int n=0;
for(int i=0;i<arrMaterie.size();i++){
somma+=arrMaterie.get(i).getSomma();
n+=arrMaterie.get(i).getNumVoti();
}
try{
return somma/n;
return -1;
}
}
public void setMat(int i){
mat=(i>=0&&i<size())?i:0;
}
public int getMat(){
return mat;
}
public Materia get(int i){
return arrMaterie.get(i);
}
public int size(){
return arrMaterie.size();
}
public String[] getStringArrMaterie
(){
for(int i=0;i<size();i++)
materie[i]=get(i).getNome();
return materie;
}
private void OrdinaMaterie(){
//Ordinamento arrMaterie secondo l'ordine alfabetico del campo privato nome
//Algoritmo di Ordinamento: Bubble sort
byte lun=(byte)arrMaterie.size();
boolean ordinato=true;
while(lun>0){
ordinato=true;
for(byte i=1;i<lun;i++)
if(arrMaterie.get(i).getNome().compareTo(arrMaterie.get(i-1).getNome())<0){
ScambiaMaterie(i,(byte)(i-1));
ordinato=false;
}
if(ordinato==true)break;
lun--;
}
}
private void ScambiaMaterie(int a, int b){
Materia temp;
temp=arrMaterie.get(a);
arrMaterie.set(a, arrMaterie.get(b));
arrMaterie.set(b, temp);
}
public ArrayList<Materia> getArrayListMat(){
return arrMaterie;
}
private final String nomeFile
="LibrettoScolastico.sav";
public void salvaFile(){
try{
oos.writeObject(this);
oos.close();
"Salvataggio non riuscito\n\n"+e,
}
}
public boolean leggiFile(){
try{
if(!file.exists())
return false;
LibrettoScolastico temp=(LibrettoScolastico)(ois.readObject());
arrMaterie=temp.getArrayListMat();
ois.close();
return true;
"Si è verificato un errore, continuare creando un nuovo libretto scolastico?",
"Creare nuovo Libretto Scolastico?",
JOptionPane.
YES_NO_OPTION,
return false;
}
}
}