Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
OPPO ha portato in Italia, dal 1° luglio 2026, Reno16 Pro: display AMOLED da 6,32 pollici a 144Hz, tripla fotocamera con sensore principale da 200 megapixel, chip Dimensity 8550 Super e batteria da 6000mAh, al prezzo di lancio di 899 euro. Lo abbiamo provato per due settimane insieme al nuovo accessorio Bubble, per capire se la formula compatta della serie regge ancora di fronte a un listino da 1099 euro
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
MiniLED di fascia media con local dimming a 192 zone, 144 Hz nativi e audio firmato Devialet. La prova strumentale riscontra colori affidabili e gaming reattivo, per un prodotto molto accessibile e convincente. Ma la soundbar aggiuntiva è quasi d'obbligo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-06-2010, 14:36   #1
iuska
Junior Member
 
Iscritto dal: Jun 2010
Messaggi: 3
AIUTO!! programmazione java

Salve a tutti,sto studiando all'università per l'esame di telematica 2 che riguarda la programmazione in java e la creazione di applicazioni telematiche.Prima di avventurarmi nelle cose piu complicate sto cercando di imparare qualcosa del linguaggio e il prof tra i primi esercizi assegnati ci ha dato da svolgere questo:

Un'azienda intende gestire l'archivio dei dipendenti.Ogni soggetto è individuato con codice,cognome e nome,funzione esercitata(dirigente,quadro,impiegato,operaio),tipo di retribuzione percepita(mensile o oraria),importo retribuzione(mensile o oraria),numero di mesi o di ore lavorate nell'anno.Il programma di gestione deve permettere di realizzare le seguenti operazioni(attivate dall'operatore mediante un menu):
1.Inserimento di tutti i record
2.Modifica di un record
3.Cancellazione di un record
4.Ricerca di tutti i dati relativi a un dipendente,noto il codice
5.Visualizzazione di tutti i dipendenti che hanno le retribuzioni superiori a un determinato importo indicato dall'operatore
e altro...

La mie domande sono:
devo usare i fili binari o i file di testo?
in java ci sono i puntatori a file o no?
in particolare come si fa la ricerca e l'inserimento?penso ke se riesco a capire la ricerca potrò svolgere anche gli altri punti ke nn ho inserito..

purtoppo sto studiando tutto da sola e ho sbattuto la testa su manuali cartacei e in internet ma oltre a dire come si apre un file e cm si kiude e le varie classi per l'i/o non dicono altro e mi pare ke la gestione dei file sia diversa dal c++ per esempio..nn riesco a capire bene ke comandi si usino per esempio noto il codice per cercare le info del dipendente..

Vi ringrazio per la pazienza!!aspetto risposte al piu presto xke mi serve accelerare i tempi
iuska è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2010, 14:41   #2
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
...hai provato a buttar giu' qualcosa?...il menu pnso sia richiesto a riga di comando mica in swing...e lo strato persistente non penso sia fatto con un db...quindi crea un oggettone Dipendente...e un cassettone in cui salvare piu' dipendenti...poi crea un menu che riesca ad interpretare l'input dell'utente e in base al numerillo inserito esegue l'operazione richiesta...

...ciao Andrea...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2010, 15:06   #3
iuska
Junior Member
 
Iscritto dal: Jun 2010
Messaggi: 3
il mio problema non è assolutamente il menu!si si ho provato a buttar giu qualcosa..ho fatto altri programmi e sn riuscita a farli..il mio problema è sulla gestione dei file..mi sn bloccata in qst esercizio xke nn riesco fondamentalmente a fare la ricerca dei dati del dipendente nel file..ho pensato di usare un array di oggetti di tipo Dipendente ma se bisogna usare il file ho pensato ke nn serve usare l'array..giusto??devo inserire i dati direttam nel file,giusto??xo nn so cm si faccia effettivamente a inserire e cercare nel file dei dati..ho provato..xo nn sn riuscita molto..
iuska è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2010, 15:10   #4
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
senza complicarti la vita mantieni una lista di dipendenti e la serializzi su un file binario. Per il tipo di esercizio va più che bene.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2010, 15:15   #5
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
Quote:
Originariamente inviato da iuska Guarda i messaggi
il mio problema non è assolutamente il menu!si si ho provato a buttar giu qualcosa..ho fatto altri programmi e sn riuscita a farli..il mio problema è sulla gestione dei file..mi sn bloccata in qst esercizio xke nn riesco fondamentalmente a fare la ricerca dei dati del dipendente nel file..ho pensato di usare un array di oggetti di tipo Dipendente ma se bisogna usare il file ho pensato ke nn serve usare l'array..giusto??devo inserire i dati direttam nel file,giusto??xo nn so cm si faccia effettivamente a inserire e cercare nel file dei dati..ho provato..xo nn sn riuscita molto..
...puoi postare il tuo codice?...

