Specifiche del progetto p 4 - elettromoretto.com · • L’interfaccia utente p 19 • I files che...

42

Transcript of Specifiche del progetto p 4 - elettromoretto.com · • L’interfaccia utente p 19 • I files che...

Introduzione p 3

Specifiche del progetto p 4

Prima fase: pianificazione del lavoro p 7

Seconda fase: le tecnologie da utilizzare p 9

• Borland Delphi 5 Professional p 9

• Linguaggio SQL e Database p 13

• Microsoft PowerPoint p 15

• Pc U-Buddie p 16

• Linguaggio HTML p 16

Terza fase: la programmazione p 19

• L’interfaccia utente p 19

• I files che circondano il programma p 19

• Principio di funzionamento p 21

• Struttura interna p 22

• Struttura del database p 24

Come si presenta p 29

• Prima parte: lato server p 29

• Seconda parte: lato client p 33

• Terza parte: lato gestione p 38

Ultima fase: La prova pratica p 41

Conclusione p 42

2

Il progetto è nato in seguito ad un’idea comune tra la ditta Tosini e il professor Azzani con

gli alunni tirocinanti. L’obiettivo finale è quello di realizzare un prodotto che sostituisca il

comune registro cartaceo con uno elettronico. I vantaggi che ne conseguirebbero sono

una migliore e sicura gestione delle operazioni scolastiche, agevolando eventuali

comunicazioni alle famiglie.

L’utilizzo di questo prodotto porterebbe quindi al miglioramento di servizio come:

• Registri di classe (assenze, note disciplinari ecc).

• Registri personali del docente (voti, programmi ministeriali ecc).

• Circolari e avvisi (alla classe o al singolo alunno).

• Controlli precisi sulle assenze dei docenti.

• Sicurezza sui dati memorizzati impedendo manomissioni.

Nel corso dello sviluppo del programma sarà necessario l’apprendimento di varie

tecnologie software che verranno ampiamente descritte nel corso di questo documento.

3

Le specifiche riportate in questo paragrafo sono la sintesi delle considerazioni emerse

nell’incontro tenutosi presso la ditta Tosini presenti il titolare ed il signor Alessio Bariselli

per la ditta Tosini; il professor Cleto Azzani e lo studente Rimon Soliman.

Definizione gerarchica delle caratteristiche principali relative al registro di classe

1- Identificazione docente:

Il docente si fa riconoscere tramite il passaggio del suo tesserino (badge) attraverso

l’apposito lettore magnetico posto nell’apparecchio.

2- Ricezione dati dalla classe in base all’orario del docente e all’ora di timbratura:

Il software deve verificare in base all’ora e al codice dell’insegnante (letto tramite il

lettore magnetico) la classe dove quest’ultimo deve trovarsi in modo da inviare

all’apparecchio i dati corretti relativi alla classe e all’elenco degli alunni.

Il software deve prevedere anche la modifica continua degli orari in modo da

permettere il controllo della classe anche in situazioni di variazioni momentanee

dell’orario (per esempio una supplenza o un anticipo dell’ora ecc).

3- Indicare gli assenti:

Il programma deve poter gestire le assenze, gestire la giustificazione e avvisare il

docente in caso di assenze prolungate o ingiustificate.

4- Indicare i ritardatari:

Il software deve permettere la gestione degli ingressi in ritardo, deve permettere

all’insegnante di controllarne la frequenza e di gestirne la giustificazione. Inoltre

deve controllare se vi sono ritardi ingiustificati e se sono segnalati permessi

4

permanenti d’ingresso in ritardo (richiesti dai genitori per motivi vari come la

distanza eccessiva della scuola da casa ecc).

5- Indicare le uscite anticipate (PROVENIENTI DALLA SEGRETERIA): Il programma deve interagire con la segreteria per verificare se un alunno che ne

faccia richiesta abbia il permesso di uscire anticipatamente (dato dalla segreteria

dopo aver avvisato la famiglia). Deve inoltre gestire i permessi permanenti di uscita

in anticipo.

6- Indicare le note:

Il programma deve permettere all’insegnante di aggiungere annotazioni tra cui le

note disciplinari.

Definizione gerarchica delle caratteristiche principali relative al registro personale 7- Indicare i voti:

Il software deve permettere al docente di inserire e modificare le valutazioni degli

alunni. Deve quindi poter gestire diversi tipi di valutazione (scritta, orale, pratica,

ecc) e deve permettere di aggiungere piccole annotazioni come le assenze. Deve

essere impostato come una tabella in funzione del tempo.

8- Giustificare le interrogazioni: Il programma deve permettere al docente di aggiungere piccoli elementi personali

variabili da insegnante ad insegnante: se per esempio il professore vuole

concedere due giustificazioni agli alunni che ne fanno richiesta prima di

un’interrogazione poiché impreparati, deve avere la possibilità di farlo.

5

La gestione dei registri avviene in questo modo: successivamente all’autenticazione il

software, dopo aver verificato la classe e dopo aver ricevuto i dati in modo corretto,

deve dare la possibilità di scegliere su quale registro agire (di classe o personale del

docente). Deve anche esserci un menù disponibile senza autenticazione, che permetta

ai docenti e agli alunni di controllare o ricevere informazioni di loro competenza (per

esempio avvisi come la mancanza di un docente o di un cambiamento nell’orario di

lezione ecc).

6

La pianificazione del lavoro decisa in concordanza tra l’ing. Cleto Azzani, l’alunno Rimon

Soliman e la ditta di Gian Paolo Tosini durante una riunione che si è tenuta nell’ufficio di

quest’ultimo ci ha permesso di stendere le specifiche descritte in precedenza e di

raccogliere idee e proposte per lo sviluppo del progetto.

