giovedì 3 dicembre 2009

Lavoro a gruppi 2

Di seguito viene proposto il testo dell'ultima pubblicazione del lavoro a gruppi aggiornato con le tabelle per ogni entità, ognuna con i propri attributi e chiavi primarie. Non avendo potuto fare lo screen dello schema logico, provvederò il più presto possibile alla sua pubblicazione.



LAVORO DI GRUPPO

Componenti: Gabriele Di Bari, Andrea Pampanelli

GESTIONE ORDINI AUTOSALONI

Si vogliono registrare gli ordini d’acquisto provenienti da tutti gli autosaloni d’Italia, registrando i dati inerenti alla macchina, al corrispettivo acquirente e in quale autosalone è avvenuta la compravendita.

Le entità che comporranno questo dataBase sono: autosalone, contratto, macchina e acquirente.

L’entità autosalone sarà composta dai seguenti attributi:

  • Nome
  • Località
    • N° civico
    • Via
    • Città
    • Provincia
  • Marche auto distribuite

(che indicherà quali tipologie di marche di auto si potranno trovare in quel salone)

Gli attributi che seguono invece comporranno l’entità contratto:

  • Data
  • Numero contratto
  • Prezzo pagato

L’entità macchina avrà i seguenti attributi:

  • Marca
  • Modello
  • Colore
  • Serie

L’entità acquirente infine avrà gli attributi:

  • Nome
  • Cognome
  • Data di nascita
  • Luogo di nascita
  • Residenza
    • N° civico
    • Via
    • Città
    • Provincia
  • Codice fiscale

Per semplificare si inserisce un contatore di nome ID ad ogni tabella che rappresenterà la chiave primaria di ogni tabella:

TABELLE:

AUTOSALONE (ID, nome, località, n°civico, via, città, provincia, marcheAutoDistribuite)

CONTRATTO (ID, data, numeroContratto, prezzoPagato)

MACCHINA (ID, marca, modello, colore, serie)

ACQUIRENTE (ID, nome, cognome, dataDiNascita, luogoDiNascita, residenza, n°civico, via, città, provincia, codiceFiscale)

giovedì 26 novembre 2009

Introduzione al programma "sqlite-3_6_20" per creazione di dataBase

Il programma in esame è composto da un eseguibile con il quale, attraverso l'utilizzo di comandi appositi, è possibili creare tabelle relazionali e successivamente anche dei dataBase.
Il prof ci ha introdotto alcune delle funzionalità di questo programma:
aperto il prompt dei comandi si è eseguito il programma. In seguito si è aperto il blocco note su cui abbiamo scritto e definito le tabelle "studente" e "professore":

create table studente (id int, nome char[30], primary key(id));
create table professore (id int, nome char[30], primary key(id));
insert into studente values (1, "Cavalierini");
insert into studente values (2, "Di Bari");
insert into studente values (3, "Velatta");

Abbiamo definito le tabelle descritte e visto i comandi con i quali è possibile verificare tale immissione dei dati e per vederle organizzate in righe e colonne:

Correzione esercizi

ES.9


La seguente tabella va normalizzata in forma 1NF:


DATI (nome, località, indirizzo, dataNascita, sesso, voto1, dataVoto1, materia1, voto2, dataVoto2, materia2, voto3,dataVoto3, materia3, ecc)


TABELLE:

STUDENTE (id, nome, località, indirizzo, dataNascita, sesso)

VOTO (id_studente, dataVoto, voto, materia)



ES.10


ANAGRAFICA (nome, cognome, matricola, nascita, indirizzo, codiceDipartimento, nomeDipartimento, indirizzoDipartimento, stipendio)


DIPENDENZE FUNZIONALI:

CodiceDipartimento (nomeDipartimento, indirizzoDipartimento)


TABELLE:

LAVORO (matricola, codiceDipartimento, stipendio)

DIPARTIMENTO (codiceDipartimento, nomeDipartimento, indirizzoDipartimento)

ANAGRAFICA (matricola, nome, cognome, nascita, indirizzo)

giovedì 19 novembre 2009

Lavoro a gruppi

Questo è il testo che contiene tutte le informazioni necessarie per lo sviluppo del dataBase che io e Gabriele Di Bari abbiamo pensato di realizzare:


LAVORO DI GRUPPO

Componenti: Gabriele Di Bari, Andrea Pampanelli

