Buongiorno a tutti.. sono qui per riuscire a chiarire finalmente alcuni dubbi. Sto ritentando l'esame di programmazione a cui la scorsa volta riuscii a prendere solo 19. Il programma era funzionante ma la professoressa mi contestò alcune cose che NON ricordo precisamente (ero abbastanza in ansia mentre me le diceva), ma avevano a che fare con il mio modo di impostare la classe. Si lamentò che in ogni classe (lei ci dice di farne 3) non ci fossero i campi esemplare...quando io li ho sempre messi solo in una. E poi mi fece un discorso sul mio tester del tipo che i clienti dovevano ricevere il programma senza sapere come fosse scritto, ma direttamente con le funzionalità..
Scusate la mia poca chiarezza, ma io vorrei postarvi qui un mio programma semplice (che funziona) e vorrei che mi diceste cosa non va nell'impostazione delle classi o in altro.. perchè non so proprio che pesci pigliare :/
La traccia è questa:
Dipendente1Scrivere un programma Java adatto a rappresentare i dipendenti di una azienda.
Implementare le seguenti funzionalità:
1) Inserimento da terminale in un array dei dati:
nome
cognome
stipendio
tipologia (direttore,impiegato, lavoratore a cottimo).
2) ordinamento dei dati secondo un criterio di ordinamento scelto a run time dall'utente tra cognome-tipologia stipendio;
3) visualizzazione dei dati in forma tabellare;
4) popolamento di array finale che contenga tutti i dati relativi ai dipendenti di due distinte filiali il cui stipendio
supera i 1000 euro.
5) calcolo e visualizzazione delle seguenti statistiche aziendali;
-stipendio medio dei dipendenti per tipologia;
-spesa annua per il personale.
Dipendentecodice:public class Dipendente1 { public Dipendente1(String nome, String cognome, double stipendio, String tipo) { name=nome; sur=cognome; stip=stipendio; type=tipo; } public String getName() { return name; } public String getSur() { return sur; } public String getType() { return type; } public double getStip() { return stip; } //campi esemplare private String name; private String sur; private String type; private double stip; }
Dipendente_testercodice:public class Dipendente { //ordinamento per cognome public void ordSur(Dipendente1[]v) { Dipendente1 temp; for (int i=1;i<v.length;i++) { for(int j=i;j>0;j--) { if((v[j].getSur()).compareToIgnoreCase(v[j-1].getSur())<0) { temp=v[j]; v[j]=v[j-1]; v[j-1]=temp; } } } } //ordinamento per tipo public void ordType(Dipendente1[]v) { Dipendente1 temp; for(int i=1;i<v.length;i++) { for(int j=i;j>0;j--) { if((v[j].getType()).compareToIgnoreCase(v[j-1].getType())<0) { temp=v[j]; v[j]=v[j-1]; v[j-1]=temp; } } } } //ordinamento per stipendio public void ordStip(Dipendente1[]v) { Dipendente1 temp; for(int i=1;i<v.length;i++) { for(int j=i;j>0;j--) { if(v[j].getStip()<v[j-1].getStip()) { temp=v[j]; v[j]=v[j-1]; v[j-1]=temp; } } } } //stampa normale public void stampa(Dipendente1[]v) { for(int i=0;i<v.length;i++) { System.out.println(v[i].getSur()+", "+v[i].getName() +", "+v[i].getStip()+", "+v[i].getType()); } } //STAMPA TABELLARE public void showTab(Dipendente1[]v) { String divider="_________________________________________________________________"; String title1= "COGNOME"; String title2= "NOME"; String title3= "STIPENDIO"; String title4= "TIPO"; System.out.println(""); System.out.printf("%-15s %-15s %-15s %-15s %n", title1, title2, title3, title4); System.out.println(divider); for(int i=0;i<v.length;i++) { String cognome = v[i].getSur(); String nome = v[i].getName(); double stipendio = v[i].getStip(); String type= v[i].getType(); System.out.printf("%-15s %-15s %-15s %-15s %n", cognome, nome, stipendio, type); } System.out.println(""); System.out.println(divider); } //metodo PRIVATO che conta quanti sono gli stipendi //superiori a 1000 private static int count1000(Dipendente1[]v) { int cont =0; for(int i=0;i<v.length;i++) { if(v[i].getStip()>=1000) { cont++; } } return (cont); } //metodo che "mette" in un array i dati dei dipendenti //con lo stipendio >= 1000 public Dipendente1[] merge1000(Dipendente1[]v) { int cont = 0; int num = Dipendente.count1000(v); Dipendente1[] nuovo = new Dipendente1[num]; for (int i=0;i<v.length;i++) { if(v[i].getStip()>=1000) { nuovo[cont]= v[i]; cont++; } } return (nuovo); } //stipendio medio dei dipendenti per tipologia public void stipMedio(Dipendente1[]v) { int contCott=0; double sommaCott=0; int contImp =0; double sommaImp=0; int contDir =0; double sommaDir=0; for(int i=0;i<v.length;i++) { if(v[i].getType().equalsIgnoreCase("cottimo")) { contCott++; sommaCott= sommaCott+v[i].getStip(); } if(v[i].getType().equalsIgnoreCase("direttore")) { contDir++; sommaDir= sommaDir+v[i].getStip(); } if(v[i].getType().equalsIgnoreCase("impiegato")) { contImp++; sommaImp= sommaImp+v[i].getStip(); } } double mediaCott= sommaCott/contCott; double mediaImp= sommaImp/contImp; double mediaDir= sommaDir/contDir; System.out.println("Media stipendio lav.cottimo: "+mediaCott); System.out.println("Media stipendio direttori: "+mediaDir); System.out.println("Media stipendio impiegati: "+mediaImp); } //SPESA ANNUA PER IL PERSONALE public void spesaAnnua(Dipendente1[]v) { double somma=0; for(int i=0;i<v.length;i++) { somma= somma+v[i].getStip(); } System.out.println("La spesa annua è: "+somma); } }
codice:import java.util.Scanner; public class Dipendente_tester { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int scelta; Dipendente temp; Dipendente1[] stip1000 = null; Dipendente1[] dip = null; do{ System.out.println("Scegli tra le seguenti operazioni: " +"\n1.Inserimento dati da input" +"\n2.Ordinamento per cognome" +"\n3.Ordinamento per tipologia" +"\n4.Ordinamento per stipendio" +"\n5.Stampa tabellare" +"\n6.Dipendenti con stipendio >=1000" +"\n7.Stipendio medio per tipologia" +"\n8.Spesa annua per il personale" +"\n9.Termina programma"); scelta = in.nextInt(); switch(scelta) { case 1: System.out.println("QUANTI DIPENDENTI VUOI INSERIRE?"); int num = in.nextInt(); dip = new Dipendente1[num]; for(int i=0;i<dip.length;i++) { System.out.println("Cognome dipendente "+(i+1)+": "); String cogn = in.next(); System.out.println("Nome dipendente "+(i+1)+": "); String nome = in.next(); System.out.println("Stipendio dipendente "+(i+1)+": "); double stip = in.nextDouble(); System.out.println("Tipologia dipendente "+(i+1)+": "); String tipo = in.next(); dip[i]= new Dipendente1(nome,cogn,stip,tipo); } System.out.println(""); System.out.println("STAMPA DELL'ARRAY"); temp = new Dipendente(); temp.stampa(dip); System.out.println(""); break; case 2: System.out.println("ORDINAMENTO PER COGNOME"); temp = new Dipendente(); temp.ordSur(dip); temp.stampa(dip); System.out.println(""); break; case 3: System.out.println("ORDINAMENTO PER TIPOLOGIA"); temp = new Dipendente(); temp.ordType(dip); temp.stampa(dip); System.out.println(""); break; case 4: System.out.println("ORDINAMENTO PER STIPENDIO"); temp = new Dipendente(); temp.ordStip(dip); temp.stampa(dip); System.out.println(""); break; case 5: temp = new Dipendente(); temp.showTab(dip); System.out.println(""); break; case 6: System.out.println("DIPENDENTI CON STIPENDIO >=1000"); temp = new Dipendente(); stip1000 = temp.merge1000(dip); temp.stampa(stip1000); System.out.println(""); break; case 7: System.out.println("STIPENDIO MEDIO PER TIPOLOGIA"); temp = new Dipendente(); temp.stipMedio(dip); System.out.println(""); break; case 8: System.out.println("SPESA ANNUA PER IL PERSONALE"); temp = new Dipendente(); temp.spesaAnnua(dip); System.out.println(""); } }while(scelta!=9); System.out.println("Programma Terminato!"); } }
grazie mille anticipatamente!

Rispondi quotando