Progetto Java Programmazione 3

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Progetto Java Programmazione 3"

Transcript

1 Progetto Java Programmazione 3 Gioco On-Line: HeadKnock Scopo di tale progetto è di creare un gioco on-line che quindi permetta a più processi Client di interagire tra loro mediante un processo Server. Il linguaggio di programmazione scelto è: Java (versione 1.6). Studente: Colato Roberto

2 Indice Introduzione Pag. 01 Descrizione del progetto Pag. 03 Descrizione e schemi dell architettura Pag. 05 Descrizione e schemi del protocollo Pag. 07 Dettagli implementativi de client Pag. 08 Dettagli implementativi de server Pag. 09 Manuale Utente Pag. 10 Sorgenti o AppLock.java Pag. 11 o Audio.java Pag. 14 o BackgroundPanel.java Pag. 17 o Block.java Pag. 18 o ClientConfig.java Pag. 21 o Database.java Pag. 22 o Encrypter.java Pag. 25 o Game.java Pag. 26 o Instructions.java Pag. 32 o List.java Pag. 38 o Loading.java Pag. 41 o Lobby.java Pag. 42 o Login.java Pag. 49 o Matrix.java Pag. 56 o Menu.java Pag. 58 o MyTimer.java Pag. 65 o Planner.java Pag. 67 o Server.java Pag. 69 o ServerConfig.java Pag. 70 o ServerThread.java Pag. 71 o Table.java Pag. 78 o TopBar.java Pag. 81 o User.java Pag. 84 o UserSettings.java Pag. 86 Link Utili Pag. 87 2

3 Descrizione del progetto Headknock è un gioco di logica che consiste nel totalizzare il maggior punteggio entro il tempo limite, andando a completare degli schemi logici, obbiettivo principale è quello di permettere agli utenti di sfidarsi on-line, tuttavia nell applicazione sono presenti altre specifiche, come ad esempio una modalità di gioco off-line che permetterà all utente di migliorare le proprie abilità e di prendere confidenza con il gioco prima di cimentarsi in sfide on-line e di migliorare il proprio record personale, o semplicemente giocare una partita senza necessità di connettersi al server. Inoltre è presente un sistema che permette la creazione di account su cui si basa anche una classifica online consultabile direttamente dall applicazione previa autenticazione sul server con il proprio account anch esso creabile direttamente dall applicazione client. Il Server è progettato in modo tale da accettare le richieste di connessione dei Clients che saranno poi gestite singolarmente da Servet-Threads appositamente generati. Inoltre l applicazione lato Server si interfaccia con un Database MySQL in cui salve e legge informazioni utili che rispettivamente riceve ed invia ai client medianti gli specifici Server-Threads. Il Client interagisce con il Server-Thread assegnatogli mediante appositi comandi grafici, inoltre sono disponibili modalità di gioco e comandi che non necessitano di connessione al server e dunque possono essere eseguite dall utente senza essere necessariamente connessi al Server. Inoltre, sia l applicazione Client, che quella Server, sono progettate per gestire opportunamente errori ed eccezioni che potrebbero insorgere durante la connessione in modo da evitare stalli, crash e situazioni impreviste (ad esempio la disconnessione improvvisa di un client in un qualunque momento). Di seguito alcune schermate d esempio dell applicazione. 3

4 4

5 Descrizione e schemi dell architettura L'architettura del progetto prevede le seguenti fasi. Inizialmente il Client si connette al server principale. Il Server Principale (S) accetta la connessione su un nuovo socket diverso da quello di ascolto, fatto ciò crea un nuovo Thread (ST) a cui passerà il socket. Il Client, è ora pronto ad interagire con gli atri Client tramite il proprio Server Thread (ST). Di seguito due schemi che rendono meglio l idea dell architettura del progetto: 5

6 6

7 Descrizione e schemi del protocollo L'intero progetto è sviluppato utilizzando connessioni TCP poiché, si ritiene indispensabile che i dati siano trasmessi su un canale di comunicazione stabile e affidabile. Volendo dare uno schema al progetto possiamo prevede le seguenti fasi di schematizzazione: 7

8 Dettagli implementativi del Applicazione Client L applicazione Client è scritta in modo tale da permettere all utente di giocare sia in modalità off-line che in modalità on-line, inoltre nell applicazione è presente una guida che spiega i comandi e le logiche di gioco. La modalità off-line permette all utente giocare in locale e migliorare il proprio record personale. La modalità on-line necessita di una connessione al server, qualora questa non sia disponibile un messaggio ne darà notifica all utente. Una volta stabilita la connessione con il server verrà chiesto all utente di effettuare il login con il proprio account o in alternativa di crearne uno, inoltre è presente nella schermata di login un checkbox che se spuntato ricorderà username e password inserite per gli accessi successivi. Dopo che l utente si è autentificato sul server, verrà visualizzata una schermata di lobby da cui sarà possibile lanciare e giocare sfide, nonché consultare la classifica globale basata su un valore rango che varia a seconda dell abilità di gioco dell utente nelle partite online e al numero di partite giocate. Cliccando sull apposito tasto sfida nella schermata di lobby, l utente entra in modalità sfida, tale modalità resterà attiva finche non sarà creata una nuova sfida da giocare per l utente. Nelle creazione di una nuova sfida il server, previa consulto del database, associa 2 utenti (sfidanti) scelti casualmente tra quelli che hanno la modalità sfida attiva (anche gli utenti off-line possono avere la modalità sfida attiva). Per limitare il potenziale traffico inutile che alcuni utenti potrebbero intenzionalmente causare sul server lanciando una grossa quantità di sfide che poi non saranno giocate, il sistema implementa un meccanismo tale che non permette di entrare in modalità sfida finchè c è almeno una sfida in attesa di essere giocata. Schema UML Client: 8

9 Dettagli implementativi del Applicazione Server Il Server accetta le connessioni dai client che poi passa a specifici Server-Threads che gestiscono le richieste dei client ad essi connessi in un rapporto 1 a 1. L applicazione Server implementa dei meccanismi che permetto all utente di registrarsi con username univoci, autenticarsi, generare nuove sfide di gioco, nonché fornisce quando necessario i dati, che correttamente interpretati dall applicazione client, permettono l esecuzione di importanti funzioni relative alla modalità di gioco on-line, nonché la visualizzazione della schermata di lobby e della classifica. Il server gestisce opportunamente un DataBase MySQL per memorizzare informazioni relative agli utenti e alle sfide che quest ultimi intraprendono nella modalità di gioco on-line, inoltre le informazioni memorizzare permetto di stilare una classifica dei giocatori. Schema UML DataBase: Schema UML Server: 9

10 Manuale utente Client I applicazione Client è composta dalle seguenti classi: AppLock.java = Impedisce avvio multiplo dell applicazione sullo stesso dispositivo. Audio.java = Gestisce le componenti audio. BackgroundPanel.java = Consente la creazioni di pannelli con immagine come sfondo grafico. Block.java = Elemento base del campo di gioco. ClientConfig.java = Parametri di configurazione dell applicazione client. Encrypter.java = Consente di criptare stringhe. Game.java = Avvia e gestisce una partita di gioco sia on-line che off-line. Instructions.java = Contiene la guida con le istruzioni ed i comandi di gioco List.java = Usata per visualizzare la classifica di gioco in modalità on-line. Loading.java = Rappresenta una Pagina di caricamento (Prettamente Grafica) Lobby.java = Pannello con informazioni e comandi utili per la modalità on-line. Login.java = Schermata che permette all utente di registrarsi e o autenticarsi. Matrix.java = Oggetto composto da blocco utilizzato per creare il campo gi gioco. Menu.java = Interfaccia grafica con comandi iniziali dell applicazione client. MyTimer.java = Rappresentazione di un Timer, sia graficamente che funzionalmente. Planner.java = Crea lo schema grafico risolutivo per la specifica matrice di gioco. Table.java = Usata per ottenere una visualizzazione schematica delle informazioni. TopBar.java = Barra grafica con comandi di gestione Audio dell applicazione. User.java = Usata per facilitare la comunicazione tra client e server. UserSettings.java = Contiene le preferenze dell utente (Audio on/off, username, ecc). Server I applicazione Server è composta dalle seguenti classi: Database.java Encrypter.java Server.java ServerConfig.java ServerThread.java User.java = Classe che facilità l utilizzo del DataBase grazie a diversi metodi. = Consente di criptare stringhe. = Avvia l applicazione server, che si mette in attesa di nuove connessioni. = Parametri di configurazione dell applicazione server. = Gestisce la connessione con un client, servendone le richieste. = Usata per facilitare la comunicazione tra client e server. L applicazione è stata scritta utilizzando JDK 1.6, inoltre utilizza diverse risorse grafiche e multimediali, al fine di rendere più avvincente l esperienza di gioco. Di seguito i sorgenti che compongono l applicazione in ordine alfabetico, tuttavia è possibile fare rifermento all indice per una più rapida ricerca. 10