Abbiamo quindi cominciato a scegliere le apparecchiature e le tecnologie appropriate per

realizzare al meglio un prodotto che soddisfi i requisiti precedentemente elencati.

Riportiamo quindi di seguito l’elenco delle tecnologie e delle apparecchiature inizialmente

adottate:

• Linguaggio di programmazione “Borland Delphi 5 Professional” per lo sviluppo del

software con l’uso di tecnologie “Client - Server”.

• Linguaggio “SQL” (Structured Query Language) per l’interrogazione dei Database e per

la gestione e l’inserimento dei dati.

• Programma Microsoft PowerPoint per lo sviluppo delle presentazioni grafiche.

• Pc “U-Buddie” come client per il registro elettronico in classe.

• Linguaggio “HTML” scritto in codice per lo sviluppo delle pagine Web.

Successivamente, con l’ingresso dell’alunno Stefano Cascio nel gruppo, abbiamo fatto

un’altra riunione nella quale il team ha cominciato a suddividere il lavoro tra i vari elementi

e a fissare i giorni lavorativi (giorni nei quali gli alunni svolgeranno il lavoro in ditta coperti

da relativa assicurazione stipulata tra la scuola, l’azienda e una compagnia assicurativa e

regolamentata da un apposito contratto firmato da tutti i membri).

Si decise così che la parte del lavoro orientata al software e ai linguaggi di

programmazione verrà sviluppata da Rimon Soliman con l’aiuto di Alessio Bariselli e con

7

l’utilizzo dei PC gentilmente messi a disposizione dal sig. Tosini; mentre la parte

riguardante la stesura e la presentazione grafica saranno tenute da Stefano Cascio.

Quest’ultimo si occuperà anche della scrittura di un diario sempre aggiornato nel quale

viene riportata la situazione dello sviluppo del progetto passo per passo. Una copia del

diario verrà allegata a questo documento assieme ai vari listati di codice sorgente scritto

durante la creazione dei software.

Nonostante le differenze tra i diversi lavori, essi verranno svolti in situazioni nelle quali il

team è riunito per fare in modo che tutti siano a conoscenza di ogni caratteristica o

modifica e per permettere a tutti di proporre eventuali nuove idee.

8

Borland Delphi 5 professional

Borland Delphi 5 è il

linguaggio di

programmazione da noi

adottato per lo sviluppo del

software necessario per la

gestione del registro

elettronico. E’ un linguaggio

di alto livello basato sul suo

predecessore “Pascal” ma,

a differenza del suo

antenato non è testuale ma

è “object oriented” (cioè

orientato agli oggetti) quindi la stesura del codice sorgente non è l’unica operazione da

fare ma è accompagnata da un’impostazione grafica composta da finestre, bottoni, caselle

di testo e altri oggetti, alcuni dei quali verranno ora presentati in figura qui accanto e in

seguito brevemente illustrati.

Esaminando la figura 1 possiamo notare alcuni elementi particolari che ora andremo ad

analizzare (gli elementi rappresentati sono quelli più utilizzati nell’ambiente Delphi ma

naturalmente gli strumenti a disposizione sono molto più numerosi e vari).

• Finestra: è un’interfaccia grafica tipica di ogni applicazione basata su sistemi

operativi Windows. Essa ha la funzione di permettere all’utente di interagire con

l’applicativo e quindi impartirgli degli “ordini” tramite l’uso sei vari oggetti “visuali”

che il programmatore include al suo interno, allo scopo di soddisfare le specifiche

del programma.

• Bottone: è uno degli elementi standard per interagire con il programma. La sua

funzione principale è quella di eseguire determinate operazioni alla sua pressione,

che vengono pianificate dal programmatore tramite la scrittura di istruzioni

particolari che vengono eseguite in sequenza.

9

• Label: è una “etichetta” non modificabile direttamente dall’utente che ha uno scopo

puramente indicativo e per esempio può essere utilizzata per visualizzare piccola

descrizione.

• Edit: è una casella di testo sviluppata su un’unica riga che permette all’utente di

inserire stringhe di testo allo scopo di fornire dei dati al programma. Questo può

servire, per esempio, quando l’utente deve effettuare una ricerca o quando deve

inserire una stringa richiesta dal programma stesso (per esempio una password).

• Memo: è un oggetto con le stesse funzioni della Edit ma con la differenza che il

testo immesso può essere distribuito su più righe. Per esempio lo si utilizza per

l’inserimento di commenti o brevi appunti.

• Bevel: è un elemento decorativo che permette al programmatore di inserire cornici

e bordi alla finestra.

• Check Box: è un oggetto che ci permette di selezionare o meno un’opzione .

• Radio Button: è anch’esso un oggetto grafico, ma al contrario della check box ci

consente di selezionare solo una delle varie opzioni.

• Combo Box: è un oggetto visuale che ci consente, grazie ad un menù a tendina, di

selezionare una delle voci contenute al suo interno. Questo strumento ci permette

di mantenere una visione più globale delle possibili decisioni da prendere.

• Panel: come il Bevel anche questo oggetto ha lo scopo di “abbellire” il nostro

programma; ci permette inoltre di inserire al suo interno degli oggetti, dividendoli

magari per categoria, in modo da ottenere un’estetica il più intuitiva possibile.

• Interbase Query: è un oggetto non visuale che permette al programmatore di

eseguire qualsiasi operazione su un database di tipo Interbase. Per svolgere il suo

compito utilizza il linguaggio SQL. Le operazioni solitamente più eseguite sono:

ricerche (in Sql vengono chiamate select), inserimenti di nuovi dati (insert),

modifiche a dati esistenti (update), eliminazione di dati (delete).

10

• Interbase Database: è anch’esso un oggetto non visuale e permette all’oggetto

precedente di comunicare con il database fisico. Assieme ad Interbase Query

questo piccolo oggetto rappresenta uno degli oggetti più importanti del Delphi.

• Httpserver: anche quest’ultimo oggetto rimane invisibile all’utente. In sostanza

abbiamo a che fare con un piccolo server web il cui compito è quello di interpretare

delle informazioni inviate da un qualsiasi browser html (Internet Explorer, Netscape,

ecc.) restituendo delle pagine html generate dinamicamente oppure rispondendo

con pagine gia esistenti. Le tecnologie Client – Server sono tecnologie particolari per lo sviluppo di applicazioni

orientate a comunicare tra di loro tramite una rete di pc. A questo scopo si creano appunto

due programmi: uno chiamato “Client” e uno chiamato “Server”. In breve, il Server è un

programma che ha la funzione di fornire un servizio, mentre il client è un’applicazione

predisposta per l’accesso al servizo fornito dal server.

Vediamo ora un esempio di codice “sorgente” di un semplice programma:

unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm_Principale = class(TForm) Button_Stampa: TButton; Edit: TEdit; Label_Title: TLabel; procedure Button_StampaClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form_Principale: TForm_Principale; implementation {$R *.DFM}

11

procedure TForm_Principale.Button_StampaClick(Sender: TObject); begin ShowMessage(Edit.Text); end; end.

All’esecuzione del programma verrà visualizzata la seguente inestra:

E alla pressione del bottone “Stampa”, apparirà:

Questo succede in quanto, esaminando il codice precedentemente elencato, alla

pressione del bottone “Stampa” (che in delphi si chiama “Button_Stampa”) è stato

associato il comando “ShowMessage” con il parametro “Edit.Text”, che farà visualizzare

un messaggio contenente la stringa digitata nella casella di testo (chiamata appunto

“Edit”).

12

Linguaggio SQL e Database

LINGUAGGIO SQL

Il linguaggio SQL (Structured Query Language) è un linguaggio strutturato che viene

utilizzato quando si ha l’esigenza di interrogare, gestire e inserire dei dati in Database.

Questo potente linguaggio ci consente, come citato sopra, di aver accesso ai dati

contenuti in un Database relazionale (Oracle, Sybase, Informix, Microsoft SQL server,

Access, ecc.) e descrivere le informazioni che, chi utilizza il programma, intende

visualizzare. Il linguaggio SQL ci permette anche di strutturare un Database

consentendone l’elaborazione. Come nella maggior parte dei linguaggi anche questo

presenta alcune varianti a seconda degli standard presenti; dopo attente considerazioni

abbiamo deciso che gli elementi da noi utilizzati sarebbero dovuti essere il più “standard”

possibile per essere riconosciuti dalla maggior parte dei computer, quindi anche in questo

caso abbiamo adottato un linguaggio molto diffuso nel mondo “ANSI” (American National

Standard Institute).

Nella fattispecie in un Database relazionale i dati vengono memorizzati in tabelle; ogni riga

viene chiamata “Record” e ogni colonna viene chiamata “Campo”. In primo luogo

dobbiamo dire che ogni campo può contenere al suo interno informazioni di diverso tipo

(Stringhe, numeri,date e ore, ecc.); le operazioni più comuni eseguite sulle tabelle sono:

SELECT (per selezionare degli elementi), INSERT (per inserire un nuovo record),

UPDATE(per aggiornare un record), DELETE (per eliminare un record).

Per esempio se in una tabella chiamata “Anagrafica” vengono riportate le colonne: Nome,

Cognome, Indirizzo, data di nascita possiamo, tramite l’istruzione select, prendere in

considerazione solo alcune colonne “ignorando” le altre:

SELECT Nome, Cognome

FROM Anagrafica;

Dopo aver digitato questo comando otterremo un’altra tabella generata dal programma

che contiene solo le colonne Nome e Cognome. Per quando riguarda i nomi delle colonne

non è possibile utilizzare il carattere “spazio” al loro interno, in quanto non supportato

dall’SQL. Analizzando le due righe di codice scritte sopra a scopo illustrativo ci sembra

doveroso ricordare che alla fine di ogni istruzione deve essere presente un (;) per

segnalare la fine del comando stesso.

13

Esistono tuttavia anche altre istruzioni come dicevo sopra, per esempio INSERT che ci

consente di aggiungere alla nostra tabella un altro record (riga), oppure UPDATE che ci

permette di aggiornare il contenuto di un record o una colonna, o ancora l’istruzione

DELETE che abilita ad eliminare un record o il suo contenuto.

Per poter mettere in relazione dei valori è necessario avere a disposizione della

simbologia che ci permetta di compiere dei confronti. A questo scopo ci vengono in aiuto i

cosiddetti:

Operatori relazionali

Gli operatori relazionali vengono utilizzati assieme alla

clausola WHERE (Dove) per specificare che solamente

alcune righe (dette anche “record” del DBMS) della

tabella verranno visualizzate in base al criterio

specificato nell’istruzione Where.

= Uguale

<> Diverso

< “minore di…”

> “maggiore di…”

<= “…minore o uguale a…”

>= “…maggiore o uguale a…”

Esempio Per selezionare dalla tabella codici tutti gli impiegati che percepiscono un salario superiore

o uguale a 5000$ dovremo semplicemente indicare queste tre semplici righe di comando:

SELECT Codice indica il campo da selezionare.

FROM Statisticaimpiegati nome della tabella da cui si deve prelevare i dati.

WHERE Salario>=50000; indica cosa deve prendere in considerazione nella tabella.

I DATABASE

Il programma server, per ottenere i dati necessari, deve connettersi ad un database.

