giovedì 11 dicembre 2008

Esercizi classe IV per domani 12 dicembre 2008

Esercizi per la classe IVA Liceo Tecnico da fare per domani 12 dicembre 2008

Scrivere le istruzioni per eseguire i seguenti metodi:

  1. classe Ippopotamo
    1.     public void mangia()
    2.     public void corre()
    3.     public void verso(String v)
    4.     public Persona calpesta()
    5.     public Ippopotamo cerca()
  2. classe Riscaldamento
    1.     public Temperatura riscalda(Calore c)
    2.     public double calcolaCosto(double litriGasolio)
  3. classe Studente
    1.     public String getNome()
    2.     public void setNome(String n)
    3.     public int[] getVoti()
    4.     public void setVoti(int[] voti)
  4. Nel caso in cui il parametro o l'output sono degli array come nel 3.3 e 3.4 scrivete un semplice programma nel quale anzitutto definite una classe con i metodi 3.3 e 3.4 (implementateli) e poi una classe di test , con il metodo main, nella quale andate ad eseguire questi metodi.    

Pubblicate la soluzione nel vostro blog.

Buon Lavoro


 


 

martedì 9 dicembre 2008

Creazione del database registro dei voti studenti e delle relative tabelle relazionali

Schema fisico del database registro dei voti degli studenti

Schema fisico del database registro dei voti degli studenti.

Trasformiamo lo schema logico nello schema fisico di un database concreto. Scegliamo il database SQLITE      per la sua semplicità, per la sua portabilità, perchè non va configurato, perchè un database con tutte le sue tabelle sta in un unico file fisico. Chiamiamolo registroVoti.db

creazione del database fisico

sqlite3 registroVoti.db

definiamo le create table per ogni tabella relazionale del nostro database

CREATE TABLE DOCENTE (idDocente integer primary key, nome text, classeConcorso text, blog text, email text, foto blob);

CREATE TABLE STUDENTE(idStudente integer primary key, nome text, classe text, email text, foto blob);

CREATE TABLE MATERIA(idMateria integer primary key, nome text, descrizione text);

CREATE TABLE MODULO(idMateria integer references MATERIA, idModulo integer, nome text, descrizione text, obiettivo text, primary key(idMateria, idModulo));

CREATE TABLE VOTO(idVoto integer primary key autoincrement, tipo text, voto integer, data text, argomento text, idStudente integer references STUDENTE, idMateria integer references MATERIA, idModulo integer references MODULO, idDocente integer references DOCENTE);

CREATE TABLE PROGRAMMAZIONE(idProgramma integer primary key, idDocente integer references DOCENTE, idMateria integer references MATERIA, idModulo integer references MODULO, mmaaInizio text, mmaaFine text);


 


 


 

Lo schema logico dello schema concettuale registro dei voti degli studenti

Schema logico dello schema concettuale

Per costruire lo schema logico a partire dallo schema concettuale dobbiamo identificare e definire i seguenti elementi:

  1. Le tabelle relazionali
  2. Gli attributi di queste tabelle
  3. Le loro chiavi primarie
  4. Le loro chiavi straniere
  5. Eventuali tabelle associative

La prima regola della mappatura ci informa che ogni entità dello schema concettuale diventa una tabella relazionale.

pertanto prima fase del lavoro risulta nell'identificazione delle seguenti tabelle:

  1. DOCENTE
  2. STUDENTE
  3. MATERIA
  4. MODULO
  5. VOTO

Un'ulteriore regola della mappatura ci informa che una relazione dotata di attributi diventa a sua volta una tabella. In questo schema concettuale la relazione "programma" soddisfa quella condizione. pertanto la relazione "programma" diventa tabella, chiamiamola "Programmazione" per nostra comodità. La tabella "programmazione si aggiunge alle precedenti:

  1. PROGRAMMAZIONE

La seconda regola della mappatura ci informa che i campi delle tabelle sono esattamente gli attributi delle rispettive entità del disegno concettuale.

La terza regola della mappatura ci informa che le chiavi primarie delle tabelle sono le chiavi primarie delle entità.

