Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Libretto Scolastico - LibrettoScolastico.java

LibrettoScolastico.java

Caricato da: Ale.gatti96
Scarica il programma completo

  1. //:workspace/LibrettoScolastico/LibrettoScolastico.java
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.ObjectInputStream;
  6. import java.io.ObjectOutputStream;
  7. import java.io.Serializable;
  8. import java.util.ArrayList;
  9.  
  10. import javax.swing.JFrame;
  11. import javax.swing.JOptionPane;
  12.  
  13. public class LibrettoScolastico implements Serializable{
  14.   private static final long serialVersionUID = 1L;
  15.   private ArrayList<Materia> arrMaterie;
  16.   private int mat;  //Indice della materia su cui operare
  17.  
  18.   public LibrettoScolastico(){
  19.         if(leggiFile())
  20.           return;
  21.         arrMaterie=new ArrayList<Materia>();
  22.         mat=-1;
  23.   }
  24.   public static void main(String args[]){
  25.         Frame frame=new Frame();
  26.     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  27.         frame.setSize(500,375);
  28.         frame.setVisible(true);
  29.         frame.setResizable(false);
  30.         frame.setLocationRelativeTo(null);
  31.   }
  32.  
  33.   public String riepilogo(){
  34.         if(size()==0){
  35.           return "Nessuna materia inserita!";
  36.         }
  37.         String s="";
  38.         for(int j=0;j<arrMaterie.size();j++){
  39.           double rec;
  40.           s+="\n"+arrMaterie.get(j).getNome()+":\n";
  41.           if(arrMaterie.get(j).getNumVoti()==0){
  42.                 s+=("Nessun voto presente\n");
  43.                 s+="\n---------------------\n";
  44.                 continue;
  45.           }
  46.          
  47.           //Riepilogo voti Scritti
  48.           if(arrMaterie.get(j).getGVS().size()!=0){
  49.             s+="   Scritto: Voti:"+arrMaterie.get(j).getVotiScritto()+
  50.                   String.format(" Media : %.2f",
  51.               Math.round(arrMaterie.get(j).getMediaScritto()*100.0)/100.0);
  52.             rec=arrMaterie.get(j).getRecScritto();
  53.             if(rec!=0){
  54.                   s+="\n           "+
  55.                           (rec==-1?
  56.                            "Impossibile recuperare con un voto":
  57.                            "Recupero con:"+rec);               
  58.             }
  59.             s+="\n";
  60.           }
  61.          
  62.          //Riepilogo voti Orali
  63.           if(arrMaterie.get(j).getGVO().size()!=0){
  64.             s+="   Orale: Voti:"+arrMaterie.get(j).getVotiOrale()+
  65.                   String.format(" Media: %.2f",
  66.                   Math.round(arrMaterie.get(j).getMediaOrale()*100.0)/100.0);
  67.             rec=arrMaterie.get(j).getRecOrale();
  68.             if(rec!=0){
  69.                   s+="\n           "+
  70.                           (rec==-1?
  71.                            "impossibile recuperare con un voto":
  72.                            "recupero con:"+rec);               
  73.             }
  74.             s+="\n";
  75.           }
  76.          
  77.          //Riepilogo voti di Laboratorio
  78.           if(arrMaterie.get(j).getGVL().size()!=0){
  79.             s+="   Laboratorio: Voti:"+arrMaterie.get(j).getVotiLaboratorio()+
  80.                   String.format(" Media: %.2f",
  81.                   Math.round(arrMaterie.get(j).getMediaLaboratorio()*100.0)/100.0);
  82.             rec=arrMaterie.get(j).getRecLaboratorio();
  83.             if(rec!=0){
  84.                   s+="\n           "+
  85.                           (rec==-1?
  86.                            "impossibile recuperare con un voto":
  87.                            "recupero con:"+rec);               
  88.             }
  89.           }
  90.           s+="\n---------------------\n";
  91.         }
  92.         return s;
  93.   }
  94.   public void addMateria(String nome){
  95.         Materia mat=new Materia();
  96.         mat.setNome(nome);
  97.         arrMaterie.add(mat);
  98.         OrdinaMaterie();
  99.         salvaFile();
  100.   }
  101.   public void remove(int j){
  102.         arrMaterie.remove(j);
  103.         salvaFile();
  104.   }
  105.   public void modMateria(int j,String nome){
  106.         get(j).setNome(nome);
  107.         OrdinaMaterie();
  108.         salvaFile();
  109.   }
  110.   public double getMedia(){
  111.         double somma=0;
  112.         int n=0;
  113.         for(int i=0;i<arrMaterie.size();i++){
  114.           somma+=arrMaterie.get(i).getSomma();
  115.           n+=arrMaterie.get(i).getNumVoti();
  116.         }
  117.         try{
  118.         return somma/n;
  119.         }catch(Exception e){
  120.           return -1;
  121.         }
  122.   }
  123.   public void setMat(int i){
  124.         mat=(i>=0&&i<size())?i:0;
  125.   }
  126.   public int getMat(){
  127.         return mat;
  128.   }
  129.   public Materia get(int i){
  130.         return arrMaterie.get(i);
  131.   }
  132.   public int size(){
  133.         return arrMaterie.size();
  134.   }
  135.   public String[] getStringArrMaterie(){
  136.         String[] materie=new String[size()];
  137.         for(int i=0;i<size();i++)
  138.           materie[i]=get(i).getNome();
  139.         return materie;
  140.   }
  141.   private void OrdinaMaterie(){
  142.         //Ordinamento arrMaterie secondo l'ordine alfabetico del campo privato nome
  143.         //Algoritmo di Ordinamento: Bubble sort
  144.         byte lun=(byte)arrMaterie.size();
  145.         boolean ordinato=true;
  146.         while(lun>0){
  147.           ordinato=true;
  148.           for(byte i=1;i<lun;i++)
  149.             if(arrMaterie.get(i).getNome().compareTo(arrMaterie.get(i-1).getNome())<0){
  150.               ScambiaMaterie(i,(byte)(i-1));
  151.               ordinato=false;
  152.             }
  153.           if(ordinato==true)break;
  154.           lun--;
  155.         }
  156.   }
  157.   private void ScambiaMaterie(int a, int b){
  158.         Materia temp;
  159.         temp=arrMaterie.get(a);
  160.         arrMaterie.set(a, arrMaterie.get(b));
  161.         arrMaterie.set(b, temp);
  162.   }
  163.  
  164.   public ArrayList<Materia> getArrayListMat(){
  165.         return arrMaterie;
  166.   }
  167.  
  168.   private final String nomeFile="LibrettoScolastico.sav";
  169.   public void salvaFile(){
  170.         try{
  171.           FileOutputStream fos=new FileOutputStream(nomeFile);
  172.           ObjectOutputStream oos=new ObjectOutputStream(fos);
  173.           oos.writeObject(this);
  174.           oos.close();
  175.         }catch(Exception e){
  176.            JOptionPane.showMessageDialog(null,
  177.                            "Salvataggio non riuscito\n\n"+e,
  178.                            "Errore",JOptionPane.ERROR_MESSAGE);
  179.         }
  180.   }
  181.   public boolean leggiFile(){
  182.         try{
  183.           File file=new File(nomeFile);
  184.           if(!file.exists())
  185.             return false;
  186.           FileInputStream fis=new FileInputStream(nomeFile);
  187.           ObjectInputStream ois=new ObjectInputStream(fis);
  188.           LibrettoScolastico temp=(LibrettoScolastico)(ois.readObject());
  189.           arrMaterie=temp.getArrayListMat();
  190.          
  191.           ois.close();
  192.           return true;
  193.         }catch(Exception e){
  194.           int risp=JOptionPane.showConfirmDialog(null,
  195.                           "Si è verificato un errore, continuare creando un nuovo libretto scolastico?",
  196.                           "Creare nuovo Libretto Scolastico?",JOptionPane.YES_NO_OPTION,
  197.                           JOptionPane.QUESTION_MESSAGE);
  198.           if(risp==JOptionPane.NO_OPTION)
  199.                 System.exit(0);
  200.           return false;
  201.         }
  202.   }
  203. }