Utilizzando i comandi SQL (già presentati precedentemente), il programma effettua delle

“query” (interrogazione) per cercare nel database le informazioni che il client richiede al cgi

(nel nostro caso, per esempio, queste informazioni possono essere nome dell’alunno,

matricola, badge del professore ecc.).

14

Gli stessi comandi vengono utilizzati anche per scrivere informazioni nel database, come

assenze, ritardi, voti ecc.

Un database è un “raccoglitore di dati” strutturato in maniera particolare: ci sono varie

tabelle parallele ed ogni tabella contiene i dati organizzati in “record” e “campi”.

Record

DATABASE

Tabelle

Campi

Questa particolare struttura permette di inserire e lavorare con una grande quantità di dati

e di organizzarli in maniera funzionale. Si possono eseguire ricerche di vari record e tra

varie tabelle filtrandole in modo dettagliato.

Ogni database viene studiato e strutturato in base alle esigenze del programma, questo

perché ad ogni tabella viene assegnato un indice primario (chiamato “primary key”) allo

scopo di evitare inserimenti doppi dei record e di indirizzare velocemente le interrogazioni

fatte. Tutto ciò significa che un errato studio del database può compromettere seriamente

il buon funzionamento del programma che lo usa rendendo necessaria la loro riscrittura

(sia del database che del programma). Oltre all’indice primario, ad ogni tabella possono

essere associati degli indici secondari che verranno utilizzati solo in fase di “run time” (cioè

mentre il programma è in esecuzione) per effettuare delle ricerche particolari.

Microsoft PowerPoint

Microsoft PowerPoint è uno strumento del pacchetto Office utilizzato da noi per lo sviluppo

delle presentazioni grafiche di questo progetto. Questa applicazione permette di creare

15

una serie di “diapositive” visualizzabili in una sequenza prestabilita e contenenti immagini,

testi e schemi utili per l’esposizione al pubblico.

Lo scorrimento delle diapositive può essere comandato manualmente (un click del mouse

o la pressione di un tasto) oppure può essere temporizzato. La prima ipotesi è utilizzata in

quanto è più efficiente nel caso che ci sia un presentatore che espone l’argomento.

Pc U-Buddie

U-Buddie è un comune personal computer che però si

differenzia dagli altri per le sue dimensioni compatte. Da qui

ne deriva l’ottima predisposizione ad essere collocato in

luoghi ristretti (per esempio una scrivania o il cassetto di una

cattedra) ed è questa la caratteristica principale che ci ha

invogliato ad adottarlo.

Questo però non comporta una limitazioni rispetto agli altri

pc in quanto, come tutti, è dotato dei classici componenti

(hard disk, ram e lettore cd sostituibili, una scheda di rete 10/100 Mbps integrata, scheda

audio e video integrate, prese USB ecc) e può ospitare un qualunque sistema operativo

(per esempio Windows o Linux).

Linguaggio HTML

L’HTML (HyperText Markup Language) è un linguaggio standard utilizzato per la

creazione delle pagine web. Come tutti i linguaggi ha bisogno di una sua sintassi rigida

ma, a differenza degli altri che hanno la funzione di creare dei programmi, l’html ha lo

scopo di costruire pagine di testo aventi una struttura particolare (testo formattato). I file

generati avranno estensioni “.html” e “.htm”. Per fare ciò non è necessario l’impiego di

alcun software ma basta un comune editor di testo ad esempio “Notepad” in ambito

Windows e di un qualsiasi Browser Web per l’interpretazione e la visualizzazione della

pagina stessa.

Quindi dietro alle pagine internet più comuni si nasconde un codice le cui istruzioni sono

delimitate da particolari elementi chiamati “TAG”; ad esempio per scrivere il titolo della

pagina web, è necessaria un’istruzione simile alla seguente:

16

<TITLE> Titolo della pagina </TITLE>

L’utilizzo errato dei TAG (ad esempi l’apertura senza chiusura) compromette la corretta

visualizzazione di quella parte di pagina permettendo comunque di vederne il resto.

I TAG essenziali sono:

Tipo <HTML></HTML> (inizio e fine del file)

Titolo <TITLE></TITLE> (titolo del documento; deve essere nella testata)

Testata <HEAD></HEAD> (informazioni descrittive; come il titolo)

Corpo <BODY></BODY> (contenuto della pagina)

Esempio del codice di una pagina web:

<!DOCTYPE HTML PUBLIC -"//NETSCAPE Comm. Corp.//DTD HTML//EN"> <html> <head> <title>Moretto Pagina iniziale</title> </head> <body> <body bgcolor="ffffcc"> <body background="./HtmlImages/SfondoPF.jpg"> <h1><center><font size=10>Gestione Registri "Moretto"</font></center></h1> <hr> <h1><font size=5><center>Benvenuti nel programma di gestione dei registri scolastici "Moretto"</font></h1> <hr> <font size=6>Selezionare il registro desiderato:</font><br><br> <br> <a href="regclasse.html"><font size=6>Registro di classe</font></a> <br> <a href="regprof.html"><font size=6>Registro del professore</font></a></center> <br> </body> </html> <hr>

Apertura del TAG Testo Chiusura del TAG

La pagina web risultante da questo codice sarà la seguente:

17

In conclusione si può dire che l’HTML è un linguaggio standardizzato di “Formattazione del

Testo”, cioè di preparazione della sua FORMA.

18

L’interfaccia utente

Il primo passo affrontato nella fase di programmazione è stato la progettazione estetica del

programma server che da ora in poi verrà chiamato “MORETTO”. Dovendo essere

un’applicazione residente appunto su un pc server, abbiamo pensato di strutturarlo in

modo che sia il più “leggero” possibile. Per “leggero” si intende che non deve avere molta

grafica allo scopo di non “rubare” troppe risorse al pc che lo ospita e che potrebbe

necessitare di queste risorse per eseguire altre operazioni.

A questo scopo abbiamo creato una interfaccia semplice ma allo stesso tempo funzionale

ed intuitiva, come nella figura seguente.

I files che circondano il programma

Il “MORETTO” non può funzionare da solo, ma dipende da una serie di files che si trovano

“nelle sue vicinanze”, o meglio nella sua directory. Cominciamo quindi a esaminare questi

files:

Moretto.ini: è il file di configurazione del server.

Una delle caratteristiche principali di questo tipo di file è la semplicità della sua struttura

interna che permette ad un utente più o meno esperto di apportarne delle modifiche e al

contempo di impedirne il danneggiamento da parte di utenti incompetenti.

Inoltre il linguaggio da noi utilizzato (Borland Delphi 5 Professional) contiene procedure e

funzioni apposite per il trattamento di questo tipo di file.

19

Esaminiamo quindi una forma banale di questo tipo di file:

[SERVER] PathIndex=C:\Tesina\Moretto\Html Index=index.html Port=5675 [PRCDAT] DataPathReg=C:\Tesina\Moretto\DbProject DataPathProf=C:\Tesina\Moretto\DbScuola

Come si può notare, la struttura è molto seplice: il file è diviso in gruppi (SERVER e

PRCDAT) e ogni gruppo contiene delle chiavi (PathIndex, Index, Port, DataPathReg e

DataPathProf) che assumono determinati valori. Tramite Delphi possiamo interrogare

questo file con il comando “LoadString” e sapere il valore di una determinata chiave.

Chiedendo, per esempio, il valore della chiave “Port” appartenete al gruppo “SERVER” lui

risponderà con la stringa “5675”.

Moretto.gdb: è il database da noi sviluppato per l’archiviazione del registro stesso e che

funziona su motore InterBase.

Anastude.dbf, Docenti.db, Fasce.db e Orario.db: sono i database già in possesso

dell’istituto e vengono utilizzati per reperire informazioni sulle varie anagrafiche, sugli orari

dei docenti ecc.

ElNote.dat: è un file contenete l’elenco delle note disciplinari che possono essere

assegnate dai docenti agli alunni.

Abbiamo deciso di utilizzare un file di questo tipo in quanto non richiede altro che un

banale editor di testo per essere modificato e quindi può essere personalizzato in base

alle esigenze dell’istituto. Questo è necessario in quanto i docenti non avranno a

disposizione una tastiera con cui inserire il testo della nota.

20

Principio di funzionamento

La struttura interna del “MORETTO” e quindi il suo funzionamento può essere descritta dal

seguente schema a blocchi:

Pagina dinamica

EsecuzioneProcedura

Si

Pagina di errore

No

CGI Riconosciuto?Client

I CGI: L’elemento fondamentale per il funzionamento dinamico del “MORETTO”, come descritto

dal precedente schema a blocchi, è il CGI (Common gateway interface). Un CGI è un

programma che ha la funzione di leggere le informazioni ricevute da una pagina internet

(per esempio durante una registrazione ad un servizio ne quale bisogna inserire i propri

dati), interpretarli e rispondere generando un’altra pagina internet che verrà poi

visualizzata sul computer dell’utente:

Server

CGI

Client

Richiesta da html

La richiesta richiama un cgi?

Si

Elaborazione

Visualizzazione nel browser

Pagina dinamica

Questi CGI possono avere varia forma: possono essere dei programmi separati o, come

nel nostro caso, possono essere delle procedure all’interno di un unico programma.

21

La pagina di risposta generata da un cgi è detta PAGINA DINAMICA in quanto non è una

pagina internet statica salvata in un file, ma è generata al momento e contiene

informazioni che possono cambiare a seconda della richiesta che viene effettuata dal

client.

Struttura interna

Esaminiamo ora cosa succede nello specifico durante l’utilizzo del programma:

Il client alla connessione riceve la pagina statica “index.html” che permetterà all’utente di

selezionare a quale dei registri si intende avere accesso. In questa pagina vi sono due

collegamenti: “Registro di classe” e “Registro del professore”. Il primo fa riferimento alla

pagina statica “regclasse.html” e il secondo a “regprof.html” (anch’essa statica).

La parte fondamentale di queste due pagine consiste in un form contenente una casella di

testo chiamata "badgetxt" (in cui comparirà il numero della tessera letta dal lettore

apposito) e un bottone chiamato "inviabadge" che svolgerà la funzione di inviare al server

l’informazione del numero della tessera. Il riconoscimento della tessera sarà affidato a due

cgi distinti, "enterprof.cgi" e "enterclasse.cgi", in base alla provenienza della richiesta.

enterclasse.cgi

enterprof.cgi

Serverregclasse.html

regprof.html

index.html

Client

A questo punto entrano in gioco le due procedure apposite chiamate “CreaElencoClasse”

e “CreaElencoProf”.

La procedura “CreaElencoClasse” svolgerà i seguenti passi:

22

1. Ricerca nella tabella “docenti.db” del numero della tessera “postato” dal cgi per

verificare che esso sia corretto e presente nel database.

2. Ricerca del giorno della settimana e dell’ora di lezione in base all’orologio sel pc

server.

3. In base ai due risultati precedenti verrà cercata la classe dalla quale il docente ha

effettuato l’accesso e di conseguenza verranno cercati e inseriti in un elenco tutti gli

alunni appartenenti a quella classe. Questa ricerca avviene attraverso la tabella

“ANASTUDE.DBF” e per ogni alunno verranno caricati nome, cognome e numero di

matricola.

4. Per ogni singolo alunno verrà effettuata una ricerca nella tabella “registro_cl”