11 AppLock.java package myhawk.games; import java.io.file; import java.io.fileoutputstream; import java.nio.channels.filechannel; import java.nio.channels.filelock; import java.util.logging.level; import java.util.logging.logger; /*Classe con logica Singleton che genere un file lock usato per limitare l'esecuzione del blocco di codice che ne fa uso. *in tal modo non sarà possibile avviare contemporaneamente più blocchi di codice alla volta su uno stesso computer*/ public class AppLock { private static AppLock instance; //istanza di AppLock private File lock_file = null; //File di lock private FileLock lock = null; //lock private FileChannel lock_channel = null; //canale di lock private FileOutputStream lock_stream = null; //Stream di lock /*Costruttore PRIVATO che istanzia un nuovo oggetto AppLock*/ private AppLock() { /*Costruttore PRIVATO che istanzia un nuovo oggetto AppLock basato su una specifica key data in ingresso*/ private AppLock(String key) throws Exception { String tmp_dir = System.getProperty("java.io.tmpdir"); //ottiene path cartella temp del sistema if (!tmp_dir.endswith(system.getproperty("file.separator"))) { tmp_dir += System.getProperty("file.separator"); try { //Genero una stringa md5 che sarà usata come nome del file di lock Encrypter md = new Encrypter(ClientConfig.ENCRYPTION_MODE); String hash_text = md.encrypt(""); lock_file = new File(tmp_dir + hash_text + ".app_lock"); //creo il file di lock catch (Exception ex) { System.out.println("AppLock.AppLock() file fail"); // Se la creazione del file di lock md5 non è andata a buon fine provo a creare un file di lock a partire dalla key if (lock_file == null) { lock_file = new File(tmp_dir + key + ".app_lock"); lock_stream = new FileOutputStream(lock_file); String f_content = "Java AppLock Object\r\nLocked by key: " + key + "\r\n"; lock_stream.write(f_content.getbytes()); lock_channel = lock_stream.getchannel(); //avvio il lock sul canale lock = lock_channel.trylock(); 11

12 if (lock == null) { //se non è stato possibile creare il file di lock lancio l'eccezione throw new Exception("Can't create Lock"); /*Modulo PRIVATO che rilascia il lock in modo da permettere l'esecuzione di nuove applicazioni che lo richiedono */ private void release() throws Throwable { if (lock.isvalid()) { lock.release(); if (lock_stream!= null) { lock_stream.close(); if (lock_channel.isopen()) { lock_channel.close(); if (lock_file.exists()) { //Modulo sempre eseguito alla fine del codice per di rilasciare il lock protected void finalize() throws Throwable { this.release(); super.finalize(); /* Metodo che imposta l'appication lock, può essere chiamato 1 volta per applicazione, tutte le chiamate successive vengono ignorate*/ public static boolean setlock(string key) { if (instance!= null) { return true; try { instance = new AppLock(key); catch (Exception ex) { instance = null; Logger.getLogger(AppLock.class.getName()).log(Level.SEVERE, "Fail to set AppLoc", ex); return false; //Thread eseguito prima dello Shut Down della JVM Runtime.getRuntime().addShutdownHook(new Thread() public void run() { AppLock.releaseLock(); ); return true; 12

13 /*Modulo che rilascia il lock che non potrà più essere utilizzato in questa applicazione grazie alla logica Singleton*/ public static void releaselock() { try { if (instance == null) { throw new NoSuchFieldException("INSTATCE IS NULL"); instance.release(); catch (Throwable ex) { Logger.getLogger(AppLock.class.getName()).log(Level.SEVERE, "Fail to release", ex); 13

14 Audio.java package myhawk.games; import java.io.*; import java.net.url; import javax.sound.sampled.audiosystem; import javax.sound.sampled.clip; import javax.sound.sampled.lineevent; import javax.sound.sampled.linelistener; import javax.sound.sampled.lineunavailableexception; import javax.sound.sampled.unsupportedaudiofileexception; /*Classe che con una logica Singleton genere un oggetto capace di gestire l'audio in altri oggetti*/ public class Audio{ private Clip clip = null, clipbg = null; //Oggetto clip dedicato agli effetti sonori e oggetto clip dedicato alla musica di sottofondo private static Audio instance = null; //Usato per creare l'istanza necessaria alla logica Singleton private UserSettings user_settings = null; //Contiene le preferenze dell'utente (audio si/no) private URL url = null, urlbg = null; //conterrà il path dei file audio che saranno avviati grazie agli oggetti clip private boolean sound_status = false, music_status = false; //status effetti sonori e background music private int bg_music_index = 0; //indice della musica di sottofondo corrente private String[] bg_music = new String[] {"/audio/bg.wav","/audio/game.wav"; //musiche di sottofondo disponibili private Audio(){ //Costruttore PRIVATO che carica l'istanza dell'oggetto UserSettings da cui ricava le preferenze utente user_settings = UserSettings.getInstance(); sound_status = user_settings.issound(); music_status = user_settings.ismusic(); public static Audio getinstance(){ //Singleton, restituisce l'istanza dell'oggetto Audio e se non esiste ne crea uno if(instance == null){ instance = new Audio(); return instance; public void startsound(string path){ //Modulo che avvia un file audio ripetuto un unica volta instance.url = instance.getclass().getresource(path); try { instance.clip = AudioSystem.getClip(); catch (LineUnavailableException e) { e.printstacktrace(); try { instance.clip.open(audiosystem.getaudioinputstream(url)); catch (LineUnavailableException e) { e.printstacktrace(); 14

15 catch (UnsupportedAudioFileException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); instance.clip.addlinelistener(new LineListener(){ public void update(lineevent event) { if (event.gettype() == LineEvent.Type.STOP) { event.getline().close(); ); instance.clip.start(); //Listner che chiude il clip audio appena quest'ultimo termina public synchronized void startbgmusic(){ //Modulo che avvia un file audio ripetuto fino e alla ricezione di esplicita richiesta di stop instance.urlbg = instance.getclass().getresource(bg_music[bg_music_index]); try { instance.clipbg = AudioSystem.getClip(); catch (LineUnavailableException e) { e.printstacktrace(); try { instance.clipbg.open(audiosystem.getaudioinputstream(instance.urlbg)); catch (LineUnavailableException e) { e.printstacktrace(); catch (UnsupportedAudioFileException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); instance.clipbg.loop(-1); public void stopbgmusic(){ //modulo che stoppa e chiude il clipbg (background music) if(instance.clipbg.isrunning()){ instance.clipbg.stop(); instance.clipbg.close(); public void stopsound(){ //modulo che stoppa e chiude il clip (sound effects) if(instance.clip.isrunning()){ instance.clip.stop(); instance.clip.close(); 15

16 public boolean ismusicenabled() { return music_status; //ritona lo stato della musica di sottofondo public synchronized void setmusicstatus(boolean music_status) { //imposta lo stato della musica di sottofondo this.music_status = music_status; user_settings.setmusic(music_status); public boolean issoundenabled() { //ritorna lo stato degli effetti sonori return sound_status; public synchronized void setsoundstatus(boolean sound_status) { //imposta lo stato degli effetti sonori this.sound_status = sound_status; user_settings.setsound(sound_status); public void setbgmusicindex(int bg_music_index) { this.bg_music_index = bg_music_index; //imposta l'indice della BgMusic da selezionare 16

17 BackgroundPanel.java package myhawk.games; import java.awt.graphics; import java.awt.image; import javax.swing.jpanel; /*Classe che crea Oggetti ti tipo JPanel con metodo paint sovrascritto *in modo da permettere l'inserimento di immagini di background al pannello*/ public class BackgroundPanel extends JPanel { private static final long serialversionuid = L; private Image image; public BackgroundPanel(Image image){ this.image = //metodo che permette di disegnare uno sfondo al pannello che si ridimensiona con esso protected void paintcomponent(graphics g){ super.paintcomponent(g); //invoca metodo paintcomponent della classe JPanel if (image!= null) g.drawimage(image, 0,0,this.getWidth(),this.getHeight(),this); 17

18 Block.java package myhawk.games; import java.awt.color; import java.awt.cursor; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import javax.swing.borderfactory; import javax.swing.imageicon; import javax.swing.jbutton; /*Classe Blocco che rappresenta l'elemento base del campo di gioco*/ public class Block implements MouseListener{ private JButton block; private Boolean status; private Audio audio = Audio.getInstance(); //elemento grafico del blocco che permette l'interazione dell'utente //status del blocco //oggetto Audio che gestisce l'audio del gioco public Block () { //Costruttore block = new JButton(new ImageIcon(getClass().getResource("/img/emptyblock.png"))); block.setname("empty BLOCK"); //Assegno il nome EMPTY BLOCK che sarà poi utile per la gestione del medesimo block.addmouselistener(this); //Uso di MouseListener per poter gestire sia il click destro che il sinistro del mouse block.setcontentareafilled(false); block.setcursor(cursor.getpredefinedcursor(cursor.hand_cursor)); block.setborder(borderfactory.creatematteborder(1, 1, 1, 1, Color.black)); /*Modulo che cambia lo stato, il nome e l'aspetto del blocco in base alle circostanze e al nome assegnato al bottone*/ public void changebuttonstatus(int e){ if(block.getname().equals("empty BLOCK")){ if(e==mouseevent.button1){ //click tasto sinistro mouse block.seticon(new ImageIcon(getClass().getResource("/img/fullblock_focused.png"))); block.setname("full BLOCK"); status = true; else if(e==mouseevent.button3){ //click tasto destro mouse block.seticon(new ImageIcon(getClass().getResource("/img/nofullblock_focused.png"))); block.setname("nofull BLOCK"); status = false; else{ block.seticon(new ImageIcon(getClass().getResource("/img/emptyblock_focused.png"))); block.setname("empty BLOCK"); status = null; 18

19 public void setsolved(){ //Modulo che imposta l'emento block come elemento risolto cambiando nome del bottone e grafica if(block.getname().equals("full BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/solvedfullblock.png"))); else if(block.getname().equals("nofull BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/solvednofullblock.png"))); block.setname("solved BLOCK"); public void resetstatus(){ //reset stato del blocco alle condizioni originali block.seticon(new ImageIcon(getClass().getResource("/img/emptyblock.png"))); block.setname("empty BLOCK"); status = null; public void setstatus(boolean status){ this.status=status; //permette di cambiare lo status del blocco public Boolean getstatus(){ return status; public JButton getbutton(){ return block; //restituisce lo stato del blocco //restituisce l'elemento di tipo JButton del public void mouseclicked(mouseevent arg0) //Modulo che cambia la grafica del Block al passaggio del mouse public void mouseentered(mouseevent e) { if(!block.getname().equals("solved BLOCK")){ if(block.getname().equals("empty BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/emptyblock_focused.png"))); else if(block.getname().equals("full BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/fullblock_focused.png"))); else if(block.getname().equals("nofull BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/nofullblock_focused.png"))); 19

20 @Override //Modulo che cambia la grafica del Block al passaggio del mouse public void mouseexited(mouseevent arg0) { if(!block.getname().equals("solved BLOCK")){ if(block.getname().equals("empty BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/emptyblock.png"))); else if(block.getname().equals("full BLOCK")){ block.seticon(new ImageIcon(getClass().getResource("/img/fullblock.png"))); else if(block.getname().equals("nofull BLOCK")){ block.seticon(new //mouse listener che invoca il modulo che cambia lo status del bottone qualora non fosse già risolto public void mousepressed(mouseevent e) { if(!block.getname().equals("solved BLOCK")){ this.changebuttonstatus(e.getbutton()); if(audio.issoundenabled()){ audio.startsound("/audio/block_change.wav"); else if(audio.issoundenabled()){ public void mousereleased(mouseevent arg0) { 20

21 ClientConfig.java package myhawk.games; /*Classe che contiene variabili che saranno usate globalmente negli oggetti che costituiscono l'applicazione Client*/ public class ClientConfig { public static final String SERVER_ADRESS = "xxx.xxx.xxx.xxx"; public static final int SERVER_PORT = xxxx; public static final int GAME_TIME = xxx; public static final int MARTIX_ROWS = x; public static final int MATRIX_COLUMNS = x; public static final String ENCRYPTION_MODE = "xxx"; public static final int LOGIN_ATTEMPS = x; //Indirizzo del server //Porta su cui il Server ha una ServerSocket aperta in ascolto //Durata in secondi di una partita //Numero di righe di cui è composta la matrice di gioco //Numero di colonne di cui è composta la matrice di gioco //Algoritmo di Crittografia scelto nel Client //Tentativi di Login a disposizione dell'utente 21

22 Database.java package myhawk.games; import java.sql.*; import java.util.arraylist; /*Classe usata per gestione del DB. Gestisce la connessione col Database e Fornisce i metodi per l'esecuzione delle query*/ public class Database { private String nomedb; // Nome del Database a cui connettersi private String nomeutente; // Nome utente utilizzato per la connessione al Database private String pwdutente; // Password usata per la connessione al Database private String errore; // Raccoglie informazioni riguardo l'ultima eccezione sollevata private Connection db; // La connessione col Database private boolean connesso; // Flag che indica se la connessione è attiva o meno public Database(String nomedb) { this(nomedb, "", ""); public Database(String nomedb, String nomeutente, String pwdutente) { this.nomedb = nomedb; this.nomeutente = nomeutente; this.pwdutente = pwdutente; connesso = false; errore = ""; public boolean connetti() { // Apre la connessione con il Database connesso = false; try { // Carico il driver JDBC per la connessione con il database MySQL Class.forName("com.mysql.jdbc.Driver"); if (!nomedb.equals("")) { // Controllo che il nome del Database non sia null if (nomeutente.equals("")) { // Controllo se il nome utente va usato o meno per la connessione // La connessione non richiede nome utente e password db = DriverManager.getConnection(jdbc:"+ ServerConfig.DATABASE_MS +"://"+ ServerConfig.DATABASE_HOST +"/" + nomedb); else{ if (pwdutente.equals("")) { // La connessione richiede nome utente, controllo se necessita anche della password // La connessione non necessita di password db = DriverManager.getConnection("jdbc:"+ ServerConfig.DATABASE_MS +"://"+ ServerConfig.DATABASE_HOST +"/" + nomedb + "?user=" + nomeutente); else{ // La connessione necessita della password db = DriverManager.getConnection("jdbc:"+ ServerConfig.DATABASE_MS +"://"+ ServerConfig.DATABASE_HOST + "/" + nomedb + "?user=" + nomeutente + "&password=" + pwdutente); connesso = true; // La connessione è avvenuta con successo 22

23 else{ System.out.println("Manca il nome del database!!"); System.out.println("Scrivere il nome del database da utilizzare all'interno del file \"config.xml\""); System.exit(0); catch (Exception e) { errore = e.getmessage(); e.printstacktrace(); if (!connesso) { System.out.println("Errore durante la connessione."); System.out.println( this.geterrore() ); System.exit(0); return connesso; /*Esegue una query di selezione dati sul Database * query: una stringa che rappresenta un'istruzione SQL di tipo SELECT da eseguire * colonne: il numero di colonne di cui sarà composta la tupla del risultato * ritorna un ArrayList contenente tutte le tuple del "rawtypes", "unchecked" ) public synchronized ArrayList eseguiquery(string query) { ArrayList v = null; String [] record; int colonne = 0; try { Statement stmt = db.createstatement(); // Creo lo Statement per l'esecuzione della query ResultSet rs = stmt.executequery(query); v = new ArrayList(); ResultSetMetaData rsmd = rs.getmetadata(); // Ottengo il ResultSet dell'esecuzione della query colonne = rsmd.getcolumncount(); while(rs.next()) { // Creo il vettore risultato scorrendo tutto il ResultSet record = new String[colonne]; for (int i=0; i<colonne; i++) record[i] = rs.getstring(i+1); v.add( (String[]) record.clone() ); rs.close(); // Chiudo il ResultSet stmt.close(); // Chiudo lo Statement catch (Exception e) { e.printstacktrace(); errore = e.getmessage(); try { if(db.isclosed()){ System.exit(1); //quando crasha il DB 23

24 catch (SQLException e1) { e1.printstacktrace(); return v; /*Esegue una query di aggiornamento sul Database * query: una stringa che rappresenta un'istuzione SQL di tipo UPDATE da eseguire * ritorna TRUE se l'esecuzione è andata a buon fine, FALSE se c'è stata public synchronized boolean eseguiaggiornamento(string query) { int numero = 0; boolean risultato = false; try { Statement stmt = db.createstatement(); numero = stmt.executeupdate(query); risultato = true; stmt.close(); catch (Exception e) { e.printstacktrace(); errore = e.getmessage(); risultato = false; try { if(db.isclosed()){ System.exit(1); catch (SQLException e1) { e1.printstacktrace(); return risultato; //quando crasha il DB // Chiude la connessione con il Database public void disconnetti() { try { db.close(); connesso = false; catch (Exception e) { e.printstacktrace(); public boolean isconnesso() { return connesso; // Ritorna TRUE se la connessione con il Database è attiva public String geterrore() { return errore; // Ritorna il messaggio d'errore dell'ultima eccezione sollevata 24

25 Encrypter.java package myhawk.games; import java.math.biginteger; import java.security.messagedigest; import java.security.nosuchalgorithmexception; /*Classe usata per creare oggetti Encrypter capaci di criptare stringhe in vari formati crittografici*/ public class Encrypter{ private MessageDigest mdenc = null; //oggetto di tipo MessageDigest utilizzato per predisporre l'algoritmo di crypt //costruttore che prende in ingresso la stringa contenente il nome dell'algoritmo crittografico che si vuole utilizzare public Encrypter(String algorithm){ try { mdenc = MessageDigest.getInstance(algorithm); //assegno a mdenc l'algoritmo scelto catch (NoSuchAlgorithmException e) { e.printstacktrace(); //modulo che restituisce crittografata la stringa che riceve in ingresso, //criptandola in base all'algoritmo con cui è stato inizializzato mdenc public String encrypt(string word){ mdenc.update(word.getbytes(), 0, word.length()); return new BigInteger(1, mdenc.digest()).tostring(16); // Encrypted Word String 25

26 Game.java package myhawk.games; import java.awt.dimension; import java.awt.gridbaglayout; import java.awt.gridlayout; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import javax.swing.borderfactory; import javax.swing.boxlayout; import javax.swing.imageicon; import javax.swing.jbutton; import javax.swing.jlabel; import javax.swing.jpanel; /*Classe che utilizza tutti gli oggetti utili per generare e gestire una partita*/ public class Game extends JPanel implements MouseListener{ private static final long serialversionuid = L; private Matrix user_matrix, solution_matrix; private Planner planner; private int n, m, solved_rows=0, solved_columns=0, user_score=0, level=1, key; private MyTimer gametimer; private JPanel game_panel; private Audio audio = Audio.getInstance(); private boolean game_over = false; private Loading loading; //matrice dell'utente e matrice con la soluzione //piano di risoluzione della matrice utente //Timer che scandisce il tempo di gioco //Pannello di gioco //Audio usato per gestire l'audio dell'oggetto Game //boolean usato per determinare la fine della partita //Oggetto Loading usato per mostrare pagina di caricamento public Game(int n, int m){ //Creo ed Avvio Loading, per mostrate una pagina di caricamento in attesa che Game sia pronto loading = new Loading("Loading...",new ImageIcon(getClass().getResource("/img/ajax-loader.gif"))); loading.run(this); this.n=n; this.m=m; this.setlayout(new GridBagLayout()); this.setopaque(false); this.paint(); 26

27 private void paint(){ //Modulo invocato dal Costruttore di Game per Disegnare ed Inizializzare i vari elementi che lo compongono int i=0, j=0; game_panel = new JPanel(); game_panel.setlayout(new BoxLayout(game_Panel,BoxLayout.Y_AXIS)); game_panel.setopaque(false); //pannello che conterra elementi campo di gioco BackgroundPanel playground = new BackgroundPanel(new ImageIcon(getClass().getResource("/img/bggame.jpg")).getImage()); playground.setlayout(new GridLayout(n+1,m+1)); playground.setpreferredsize(new Dimension((m+1)*70,(n+1)*70)); playground.setborder(borderfactory.createemptyborder(5, 5, 5, 5)); user_matrix = new Matrix(n,m); solution_matrix = new Matrix(n,m); planner = new Planner(solution_Matrix.getRowsCount(),solution_Matrix.getColumnsCount()); //Sequanza di cicli For che costruiscono il campo da gioco su cui si svolgerà la partita playground.add(new JLabel(new ImageIcon(getClass().getResource("/img/space.png")))); //blocco vacante per allineamento grafico for(i=0; i<n; i++){ for(j=0; j<m; j++){ user_matrix.getelement(i, j).getbutton().addmouselistener(this); for(i=0;i<m;i++){ playground.add(planner.getplan()[i+n]); for(i=0; i<n; i++){ playground.add(planner.getplan()[i]); for(j=0; j<m; j++){ playground.add(user_matrix.getelement(i,j).getbutton()); gametimer = new MyTimer(); //Creo un istanza di oggetto MyTimer usata per gestire il tempo in Game game_panel.add(gametimer); //inserisco il Timer grafico al Pannello di gioco game_panel.add(playground); //inserisco il campo di gioco grafico al Pannello di gioco 27

Introduzione JDBC interfaccia java.sql driver caricare i driver

Introduzione JDBC interfaccia java.sql driver caricare i driver J D B C DISPENSE Introduzione JDBC (Java Database Connectivity) è un interfaccia completamente Java utilizzata per eseguire istruzioni SQL sui database. L'API JDBC si trova nel pacchetto java.sql; contiene

Dettagli

JDBC versione base. Le classi/interfacce principali di JDBC

JDBC versione base. Le classi/interfacce principali di JDBC JDBC versione base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte uno dei pregi è la completa indipendenza del codice

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Finestra.java. static String nomicolonne[] = {"ind.","cognome","nome","telefono","e-mail"}; //nomi delle colonne della tabella

Finestra.java. static String nomicolonne[] = {ind.,cognome,nome,telefono,e-mail}; //nomi delle colonne della tabella import java.awt.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.windowevent; import java.awt.event.windowlistener; import java.io.*; import java.util.*;

Dettagli

Guida all Utilizzo del Posto Operatore su PC

Guida all Utilizzo del Posto Operatore su PC Guida all Utilizzo del Posto Operatore su PC 1 Introduzione Indice Accesso all applicazione 3 Installazione di Vodafone Applicazione Centralino 3 Utilizzo dell Applicazione Centralino con accessi ad internet

Dettagli

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

Non si deve fare ALCUN riferimento alla parte specifica di JDBC. Un applicazione per la quale sia fondamentale l indipendenza dal Database può essere scritta in Java usando le specifiche. (Package java.sql) Non devono essere usate chiamate specifiche del database: Si

Dettagli

Esercitazione su JDBC

Esercitazione su JDBC Esercitazione su JDBC Basi di Dati L Ingegneria dei Processi Gestionali (Ilaria Bartolini - Roberto Cabras) come usare SQL (1) Le istruzioni SQL possono essere eseguite interattivamente Ese JDBC 2 come

Dettagli

Laboratorio di reti II: Gestione di database lato server

Laboratorio di reti II: Gestione di database lato server Laboratorio di reti II: Gestione di database lato server Stefano Brocchi brocchi@dsi.unifi.it 23 marzo, 2009 Stefano Brocchi Laboratorio di reti II: Database 23 marzo, 2009 1 / 32 Uso di database lato

Dettagli

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008 Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008 Avvertenze: e severamente vietato consultare libri e appunti; chiunque verrà trovato in possesso di

Dettagli

Alessandro De Luca. Lezione, 13 maggio 2015

Alessandro De Luca. Lezione, 13 maggio 2015 Basi Basi di di dati dati ee sistemi sistemi informativi informativi II mod.laboratorio mod.laboratorio Alessandro De Luca Università degli Studi di Napoli Federico II Lezione, Introduzione a Java Swing

Dettagli

Guida all Utilizzo dell Applicazione Centralino

Guida all Utilizzo dell Applicazione Centralino Guida all Utilizzo dell Applicazione Centralino 1 Introduzione Indice Accesso all applicazione 3 Installazione di Vodafone Applicazione Centralino 3 Utilizzo dell Applicazione Centralino con accessi ad

Dettagli

Protocollo di trasmissione Trova il Tuo Farmaco. Indice. Versione documento: 1.4 Data: 29/06/2011

Protocollo di trasmissione Trova il Tuo Farmaco. Indice. Versione documento: 1.4 Data: 29/06/2011 Protocollo di trasmissione Trova il Tuo Farmaco Versione documento: 1.4 Data: 29/06/2011 Indice Protocollo di trasmissione Trova il Tuo Farmaco...1 Requisiti...2 Finalità...2 Software...2 Documentazione...2

Dettagli

Compilazione rapporto di Audit in remoto

Compilazione rapporto di Audit in remoto Compilazione rapporto di Audit in remoto Installazione e manuale utente CSI S.p.A. V.le Lombardia 20-20021 Bollate (MI) Tel. 02.383301 Fax 02.3503940 E-mail: info@csi-spa.com Rev. 1.1 23/07/09 Indice Indice...

Dettagli

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server Versione 30.5.05 Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/: applicazioni 1 La logica dei socket Abbiamo visto che un applicazione client si connette

Dettagli

Si precisa in ogni caso che questa guida rapida non esime dalla lettura del manuale utente presente nell ambiente del Servizio Telematico Doganale.

Si precisa in ogni caso che questa guida rapida non esime dalla lettura del manuale utente presente nell ambiente del Servizio Telematico Doganale. GUIDA RAPIDA versione 11 marzo 2008 SEERVIIZZIIO TTEELLEEMATTIICO M DOGANALLEE G Avvertenze: Questa guida vuole costituire un piccolo aiuto per gli operatori che hanno già presentato richiesta di adesione

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Laboratorio N 4 Cos è JDBC 2 JDBC significa Java Database Connectivity Standard definito da Sun MicroSystems per connettere programmi

Dettagli

JDBC. A. Bechini 2004. Accesso a DataD con Java

JDBC. A. Bechini 2004. Accesso a DataD con Java JDBC Accesso a DataD atabase ase con Java Utilizzo di DB da applicazioni esterne Un DB contiene e gestisce dati, importanti per varie operazioni supportate da applicazioni software Come può un applicazione

Dettagli

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 12 JDBC + Cosa vediamo nella lezione di oggi Oggi analizzeremo insieme una specifica tecnologia Java per l accesso e la manipolazione di basi di dati relazionali

Dettagli

Scheda 15 Accedere ai DataBase con JDBC

Scheda 15 Accedere ai DataBase con JDBC Scheda 15 Accedere ai DataBase con JDBC G IOVANNI PULITI Panoramica: che cosa è JDBC La API JDBC, introdotta per la prima volta con il JDK 1.0, è una API che permette di accedere a database relazionali

Dettagli

Si precisa in ogni caso che questa guida rapida non esime dalla lettura del Manuale utente presente nell ambiente del Servizio Telematico Doganale.

Si precisa in ogni caso che questa guida rapida non esime dalla lettura del Manuale utente presente nell ambiente del Servizio Telematico Doganale. GUIDA RAPIDA versione 25 febbraio 2010 SERVIIZIIO TELEMATIICO DOGANALE Avvertenze: Questa guida vuole costituire un piccolo aiuto per gli operatori che hanno già presentato richiesta di adesione al servizio

Dettagli

Indice generale. Il BACK-END...3 COME CONFIGURARE JOOMLA...4 Sito...4 Locale...5 Contenuti...5

Indice generale. Il BACK-END...3 COME CONFIGURARE JOOMLA...4 Sito...4 Locale...5 Contenuti...5 Guida a Joomla Indice generale Il BACK-END...3 COME CONFIGURARE JOOMLA...4 Sito...4 Locale...5 Contenuti...5 Il BACK-END La gestione di un sito Joomla ha luogo attraverso il pannello di amministrazione

Dettagli

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata. Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto

Dettagli

JDBC di base. Le classi/interfacce principali di JDBC

JDBC di base. Le classi/interfacce principali di JDBC JDBC di base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte completa indipendenza del codice dal tipo di database o di

Dettagli

GUIDA ALL USO DELL AREA RISERVATA

GUIDA ALL USO DELL AREA RISERVATA GUA ALL USO DELL AREA RISERVATA Sommario PREMESSA... 2 1 Come accedere all Area Riservata... 3 2 del Pannello di gestione del sito web... 4 3 delle sezioni... 7 3.1 - Gestione Sito... 7 3.1.1 - AreaRiservata...

Dettagli

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Autore: Prof. Agostino Sorbara ITIS M. M. Milano Polistena (RC) In questa lezione introduciamo alcuni strumenti che Java rende disponibili per la creazione di interfacce utente a manipolazione diretta, dette anche WYSISYG (what you see is what you get), con un elevato

Dettagli

ARGO DOC Argo Software S.r.l. e-mail: info@argosoft.it -

ARGO DOC Argo Software S.r.l. e-mail: info@argosoft.it - 1 ARGO DOC ARGO DOC è un sistema per la gestione documentale in formato elettronico che consente di conservare i propri documenti su un server Web accessibile via internet. Ciò significa che i documenti

Dettagli

NOTE TECNICHE DI CONFIGURAZIONE. Giugno 2009

NOTE TECNICHE DI CONFIGURAZIONE. Giugno 2009 NOTE TECNICHE DI CONFIGURAZIONE Giugno 2009 INDICE Configurazioni 3 Configurazioni Windows Firewall.. 3 Configurazioni Permessi DCOM. 4 Installazione Sql Server 2005 9 Prerequisiti Software 7 Installazione

Dettagli

Manuale Progetto Placement

Manuale Progetto Placement Manuale Progetto Placement V. 5 del 20/06/2013 FUNZIONI PRINCIPALI: Fornire uno strumento per la gestione centralizzata di stage, alternanze e placement. Costruire un database contenente i curriculum degli

Dettagli

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE La Gestione degli Eventi Ogni oggetto grafico è predisposto ad essere sollecitato in qualche modo dall utente (per esempio un pulsante può essere premuto).

Dettagli

MySQL Server e Netbeans

MySQL Server e Netbeans Progettazione Applicazioni Web 09 MySQL Server e Netbeans Sommario INSTALLAZIONE DI MYSQL INSTALLAZIONE SU UN PC DI CUI SI HANNO I DIRITTI DI AMMINISTRATORE. INSTALLAZIONE SUI COMPUTER DALL AULA 5T. AVVIO

Dettagli

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC JDBC: Introduzione Java Database Connectivity (JDBC): parte 1 Gianluca Moro DEIS - Università di Bologna gmoro@deis.unibo.it Java Database Connectivity è il package Java per l accesso a database relazionali

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

Dettagli

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la

Dettagli

Parte II: Reti di calcolatori Lezione 10

Parte II: Reti di calcolatori Lezione 10 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 10 Giovedì 3-04-2014 1 Reti per la distribuzione

Dettagli

Gestire le PEC MANUALE OPERATIVO. Versione 1

Gestire le PEC MANUALE OPERATIVO. Versione 1 Gestire le PEC MANUALE OPERATIVO Versione 1 Marzo 2014 1 INDICE GENERALE 1.0 Panoramica della sequenza dei lavori... 3 2.0 Spiegazione dei pulsanti operativi della pagina iniziale (cruscotto)... 8 3.0

Dettagli

ISTRUZIONI PER L UTILIZZO DEL SOFTWARE Moda.ROA. Raccolta Ordini Agenti

ISTRUZIONI PER L UTILIZZO DEL SOFTWARE Moda.ROA. Raccolta Ordini Agenti ISTRUZIONI PER L UTILIZZO DEL SOFTWARE Raccolta Ordini Agenti AVVIO PROGRAMMA Per avviare il programma fare click su Start>Tutti i programmi>modasystem>nomeazienda. Se il collegamento ad internet è attivo

Dettagli

GUIDA AL PRIMO AVVIO E MANUALE D USO

GUIDA AL PRIMO AVVIO E MANUALE D USO GUIDA AL PRIMO AVVIO E MANUALE D USO Informazioni preliminari Il primo avvio deve essere fatto sul Server (il pc sul quale dovrà risiedere il database). Verificare di aver installato MSDE sul Server prima

Dettagli

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Siti web centrati sui dati Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi Connessioni di rete Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi 1 Socket orientato alla connessione o non orientato alla connessione 2 Socket in astratto 3 Socket modalità

Dettagli

GUIDA ALL USO DELL AREA RISERVATA

GUIDA ALL USO DELL AREA RISERVATA GUA ALL USO DELL AREA RISERVATA Copyright 2012 Wolters Kluwer Italia Srl 1 Sommario 1 Come accedere all Area Riservata... 4 2 del Pannello di gestione del sito web... 5 3 delle sezioni... 8 3.1 - Gestione

Dettagli

appunti delle lezioni Architetture client/server: applicazioni server

appunti delle lezioni Architetture client/server: applicazioni server Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture /: applicazioni 1 La logica dei Abbiamo visto che un applicazione si connette e comunica con un applicazione mediante

Dettagli

Scope e visibilità per classi

Scope e visibilità per classi Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Packages Package:

Dettagli

PROGETTI AGGIUNTIVI PER IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI

PROGETTI AGGIUNTIVI PER IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI PROGETTI AGGIUNTIVI PER IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI 1 Remote Administrator... 2 2 Sistema di Prenotazione Ricevimento studenti... 3 3 Remote Teaching... 4 4 Gioco online: UNO...

Dettagli

INTERNET EXPLORER Breve manuale d uso

INTERNET EXPLORER Breve manuale d uso INTERNET EXPLORER Breve manuale d uso INDICE INTRODUZIONE... 3 COME IMPOSTARE LA PAGINA INIZIALE... 3 LA WORK AREA... 3 LE VOCI DI MENU... 5 IL MENU FILE... 5 IL MENU MODIFICA... 6 IL MENU VISUALIZZA...

Dettagli

CTVClient. Dopo aver inserito correttamente i dati, verrà visualizzata la schermata del tabellone con i giorni e le ore.

CTVClient. Dopo aver inserito correttamente i dati, verrà visualizzata la schermata del tabellone con i giorni e le ore. CTVClient Il CTVClient è un programma per sistemi operativi Windows che permette la consultazione e la prenotazione delle ore dal tabellone elettronico del Circolo Tennis Valbisenzio. Per utilizzarlo è

Dettagli

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria

Dettagli

Manuale Utente PEC e Client di Posta tradizionale

Manuale Utente PEC e Client di Posta tradizionale 1. Manuale di configurazione per l utilizzo della Casella di Posta Certificata PEC tramite il client di posta tradizionale. Per poter accedere alla propria casella mail di Posta Elettronica Certificata

Dettagli

Eventi di azione. // con interfaccia per eventi di azione

Eventi di azione. // con interfaccia per eventi di azione Eventi di azione (Interfaces ActionListener, Classes ActionEvent) Sono generati quando si premono bottoni, si selezionano voci di menù, si preme invio mentre si scrive in un campo di testo. In awt sono

Dettagli

L unico campo che deve essere valorizzato, altrimenti non sarà possibile creare l album, è Nome. Per facilitare la consultazione e la ricerca è

L unico campo che deve essere valorizzato, altrimenti non sarà possibile creare l album, è Nome. Per facilitare la consultazione e la ricerca è 1. Accesso alle gallerie fotografiche di Modellismo Più La prima operazione da fare per poter fruire a pieno delle funzionalità offerte dalle Gallerie fotografiche di Modellismo Più è quella di efettuare

Dettagli

Manuale d uso. Applicazione client Postecert Firma Digitale per Postemailbox

Manuale d uso. Applicazione client Postecert Firma Digitale per Postemailbox per Postemailbox Documento pubblico Pagina 1 di 22 Indice INTRODUZIONE... 3 REQUISITI... 3 SOFTWARE... 3 HARDWARE... 3 INSTALLAZIONE... 3 AGGIORNAMENTI... 4 AVVIO DELL APPLICAZIONE... 4 UTILIZZO DELL APPLICAZIONE...

Dettagli

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo Release 4.90 Manuale Operativo BARCODE Gestione Codici a Barre La gestione Barcode permette di importare i codici degli articoli letti da dispositivi d inserimento (penne ottiche e lettori Barcode) integrandosi

Dettagli

Basi di Dati Esercitazione JDBC. Giugno 2007

Basi di Dati Esercitazione JDBC. Giugno 2007 Basi di Dati Esercitazione JDBC Giugno 2007 Esercizi Considerando il seguente schema: Fornitori (CodiceFornitore, Nome, Indirizzo, Citta) Prodotti (CodiceProdotto, Tipo, Marca, Modello) Catalogo (CodiceFornitore,

Dettagli

Introduzione... 2. Un software per l automazione di procedure statistiche su dati Pet... 2. Il Pre-Processing... 7. La fase di statistica...

Introduzione... 2. Un software per l automazione di procedure statistiche su dati Pet... 2. Il Pre-Processing... 7. La fase di statistica... Indice Introduzione... 2 Un software per l automazione di procedure statistiche su dati Pet... 2 Il Pre-Processing... 7 La fase di statistica... 12 Algoritmo di classificazione... 13 L interfaccia... 15

Dettagli

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo GESTIONE PROGETTO FORMATIVO Pag. 1 di 38 Portale tirocini Manuale utente Per la gestione del Progetto Formativo GESTIONE PROGETTO FORMATIVO Pag. 2 di 38 INDICE 1. INTRODUZIONE... 3 2. ACCESSO AL SISTEMA...

Dettagli

LIFE ECOMMERCE OFF LINE Istruzioni per l uso

LIFE ECOMMERCE OFF LINE Istruzioni per l uso LIFE ECOMMERCE OFF LINE Istruzioni per l uso Il programma è protetto da Password. Ad ogni avvio comparirà una finestra d autentificazione nella quale inserire il proprio Nome Utente e la Password. Il Nome

Dettagli

21/02/2013 MANUALE DI ISTRUZIONI DELL APPLICAZIONE SID GENERAZIONE CERTIFICATI VERSIONE 1.0

21/02/2013 MANUALE DI ISTRUZIONI DELL APPLICAZIONE SID GENERAZIONE CERTIFICATI VERSIONE 1.0 MANUALE DI ISTRUZIONI DELL APPLICAZIONE SID GENERAZIONE VERSIONE 1.0 PAG. 2 DI 39 INDICE 1. PREMESSA 4 2. INSTALLAZIONE 5 3. ESECUZIONE 6 4. STRUTTURA DELLE CARTELLE 7 5. CARATTERISTICHE GENERALI DELL

Dettagli

Interazioni col mondo: eventi

Interazioni col mondo: eventi Interazioni col mondo: eventi Le interazioni di una GUI con il mondo esterno sono segnalate tramite eventi: click del mouse, inserimento di testo, selezione/attivazione... Gli eventi che memorizzano queste

Dettagli

Marco Faella Il paradigma Model-View-Controller. Il pattern Strategy.

Marco Faella Il paradigma Model-View-Controller. Il pattern Strategy. Marco Faella Il paradigma Model-View-Controller. Il pattern Strategy. 10 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com

Dettagli

Parte II: Reti di calcolatori Lezione 12

Parte II: Reti di calcolatori Lezione 12 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II: Reti di calcolatori Lezione 12 Giovedì 16-04-2015 1 Confronto architetture C/S e

Dettagli

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo Direzione Centrale per le Politiche dell Immigrazione e dell Asilo SUI Sportello Unico Immigrazione Sistema inoltro telematico domande di nulla osta al lavoro, al ricongiungimento familiare e conversioni

Dettagli

Laurea Specialistica in Informatica, Tecnologie Informatiche Anno Accademico 2008/2009 Reti Applicazioni e Servizi

Laurea Specialistica in Informatica, Tecnologie Informatiche Anno Accademico 2008/2009 Reti Applicazioni e Servizi Laurea Specialistica in Informatica, Tecnologie Informatiche Anno Accademico 2008/2009 Reti Applicazioni e Servizi Implementazione di una MIDlet che realizza un sistema di voto Christian Tiralosi Sviluppatori:

Dettagli

Gara con presentazione di offerta valutata secondo il criterio dell offerta economicamente più vantaggiosa (gara in due tempi)

Gara con presentazione di offerta valutata secondo il criterio dell offerta economicamente più vantaggiosa (gara in due tempi) Gara con presentazione di offerta valutata secondo il criterio dell offerta economicamente più vantaggiosa (gara in due tempi) Manuale per i Fornitori INDICE DEGLI ARGOMENTI 1 DEFINIZIONI... 3 2 ACCESSO

Dettagli

FtpZone Guida all uso Versione 2.1

FtpZone Guida all uso Versione 2.1 FtpZone Guida all uso Versione 2.1 La presente guida ha l obiettivo di spiegare le modalità di utilizzo del servizio FtpZone fornito da E-Mind Srl. All attivazione del servizio E-Mind fornirà solamente

Dettagli

Manuale di Aggiornamento BOLLETTINO. Rel. 5.1.0. DATALOG Soluzioni Integrate a 32 Bit

Manuale di Aggiornamento BOLLETTINO. Rel. 5.1.0. DATALOG Soluzioni Integrate a 32 Bit KING Manuale di Aggiornamento BOLLETTINO Rel. 5.1.0 DATALOG Soluzioni Integrate a 32 Bit - 2 - Manuale di Aggiornamento Sommario 1 CONTABILITA... 3 1.1 Consultazione Mastrini: Richiamo movimenti di anni

Dettagli

ShellMemory. Sistema operativo Microsoft Windows 98 o superiore Libreria SAPI e voce sintetica Casse audio

ShellMemory. Sistema operativo Microsoft Windows 98 o superiore Libreria SAPI e voce sintetica Casse audio Progetto Software to Fit - ShellMemory Pagina 1 Manuale d'uso ShellMemory Memory è un gioco didattico realizzato con l'obiettivo di aiutare l'alunno ad esercitare la capacità di memorizzazione o le capacità

Dettagli

Applicazioni distribuite

Applicazioni distribuite Applicazioni distribuite Maurizio Cozzetto 1 agosto 2009 Un pò di teoria Ricordiamo che un'applicazione distribuita è un'applicazione composta da più programmi (almeno 2) posti in esecuzione su macchine

Dettagli

Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

1. I database. La schermata di avvio di Access

1. I database. La schermata di avvio di Access 7 Microsoft Access 1. I database Con il termine database (o base di dati) si intende una raccolta organizzata di dati, strutturati in maniera tale che, effettuandovi operazioni di vario tipo (inserimento

Dettagli

Struttura logica di un programma

Struttura logica di un programma Struttura logica di un programma Tutti i programmi per computer prevedono tre operazioni principali: l input di dati (cioè l inserimento delle informazioni da elaborare) il calcolo dei risultati cercati

Dettagli

Istruzioni per la configurazione e l utilizzo del proprio dispositivo con. sistema Wi-Fi Guglielmo

Istruzioni per la configurazione e l utilizzo del proprio dispositivo con. sistema Wi-Fi Guglielmo Istruzioni per la configurazione e l utilizzo del proprio dispositivo con TM sistema Wi-Fi Guglielmo Guglielmo si occupa della realizzazione di Hot Spot pubblici per la connettività Wi-Fi in ambito pubblico

Dettagli

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind() Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto. Approfondimento SOFTWARE PER L ARCHIVIAZIONE

Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto. Approfondimento SOFTWARE PER L ARCHIVIAZIONE APPROFONDIMENTO ICT Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto Approfondimento SOFTWARE PER L ARCHIVIAZIONE ORGANISMO BILATERALE PER LA FORMAZIONE IN CAMPANIA INDICE SOFTWARE PER

Dettagli

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A. 2005-06

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A. 2005-06 Raffaella Brighi, a.a. 2005/06 Eventi e listener Corso di Laboratorio II. A.A. 2005-06 Eventi e listener Un evento è un oggetto che rappresenta il verificarsi di un azione dell utente o del sistema(es

Dettagli

GUIDA DI INSTALLAZIONE E PRIMA CONFIGURAZIONE DI EDILCONNECT PER I CONSULENTI

GUIDA DI INSTALLAZIONE E PRIMA CONFIGURAZIONE DI EDILCONNECT PER I CONSULENTI 1 GUIDA DI INSTALLAZIONE E PRIMA CONFIGURAZIONE DI EDILCONNECT PER I CONSULENTI Introduzione Dal 24 ottobre è possibile per i consulenti effettuare l installazione e la configurazione del nuovo applicativo

Dettagli

19. Introduzione al multi-threading

19. Introduzione al multi-threading 19. Introduzione al multi-threading Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II I thread I thread, o processi

Dettagli

WINDOWS XP. Aprire la finestra che contiene tutte le connessioni di rete in uno dei seguenti modi:

WINDOWS XP. Aprire la finestra che contiene tutte le connessioni di rete in uno dei seguenti modi: Introduzione: VPN (virtual Private Network) è una tecnologia informatica che permette, agli utenti autorizzati, di collegare i PC personali alla rete del nostro Ateneo, tramite la connessione modem o ADSL

Dettagli

Nuovo server E-Shop: Guida alla installazione di Microsoft SQL Server

Nuovo server E-Shop: Guida alla installazione di Microsoft SQL Server Nuovo server E-Shop: Guida alla installazione di Microsoft SQL Server La prima cosa da fare è installare SQL sul pc: se si vuole utilizzare SQL Server 2012 SP1 versione Express (gratuita), il link attuale

Dettagli

Nexus Badge Pc Access Manuale Installazione/Uso

Nexus Badge Pc Access Manuale Installazione/Uso Nexus Badge Pc Access Manuale Installazione/Uso 1. Installazione 1.1 Autorun Una volta inserito il CD-ROM di installazione, la procedura guidata dovrebbe auto-avviarsi e caricare la seguente schermata:

Dettagli

JDBC. Dispense per il corso di Ingegneria del Web

JDBC. Dispense per il corso di Ingegneria del Web JDBC Dispense per il corso di Ingegneria del Web Revisione 05/11 Giuseppe Della Penna (giuseppe.dellapenna@di.univaq.it) Dipartimento di Informatica Università degli studi dell'aquila Java Database Connectivity:

Dettagli

Guida all'utilizzo di Alfred

Guida all'utilizzo di Alfred Guida all'utilizzo di Alfred 1. Inserimento delle informazioni sulla classe Al primo accesso, l'utente deve indicare il nome dell'istituto scolastico e della classe in cui verrà svolta la prova. Completato

Dettagli

Istruzioni Aggiornamento RGT Xml

Istruzioni Aggiornamento RGT Xml Istruzioni Aggiornamento RGT Xml Sommario Installazione dell'aggiornamento... 2 Download...2 Installazione...2 Modulo RGT - Utilizzo e Funzioni... 7 Dati Generali...9 Testatore...10 Atto...12 Atto Di Riferimento...13

Dettagli

Java: la libreria delle classi

Java: la libreria delle classi Java: la libreria delle classi Applet anatomia di un applet cenni di html La libreria JDBC per l accesso ai database il package java.sql 213 Applet Un applet è una applicazione Java che ha una forma particolare

Dettagli

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012 Laboratorio Progettazione Web PHP e MySQL - Lezione 9 Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012 Architettura di una applicazione Web Browser Web HTTP Server Web PHP Dati View Control

Dettagli

GUIDA OPERATIVA APPLICAZIONE PER LA VISUALIZZAZIONE DELLE FORNITURE DEI DATI DEI FABBRICATI MAI DICHIARATI CON ACCERTAMENTO CONCLUSO

GUIDA OPERATIVA APPLICAZIONE PER LA VISUALIZZAZIONE DELLE FORNITURE DEI DATI DEI FABBRICATI MAI DICHIARATI CON ACCERTAMENTO CONCLUSO GUIDA OPERATIVA APPLICAZIONE PER LA VISUALIZZAZIONE DELLE FORNITURE DEI DATI DEI FABBRICATI MAI DICHIARATI CON ACCERTAMENTO CONCLUSO 27 Giugno 2011 DOC. ES-31-IS-0B PAG. 2 DI 26 INDICE PREMESSA 3 1. INSTALLAZIONE

Dettagli

Esercitazione sui Design Pattern

Esercitazione sui Design Pattern Esercitazione sui Design Pattern Pattern Creazionali Singleton Permette la creazione di una sola istanza della classe all interno dell applicazione Fornisce un metodo con cui ottenere l istanza Il costruttore

Dettagli

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31

Dettagli

19. LA PROGRAMMAZIONE LATO SERVER

19. LA PROGRAMMAZIONE LATO SERVER 19. LA PROGRAMMAZIONE LATO SERVER Introduciamo uno pseudocodice lato server che chiameremo Pserv che utilizzeremo come al solito per introdurre le problematiche da affrontare, indipendentemente dagli specifici

Dettagli

Versione 2014. Installazione GSL. Copyright 2014 All Rights Reserved

Versione 2014. Installazione GSL. Copyright 2014 All Rights Reserved Versione 2014 Installazione GSL Copyright 2014 All Rights Reserved Indice Indice... 2 Installazione del programma... 3 Licenza d'uso del software... 3 Requisiti minimi postazione lavoro... 3 Requisiti

Dettagli

Lyra CRM WebAccess. Pag. 1 di 16

Lyra CRM WebAccess. Pag. 1 di 16 Lyra CRM WebAccess L applicativo Lyra CRM, Offer & Service Management opera normalmente in architettura client/server: il database di Lyra risiede su un Server aziendale a cui il PC client si connette

Dettagli

L UFFICIO WEB. Modulo online per la gestione del personale. Manuale di utilizzo. Versione 1.0.75.0. Pagina 1 di 33

L UFFICIO WEB. Modulo online per la gestione del personale. Manuale di utilizzo. Versione 1.0.75.0. Pagina 1 di 33 L UFFICIO WEB Modulo online per la gestione del personale Manuale di utilizzo Versione 1.0.75.0 Pagina 1 di 33 1. INTRODUZIONE L applicazione Ufficio Web permette una gestione semplificata e automatizzata

Dettagli

MANUALE UTENTE. Versione 1.2 novembre 2011 2011 MAILDEM Tutti i diritti sono riservati

MANUALE UTENTE. Versione 1.2 novembre 2011 2011 MAILDEM Tutti i diritti sono riservati MANUALE UTENTE Versione 1.2 novembre 2011 2011 MAILDEM Tutti i diritti sono riservati INDICE ACCESSO AL SERVIZIO... 3 GESTIONE DESTINATARI... 4 Aggiungere destinatari singoli... 5 Importazione utenti...

Dettagli

Acronis License Server. Manuale utente

Acronis License Server. Manuale utente Acronis License Server Manuale utente INDICE 1. INTRODUZIONE... 3 1.1 Panoramica... 3 1.2 Politica della licenza... 3 2. SISTEMI OPERATIVI SUPPORTATI... 4 3. INSTALLAZIONE DI ACRONIS LICENSE SERVER...

Dettagli

INTERNET EXPLORER. Breve manuale d'uso

INTERNET EXPLORER. Breve manuale d'uso INTERNET EXPLORER Breve manuale d'uso INDICE INTRODUZIONE... 3 COME IMPOSTARE LA PAGINA INIZIALE...3 LA WORK AREA... 3 LE VOCI DI MENU... 5 IL MENU FILE... 5 IL MENU MODIFICA... 6 IL MENU VISUALIZZA...

Dettagli

AXWIN6 QUICK INSTALL v.3.0

AXWIN6 QUICK INSTALL v.3.0 AXWIN6 QUICK INSTALL v.3.0 Procedura per l installazione di AxWin6 AxWin6 è un software basato su database Microsoft SQL Server 2008 R2. Il software è composto da AxCom: motore di comunicazione AxWin6

Dettagli

2009. STR S.p.A. u.s. Tutti i diritti riservati

2009. STR S.p.A. u.s. Tutti i diritti riservati 2009. STR S.p.A. u.s. Tutti i diritti riservati Sommario COME INSTALLARE STR VISION CPM... 3 Concetti base dell installazione Azienda... 4 Avvio installazione... 4 Scelta del tipo Installazione... 5 INSTALLAZIONE

Dettagli

Guida per gli utenti ASL AT. Posta Elettronica IBM Lotus inotes

Guida per gli utenti ASL AT. Posta Elettronica IBM Lotus inotes Guida per gli utenti ASL AT Posta Elettronica IBM Lotus inotes Indice generale Accesso alla posta elettronica aziendale.. 3 Posta Elettronica... 4 Invio mail 4 Ricevuta di ritorno.. 5 Inserire un allegato..

Dettagli

PANNELLO DI CONTROLLO

PANNELLO DI CONTROLLO PANNELLO DI CONTROLLO DELLA POSTA ELETTRONICA GUIDA RAPIDA PER L UTILIZZO DI PANNELLO DI CONTROLLO DELLA POSTA ELETTRONICA INDICE DEGLI ARGOMENTI 1. BENVENUTO 2. PANNELLO DI CONTROLLO DELLA POSTA ELETTRONICA

Dettagli