GESTIONE ORDINI AUTOSALONI

Si vogliono registrare gli ordini d’acquisto provenienti da tutti gli autosaloni d’Italia, registrando i dati inerenti alla macchina, al corrispettivo acquirente e in quale autosalone è avvenuta la compravendita.

Le entità che comporranno questo dataBase sono: autosalone, contratto, macchina e acquirente.

L’entità autosalone sarà composta dai seguenti attributi:

  • Nome
  • Località
    • N° civico
    • Via
    • Città
    • Provincia
  • Marche auto distribuite

(che indicherà quali tipologie di marche di auto si potranno trovare in quel salone)

Gli attributi che seguono invece comporranno l’entità contratto:

  • Data
  • Numero contratto
  • Prezzo pagato

L’entità macchina avrà i seguenti attributi:

  • Marca
  • Modello
  • Colore
  • Serie

L’entità acquirente infine avrà gli attributi:

  • Nome
  • Cognome
  • Data di nascita
  • Luogo di nascita
  • Residenza
    • N° civico
    • Via
    • Città
    • Provincia

martedì 20 ottobre 2009

Progettazione Database

Schema a blocchi che rappresenta l'analisi testuale, indicando le relazione, le entità e i loro attributi. Di seguito vengono riportati alcuni esercizi sull'argomento:



-----------------------------------------------------------

-----------------------------------------------------------






martedì 19 maggio 2009

Lavoro gruppi: tic tac toe (filetto)

Questo è il segmento di codice su cui stavamo lavorando per la creazione del gioco:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.util.Scanner;
import java.io.*;