(contenuta nel database “MORETTO.GDB”) per rilevare il suo stato attuale in base

al quale verrà creata una combobox (illustrata nella sezione “Borland Delphi 5

professional”) contenente delle opzioni prestabilite (per esempio nel caso di un

alunno il cui stato attuale è “assente”, l’unica opzione è “ritardatario”).

5. Verrà creata una form contenente tutte queste informazioni e un bottone “Invia” che

invierà al server le modifiche agli stati dei vari alunni apportate dal docente tramite il

cgi “pa.cgi”.

6. Verranno quindi cercati tutti gli avvisi relativi a quella determinata classe non ancora

scaduti.

7. Di seguito verranno cercate le assenze non ancora giustificate in modo da

segnalarlo al docente. Verrà inoltre creata una form contenente il bottone “Invia”

che permetterà di accedere ad una pagina dalla quale sarà possibile giustificare le

assenze. Tutto questo tramite il cgi “giustif.cgi”.

8. Infine verrà creata una pagina html dinamica e verrà inviata al client.

La procedura “CreaElencoProf” svolgerà gli stessi passi della precedente fino al punto tre

compreso, i successivi invece saranno:

23

4. Ricerca della materia che il docente dovrebbe insegnare in quella determinata

classe in quell’ora di lezione nella tabella “orario.db”.

5. Ricerca di tutti gli argomenti trattati dall’inizio dell’anno scolastico per quella

determinata materia nella tabella “Programmi” contenuta nel database

“MORETTO.GDB”.

6. Per ogni alunno verranno quindi ricercati nella tabella “Registro_pr” tutti i voti di

scritto, orale e pratica e inseriti in un elenco riportante sia la data che il voto

assegnato. Tutto questo per dare la possibilità al docente di avere una cronologia e

un rapido resoconto sulla situazione delll’alunno.

7. Infine verrà creata una pagina html dinamica e verrà inviata al client.

Tutti questi passaggi avvengono quasi istantaneamente in background (senza che l’utente

veda quello che succede).

Struttura del database

Esaminiamo ora la struttura interna del database “MORETTO.GDB”:

Il database è internamente diviso in 5 tabelle: AVVISI, GIUSTIFICHE, PROGRAMMI,

REGISTRO_CL e REGISTRO_PR. Di seguito specificheremo la struttura di ogni tabella

con l’indicazione della funzione di ogni campo.

Tabella AVVISI:

DATA CLASSE AVV

24

Questa tabella ha la funzione di contenere tutti gli avvisi provenienti dalla segreteria e

destinati al singolo alunno o all’intera classe.

Il campo “DATA” contiene la data di scadenza di ogni avviso. Nelle classi l’avviso verrà

visualizzato fino a che la data del giorno corrente non sarà maggiore della data segnata in

questo campo.

Il campo “CLASSE” contiene l’informazione della classe a cui l’avviso è destinato. L’avviso

verrà quindi visualizzato solo in quella classe.

Infine il campo “AVV” contiene il testo stesso dell’avviso.

Tabella GIUSTIFICHE:

DATA_ASS MATR_ALUNNO NOME CLASSE DATA_GIU

Questa tabella ha la funzione di memorizzare tutte le giornate di assenza del singolo

alunno e la relativa (ed eventuale) data di giustificazione.

Il campo “DATA_ASS” contiene l’effettiva data dell’assenza dell’alunno.

Il campo “MATR_ALUNNO” contiene invece il numero di matricola dell’alunno.

Il campo “NOME” contiene il nome e cognome dell’alunno stesso.

Il campo “CLASSE” contiene la classe di appartenenza di ogni alunno assente.

Infine il campo “DATA_GIU” contiene la data in cui viene giustificata l’assenza. Questo

campo rimarrà vuoto fino a che un docente non giustificherà quell’assenza tramite la

procedura apposita. Abbiamo scelto questa struttura in quanto filtrando la tabella e

selezionando solo i record nei quali in campo in questione è vuoto si può avere a

disposizione l’elenco delle assenze ingiustificate.

25

Tabella PROGRAMMI:

DATA BADGE_PROF MATERIA CLASSE ARGOMENTO

In questa tabella vengono memorizzati i programmi svolti giornalmente durante le lezioni

dai professori.

Il campo “DATA” contiene la data nel quale è stato svolto l’argomento.

Il campo “BADGE_PROF” contiene il numero identificativo del docente in questione.

Il campo “MATERIA” è usato per memorizzare il nome della materia a cui si fa riferimento.

Il campo “CLASSE” contiene la classe.

Infine il campo “ARGOMENTO” contiene il testo stesso dell’argomento di lezione che può

essere un elemento del programma ministeriale oppure semplicemente un testo del tipo

“Interrogazione” o “Compito in classe”.

Tabella REGISTRO_CL:

DATA CLASSE BADGE_PROF MATR_ALUNNO STATO NOTE

26

In questa tabella vengono memorizzate le attività classiche relative ad una classe, per

esempio l’inserimento delle assenze, dei ritardi e le note.

Il campo “DATA” contiene la data e l’ora relative allo stato dell’azione effettuata (per

esempio l’inserimento di una nota o di un ingresso in ritardo).

Il campo “CLASSE” contiene la classe.

Il campo “BADGE_PROF” contiene il numero identificativo del docente.

Il campo “MATR_ALUNNO” indica il numero identificativo dell’alunno. In caso di nota

disciplinare dell’intera classe, questo campo conterrà la scritta “TUTTI”.

Il campo “STATO” contiene lo stato dell’alunno al momento dell’inserimento del record.

Può assumere 4 valori differenti:

1. A (in caso di assenza)

2. R (in caso di ritardo)

3. U (in caso di uscita anticipata)