La quarta regola della mappatura ci informa che la chiave primaria della tabella corrispondente ad un'entità debole si forma combinando insieme la chiave primaria della tabella dell'entità dalla quale dipende con quella parziale dell'entità debole.

La quinta regola ci informa che per mantenere le relazioni uno a molti nelle tabelle dello schema logico è necessario copiare la chiave primaria della tabella dell'entità dalla parte dell'uno in un campo della tabella corrispondente all'entità dalla parte dei molti e che questo campo duplicato si chiama chiave straniera.

La sesta regola ci informa che una relazione molti a molti o dotata di attributi, come in questo caso la relazione "programma", diventa una tabella associativa avente come chiavi straniere le chiavi primarie delle tabelle delle entità che mette in relazione e come campi gli attributi della relazione.

Da tutte queste regole applicate al nostro schema concettuale deriva la definizione del seguente schema logico:

DOCENTE(idDocente, nome, blog, classeConcorso, email, foto)

STUDENTE(idStudente, nome, classe, email, foto)

MATERIA(idMateria, nome, descrizione)

MODULO(*idMateria, idModulo, nome, descrizione, obiettivo)

VOTO(idVoto, tipo, voto, data, argomento, *idStudente, *idMateria, *idModulo, *idDocente)

PROGRAMMAZIONE(idProgramma, *idDocente, *idMateria, *idModulo, mmaaInizio, mmaaFine)


 


 


 

Nuovo schema concettuale del database del registro dei voti degli studenti

Critica allo schema concettuale del database registro voti studenti

Lo schema concettuale pubblicato è quello che abbiamo insieme fatto a scuola questo pomeriggio 9 dicembre 2008. Riesaminando questo disegno, mi sono accorto che è possibile, anzi auspicabile apportare un miglioramento nella gestione della programmazione dei moduli dell'insegnante. Abbiamo scelto di fare l'entità "Modulo" come un'entità debole. Questa scelta è giusta. Abbiamo attribuito il mese e l'anno del modulo all'entità modulo medesimo. Questo è invece un handicap. Infatti il docente ad ogni nuovo anno scolastico quando deve rifare la sua programmazione gradisce aggiornare e riutilizzare i moduli già esistenti, ma deve fare una nuova programmazione disciplinare. La programmazione è un'opportuna composizione dei moduli già esistenti o di altri moduli nuovi. Per non duplicare l'informazione, relativa ai moduli nella programmazione dei successivi anni scolastici, conviene creare una relazione "programma" che abbia una sua esistenza da affiancare a quella dei moduli. Ed allora è giusto, come qualche studente suggeriva, attribuire la data inizio e la data di fine di ogni moduli alla relazione medesima "programma". In questo modo la relazione "programma" diventerà una tabella distinta. Questa tabella acquisirà lo status di "entità programmazione". Per ogni anno scolastico, per ogni docente, questa tabella "programmazione" si arricchirà di un insieme di righe, caratterizzate per ogni codice docente dai quei codici dei moduli che saranno scelti nella personale programmazione del docente proprio per quel particolare anno scolastico. Questa modifica dello schema concettuale ne implica un'altra. L'entità forte da cui si fa dipendere l'entità debole "modulo" conviene trasferirla dall'entità "docente" all'entità materia. Ne risulta il nuovo schema concettuale di seguito postato.

Schema concettuale database registro voti studenti

Testo del problema per realizzare un database del registro dei voti degli studenti

Database per realizzare un registro informatizzato dei voti degli studenti.

Si vogliono memorizzare i voti degli studenti di un istituto scolastico.

Per ogni voto si vuole conoscere la data, il voto, il tipo di voto, la materia, il modulo, l'argomento della verifica, l'insegnante, lo studente, l'anno scolastico, la classe dello studente.

Per la materia occorre conoscere oltre il nome, i moduli programmati dall'insegnante. Un modulo ha un nome, una descrizione sintetica,un obiettivo, una data di inizio e di fine. Per l'insegnante si vuole conoscere l'email, l'indirizzo del blog, la classe di concorso.