Francesco Mosna
5Di
Progetto di approfondimento personale
ESAME DI STATO
Orange Kanagaroo
Francesco Mosna
Abstract
Il progetto consiste nella realizzazzione di un registro
elettronico, con un database in MySQL e l'interfaccia
in C#, i professori avranno a disposizione cinque
funzioni principali che possono servire, come
l'appello, le valutazioni, le annotazioni, gli avvisi e un
programma aggiornabile in ogni momento
1
Francesco Mosna
5Di
Indice
>Introduzione ……………………………….…………………………………………………………………….pag 3
>Descrizione Progetto ………………………………………………………………………………………pag 4-5
>Conclusioni Personali ……………………………………………………………………………….....…pag 6-7
>Sitografia ……………………………………………………………………………………………………………pag 7
2
Francesco Mosna
5Di
Introduzione
L’obiettivo di questo registro elettronico è quello di essere il più semplice e veloce possibile, infatti ho
optato per le tecnologie più semplici disponibili, per quanto riguarda l’interfaccia e la
programmazione dal lato utente ho utilizzato un’applicazione form interamente programmata in C#,
in quanto la velocità del programma non dipende dalla propria connessione internet, ma dalle
prestazioni della macchina, ed essendo il software molto leggero, non si avranno problemi.
L’unica disciplina coinvolta per questo progetto è l’informatica, in quanto uso il linguaggio di
programmazione C#, e il database management system MySql, gli argomenti presi in considerazione
sono diversi, come la progettazione del modello concettuale di un database, che in seguito riporterò,
la costruzione del modello logico, il quale è legato allo schema concettuale, ma in più sono riportate
le relazioni e le chiavi esterne della base di dati, la programmazione dello schema fisico, ovvero la
scrittura del codice SQL, ed infine la programmazione in C#, con la programmazione ad oggetti.
Le tecnologie prese in considerazione sono principalmente tre, per la programmazione
dell’interfaccia grafica per gli utenti ho utilizzato Visual Studio, un software messo a disposizione dalla
Microsoft, che permette di scrivere e compilare codice, in questo caso ho utilizzato il linguaggio C#, in
quanto è uno dei pochi linguaggi che abbiamo studiato durante il triennio, ed è perfetto per la
gestione dei dati, ho utilizzato in seguito il server MySql per appoggiare i dati, in quanto lavora molto
velocemente con quantità medie di dati, se il database dovesse assumere dimensioni difficili da
gestire, un trasferimento verso un Database Management System dotato di miglior gestione dei dati
non sarà un problema, per la creazione del database ho utilizzato il software gratuito Heidi, ovvero un
compilatore di codice SQL.
Il registro elettronico lavora velocemente grazie alla programmazione ad oggetti, è stata molto utile
soprattutto per rendere il software intuitivo, grazie alla creazione di form in sovraimpressione, il
lavoro sarà molto più agevole e veloce, è dotato di alcune fondamentali funzioni, come l’appello, le
valutazioni, le annotazioni , gli avvisi e anche la possibilità per l’utente di tenere un programma,
lavora solamente nella rete locale quindi non ha bisogno di una connessione internet, ogni scuola
possiede il suo registro personale, che potrà gestire a suo modo.
Non si sono presentati molti problemi durante la realizzazione del progetto, i pochi che sono sorti
erano relativi alla creazione di utenti in MySql, in quanto a scuola non era ancora stato svolto tale
argomento il progetto si era fermato, in seguito con un poco di autoapprendimento sono riuscito ad
avanzare, un altro piccolo problema si è rivelato quando ho provato il registro da un computer
3
Francesco Mosna
5Di
diverso da quello dove era posto il server MySql, ma con un cambio di porta sono riuscito a gestire
anche questo.
Descrizione progetto
Le tecnologie utilizzate in questo progetto sono due, come già detto in precedenza, Mysql e C#, e
tutte e due sono state molto importanti per la realizzazione del progetto:
MySql:
È stato utilizzato MySql come database management system, ovvero un software per la gestione dei
dati in un database, dopo aver progettato lo schema del database che qui sotto riporterò, ho
utilizzato un software free che permette di interfacciarsi con database, il suo nome è HeidiSql, e da
qui ho scritto tutto il codice, che ha permesso la creazione della base di dati.
C#:
Il registro è stato realizzato in C#, in quanto è stato costruito per gestire i dati, all’accensione del
programma si hanno due possibilità, ovvero accedere come professore o come amministratore,
l’amministratore ha la possibilità di aggiungere classi, studenti, insegnanti, e mandare avvisi alle
classi, infatti in questo caso l’amministratore è visto come il personale della segreteria.
Il professori invece ha cinque possibilià, all’inizio dell’ora deve fare l’appello, una volta fatto ha la
possibilità di dare valutazioni o annotazioni ad uno studente, leggere gli avvisi mandati dalla
4
Francesco Mosna
5Di
segreteria, e scrivere sul programma gli argomenti delle lezioni e commenti personali, solo l’utente
ha la possibilità di leggerlo.
Qui sotto è riportato lo schema del database:
FREQUENZE
Data
Stato
COMPITI
(1,N)
ASSENZE
PROVA
(1,N)
(1,N)
STUDENTE
IdStudente
(1,N) Nome
Cognome
DataNascita
Email
Telefono
Residenza
(1,N)
VOTI
(1,N) Titolo
Descrizione
Data
ANNOTAZIONE
CLASSI
(1,N)
APPARTIENE
(1,1)
NomeClasse
(1,N)
INSEGNA
(1,N)
(1,N)
VALUTAZIONI
(1,N)
NOTE
INSEGNANTE
DataNota
Commento
UserName
Password
Email
DataValutazione
Materia
Voto
5
NomeClasse
UserName
Francesco Mosna
5Di
Conclusione
Lavorare a questo progetto è stato molto costruttivo, mi ha permesso di ampliare le mie conoscenze nel
campo dell’informatica, in modo particolare nella programmazione ad oggetti, in quanto ho dovuto utilizzarla
per creare finestre aggiuntive per fare in modo che il programma fosse veloce e facile da usare, e anche nel
campo della programmazione SQL, perché per far svolgere alcune funzioni aggiuntive al registro ho dovuto
studiare personalmente alcuni argomenti. Il progetto è cominciato all’inizio dell’anno, il lavoro veniva svolto
per la maggior parte a casa, ma senza un minimo di conoscenza di database non si potevano fare grandi passi,
ma non appena si è cominciato l’argomento a scuola, il progetto ha cominciato a svilupparsi. Nel secondo
quadrimestre la scuola ha lasciato spazio alla realizzazione delle proprie tesine, e questo mi ha dato molto
“vantaggio”, infatti si poteva chiedere ai professori consigli, oppure confrontarsi con i compagni, dal mio
punto di vista è stato molto utile. Il nome del progetto deriva dall’insieme di due significati, prima di tutto
l’arancione, simbolo di equilibrio, stabilità e sicurezza, ed è questa che il software deve dare, e poi kangaroo
ovvero canguro, capace di tenere i cuccioli nel proprio marsupio, il registro può tenere molte informazioni.
Qui sotto sono riportati alcuni tratti di codice:
public bool ControllaAccesso(string utente, out string pwd)
{
provaConn.Open();
Command.CommandText = "SELECT * FROM insegnante WHERE UserName = '" + utente + "'";
Command.Connection = provaConn;
try
{
MySqlDataReader reader = Command.ExecuteReader();
pwd = "";
while (reader.Read())
pwd = reader.GetString("PasswordProf");
reader.Close();
provaConn.Close();
Command.Connection = provaConn;
return EseguiSQL(Command, out nrec);
}
catch
{
pwd = "";
return false;
}
}
Questo metodo controlla l’accesso di un professore, funziona in modo da restituire la password del professore
una volta inserito l’username, poi il programma controllerà se la password inserita dall’utente è uguale a
quella restituita dal metodo, il caso contrario restituisce un messaggio di errore.
6
Francesco Mosna
5Di
private bool EseguiSQL(MySqlCommand Command, out int numeroRecord)
{
numeroRecord = 0;
try
{
provaConn.Open();
numeroRecord = Command.ExecuteNonQuery();
}
catch
{
return false;
}
provaConn.Close();
return true;
}
Questo è il metodo che esegue ogni comando come si può notare, ovvero dal programma si passa un comando
e questo metodo si occupa di inviarlo al server.
Sitografia
http://dev.mysql.com/
Sito che ha messo a disposizione la libreria per far comunicare C# e MySql
http://stackoverflow.com/
Sito da cui si può prendere spunto per alcuni complessi algoritmi
7