Esame di stato di Informatica - Soluzione Traccia Suppletiva "Gestione Assenze" 2017

Il seguente articolo propone lo svolgimento della traccia della prova suppletiva di informatica proposta come tema dell'esame di stato nel 2017 per l'indirizzo di studi Indirizzo: ITIA - INFORMATICA E TELECOMUNICAZIONI ARTICOLAZIONE INFORMATICA

PRIMA PARTE

Una scuola superiore vuole gestire le assenze degli studenti. Con ‘assenze’ si intendono sia la mancata presenza per un giorno intero, sia l’ingresso in ritardo (con relativo orario), sia l’uscita anticipata (con relativo orario). A questo scopo, la scuola richiede lo sviluppo di una applicazione Web che utilizza un database nel quale sono memorizzate, relativamente all’anno scolastico in corso, le seguenti informazioni:


-per ogni studente il nome, la data di nascita, la classe frequentata, lo username e la password di accesso per la consultazione, da parte dello studente e dei suoi genitori, delle assenze personali;

-le assenze, delle quali si deve registrare la data di effettuazione e la tipologia (giorno   intero, ingresso in ritardo con relativo orario, uscita anticipata con relativo orario) ed il   docente che l’ha inserita;
-le classi dell’istituto, con la tipologia (liceo o tecnico o professionale),   l’indirizzo/articolazione/opzione di appartenenza (esempio 1: tecnico indirizzo  “Informatica e Telecomunicazioni” articolazione “Informatica”; esempio 2: professionale   indirizzo “Servizi per l’enogastronomia e l’ospitalità alberghiera” articolazione   “Enogastronomia” opzione “Prodotti dolciari artigianali e industriali”; esempio 3: liceo       indirizzo “Classico”);
-le ore di lezione effettivamente svolte dalle classi nel corso dell’anno: per ciascuna ora di   lezione il docente registra data, ora, materia, argomento trattato. Eventuali docenti co-   presenti (es. docente di laboratorio, docente di sostegno) firmano la loro presenza in aula   accedendo autonomamente alla piattaforma con proprio username e password.

Il candidato, fatte le opportune ipotesi aggiuntive, sviluppi:


1. un'analisi della realtà di riferimento, giungendo alla definizione di uno schema concettuale della base di dati che, a suo motivato giudizio, sia idoneo a gestire la realtà presentata;
2. il relativo schema logico;
3. le seguenti interrogazioni espresse in linguaggio SQL:
a. elencare tutte le assenze dall’inizio dell’anno di un certo studente con la relativa data;
b. elencare gli studenti che non hanno mai fatto assenze;
c. visualizzare l’elenco degli studenti che hanno superato un certo numero di ore di      assenza, riportando cognome, nome e classe di appartenenza;

4. il progetto di massima della struttura funzionale dell’applicazione Web, realizzando, con
appropriati linguaggi a scelta sia lato client che lato server, la porzione dell’applicazione che consente di gestire l’accesso riservato da parte di uno studente, per visualizzare tutte le proprie assenze dall’inizio dell’anno con la relativa data (vedi interrogazione a. del punto 3).

Soluzione

Per realizzare un documento di progetto valido per il sistema informativo proposto nel quesito d'esame, utilizziamo le seguente metodologia composta da tre fasi:

Analisi dei requisiti:

  1. Attori
  2. Casi d'uso
  3. Modello Concettuale (Schema E-R)

Progettazione:

  1. Modello Logico (Schema Relazionale)
  2. Interfacce
  3. Archiettura

Implementazione

  1. SQL
  2. PHP
  3. HTML

Analisi dei requisiti

1.1 Attori




Nome Descrizione
Docente Docente che inserisce le assenze degli studenti e le ore di lezione nelle classi
Studente Studente che accede alla piattaforma utilizzando le sue credenziali (username e password) per controllare le proprie assenze ed eventualmente gli argomenti delle lezioni sostenute dai docenti
Genitore Genitore che accede alla piattaforma utilizzando le sue credenziali (username e password) per controllare le proprie assenze dei propri figli

1.2 Casi d'uso

In questo paragrafo è presente la descrizione delle funzionalità che il sistema informativo offre agli attori per compiere varie operazioni.

Scenario Studente

Scenario Docente

1.3 Modello Concettuale (Schema ER)

Per realizzare un modello concettuale dei dati utilizziamo lo schema E-R:

Questo schema viene corredato dagli opportuni dizionari:

Dizionario delle entità


Entità Descrizione Attributi Identificatori
Istituto Istituto che contiene le classi di studenti gestite dai docenti Codice,Nome, Indirizzo Codice
Tipo Istituto Tipologia dell'istituto. Potrebbe essere Liceo, Professionale oppure Tecnico. Codice, Descrizione Codice
Articolazione Tipo di articolazione della classe, potrebbe essere ad esempio Informatica o Enogastronomia ecc.Codice, Descrizione Codice
Indirizzo Tipo di indirizzo della classe, potrebbe essere ad esempio Informatica e Telecomunicazioni o Servizi per l'enogastronomia ecc.Codice, Descrizione Codice
Opzione Opzione di appartenenza della classe, potrebbe essere ad esempio Prodotti dolciari artigianali e industriali ecc.Codice, Descrizione Codice
Classe Classe composta da più studenti ai quali vengono erogate le lezioni e per i quali è necessario tenere traccia delle assenzeCodice, Numero, Sezione, Piano Codice
Studente Studente che frequenta l'istituto ed è presente in una classeCodice, Nome, Data Nascita, Username, Password Codice
Studente Studente che frequenta l'istituto ed è presente in una classeCodice, Nome, Data Nascita, Username, Password Codice

