ITIS “N.Baldini” di Ravenna Classe V A informatica “Abacus” Margotti Manuel Lubrano Lorenzo Marini Guido BIBLIO 2001 Progetto svolto per l’esame di stato 1999/2000 Biblio 2001 V. 1.2 2 Biblio 2001 V. 1.2 SOMMARIO Introduzione Conoscenze d’informatica applicate (e glossario) Cenni su SQL Cenni su Dreamweaver 2 Struttura del database Descrizione delle funzioni svolte dal programma Acquisizione dati Dati utente Dati libro Algoritmo di conversione del codice ISBN Ricerche Su libri Su utenti Gestione prenotazioni ritardi Gestione in rete (Intranet, Internet) Protezione dei dati Statistiche elaborate 3 Biblio 2001 V. 1.2 INTRODUZIONE Il progetto che abbiamo svolto in quest’anno scolastico tratta la gestione di una biblioteca tramite l’ausilio di database, con la possibilità di prenotazioni tramite Internet. Il tutto è stato realizzato in linguaggio Borland Delphi 4 e con istruzioni SQL (Structured Query Language, v.Conoscenze Applicate). Inoltre, abbiamo costruito due ipertesti di appoggio al programma, utilizzando Macromedia Dreamweaver 2. Questi ipertesti sono uno in Italiano e l'altro in Inglese, in modo da consentirne la comprensione ad una più vasta gamma di utenti, anche non italiani. La prenotazione quindi, oltre che nel modo tradizionale (cercando di persona un libro sugli scaffali), può essere fatta anche indirettamente sfruttando Internet o una rete locale che adotti il protocollo TCP/IP (Transmission Control Protocol / Internet Protocol, v.Conoscenze Applicate), ancora prima di aver effettivamente ritirato il libro. L’accesso all’archivio dati relativo ai libri, è consentito da qualsiasi stazione collegata alla rete, ma in sola lettura e stampa. Il programma è stato progettato pensando a tutte le generiche biblioteche, da quella di piccole dimensioni a quella più fornita, quindi l’unica limitazione è dovuta alle risorse hardware disponibili; il programma infatti è snello e semplice da utilizzare, anche grazie ad interfacce user-friendly. Abbiamo cercato di sviluppare un software originale rispetto a quelli in commercio, integrandolo con le funzionalità da noi ritenute fondamentali ma soprattutto caratterizzandone la presentazione grafica. La realizzazione del progetto d'esame prevede il coinvolgimento di quasi tutte le materie del corso di Informatica Abacus. La maggior parte delle operazioni svolte fanno infatti riferimento a nozioni apprese durante l'anno scolastico in corso, integrate con studi personali su determinati argomenti. 4 Biblio 2001 V. 1.2 CONOSCENZE D’INFORMATICA APPLICATE Abbiamo codificato le funzioni di Biblio 2001 in istruzioni SQL, poiché esso è sia un DDL (DATA DESCRIPTION LANGUAGE) che un DML (DATA MANIPULATION LANGUAGE), cioè un linguaggio che permette sia di modificare lo schema del DB che di gestirlo nella sua totalità, modificandone il contenuto informativo ed elaborandone i dati. Ogni tabella corrisponde ad una relazione, che rappresenta una ENTITÀ FORTE, cioè un insieme di oggetti con le stesse caratteristiche, ma distinguibili internamente dal valore di una chiave primaria, per i CLIENTI e i LIBRI. La tabella relativa alle PRENOTAZIONI, descrive invece un’ASSOCIAZIONE, cioè il legame che unisce le due entità già nominate. La chiave della tabella CLIENTI, serve soprattutto al sistema, appena viene messo in funzione, per riconoscere i DBA (Data Base Administrator), cioè gli utenti che hanno libero accesso a tutte le funzioni del software, e che di solito lo hanno progettato e realizzato. Una CHIAVE è un attributo o insieme di attributi (ATTRIBUTI PRIMI) che ha certe caratteristiche: si comporta come tale a LIVELLO INTENSIONALE, cioè deve referenziare sempre univocamente; identifica una informazione più complessa (record) di cui è parte; MINIMALITÀ, cioè la chiave è ridotta al minimo sia per la digitazione che per i tempi di confronto; i valori nulli che la costituiscono sono quelli che non conosciamo o che non ci interessano; deve avere un valore informativo, quindi deve essere conosciuta; non è aggiornabile se è di tipo contatore. Una CHIAVE PRIMARIA inoltre: non contiene valori nulli; non ammette duplicati; nel caso sia composta, e venga privata di uno dei suoi sottocampi, perde la caratteristica di univocità. Una RELAZIONE è il sottoinsieme del prodotto cartesiano dei domini dei suoi attributi, e può definirsi una RELAZIONE BASE se è almeno in 1A FORMA NORMALE, cioè se i suoi attributi sono semplici. Un ATTRIBUTO è strutturato. SEMPLICE, se non è né di tipo sequenza né di tipo 5 Biblio 2001 V. 1.2 Invece, una RELAZIONE è VIRTUALE O ANONIMA se non è distinta da un nome e una chiave (al contrario di quella BASE), non fa parte della base di dati, ed è il risultato di un’interrogazione o è costruita da noi. Se effettuiamo un’interrogazione tramite l’algebra relazionale, possiamo usare gli OPERATORI RELAZIONALI, divisi in OPERATORI PRIMITIVI ( Unione, Differenza, Prodotto cartesiano, Proiezione, Selezione, Ridenominazione) e DERIVATI, cioè ottenuti dalla combinazione dei precedenti. Le tre tabelle sono legate tra loro dal VINCOLO D’INTEGRITÀ REFERENZIALE, cioè le chiavi esterne della relazione PRENOTAZIONI sono chiavi primarie delle altre due tabelle. Tale vincolo collabora a garantire il rispetto della congruenza. Un LINGUAGGIO PROCEDURALE è un linguaggio attraverso il quale si deve specificare esattamente la sequenza di azioni da seguire per svolgere una determinata azione. Un LINGUAGGIO DICHIARATIVO O NON PROCEDURALE offre la possibilità di richiedere l’esecuzione di azioni specificando il risultato da ottenere più che i passi mediante i quali ottenerlo. Una VISTA LOGICA è una rappresentazione parziale dei dati, secondo criteri indipendenti dallo schema fisico. L’uso di Data Base comporta una certa RIDONDANZA, cioè una duplicazione di dati e di strutture indice atte a migliorare l’efficienza del DBMS, la cui eliminazione avrebbe un costo eccessivo (n2 banalmente, nlogn con l’algoritmo migliore, dove n rappresenta il numero di confronti tra record). Le operazioni accessibili in rete, presuppongono l’uso del protocollo TCP/IP sia da parte di chi richiede un servizio, sia dalla macchina che lo fornisce. Abbiamo usato proprio TCP/IP (Transmission Control Protocol / Internet Protocol), perché è il protocollo standard “de facto” usato da Internet. Un PROTOCOLLO è infatti l’insieme di regole formali, che devono essere rispettate da chi trasmette un messaggio, in modo che chi lo riceve (e usa lo stesso protocollo) sia in grado di interpretarlo. È possibile inoltre eseguire degli UPLOAD, che sono in generale, l’aggiunta di un ipertesto o di un programma applicativo sulla rete mondiale Internet. Il linguaggio JAVA SCRIPT è un linguaggio di scripting interpretato dal browser, che usa una sintassi molto simile a quella di Java. Java Script evita l’utilizzo dei bytecode (files con estensione .CLASS) da compilare in sede separata dalla JVM (Java Virtual Machine), che serve appunto ad interpretare i bytecode. 6 Biblio 2001 V. 1.2 Structured Query Language (SQL) E’ un linguaggio che serve per eseguire operazioni di definizione, gestione, controllo e reperimento dei dati in un database relazionale. La sigla SQL è diventata sinonimo di linguaggio standard per la gestione dei database relazionali, anche se in realtà nasconde una miriade di prodotti, dalle versioni per mainframe a quelle per personal computer. SQL è gestore di database relazionali, quindi assolve alle funzioni di Data Description Language (DDL) e di Data Management Language (DML). Inoltre può essere usato sia come linguaggio di interrogazione (QL) a sé stante, di tipo non procedurale, sia come linguaggio ospite (embedded) di un linguaggio procedurale. SQL è quindi un linguaggio di tipo dichiarativo che rappresenta un riferimento fondamentale per la gestione di un database relazionale. Convenzionalmente, le istruzioni di questo linguaggio sono scritte con tutte le lettere maiuscole.SQL non è “CASE SENSITIVE”, cioè non distingue tra lettere minuscole e maiuscole nelle parole chiavi delle istruzioni e nemmeno nei nomi di tabelle, colonne e altri oggetti. Quando si tratta di definire il contenuto di una variabile le differenze contano. I nomi degli oggetti (tabelle e altro) possono essere composti utilizzando lettere, numeri e il simbolo di sottolineatura; il primo carattere deve essere una lettera oppure il simbolo di sottolineato. Le istruzioni SQL possono essere distribuite su più righe, senza una regola precisa. Si distingue la fine di una istruzione dall'inizio di un'altra attraverso la presenza di almeno una riga vuota. Alcuni sistemi SQL solitamente richiedono l'uso di un simbolo di terminazione delle righe, che è un punto e virgola. L'SQL standard prevede la possibilità di inserire commenti; per questo si può usare un doppio trattino (--) seguito dal commento desiderato, fino alla fine della riga. I tipi di dati gestibili con il linguaggio SQL sono molti. Fondamentalmente si possono distinguere tipi contenenti: valori numerici, stringhe e informazioni data-orario. 7 Biblio 2001 V. 1.2 Macromedia Dreamweaver 2 Dreamweaver è un rivoluzionario editor WYSIWYG che tramite strumenti abbastanza semplici permette di realizzare applicazioni veramente professionali. La peculiarità di Dreamweaver è racchiusa nella facilità di creazione di sintassi JavaScript (v.Conoscenze Applicate). E' infatti possibile con pochi click del mouse mettere in movimento oggetti, rendere invisibili layers o gestire gli eventi dell'utente. L'interfaccia di Macromedia Dreamweaver 2 risulta molto più simile ad un programma di grafica che ad un editor. Attraverso Dreamweaver 2 è possibile gestire elementi con proprietà esclusive di Microsoft Explorer, oppure di Netscape Navigator e infine compatibili con entrambi. Le barre dei pulsanti sono spostabili in qualsiasi parte dello schermo. La finestra in cui scriviamo la nostra pagina è invece priva di ogni barra o pulsante ed è ridimensionabile a seconda della risoluzione usata. Le barre sono tre: "Objects", "Proprieties" e "Launcher". La prima permette di inserire gli elementi più comuni nelle pagine web (tabelle, immagini, scripts etc...). La barra, o per meglio dire finestra, "Proprieties" permette di impostare tutte le proprietà di ogni elemento inserito nella pagina, evitando così di ritoccare il codice, operazione spesso necessaria con FrontPage 98. Inserire, per esempio, una tabella non è semplice e immediato come con l’editor FrontPage, ma si può ottenere subito quello che si vuole senza dover aprire varie finestre per impostare le proprietà del tag. Con Dreamweaver infatti, basta inserire la dimensione della tabella, il numero di righe e di colonne e il lavoro è completato. Inoltre, al contrario di Front Page98, permette di modificare documenti HTML precedentemente creati con altri editor, senza aggiungere strani tag o formattazioni. 8 Biblio 2001 V. 1.2 "Launcher" è una barra con alcuni pulsanti che permettono di accedere ad alcuni programmi e funzioni incluse in Dreamweaver: "Site", "Library", "Styles", "Behavior" e "html". Le funzioni più utili sono Site e Html: il primo è un site manager che può gestire il nostro progetto fino alla pubblicazione online, il secondo è un editor HTML testuale, indispensabile ai programmatori più esperti. Cliccando sul menu "Insert" si possono inserire tutti gli elementi più comuni, presenti anche nella barra "Objects". Dal menu "Text" si può scegliere la formattazione e lo stile del vostro testo. Per modificare gli elementi inseriti nella pagina si deve usare il menu "Modify" che, per esempio, nel caso di una tabella, permette di aggiungere o eliminare righe o colonne. Attraverso la voce "Preferences" nel menu "Edit" si possono impostare le proprietà del programma adattandolo alle proprie esigenze. Il Tracing Layer, una delle innovazioni di spicco del programma, riconosce il fatto che in molti studi un designer compone la "pagina" in Photoshop, e poi la passa ad un esperto Web che la ricrea in HTML. Dreamweaver permette di prendere uno di questi layout in GIF o JPEG, e di piazzarlo come guida sullo sfondo della finestra del documento. Creata una pagina, la si salva come template, definendone zone protette e zone editabili. In combinazione con un controllo di pagina, che dice quando una certa pagina viene modificata, i template di Dreamweaver danno ai designer la sicurezza di sapere che gli autori e i redattori del sito possono modificare i contenuti, senza manomettere inavvertitamente il design della pagina. Il supporto di Dreamweaver alle tabelle è notevole ma difficile da gestire: si possono applicare testo e altre formattazioni a righe, colonne o a una tavola intera; selezionare e formattare celle non contigue ed esportare il contenuto delle tabelle. Dreamweaver si avvale anche di tutte le funzioni presentate dalle versioni 4 e successive di Netscape Communicator e Internet Explorer, ma offre anche retrocompatibilità con le versioni precedenti. Si possono disegnare pagine con i Layers e poi convertirli in tabelle con un solo comando di menu. Essendo disponibile sia per Macintosh che per Windows, Dreamweaver s’impegna a coprire tutte le piattaforme e i browser. Come tutti i migliori programmi però, anche Dreamweaver ha i propri difetti. La finestra in cui si scrive per esempio, è più grande di quella del browser (MsIE e Netscape) e nella creazione di animazioni si ha il rischio di uscire da tale area. Inoltre, non incorpora un editor HTML puro. 9 Biblio 2001 V. 1.2 STRUTTURA DEL DATABASE Il programma prevede l’inserimento, la modifica e la cancellazione degli elementi delle tabelle. Per interfacciare il database con il programma è stato utilizzato il linguaggio SQL (v. Conoscenze applicate), che ci ha permesso di realizzare anche gli upload (v. Conoscenze applicate). Il database contiene tre tabelle: TLibri TClienti Tprenotazioni ed è stato creato con Microsoft Access 2000. Ogni tabella ha una propria chiave primaria (v. Conoscenze applicate), che le mette in relazione tra loro tramite vincoli d’integrità referenziale (v. Conoscenze applicate), e grazie a questo riferimento l’aggiornamento di una relazione modifica anche quella associata. Clienti (Codice cliente, Cognome, Nome, Via, Città, cap, sesso, Numero, Telefono); Libri (Codice a barre, Autore, Titolo, genere, Editore, Scaffale, Ripiano, Riassunto); Prenota(Codice, data_di_consegna, giorni rimasti, disponibilità, codice_cliente, codice a barre, richiedente1-5); Le informazioni memorizzate nella base di dati sono: 1. Tabella libri: Codice a barre () Autore Titolo Editore Genere Scaffale Ripiano Scheda sintetica 10 Biblio 2001 V. 1.2 Questa tabella è accessibile in sola lettura, tranne che per i DBA (riconosciuti all’avvio) a cui è permessa ogni operazione di lettura/scrittura su tutte le relazioni. Infatti, sarebbe pericoloso permettere a chiunque l’eliminazione di dati, o l’inserimento di informazioni non valide (non corrette o su libri inesistenti). 2. Tabella clienti: Codice utente () Nome Cognome Residenza Indirizzo Numero civico Numero di telefono CAP Sesso In base alle norme sulla privacy, l’accesso a questo archivio è stato consentito ai soli DBA, qualunque sia l’operazione da effettuare sull’istanza. 3. Tabella prenotazioni: Codice () Data di consegna Codice utente (*) Codice a barre (*) Disponibilità Lista richiedenti Volte libro preso Giorni Rimasti 11 Biblio 2001 V. 1.2 La tabella PRENOTAZIONI viene suddivisa anno per anno in più file, in modo che siano fisicamente distinti dal sistema, i prestiti avvenuti in anni diversi, ma che allo stesso tempo l’utente continui a considerare l’elenco di dati come un’entità unica. Raggruppando in questo modo l’elenco delle prenotazioni, sarà più semplice ed immediato ritrovare una data prenotazione ed eliminare un’intera annata. Anch’essa possiede una chiave primaria () come le altre, ma contiene inoltre due chiavi esterne (*) per poter mettere in relazione l’archivio CLIENTI e quello dei LIBRI. In base alla DATA DI CONSEGNA, cioè al giorno in cui comincia il prestito, ed al numero di richiedenti in lista d’attesa, viene calcolato il periodo di indisponibilità del libro per ogni cliente che effettua la prenotazione. Ad esempio: se la durata massima di un prestito è stata fissata dal gestore a 15 giorni, ed un libro viene consegnato al primo di quattro prenotanti, si può prevedere che un quinto richiedente riceverà quel libro al massimo tra due mesi (60 giorni). FUNZIONI DEL PROGRAMMA Ogni volta che il programma viene lanciato, esso richiede il NUMERO UTENTE, la PASSWORD e la modalità di accesso (LETTORE o AMMINISTRATORE), in modo da completare il proprio caricamento solo quando l’utente è stato riconosciuto dal sistema. Dalla combinazione di queste tre informazioni, il sistema riconosce l’utente, e automaticamente attiva solo le opzioni permesse. 12 Biblio 2001 V. 1.2 Il software infatti, fa una distinzione tra le funzionalità riservate ai DBA (v. Conoscenze applicate) che possiedono una PASSWORD particolare, e gli utenti semplici. Facciamo ora una panoramica generale di tutte le potenzialità del programma, cioè di tutti gli strumenti messi a disposizione dei DBA. Il programma è suddiviso in sottomenù che permettono la gestione, in lettura e scrittura, di ogni tabella presente nel database. L’inserimento viene effettuato memorizzando i dati ordinatamente (secondo i valori della chiave) nelle tabelle, sia in quella degli UTENTI che in quella dei LIBRI. Il programma infatti, prevede due tipi di inserimento dati: quello di un nuovo libro all'interno dell'archivio della biblioteca e quello di un nuovo utente nell'albo degli iscritti. In entrambi i tipi di Inserimento sono stati fatti i dovuti controlli sui dati. Essi devono assicurare che ad ogni attributo della relazione venga assegnato un valore (not null) e che esso rispetti il formato ed il range previsti. Sui dati numerici, i controlli devono garantire che il valore inserito sia compreso in un determinato range (ad esempio, l'anno di nascita di un nuovo utente deve essere compreso tra il 1900 e il 2000), e che siano possibili operazioni di tipo logico su di essi. 13 Biblio 2001 V. 1.2 Sui dati alfanumerici, invece, i controlli riguardano per lo più la lunghezza massima che devono assumere le varie stringhe (ad esempio, il nome di un nuovo utente non deve superare i 25 caratteri). Nei confronti tra stringhe, non è stata fatta distinzione tra lettere maiuscole e minuscole, perché considerato inutile. ACQUISIZIONE DEI DATI DATI UTENTI L'operazione di inserimento di un nuovo utente è concessa solo ai DBA, i quali solo dal terminale in cui è presente il programma possono inserire nuovi utenti ricevendo dal sistema il codice personale univoco del lettore. Il cliente dovrà inserire questo codice ogni volta che carica il software. Tramite questo codice, infatti, il sistema è in grado di tenere costantemente sotto controllo le operazioni di un utente semplice, e di avvertirlo automaticamente all’avvio del programma, del suo eventuale ritardo nella restituzione di un libro in possesso, o della disponibilità di uno precedentemente richiesto. Per ogni UTENTE vengono memorizzati: CODICE: 6 caratteri COGNOME: 25 caratteri NOME: 25 caratteri VIA/PIAZZA: 15 caratteri NUMERO CIVICO: 5 caratteri CITTA’: 20 caratteri PROVINCIA: 2 caratteri TELEFONO: CAP: 5 caratteri SESSO: 1 carattere Password: 8 caratteri 14 Biblio 2001 V. 1.2 I valori del CODICE sono sequenziali e numerici, cioè abbiamo scelto una chiave di tipo contatore, che memorizza l’ordine cronologico con cui gli utenti sono diventati clienti della biblioteca. All’avvio del programma, dovrà essere inserita anche la PASSWORD giusta, che è stata memorizzata nel file Pswr.utf, tra CODICE, PASSWORD e tipologia dell’utente (LETTORE o AMMINISTRATORE) c’è una relazione univoca, quindi finchè non sono tutte tre corrette, il sistema non consente l’accesso ai menù. Non c’è modo di modificare direttamente la PASSWORD di un utente, quindi deve essere un DBA a cancellare il record dell’utente (semplice o amministratore) e ad inserirne uno nuovo. Quando il record di un utente viene eliminato, i CODICI rimangono invariati, e quindi il successivo inserimento di un utente, andrà ad assegnare all’utente il primo CODICE libero. Il programma non contiene la procedura per la modifica diretta, poiché è un’operazione poco frequente. DATI LIBRO Anche qui, l'operazione di aggiunta di un nuovo libro è permessa soltanto ai DBA (v. Conoscenze Applicate), in quanto sono loro a dover garantire la completezza e la correttezza dei dati. Sul codice a barre è stato effettuato un particolare tipo di controllo, che riguarda la sua lunghezza: essa deve corrispondere esattamente a 13 cifre. 15 Biblio 2001 V. 1.2 Per ogni LIBRO vengono memorizzati: CODICE A BARRE: 13 caratteri AUTORE: 30 caratteri TITOLO: 50 caratteri EDITORE: 20 caratteri SCAFFALE: 5 caratteri RIPIANO: 2 caratteri RIASSUNTO: di tipo Memo e non ha limiti di spazio GENERE: file di Testo, contenente al massimo 50 caratteri per riga Anche in questa tabella, non è possibile fare una modifica diretta, quindi si deve ricorrere alla cancellazione del record selezionato, e all’inserimento di uno nuovo. 16 Biblio 2001 V. 1.2 Algoritmo di conversione del codice ISBN Questo algoritmo è abbastanza complesso e consiste in 6 fasi: 1. concatena alla stringa ‘978’, il codice ISBN dopo averne eliminata l’ultima cifra; 2. calcola la somma delle cifre in posizione pari all’interno della stringa X appena ottenuta; 3. calcola la somma delle cifre in posizione dispari della stessa stringa X; 4. moltiplica la somma delle cifre dispari per 3, aggiunge la somma delle cifre pari, e calcola il modulo 10 del totale; 5. se il risultato è diverso da 0, allora memorizza la differenza tra 10 ed il valore calcolato nella fase 4; altrimenti il risultato di questa fase è 0; 6. il codice a barre è ottenuto inserendo alla fine della stringa X, la cifra calcolata nella fase 5. RICERCHE… L'operazione di ricerca viene eseguita sfruttando gli operatori relazionali. Tramite una query il database viene "interrogato", eseguendo le istruzioni SQL in grado di fornire all’utente i risultati richiesti. Nel caso della ricerca, viene eseguita una selezione sulla relazione (LIBRO o UTENTE), usando come condizione il valore conosciuto di uno o più attributi. Ad esempio, per la ricerca di un libro, di cui si sa che l'autore è Verga, occorre fare una selezione sulla relazione LIBRO, comparando i valori dell'attributo NOME con la stringa 'VERGA'. Dalla videata in cui vengono visualizzati i risultati della ricerca, è possibile richiamare la funzione di Stampa che fornisce una copia su carta delle informazioni trovate. Il tempo richiesto per effettuare la stampa su carta risulta proporzionale alla mole di dati su cui si lavora. Una stampa completa di tutti i libri della biblioteca, infatti, richiede tempi di risposta elevatissimi. …SUI LIBRI La ricerca inerente un determinato libro è un servizio offerto agli utenti semplici, che semplifica notevolmente la scansione dell'archivio, fornendo una lista ridotta dei libri, che rispondono a particolari requisiti. La ricerca può essere effettuata non solo su unico attributo, ma combinando più criteri insieme, tranne quando uno di questi è la chiave 17 Biblio 2001 V. 1.2 della relazione. In quest’ultimo caso vengono ignorati gli altri attributi conosciuti, perché possiamo sicuramente ottenere al massimo un solo elemento della relazione. Inoltre è possibile ordinare la visualizzazione della ricerca per ogni attributo visibile nella lista. E’ da questa finestra che un lettore può fare la sua prenotazione, o stampare su carta eventuali elenchi di libri. Il DBA invece, oltre a poter visualizzare e ricercare come un normale utente, può anche modificare gli attributi di un determinato libro, o addirittura lo può cancellare fisicamente. …SUGLI UTENTI La ricerca di un utente è invece un'esclusiva dei gestori della biblioteca e del database (DBA), i quali hanno accesso a tutti i dati inerenti un determinato UTENTE, conoscendone il CODICE personale o il COGNOME. Anche se meno utilizzati per questo scopo, il programma permette di avviare una ricerca disponendo degli altri campi, ad esempio del TELEFONO o della CITTA’. 18 Biblio 2001 V. 1.2 Il DBA, come per i libri, può modificare ogni attributo di dati del lettore o cancellare. In più si possono ordinare i lettori per singolo attributo, ed eventualmente stampare un elenco di lettori. GESTIONE PRENOTAZIONI E RITARDI Il prestito di un libro risulta limitato nell'ambito del tempo: a completa discrezione della biblioteca, viene stabilito un periodo massimo per il prestito del libro, scaduto il quale occorre restituirlo (in quest’ambito noi abbiamo prefissato un limite massimo di 15 giorni) Nel momento in cui un utente trattenga un libro per un periodo maggiore, occorre segnalare l'infrazione ai DBA (all’avvio del programma) che provvederà ad avvertire l'utente, in maniera da accelerarne la restituzione. Il nostro programma permette ai DBA, di creare una lista di tutti i clienti che commettono un'infrazione, correlati con il numero di giorni passati dalla data di restituzione. Per quanto riguarda invece, le funzioni accessibili anche all’utente semplice, il programma offre la possibilità di conoscere, per ciascun libro, il numero di richiedenti e di aggiungerne un altro nella lista d'attesa. 19 Biblio 2001 V. 1.2 Ogni PRENOTAZIONE ha un codice alfanumerico di 7 caratteri. Ogni volta che si avvia il programma, l’UTENTE viene automaticamente avvertito di quale/i libro/i da lui tenuto/i in prestito, è/sono in ritardo di consegna e da quanti giorni è scaduto il termine di riconsegna. Anche ai DBA, il sistema comunica ogni volta che viene caricato, quali sono i libri e gli utenti che hanno superato la data di restituzione e da quanti giorni, in modo che vengano presi i provvedimenti dovuti. La prenotazione si effettua tramite un’interfaccia di Ricerca (v. Ricerche sui libri). Il sistema controlla se il libro è disponibile o no, e nel caso sia già in prestito comunica all’utente tra quanti giorni tornerà disponibile (cioè quando tutti gli utenti in lista lo avranno ricevuto e riconsegnato), e gli chiede di confermare la prenotazione. Ogni PRENOTAZIONE sarà memorizzata permanentemente, in file distinti a seconda dell’anno in cui è avvenuto il prestito, in modo da poter essere sfruttata dai DBA, per pubblicare l’andamento dell’attività nel corso del tempo, oltre a varie statistiche sui libri e sui generi più graditi dal pubblico. GESTIONE IN RETE Il software consente al DBA di poter interfacciare un sito Web (internet o intranet) al databese del programma tramite asp. Le Active Server Pages (ASP) sono costruite nei file .asp che sono dei file testuali che contengono le seguenti proprietà: •Testo •Tag HTML •Comandi di Script. Un comando di script istruisce il computer a fare qualcosa, come assegnare un valore ad una variabile. E' alquanto facile creare un file .asp: Basta rinominare un qualsiasi file HTML, sostituendo i file con le estensione esistenti .htm o .html con l'estensione .asp. Per creare uno script .asp disponibile agli utenti del Web, bisogna salvare il file in una directory appartenente al Web publishing (in pratica la cartella di presentazione del web, ed essere sicuri di avere il permesso d esecuzione degli script. Quando il file verrà chiamato dal browser, si vedrà che il processo ASP restituisce del codice HTML. La tecnica Asp lavora tramite degli script che sono una serie di comandi di Script. L'esecuzione di uno script invia una serie di comandi ad un motore di scripting (scripting engine), che lo interpreta. Gli Script sono scritti in linguaggi aventi precise regole; tra queste: per poter usare un linguaggio 20 Biblio 2001 V. 1.2 di scripting, il server deve disporre di uno scripting engine che conosca il linguaggio. ASP contiene gli scripting engines per i linguaggi di scripting VBScript and JScript. Il primo linguaggio di scripting che ASP assume, se non è specificato quale usare, è di Default VBScript. Sintassi ASP ASP in realtà non è un linguagio di scripting; ASP offre un environment (ambiente) che processa gli scripts che vengono incorporati nelle pagine HTML. Delimitatori I Tag HTML sono differenziati dal testo dai delimitatori. Un delimitatore è un carattere o una sequenza di caratteri che marcano l'inizio e la fine di una unità. Nel caso dell'HTML, questi delimitatori sono il simbolo minore (<) e maggiore (>). In modo del tutto simile, i comandi e le espressioni di output degli script ASP sono differenziati sia dal testo che dai Tag HTML dai delimitatori. ASP usa i delimitatori <% e %> per includere i comandi di script. Ad esempio, il comando <% nMioNumero = 5 %> assegna il valore numerico 5 alla variabile nMioNumero. ASP usa i delimitatori <%= e %> per racchiudere le espressioni di output. Ad esempio, l'espressione di output <%= nMioNumero %> invia il valore 5 (valore corrente della variable) al browser. Espressioni Singole E' possibile includere nei delimitatori ASP qualsiasi espressione valida per il linguaggio di scripting primario. Ad esempio, le seguenti linee producono la fine del testo con l'orario corrente del server: Istruzioni Una istruzione, in VBScript e negli altri linguaggi di scripting, è una unità sintatticamente completa che esprime un insieme di azioni, dichiarazioni, o definizioni. L'istruzione condizionale If...Then...Else che mostriamo, sono un classico esempio, che può essere anche visto nel corso di VBScript, di istruzioni VBScript. <% If Time >=#12:00:00 AM# And Time < #12:00:00 PM# Then cSaluto = "Buon Girno!" Else cSaluto = "Buona Sera!" End If %> 21 Biblio 2001 V. 1.2 Queste istruzioni memorizzano il valore "Buon Girno!" oppure il valore "Buona Sera!" nella variabile cSaluto. Non inviano nessun valore al browser client. Le seguenti linee inviano il valore, in colore verde, al browser client: <FONT COLOR="GREEN"> <%= cSaluto %> </FONT> Includere l'HTML nelle istruzioni E' possibile includere del testo HTML tra le sezioni dele istruzioni. Per esempio, il seguente script, che miscela HTML con l'istruzione If...Then...Else, produce lo stesso risultato dello script della sezione precedente: <FONT COLOR="GREEN"> <% If Time > = #12:00:00 AM# And Time < #12:00:00 PM# Then %> Buon Giorno! <% Else %> Buona Sera! <% End If %> </FONT> Se la condizione è vera, ciò se è Mezzanotte o comunque prima di Mezzogiorno, allora il Web Server invia l'HTML che soddisfa la condizione (Buon Giorno) al browser; altrimenti, invia l'HTML che soddisfa la condizione Else (Buona Sera) al browser. Tag di Script Le istruzioni, espressioni, comandi, e le procedure che vengono usate con i delimitatori di script devono essere vaidi per il linguaggio di script primario di default. Il linguaggio primario d scripting di ASP per default è settato a VBScript. Naturalmente, con ASP è possibile usare altri linguaggi di scripting; basta usare i tag di script HTML script <SCRIPT> e </SCRIPT>, isieme con gli attributi LANGUAGE e RUNAT, per racchiudere le procedure scritte in altri linguaggi che hanno il supporto nello scripting engine. Ad esempio, il seguente file .asp processa la procedura JScript chiamata MiaFunzione. <HTML> <BODY> <% Call MiaFunzione %> </BODY> </HTML> <SCRIPT RUNAT=SERVER LANGUAGE=JSCRIPT> function MiaFunczione () { 22 Biblio 2001 V. 1.2 Response.Write("è stata chiamata la funzione MiaFunzione") } </SCRIPT> PROTEZIONE DEI DATI I dati sono stati protetti, limitando l’accesso alle funzionalità che ne manipolano il contenuto, ed in certi casi oscurando i campi informativi da non rendere pubblici. Tali controlli dipendono dall’identificativo (CODICE+PASSWORD+modalità) inserito all’avvio dall’UTENTE, che determina la tipologia di utente (semplice o DBA) e ne abilita sole le funzionalità e le viste logiche accessibili. STATISTICHE ELABORATE Il software è stato progettato in maniera da coinvolgere il maggior numero di materie, e tra queste vi rientra anche Calcolo. Anche per questo motivo, il menù del programma permette la visualizzazione di due tipi di ricerche statistiche: la Top Ten dei libri più letti; la Top Ten dei libri meno letti. Queste funzionalità sono interessanti sia per i lettori, soprattutto quelli occasionali che spesso scelgono le loro prime letture tra quelle più gettonate, sia per i gestori della biblioteca che ovviamente cercano di offrire ai clienti i generi ed i titoli letterari più apprezzati. 23 Biblio 2001 V. 1.2 BIBLIOGRAFIA - Dameri, Foresti, Percivale Corso di Informatica 3, Jackson Libri, 1996 Diversi Ipertesti ed Appunti forniti dal prof. Flavio Cerini Vari Tutorial scaricati dal sito Internet Http://www.html.it RINGRAZIAMENTI Il programma BIBLIO 2001 è stato realizzato grazie all’aiuto dei seguenti insegnanti: - Cerini Flavio (Sistemi e Telecomunicazioni), per gli appunti e gli ipertesti forniti che ci hanno permesso di approfondire le conoscenze inerenti alcuni argomenti fondamentali; - Cavallini Luisa (Informatica), per le conoscenze di Informatica applicata che abbiamo appreso nell’arco dei tre anni di specializzazione; - Bazzi Mirka (Italiano), per la correzione dell’Ipertesto introduttivo al programma Biblio 2001; - Weinstein Vicky (Inglese), per la correzione della traduzione in lingua Inglese dell’Ipertesto introduttivo; - Tutti gli altri docenti ed assistenti del Consiglio di Classe della 5°Aia, per avere sempre espresso la propria disponibilità e aver concesso diverse ore di laboratorio per la realizzazione del Progetto d’Esame. 24