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