Progettazione

Modello logico

Come modello logico per rappresentare i dati, prima espressi nel modello concettuale utilizzeremo lo schema relazionale. Dopo aver applicato in maniera opportuna le regole di derivazione lo schema risulta il seguente:

Diagramma delle classi

Interfacce

Del sistema informatico proposto si sceglie di implementare le seguenti interfacce:

Implementazione

Riporto il codice SQL per implementare parte dello schema relazionale prodotto precedentemente.

CREATE TABLE TIPOISTITUTO(
CODICE INT PRIMARY KEY,
DESCRIZIONE VARCHAR NOT NULL
);

CREATE TABLE ISTITUTO (
CODICE INT PRIMARY KEY,
NOME VARCHAR NOT NULL,
INDIRIZZO VARCHAR NOT NULL,
CODTIPOISTITUTO INT NOT NULL,
FOREIGN KEY (CODTIPOISTITUTO) REFERENCES TIPOISTITUTO(CODICE));

CREATE TABLE TIPOISTITUTO(
CODICE INT PRIMARY KEY,
DESCRIZIONE VARCHAR NOT NULL
);

CREATE TABLE ARTICOLAZIONE(
CODICE INT PRIMARY KEY,
DESCRIZIONE VARCHAR NOT NULL
);

CREATE TABLE INDIRIZZO(
CODICE INT PRIMARY KEY,
DESCRIZIONE VARCHAR NOT NULL
);

CREATE TABLE OPZIONE(
CODICE INT PRIMARY KEY,
DESCRIZIONE VARCHAR NOT NULL
);

CREATE TABLE DOCENTE(
CODICE INT PRIMARY KEY,
DESCRIZIONE VARCHAR NOT NULL,
NOME VARCHAR NOT NULL,
DATANASCITA DATE NOT NULL,
USERNAME VARCHAR NOT NULL,
PASSWORD VARCHAR NOT NULL
);

CREATE TABLE CLASSE(
CODICE INT PRIMARY KEY,
PIANO CHAR NOT NULL,
SEZIONE VARCHAR NOT NULL,
CODISTITUTO INT NOT NULL,
CODARTICOLAZIONE INT NOT NULL,
CODINDIRIZZO INT NOT NULL,
CODOPZIONE INT NOT NULL,
FOREIGN KEY (CODISTITUTO) REFERENCES ISTITUTO(CODICE),
FOREIGN KEY (CODARTICOLAZIONE ) REFERENCES ARTICOLAZIONE(CODICE),
FOREIGN KEY (CODINDIRIZZO) REFERENCES INDIRIZZO(CODICE),
FOREIGN KEY (CODOPZIONE) REFERENCES OPZIONE(CODICE));

Possiamo in seguito procedere con l'implementazione delle query in linguaggio SQL richieste:

a. elencare tutte le assenze dall’inizio dell’anno di un certo studente con la relativa data;

 

SELECT a.Codice, a.Data, a.NumeroOra

FROM Assenza a, Studente s

WHERE s.nome = [Nome] AND

      s.Codice = a.CodStudente AND

      a.Data > [InizioAnno] AND a.Data <[FineAnno]

b. elencare gli studenti che non hanno mai fatto assenze;

SELECT s.Codice,s.Nome 

FROM Assenza a, Studente s 

WHERE s.Codice NOT IN (SELECT s.Codice 
                       FROM Assenza a, Studente s 
                       WHERE s.Codice = a.CodStudente)

Dopo aver implementato le query possiamo procedere all'implementazione dell'applicazione web.

login.html

<!DOCTYPE html>
<!--
Pagina per accedere all'applicazione web per la gestione delle assenze
-->
<html>
    <head>
        <title>Gestione Assenze - LOGIN</title>
    </head>
    <body>
        <center><h1>Gestione Assenze</h1></center>
        <center><h2>Login</h2></center>
        <hr/>
        <form action="login.php" method="POST">
            Username: <input type="text" name="txtUsername"><br/>
            Password:<input type="password" name="txtPassword"><br/>
            <input type="submit" value="LOGIN">
        </form>
</body>
</html>

login.php

<?php

    //Connessione alla base dati
    $con = new mysqli("nomehost","nomeuser","admin","admin");
    
    if(mysqli_connect_errno())
        {
        echo "Problemi di connessione con la base dati";
        exit();
        }
    //Recupero dei campi dal form 
       $username = $_POST["txtUsername"];
       $password = $_POST["txtPassword"];
       
       $sqlQuery = "SELECT * FROM Studente WHERE username='".$username."' AND password='".$password."'";
    
       $result = $con->query($sqlquery); 
     
        if (mysql_num_rows($result) == "0"){ 
           echo "il nome utente non esiste"; 
        }else{
           //l'utente esiste redirect alla home page
           header('Location: gestione_studente.html');
           exit();
        }  
        
        ?>

 

Comments

comments

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *