Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Amazon porta i colori sul suo Kindle da scrittura più grande: schermo Colorsoft a 11 pollici, processore quad-core, penna premium più reattiva e strumenti IA per le note, sono le note salienti. Il salto di prezzo rispetto al modello in bianco e nero si fa sentire, anche se la percezione è quella di trovarsi di fronte a un prodotto di fascia altissima, per veri appassionati
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


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 ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Anche T-Mobile abbandona VMware e migra ...
In Italia crescono gli investimenti nell...
Samsung combina IA e quantum computing p...
Anthropic ammette: Claude Code usa un ap...
L'IA costa sempre di più: AWS aum...
Google prepara il blocco delle app non v...
Amazfit aggiorna il Cheetah 2 Ultra: ric...
L'FAA apre ai voli commerciali supersoni...
Amazon ha già abbastanza satelliti per a...
A2A ed Equinix uniscono le forze per rec...
Apple ha creato la crisi delle memorie? ...
GPU subito in cambio di una quota dei ri...
Firefly Aerospace potrà lanciare ...
Intesa Sanpaolo sposta i sistemi IT core...
Visa, Mastercard e Coinbase lanciano Ope...
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: 05:12.


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