4. _ (in caso di note disciplinari)

Infine il campo “NOTE” contiene il testo di eventuali note disciplinari dell’alunno o della

classe intera.

Tabella REGISTRO_PR:

DATA CLASSE BADGE_PROF MATR_ALUNNO TIPO_VOTO VOTO MATERIA

In questa tabella vengono memorizzati dal professore i voti scritti, orali e pratici degli

alunni.

Il campo “DATA” contiene la data e l’ora relative all’inserimento.

27Il campo “CLASSE” contiene la classe.

Il campo “BADGE_PROF” contiene il numero identificativo del docente.

Il campo “MATR_ALUNNO” indica il numero identificativo dell’alunno.

Il campo “TIPO_VOTO” contiene una l’indicazione del tipo di voto che sia scritto (S), orale

(O) oppure pratico (P).

Il campo “VOTO” contiene il voto stesso.

Infine il campo “MATERIA” contiene il nome della materia a cui è associato il voto.

28

Prima parte: LATO SERVER

All’avvio del programma, ci si trova di fronte ad una finestra simile alla seguente:

Esaminandola nelle sue parti possiamo notare:

• La barra del titolo (con il testo “Moretto Registro Elettronico”);

• La barra dei menu (“File” e “Server”) le cui opzioni e funzioni verranno illustrate più

avanti.

• La descrizione dello situazione attuale con l’indicazione dello stato del server

(avviato o non avviato), l’indicazione del numero di computer connessi (client) e

l’indirizzo di rete del pc sul quale è installato.

Vediamo ora il contenuto del menu “File”:

29

All’interno di questo menù possiamo notare tre elementi: “Impostazioni”, “Avvia Browser” e

“Esci”.

L’opzione “Impostazioni” richiama la finestra di controllo e di configurazione del server,

l’opzione “Avvia browser” lancia il programma “Moretto Brewser” che verrà illustrato in

seguito e, infine, l’opzione “Esci” chiude il server arrestando tutte le comunicazioni.

Esaminando poi il menu “Server” possiamo trovare altre funzioni:

L’opzione “Avvia” rende attivo il server permettendo quindi ai client di connettersi,

l’opzione “Arresta” lo rende inattivo (svolgendo quindi l’operazione inversa rispetto alla

precedente), mentre l’opzione “Riavvia” esegue in sequenza le funzioni “Arresta” e ”Avvia”

(utile quando si modificano le impostazioni del server).

Aprendo la finestra di impostazioni (“File” => “Impostazioni”) verrà visualizzata la seguente

finestra:

30

Nella cartella “Server” troviamo:

La casella “Percorso della pagina iniziale” in cui verrà indicata la posizione assoluta del file

contenete la videata iniziale che comparirà nei client situati nelle varie classi.

Il taso […] permette all’utente di inserire manualmente il percorso mentre il tasto

“Predefinito” lo completa automaticamente in base alla posizione attuale dell’eseguibile del

server stesso.

Il “Nome della pagina iniziale” che, invece, indica il nome del file che verrà cercato

all’interno della directory indicata nella casella precedente, contenente appunto, la pagina

html iniziale. Il tasto “Predefinito” lo imposta automaticamente a “index.html”.

Il “numero della porta” che infine indica il numero della prota TCP/IP predisposta per la

comunicazione. Il tasto “Predefinito” lo imposta automaticamente su “5675”; questo

numero è stato scelto combinando insieme l’anno nel quale l’istituto Moretto è diventato

“Istituto Professionale di Stato per l’Industria e l’Artigianato” (1956), con la data di

fondazione della ditta “Tosini G. Paolo &C SNC” (1975).

Aprendo invece la scheda “Directory”, la schermata cambierà diventando come la

seguente:

Questa finestra è usata per indicare la posizione dei database utilizzati dal programma.

Nella casella “Directory del database del registro” vengono indicati la posizione e il nome

dell’archivio “Interbase” contenente il registro vero e proprio, gli avvisi, le assenze ecc.

Nella casella “Directory del database professori, orari e alunni”, invece, sono indicati la

posizione e il nome degli archivi “Dbf” contenenti le anagrafiche dei professori e degli

31

alunni. Questi archivi, a differenza dei precedenti, vengono forniti già compilati dalla scuola

il programma non effettua nessuna modifica su di loro.

I tasti “Predefinita” impostano automaticamente i rispettivi percorsi sempre in base alla

posizione del server stesso.

Il pulsante “Salva ed esci”, seguito da una domanda di conferma, salva le impostazioni nel

file “Moretto.ini” residente nella stessa directory dell’eseguibile, e chiede il riavvio del

server.

Avviando il server (“Server” => “Avvia”), la schermata iniziale cambierà diventando tipo la

seguente:

Se le impostazioni sono settate correttamente, i client potranno collegarsi ed avere

accesso a tutte le funzionalità.

32

Seconda parte: LATO CLIENT Il lato client, alla connessione, si presenta in questo modo:

:

Questa è la pagina principale e permette all’utente due scelte diverse: “Registro di classe”

e “Registro del professore”.

La prima opzione ci porta alla finestra di autenticazione nella quale il docente dovrà

appunto autenticarsi strisciando il suo Badge nell’apposito lettore per poter poi accedere al

registro di classe vero e proprio. La finestra di autenticazione che apparirà è simile alla

seguente:

33

Dopo aver strisciato il Badge, il server analizzerà il numero di Badge del professore,

visualizzando nel browser del client l’elenco completo degli alunni appartenenti alla classe

associata al professore in quell’ora di lezione.

La pagina visualizzata sarà simile alla seguente:

Accanto al nominativo di ogni alunno, verrà indicato lo stato attuale dello stesso (presente,

assente, ritardatario o uscita anticipata).