public class Filetto implements ActionListener{
private int[][] winCombinations = new int[][] {
{0, 1, 2}, {3, 4, 5}, {6, 7, 8}, //orizzontali
{0, 3, 6}, {1, 4, 7}, {2, 5, 8}, //verticali
{0, 4, 8}, {2, 4, 6} //diagonali
};
private JFrame filetto=new JFrame("Filetto");
private PannelloFiletto p;
private JButton bottoni[]=new JButton[9];
private int conta=0;
private Image luca= ;
private boolean vince=false;
/*
private JPanel pannelloBottoni=new JPanel(new GridLayout(1,1));
private JTextField numeroCasella;
private JLabel r1=new JLabel("Fai la tua mossa...");
char[][] coordinate;*/

public Filetto(){
filetto.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
filetto.setSize(500,500);
filetto.setLayout(new GridLayout(3,3));
for(int i=0; i<=8; i++){
bottoni[i] = new JButton();
filetto.add(bottoni[i]);
buttoni[i].addActionListener(this);
}
filetto.setVisible(true);
}

public void mosse(ActionEvent a) {
conta++;
if(conta % 2 == 0){
lettera = "O";
} else {
lettera = "X";
}

p=new PannelloFiletto();
resetta=new JButton("Resetta gioco"); //nome bottone
numeroCasella=new JTextField();
pannelloBottoni.add(avanti);
quiz.add(p,BorderLayout.CENTER);//posiziona gli elementi nel pannello
quiz.add(pannelloBottoni,BorderLayout.SOUTH); //posiziona gli elementi nel pannello
quiz.add(numeroCasella,BorderLayout.SOUTH);
quiz.add(r1,BorderLayout.NORTH);
resetta.addActionListener(new BottoneResetta());
aggiorna();
quiz.setVisible(true);
}

public class PannelloFiletto extends JPanel {
public void paintComponent(Graphics g) {
Graphics g2D=(Graphics2D) g;
Image filettoImmagine=new ImageIcon("Griglia.jpg").getImage(); //x mettere immagine
g.drawImage(filettoImmagine,0,0,filetto.getWidth(),filetto.getHeight(),null);
}
}
Vengono caricate delle immagini perchè si vogliono usare lo stemma di Peugia e di Terni invece che la "X" e il "O"
Visto che questo frammento di codice avrebbe causato problemi, si è pensato di partire già con la creazione del codice già adatto per il cellulare (su consiglio di DiBari), visto che quello precednte avrebbe causato problemi per il cellulare. Abbiamo quindi creato 2 metodi per il corretto funzionamento del programma su cellulare:
- CanvasGame:
package Filetto;

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import java.io.IOException;


public class CanvasGame
extends GameCanvas
implements Runnable { //interfaccia che si manda in parallelo insieme alle altre classi

public CanvasGame(){
super(true);
}
public void start() {

try {
Load();
} catch(IOException ioex) { System.err.println(ioex); }

Thread runner = new Thread(this);
runner.start();
}

public void Load() throws IOException{
}
-Filetto
//Filetto.java

package Filetto;


import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;


public class Filetto extends MIDlet{

public Filetto() {}

public void startApp() {}

public void pauseApp() { }

public void destroyApp(boolean unconditional) { }
}
Ultimamente abbiamo anche provveduto a raccogliere questi metodi nella cartella rsc; in aggiunta ad essa, si sono create altre 2 cartelle: una per le immagini e l'altra per l'eseguibile del programma.

martedì 31 marzo 2009

Liste concatenate

//UNA LISTA DI NUMERI CHE DIGITO DA TASTIERA
import java.io.*;
import java.util.*;

public class Lista1 {
Nodo top;
Nodo ultimo;
Nodo nuovo;
int n;
int conta=0;
Scanner in=new Scanner(System.in);//per leggere da tastiera
public void creaLista(){
n=in.nextInt();
while(n!=0) {
nuovo=new Nodo(n); //nuovo è il puntatore
if (top==null) top=nuovo; //così entrambi puntano alla stessa cosa
else {
nuovo.next=top;
top=nuovo;
}
n=in.nextInt();
}
}
public void stampaLista() {
ultimo=top;
while(ultimo!=null) {
System.out.println(ultimo.num);
ultimo=ultimo.next;
}
}
public void contaNodi() {
ultimo=top;
while(ultimo!=null) {
conta++;
ultimo=ultimo.next;
}
System.out.println("Il numero dei nodi e' "+conta);
}

public static void main (String[] args) {
Lista1 l1=new Lista1();
l1.creaLista();
l1.stampaLista();
l1.contaNodi();
}
}

Eseguendo il programma, si otterrà una finestra del tipo...consiste nel digitare dei numeri da tastiera e, una volta premuto 0, la successione viene stampata nel verso contrario a quello d'immissione e successivamente scriverà anche il numero dei nodi:

martedì 3 marzo 2009

Creazione quiz java

Questa prof è la soluzione funzionante del compito che ci aveva assegnato...ora abbiamo corretto gli errori e funziona. Ovviamente grazie anche all'aiuto di Di Bari...XD...
(manca un pezzo quando da il risultato perchè dice che non lo può pubblicare a causa di un errore html...semmai prof glielo faccio vedere lunedì così lo prova anche...)

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.util.Scanner;
import java.io.*;

public class Gioco {
private JFrame quiz; //JFrame crea la finestra
private PannelloQuiz p;
private JButton avanti;
private JPanel pannelloBottoni=new JPanel(new GridLayout(1,1));
private JTextField risposta;
private JLabel r1=new JLabel("Quale e' la citta' piu' popolata di ?");
String[][] nazioni;
private int indice=0;


public Gioco() throws IOException{
quiz=new JFrame("QUIZ");
quiz.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //serve una volta chiusa la finestra a chiudere il programma
quiz.setSize(500,500);
p=new PannelloQuiz();
avanti=new JButton("Domanda successiva");
risposta=new JTextField();
pannelloBottoni.add(avanti);
quiz.add(p,BorderLayout.CENTER); //CENTER, EAST, SOUTH E NORTH servono per
quiz.add(pannelloBottoni,BorderLayout.EAST); //posizionare gli elementi nel pannello
quiz.add(risposta,BorderLayout.SOUTH);
quiz.add(r1,BorderLayout.NORTH);
avanti.addActionListener(new BottoneAvanti());
nazioni=readFile("cittaPopolate.txt");
aggiorna();
quiz.setVisible(true);
}

public class PannelloQuiz extends JPanel { /*faccio una classe interna*/
public void paintComponent(Graphics g) {
Graphics g2D=(Graphics2D) g;
Image quizImmagine0=new ImageIcon(nazioni[indice][2]).getImage();
g.drawImage(quizImmagine0,0,0,this.getWidth(),this.getHeight(),null);
// serve per creare l'immagine sul pannello e poi stamparla
}
}


public void aggiorna() {
r1.setText("Quale e' la citta' piu' popolata di "+nazioni[indice][0]+"?"); //l'array a doppia dimensione serve per caricare le immagini ed è la prima dimansione dell'array e cioè l'indice che gestisce il ciclo
risposta.setText("");
p.repaint();
}

public class BottoneAvanti implements ActionListener {
public void actionPerformed(ActionEvent event){
String tmp = event.getActionCommand();
if (tmp == "Domanda successiva"){
nazioni[indice][3]=Metodi.pulisciStringa(risposta.getText()); //serve per riazzerare la griglia di risposta ad ogni domanda
indice++;
aggiorna();
if (indice==(nazioni.length-1)){
avanti.setText("Risultato quiz");
}
}
if (tmp=="Risultato quiz") {
int punti=0;
for (int i=0; i//porta le risposte che anche se scritte con la maiuscola, in minuscolo per effettuare così un comparamento tra la risposta data e quella giusta ed assegnare o meno i punti
punti++;
risposta.setText("Hai totalizzato "+punti+" punti. Per ricominciare il quiz riavvia il programma");

}

}
}
public String[][] readFile(String readFile) throws IOException{
Scanner cauntLine=new Scanner(new FileReader(readFile));
int cauntLinePoint=0;
while (cauntLine.hasNext()){
cauntLine.next();
cauntLinePoint++;
}
String[][] dataLocal=new String[cauntLinePoint/3][4];
cauntLinePoint=0;
Scanner in=new Scanner(new FileReader(readFile));
while (in.hasNext()){
dataLocal[cauntLinePoint][0]=Metodi.pulisciStringa(Metodi.sostituisciCarattere(in.next(),'#',' ')); //array per gli stati
dataLocal[cauntLinePoint][1]=Metodi.pulisciStringa(Metodi.sostituisciCarattere(in.next(),'#',' ')); // array per la città più popolata
dataLocal[cauntLinePoint][2]=Metodi.sostituisciCarattere(in.next(),'#',' '); //array per l'immagine
dataLocal[cauntLinePoint][3]=""; //array per la risposta data dall'utente
cauntLinePoint++;

}
return dataLocal;
}

public static void main(String[] args) throws IOException{

Gioco quiz=new Gioco();

}
}
Questo è il file dal quale il programma attingerà le risposte giuste con il link delle relative immagini delle città:

Italia Milano milano.jpg Francia Parigi parigi.jpg Spagna Madrid madrid.jpg Portogallo Lisbona lisbona.jpg Germania Berlino berlino.jpg Grecia Atene atene.jpg Olanda Amsterdam amsterdam.jpg Danimarca Copenhagen copenhagen.jpg Austria Vienna vienna.jpg

Eseguendo il programma si otterrà una finestra come quella nell'esempio...


giovedì 12 febbraio 2009

If - Java

Appunti per poi costruire un programma di prova della if:
if (età>=18 /*ipotesi*/) {
System.out.println ("maggiorenne"); //dopo l'ipotesi devo avere una sola istruzione
}
else {
System.out.println ("minorenne");
}
/*if a una doppia alternativa*/



if (età<=11) {
System.out.println ("frequenta le elementari");
}
else if (età<=14) {
System.out.println ("frequenta le medie inferiori");
}
else if (età<=19) {
System.out.println ("frequenta le medie inferiori");
}

/*if ad un'alternativa multipla*/

String a="Belfiori";
String b="Bel";
String c=a.substring(0,2);
if (c==b) {
System.out.println (C);
}
Esempio di programma per la prova della if con l'utilizzo delle variabili sopraelencate:
public class Provaif {
public static void main (String[] args) {
String a="Belfiori";
String b="Bel";
String c=a.substring(0,3);
System.out.println (c);
System.out.println ("prima di if");
if (c.equals(b)) {
System.out.println (c);
}
int età=16;
int età=200;
if (età>=18) {
if (altezza>=190) {
System.out.println ("puoi fare il corazziere");
}
else if (altezza<150) {
System.out.println ("puoi fare il ministro");
}
}
else {
System.out.println ("puoi fare lo studente");
}
int voto=5;
switch (voto) {
case 1: System.out.println ("bastonato");break;
case 2: System.out.println ("pane e acqua");break;
case 3: System.out.println ("pane e vino");break;
case 4: System.out.println ("pane e vino e un panino");break;
case 5: System.out.println ("no cinema no disco");break;
case 6: System.out.println ("accontentiamoci");break;
case 7: System.out.println ("pensavo peggio");break;
case 8: System.out.println ("bravo, il prof ha sbagliato");break;
case 9: System.out.println ("bravo bravo");break;
case 10: System.out.println ("paga da beve!");break;
default: System.out.println ("sei toro");break;
}
if((voto>=7)&&(voto<=10)) {
System.out.println("sei bravo");

}
}
}

sabato 7 febbraio 2009

Calcolatrice

Salve prof! Io ci ho provato a fare la calcolatrice...però non è che sia poi così ad interfaccia grafica.
Praticamente consiste nel selezionare l'operazione da eseguire ma non con i bottoni...se poi lunedì tanto la riguardiamo la modifico così aggiorno questo post...a presto!
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Calcolatrice {
private JFrame f=new JFrame ("Calcolatrice");
private Pannello p= new Pannello();


public Calcolatrice(){
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(500,500);
f.add(p);
f.setVisible(true);

}



public class Pannello extends JPanel{
public void paintComponent(Graphics g){

}

}
public static void main(String args[]){


while(choice=0){
System.out.println("");
System.out.println("1-Addizione");
System.out.println("2-Sottrazione");
System.out.println("3-Divisione");
System.out.println("4-Moltiplicazione");
System.out.println("0-Esci");
System.out.println("");

c=JOptionPane.showInputDialog("Scegli: ");
choice=Integer.parseInt(c);
if (choice=0 && choice<=4) {
firstnum=JOptionPane.showInputDialog("Immetti primo numero: ");
secondnum=JOptionPane.showInputDialog("Immetti secondo numero: ");
first=Integer.parseInt(firstnum);
second=Integer.parseInt(secondnum);
}

if(choice==1)
{
tot=first+second;
System.out.println("Il totale e': "+tot);
}
else
if(choice==2) {
tot=first-second;
System.out.println("Il totale e': "+tot);
}
else
if(choice==3) {
tot=first/second;
System.out.println("Il totale e': "+tot);
}
else
if(choice==4) {
tot=first*second;
System.out.println("Il totale e': "+tot);
}
else
if(choice==0) {
System.exit(0);
}
}
}//chiude il while
}

lunedì 12 gennaio 2009

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class TracciaLinea{
int dVettori[][] = new int[3000][4]; //array a 2 dimensioni
private int cauntLinee;
private JFrame f=new JFrame("Traccia linee rette");
private Pannello p=new Pannello();
private Point sPoint=new Point();
private Point ePoint=new Point();


public TracciaLinea(){
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//serve per l'output: una volta chiusa la finestra, chiude il programma
f.setSize(500,500);
f.add(p);
f.setVisible(true);
f.addMouseListener(new Linea());
f.addMouseMotionListener(new Linea1());
f.setVisible(true);

}

//assegna automaticamente i valori alle linee
private void SetCordinate(int x1, int y1, int x2, int y2){
dVettori[cauntLinee][0]=x1;
dVettori[cauntLinee][1]=y1;
dVettori[cauntLinee][2]=x2;
dVettori[cauntLinee][3]=y2;
cauntLinee++;
if(cauntLinee>(dVettori.length-1)){
cauntLinee=0;
}
}
//permette di visualizzare le vecchie linee
private void paintOldLinee(Graphics g){
for(int i=0; i //visualizza tutta la finestra
public class Pannello extends JPanel{
public void paintComponent(Graphics g){
g.drawLine(sPoint.x,sPoint.y,ePoint.x,ePoint.y);
paintOldLinee(g);
}

}

//serve per fare il movimento del mouse e così della linea
public static void main(String[] args){
TracciaLinea t=new TracciaLinea();
}
public class Linea implements MouseListener{
public void mousePressed(MouseEvent e){
sPoint.x=e.getX()-5;
sPoint.y=e.getY()-24;
}
public void mouseReleased(MouseEvent e){
ePoint.x=e.getX()-5;
ePoint.y=e.getY()-24;
SetCordinate(sPoint.x,sPoint.y,ePoint.x,ePoint.y);
f.repaint();
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
}
public class Linea1 implements MouseMotionListener{
public void mouseDragged(MouseEvent e){
ePoint.x=e.getX()-5;
ePoint.y=e.getY()-24;
f.repaint();
}
public void mouseMoved(MouseEvent e){}

}



}

Eseguendo il programma otterremo una finestra del tipo nel quale possiamo disegnare a nostro piacimento fino a 3000 linee tramite mouse (chi le disegna tutte------->premio)...;)