...ciao Andrea...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2010, 15:45   #6
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da iuska Guarda i messaggi
La mie domande sono:
1. devo usare i fili binari o i file di testo?
2. in java ci sono i puntatori a file o no?
3. in particolare come si fa la ricerca e l'inserimento?penso ke se riesco a capire la ricerca potrò svolgere anche gli altri punti ke nn ho inserito..
1. dal "tono" dell'esercizio io direi che tu debba usare un formato binario, a mo' di database

2. Non ci sono. Ci sono i File che sono la rappresentazione astratta di un percorso del filesystem. Ad esempio se ho un file il cui percorso è :

c:\programmi\pippo.dat

il suo "alter ego" in java.io è:

File file = new File("c:\\programmi\\pippo.dat");

3. Ricerca e inserimento dipendono prima di tutto dal formato dei dati. Ad esempio potremmo dire che il formato sia questo:

Codice:
RECORD

CODICE:			INT32
COGNOME:		CHAR64
NOME:			CHAR64
FUNZIONE:		BYTE (0 = DIRIGENTE, 1 = QUADRO, 2 = IMPIEGATO, 3 = OPERAIO)
TIPO RETRIBUZIONE:	BYTE (0 = MENSILE, 1 = ORARIA)
IMPORTO RETRIBUZIONE:	[INT32, INT32]
NUMERO DI MESI:		BYTE
NUMERO DI ORE		INT16

totale: 273 byte
Supponiamo che questo sia il formato del file "c:\pippo.dat". Come leggiamo/scriviamo:

[code]File file = new File("c:\\pippo.dat");
RandomAccessFile raf = new RandomAccessFile(file, "rw");[code]

Sappiamo che ogni record occupa 273 byte. Raf è inizialmente in posizione 0. Se dico:

raf.seek(273)

mi sposto in posizione 273, cioè al secondo record. Se dico:

raf.seek(546), mi sposto sul byte in posizione 546, cioè dove inizia il terzo record.

Nota la struttura del file io so che se colloco raf all'inizio di un record (cioè in una posizione che sia un multiplo di 273) posso dire:

int codice = raf.readInt();

e leggermi il codice. Dopo la lettura "raf" si sposta in avanti di 4 byte e quindi è nella posizione in cui, all'interno del record, iniziano i 64 char che compongono il cognome. Posso quindi dire:

Codice:
char[] cognome = new char[64];
for(int i = 0; i < 64; i++) {
    cognome[i] = raf.readChar();
}
Dopo il cognome, c'è il nome:

Codice:
char[] nome = new char[64];
for(int i = 0; i < 64; i++) {
    nome[i] = raf.readChar();
}
La funzione:

byte funzione = raf.readByte();

il tipo di retribuzione:

byte tipoRetribuzione = raf.readByte();

L'importo della retribuzione. Trattandosi di valuta non si usano i numeri in virgola mobile per via delle imprecisioni. Io ho stabilito che l'importo sia definito tramite una coppia di numeri interi dove il primo rappresenta la parte intera e il secondo la parte decimale.

int retribuzioneIntera = raf.readInt();
int retribuzioneDecimale = raf.readInt();

Per poi dire:

BigDecimal retribuzione = new BigDecimal(retribuzioneIntera + "." + retribuzioneDecimale);

Dopo la retribuzione c'è il numero di mesi per cui è goduta:

byte mensilita = raf.readByte();

seguita dal numero di ore

short ore = raf.readShort();

La scrittura avviene nello stesso modo, solo che al posto dei "read" usi i write, sempre con raf. Sappiamo che dato l'offset di un record (cioè l'indice del byte a partire dal quale inizia un record), il codice inizia da offset + 0, il cognome da offset + 4, il nome da offset + 132, la funzione da offset + 260, il tipo di retribuzione da offset + 261, l'importo della retribuzione da offset + 262, il numero di mensilità da offset + 270, il numero di ore da offset + 271.