Scorrendo la lista degli alunni e arrivando alla fine della pagina, troveremo altre funzioni:

34

Tra queste funzioni troviamo:

• Inserisci note: permette di accedere ad una schermata di assegnazione di note

disciplinari sia singole che collettive. Il programma prevede la selezione del tipo di

nota tramite un menù a tendina modificabile tramite il software gestionale collocato

in segreteria. Successivamente sarà possibile, ogni volta che si accede a questa

pagina, visualizzare l’elenco completo delle note assegnate in quella classe .

• Inserisci giustificazioni: permette al professore di giustificare le eventuali assenze

degli alunni dopo la visione del loro libretto. Il click sul bottone “INVIA” salva i

cambiamenti apportati.

35

La seconda opzione permette anch’essa di accedere alla finestra di autentificazione e,

dopo il passaggio del badge, permetterà al professore di accedere al proprio registro

personale che contiene tutti nomi degli alunni e le rispettive valutazioni ottenute nei compiti

in classe, nelle interrogazioni o nelle esercitazioni pratiche.

In questa pagina è presente un menù a tendina nel quale sono inseriti tutti gli argomenti

del programma ministeriale per quanto riguarda quella materia; questo permette al

docente di segnalare cosa è stato svolto in quella lezione.

Una volta inseriti i dati verranno visualizzati, assieme alla data, sotto il menù per avere una

visione globale del programma svolto fino a quel momento.

36

37

Terza parte: LATO GESTIONE

Per il corretto funzionamento del programma è necessario utilizzare anche un terzo

software che ci consenta di avere uno scambio di informazioni tra i terminali nelle classi e

la segreteria.

Questa semplice schermata, che rappresenta il contenuto della prima cartella, permette al

personale autorizzato di inviare, ad una o più classi, una comunicazione ad esempio: la

classe esce alle ore 11.35 e così via. Ci consente anche di dare una “scadenza” al nostro

avviso in modo che una volta superata la data indicata il messaggio scompaia

automaticamente dall’elenco delle comunicazioni situato nel registro di classe.

Nella seconda cartella possiamo vedere come il nostro programma riesca a gestire

l’aggiunta di altri criteri di note nel registro di classe. Tutto questo si presenta sottoforma di

un elenco testuale modificabile esclusivamente da un utente autorizzato. I messaggi

38

devono essere inseriti all’interno della memo in modo da occupare un’unica riga, inoltre

non è possibile modificare i titoli “note alunni” e “note di classe” in quanto sono stati definiti

come parte statica della memo.

La terza e ultima cartella che costituisce il programma ha il compito di sviluppare la parte

delle statistiche individuali o sulla classe. Nel primo caso, una volta selezionato l’alunno e

la classe da lui frequentata è possibile visualizzare, dal primo menù a tendina: le sue ore

d’assenza, i ritardi, le uscite anticipate, l’andamento scolastico e le note.

Il secondo menù a tendina si occupa delle statistiche riguardanti la classe, visualizzando

quante note sono state assegnate o più semplicemente il numero di avvisi che ha ricevuto

dalla segreteria.

Nel secondo caso è possibile effettuare una rilevazione statistica sul numero delle volte

che la classe è uscita prima, entrata in ritardo o non si è presentata.

39

In fondo a questa finestra è presente un bottone “Salva e aggiorna” che ci consente di

conservare e allo stesso tempo di rendere effettive le modifiche apportate alla schermata.

40

La prova del funzionamento del progetto è avvenuta in modo graduale, in quanto ogni

ampliamento veniva testato di volta in volta.

I test venivano effettuati in due modi: in locale o in rete.

In locale lo stesso computer svolgeva le funzioni sia di server che di client. Questo tramite

una funzionalità interna di Windows che assegna alla macchina che lo ospita l’indirizzo ip

standard 127.0.0.1 (anche se il pc è privo di scheda di rete) raggiungibile solo dalla

macchina stessa. In questo modo tutti i dati scambiati tramite protocollo TCP/IP circolano

solo all’interno della macchina rispettando comunque le regole della tecnologia client-

server.

In rete, invece, il programma server veniva eseguito su di una macchina (solitamente

quella in cui veniva programmato) mentre il programma client (il browser) veniva eseguito

su un altro pc (a volte anche su altri due pc). Per poter realizzare una condizione simile, i

pc utilizzati devono appartenere alla stessa sottorete (avranno per esempio ip del tipo

192.168.145.001 e 192.168.145.002). Questi test sono stati fondamentali in quanto alcuni

errori venivano riscontrati e quindi corretti solo in questa condizione (che è quella che si

avvicina di più all’utilizzo reale).

IP: 192.168.145.002IP: 192.168.145.001 TCP / IP

HUB

41

Lo sviluppo di questo progetto ci ha permesso di approfondire le conoscenze sul

linguaggio delphi (usato per la maggior parte della preparazione) e di apprendere due

nuovi linguaggi quali HTML e SQL. Combinando insieme questi tre elementi si ha a

disposizione uno strumento molto potente per futuri lavori di sviluppo e per la creazione di

applicazioni CLIENT-SERVER essenziali per un uso efficiente delle moderne tecnologie di

comunicazione.

Inoltre l’apprendimento di questi linguaggi ci apre le porte verso lo studio e l’utilizzo di

linguaggi ancora più evoluti e complessi come C++, ASP, PHP ecc.

Questa esperienza inoltre ha permesso di immergerci in una realtà che ci ha permesso di

accrescere le nostre conoscenze riguardo le problematiche che deve affrontare un

programmatore professionista. Oltre all’arricchimento del bagaglio culturale, questo

tirocinio ci ha dato l’opportunità di comprendere il mondo del lavoro.

42