Specifiche del progetto p 4 - elettromoretto.com · • L’interfaccia utente p 19 • I files che...
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
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