Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Realizzato da Lenovo e installato presso il Cineca di Casalecchio di Reno, Pitagora offre circa 44 PFlop/s di potenza di calcolo ed è dedicato alla simulazione della fisica del plasma e allo studio dei materiali avanzati per la fusione, integrandosi nell’ecosistema del Tecnopolo di Bologna come infrastruttura strategica finanziata da EUROfusion e gestita in collaborazione con ENEA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-06-2010, 15: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, 15:41   #2
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
...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, 16: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, 16: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, 16:15   #5
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
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, 16: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, 16: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


Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare Cineca inaugura Pitagora, il supercomputer Lenov...
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
BioWare conferma: il nuovo Mass Effect &...
5 robot aspirapolvere di fascia alta in ...
Xiaomi Redmi Note 14 5G a 179€ è ...
Veri affari con gli sconti de 15% Amazon...
Tutti gli iPhone 16 128GB a 699€, 16e a ...
Take-Two ammette: vendite di Borderlands...
Tutti i Macbook Air e Pro con chip M4 ch...
GeForce RTX 50 SUPER: non cancellate, ma...
Warner Bros. riporterà al cinema ...
Hai usato il 'Pezzotto'? Ora anche la Se...
TeraFab: Musk vuole costruire la fabbric...
Lo compri una volta, lo giochi dove vuoi...
Qiantinuum annuncia Helios, "il com...
Samsung Galaxy S26 Ultra: una sola novit...
Google prepara Gemini 3 Pro e Nano Banan...
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: 09:53.


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