Ergo se voglio cambiare il tipo di retribuzione dell'i-esimo record nel file dirò:

long offset = i * 273 + 261;
raf.seek(offset);
raf.writeByte((byte) 1);

Va detto che ci sono delle alternative un po' più aggraziate per gestire pacchetti di byte di queso genere (i canali) ma da quel che mi risulta nel contesto universitario è considerato esercizio di arti divinatorie ed è meglio non fare la figura degli strambi.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2010, 15:55   #7
iuska
Junior Member
 
Iscritto dal: Jun 2010
Messaggi: 3
Premetto ke inizialmente usavo un file di testo con un codice diverso ovviamente e l'inserimento riusciva..il resto no..allora ho usato un file binario..solo ke ora nn funziona proprio..qst sono i metodi x l'inserimento e la ricerca..se potete magari inserire un codice corretto mi farebbe comodo..Grazie a tutti!!




public void inserimento()throws IOException{
Dipendente dip=new Dipendente();
FileOutputStream f=new FileOutputStream("fileA.dat");
ObjectOutputStream fOUT=new ObjectOutputStream(f);
BufferedReader tastiera=new BufferedReader(new InputStreamReader(System.in));
boolean finito=false;
while(!finito){
System.out.println("\nInserire il codice del dipendente:");
dip.setCodice(Integer.parseInt(tastiera.readLine()));
System.out.println("Inserire il nome del dipendente:");
dip.setNome(tastiera.readLine());
System.out.println("Inserire il cognome del dipendente:");
dip.setCognome(tastiera.readLine());
System.out.println("Inserire la funzione del dipendente (dirigente,quadro,impiegato oppure operaio):");
dip.setFunzione(tastiera.readLine());
System.out.println("Inserire il tipo di retribuzione del dipendente (mensile o oraria):");
dip.setTipoRetr(tastiera.readLine());
if(dip.getTipoRetr().equals("mensile")){
System.out.println("Inserire l'importo della retribuzione mensile del dipendente:");
dip.setImportoRetr(Float.parseFloat(tastiera.readLine()));
System.out.println("Inserire il numero di mesi di lavoro effettuati nell'anno del dipendente:");
dip.setNumMesi(Integer.parseInt(tastiera.readLine()));
}else{
System.out.println("Inserire l'importo della retribuzione oraria del dipendente:");
dip.setImportoRetr(Float.parseFloat(tastiera.readLine()));
System.out.println("Inserire il numero di ore di lavoro effettuate nell'anno del dipendente:");
dip.setNumOre(Integer.parseInt(tastiera.readLine()));
}
fOUT.writeObject(dip);

System.out.println("\n\nSi vuole inserire un altro dipendente? (digitare si o no):");
if(tastiera.readLine().equals("no")){
finito=true;
}

}
fOUT.flush();
fOUT.close();
}


public void ricerca(int cod)throws IOException{
FileInputStream f=new FileInputStream("fileA.dat");
ObjectInputStream fIN=new ObjectInputStream(f);
Dipendente dip=new Dipendente();
RandomAccessFile inpF = new RandomAccessFile ("fileA.dat", "r");
while(fIN.read()!=-1){
if(dip.getCodice()==cod){
try{
System.out.println("La posizione è:"+inpF.getFilePointer());
System.out.println(fIN.readObject());
}catch(Exception e){
System.out.println("Errore nella lettura");
}
}
}System.out.println("Il codice non esiste nell'archivio");

}
iuska è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
La missione robotica LINK per salvare il...
Potrebbe essere stato lanciato l'ultimo ...
PamStealer, il malware per Mac che prima...
NAVEE EXO S Pro, il robot esoscheletro p...
Samsung Galaxy A57 5G a 399€ con 256 GB:...
Volevano collegare delle aragoste vive a...
La crisi dei PC è peggiore del pr...
Alibaba pronta a vietare Claude Code ai ...
Sovranità sui dati: Cloud Firewal...
FiberCop porterà la fibra Gigabit...
Data center in Lombardia: 20 progetti sc...
Tutti i modi in cui la scommessa di Orac...
Kioxia e SanDisk sbandierano i numeri de...
iPhone 18 Pro potrebbe usare modem Qualc...
Basta 'AI slop': Godot vieta ufficialmen...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:49.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v