1 programmare in visual basic prof. f. di gerlando gestione di una videoteca classe v programmatori...
TRANSCRIPT
1
PROGRAMMARE IN VISUAL BASIC
Prof. F. Di Gerlando
Gestione di una “Videoteca”
Classe V Programmatori
I.T.C. Don M. Arena Sciacca
Anno Scolastico 2002-2003
Progetto Docente
2
GESTIONE DI UNA GESTIONE DI UNA VIDEOTECAVIDEOTECA
Presentazione Modellazione Interfacce Codice
Progetto
3
IntroduzioneIntroduzione
Presentazione del ProgettoPresentazione del Progetto
““GESTIONE DI UNA VIDEOTECA”GESTIONE DI UNA VIDEOTECA”Il progetto software qui presentato ha come oggetto la gestione di Il progetto software qui presentato ha come oggetto la gestione di una videoteca. L’idea di realizzare questo progetto è nata una videoteca. L’idea di realizzare questo progetto è nata dall’importanza che l’automazione delle informazioni ha subito dall’importanza che l’automazione delle informazioni ha subito nell’ultimo decennio. Per cui profondi mutamenti si sono avuti in nell’ultimo decennio. Per cui profondi mutamenti si sono avuti in buona parte grazie all’evoluzione della tecnologia informatica, ma buona parte grazie all’evoluzione della tecnologia informatica, ma anche grazie all’esigenza di predisporre di flussi informativi più anche grazie all’esigenza di predisporre di flussi informativi più precisi, tempestivi, completi e soprattutto inseriti in un sistema precisi, tempestivi, completi e soprattutto inseriti in un sistema
integratointegrato. .
Segue
4
Nel realizzare tale gestione è opportuno curare un lavoro di progettazione iniziale, con riferimento ai dati da memorizzare e destinati alla successiva elaborazione. Innanzitutto bisogna effettuare una raccolta di informazioni attinenti al progetto in questione, ricercare poi i dati aventi elementi caratterizzanti e i legami intercorrenti tra essi. Disponendo del livello concettuale si inizia ad acquisire i dati. Per far ciò è opportuno l’utilizzo di un sistema di gestione di basi di dati nella fattispecie l’ambiente software “Microsoft Access” attraverso quest’ultimo è possibile creare cinque tabelle e cioè degli schemi secondo cui saranno organizzati i dati all’interno del database.
Segue
5
Per la gestione delle videocassette e dei dati dei clienti vengono Per la gestione delle videocassette e dei dati dei clienti vengono
individuate le entità seguenti:individuate le entità seguenti:
Tessere: per rappresentare i dati anagrafici, i dati relativi Tessere: per rappresentare i dati anagrafici, i dati relativi
all’eventuale abbonamento e le statistiche di noleggio dei all’eventuale abbonamento e le statistiche di noleggio dei
clienti;clienti;
Genere: per gestire i generi delle videocassette;Genere: per gestire i generi delle videocassette;
Cassette: per gestire le varie videocassette della videoteca;Cassette: per gestire le varie videocassette della videoteca;
Noleggi: per gestire i noleggi delle videocassette;Noleggi: per gestire i noleggi delle videocassette;
Utente: per gestire i dati dell’utente che utilizza il software.Utente: per gestire i dati dell’utente che utilizza il software.
Segue
6
Dopo aver terminato la fase di modellazione dei dati, si può Dopo aver terminato la fase di modellazione dei dati, si può
utilizzare un linguaggio di programmazione orientato agli oggetti utilizzare un linguaggio di programmazione orientato agli oggetti
e basato sugli eventi: Visual Basic. Tale linguaggio ormai è e basato sugli eventi: Visual Basic. Tale linguaggio ormai è
utilizzato in tutti gli ambienti di lavoro, anche scolastici in cui utilizzato in tutti gli ambienti di lavoro, anche scolastici in cui
anche gli alunni si cimentano nel corso dell’ultimo anno. Esso è anche gli alunni si cimentano nel corso dell’ultimo anno. Esso è
in grado di leggere i formati appartenenti a molti tipi di database in grado di leggere i formati appartenenti a molti tipi di database
e creare interfacce che facilitano l’interattività tra l’utente e la e creare interfacce che facilitano l’interattività tra l’utente e la
macchina. macchina.
Segue
7
Per gestire la videoteca attraverso tale linguaggio è necessarioPer gestire la videoteca attraverso tale linguaggio è necessariopianificare il lavoro in tre fasi:pianificare il lavoro in tre fasi: CREAZIONE DELL’INTERFACCIA UTENTECREAZIONE DELL’INTERFACCIA UTENTE: mediante : mediante
la quale viene progettata la parte grafica inserendo all’interno la quale viene progettata la parte grafica inserendo all’interno di finestre (form) una serie di controlli per l’inserimento, la di finestre (form) una serie di controlli per l’inserimento, la visualizzazione, la modifica e la cancellazione dei record.visualizzazione, la modifica e la cancellazione dei record.
IMPOSTAZIONE DELLE PROPRIETA’IMPOSTAZIONE DELLE PROPRIETA’: mediante la : mediante la quale si assegnano ai controlli un nome e si definisco attributi quale si assegnano ai controlli un nome e si definisco attributi come il contenuto di un’etichetta, la dimensione del testo, lo come il contenuto di un’etichetta, la dimensione del testo, lo stile e le parole che appaiono su un pulsante di comando o stile e le parole che appaiono su un pulsante di comando o nella barra del titolo del form.nella barra del titolo del form.
SCRITTURA DEL CODICESCRITTURA DEL CODICE: mediante la quale vengono : mediante la quale vengono create e scritte le routine necessarie per potere eseguire il create e scritte le routine necessarie per potere eseguire il progetto. In questa fase è necessario l’utilizzo di istruzioni di progetto. In questa fase è necessario l’utilizzo di istruzioni di programmazione basic per eseguire le azioni richieste dal programmazione basic per eseguire le azioni richieste dal programma.programma.
Segue
8
In conclusione, il progetto sarà in grado di gestire leIn conclusione, il progetto sarà in grado di gestire le
videocassette di una videoteca e realizzare:videocassette di una videoteca e realizzare:
1.1. La gestione dei noleggi; La gestione dei noleggi;
2.2. La gestione delle tessere;La gestione delle tessere;
3.3. Ordinamento di liste per codice, descrizione, nomi….Ordinamento di liste per codice, descrizione, nomi….
4.4. La gestione di stampe.La gestione di stampe.
ConclusioneConclusione
9
Le entità che possono essere individuate nel problema sono:
CASSETTE: per gestire le varie videocassette della videoteca;
TESSERE: per rappresentare i dati anagrafici, i dati relativi
all’eventuale abbonamento e le statistiche di noleggio dei clienti;
NOLEGGI: per gestire i noleggi delle videocassette;
GENERE: per gestire i generi delle videocassette;
UTENTE: per gestire i dati dell’utente che utilizza il software.
Descrizione delle entitàDescrizione delle entità
Segue
10
• Gli attributi dell’entità Cassette sono: codice cassetta, codice a barre, titolo, codice genere, durata, premi oscar, primo attore, secondo attore, regia, distribuzione, anno di uscita, gradimento, colonna sonora, visione, totale cassette a disposizione, cassette noleggiate, numero di noleggi, data inserimento, posizione.
• Gli attributi dell’entità Tessere sono: codice tessera, nominativo, codice fiscale, indirizzo, città, provincia, cap, numero di telefono, tipo documento, abbonato (si/no), data abbonamento, data scadenza, importo abbonamento, cassette noleggiate, numero noleggi, cassette in ritardo, importo noleggi, note.
• Gli attributi dell’entità Gli attributi dell’entità NoleggiNoleggi sono: ID noleggio, codice tessera, sono: ID noleggio, codice tessera, codice cassetta, data noleggio, data restituzione, restituita (Si/No).codice cassetta, data noleggio, data restituzione, restituita (Si/No).
• Gli attributi dell’entità Genere sono: codice genere, genere.• Gli attributi dell’entità Gli attributi dell’entità UtenteUtente sono: utente, indirizzo, cap, sono: utente, indirizzo, cap,
località, provincia, numero di telefono, e-mail, partita iva o codice località, provincia, numero di telefono, e-mail, partita iva o codice fiscale.fiscale.
Segue
11
• Tra le entità Tra le entità GenereGenere e e CassetteCassette si può stabilire un’associazione si può stabilire un’associazione uno a moltiuno a molti, perché un genere può corrispondere a una o più , perché un genere può corrispondere a una o più videocassette, e molte videocassette possono corrispondere a videocassette, e molte videocassette possono corrispondere a uno stesso genere.uno stesso genere.
• Tra le entità Tra le entità CassetteCassette e e NoleggiNoleggi si può stabilire un’associazione si può stabilire un’associazione uno a moltiuno a molti, perché una cassetta può essere soggetta a diversi , perché una cassetta può essere soggetta a diversi noleggi, e il noleggio può riferirsi a una sola cassetta. noleggi, e il noleggio può riferirsi a una sola cassetta.
• Tra le entità Tra le entità TessereTessere e e Noleggi Noleggi si può stabilire un’associazione si può stabilire un’associazione uno a moltiuno a molti, perché una tessera può essere utilizzata per più , perché una tessera può essere utilizzata per più noleggi, e diversi noleggi possono essere effettuati con una noleggi, e diversi noleggi possono essere effettuati con una tessera.tessera.
Segue
12
Sulla base dell’analisi effettuata si può disegnare il modello entità\associazioni :
Modello E\R
Nel modello E/R sono stati indicati i nomi dei versi delle associazioni e l’opzionalità o l’obbligatorietà delle associazioni (indicate rispettivamente dalla linea tratteggiata o continua).
Utilizziamo le regole di derivazione si ottengono le seguenti tabelle:Tessere (Codice tessera, Nominativo, Codice fiscale, Indirizzo, Città, Provincia, Cap, Numero di telefono, Tipo documento, Abbonato (si/no), Data abbonamento, Data scadenza, Importo abbonamento, Cassette noleggiate, Numero noleggi, Cassette in ritardo, Importo noleggi, Note).
Segue
13
Cassette (Codice cassetta, Codice a barre, Titolo, Codice genere, Durata, Premi oscar, Primo attore, Secondo attore, Regia, Distribuzione, Anno di uscita, Gradimento, Colonna sonora, Visione, Totale cassette a disposizione, Cassette noleggiate, Numero di noleggi, Data inserimento, Posizione).
Tessere (Codice tessera, Nominativo, CF, Indirizzo, Città, Prov, Cap, Telefono, Documento abbonato, Data abbonamento, Data scadenza, Importo abbonamento, Cassette noleggiate, Numero noleggi, Cassette ritardo, Importo noleggi, Note).
Noleggi (ID noleggio, Codice tessera, Codice cassetta, Data noleggio, Data restituzione, Restituita (si/no)).
Genere (Codice genere, Genere.)
Utente (Utente, Indirizzo, Cap, Località, Provincia, Numero di telefono, E-mail, Partita Iva o Codice Fiscale).
14
AssociazioniAssociazioni
Noleggi
Cassette
Tessere
Genere
Utente
15
Nome CampoNome Campo Tipo datiTipo dati DimensioneDimensione DescrizioneDescrizione
CodiceCassetta Contatore Intero lungo Chiave Primaria
CodiceBarre Testo 13 Codice per lettore (Chiave esterna)
Titolo Testo 40 Identifica titolo del film
CodiceGenere Numerico Intero lungo Identifica codice genere
Durata Numerico Byte Durata del film
PremiOscar Numerico Byte Oscar ricevuti
PrimoAttore Testo 25 Nome 1° attore
SecondoAttore Testo 25 Nome 2° attore
Regia Testo 40 Nome regista
Distribuzione Testo 40 Casa cinematografica
AnnoUscita Numerico Intero Anno uscita film
Gradimento Testo 5 Identifica gradimento pubblico
ColonnaSonora Testo 30 Autore colonna sonora
Visione Testo 7 Identifica la visione
TotaleCassette Numerico Byte Numero cassette
CassetteNoleggiate Numerico Byte Numero cassette noleggiate
NumNoleggi Numerico Intero Numero totale noleggi
DataInserimento Data/ora Data in cifre Data archiviazione
Posizione Testo 6 Classifica
CassetteCassette
16
Nome CampoNome Campo Tipo datiTipo dati DimensioneDimensione DescrizioneDescrizione
CodiceTessera Contatore Intero lungo Chiave Primaria
Nominativo Testo 40 Nome e cognome
CF Testo 16 Codice fiscale
Indirizzo Testo 25 Indirizzo cliente
Citta Testo 25 Sede cliente
Prov Testo 2 Provincia cliente
CAP Testo 5 Codice avviamento postale
Telefono Testo 15 Telefono cliente
Documento Testo 20 Numero identità cliente
Abbonato Si/No Logico
DataAbbonamento Data/ora Data in cifre Data abbonamento cliente
DataScadenza Data/ora Data in cifre Data scadenza abbonamento
ImportoAbbonamento Valuta Euro Prezzo abbonamento
CassetteNoleggiate Numerico Byte Numero cassette noleggiate
NumeroNoleggi Numerico Byte Totale noleggi
CassetteRitardo Numerico Byte Numero cassette da restituire
ImportoNoleggi Valuta Euro Totale importo noleggiate
Note Memo Memo Promemoria
TessereTessere
17
Nome CampoNome Campo Tipo datiTipo dati DimensioneDimensione DescrizioneDescrizione
IDNoleggio Contatore Intero lungo Chiave primaria
CodiceTessera Numerico Intero lungo Codice tessera utente(Chiave esterna)
CodiceCassetta Testo 6 Codice videocassetta
DataNoleggio Data/ora Data in cifre Data noleggio
DataRestituzione Data/ora Data in cifre Data restituzione
Restituita Si/No Si: Cassetta restituita
No:Cassetta da restituire
Nome CampoNome Campo Tipo datiTipo dati DimensioneDimensione DescrizioneDescrizione
CodiceGenere Contatore Intero lungo Chiave primaria
Genere Testo 20 Identifica genere film
NoleggiNoleggi
GeneriGeneri
18
Nome CampoNome Campo Tipo datiTipo dati DimensioneDimensione DescrizioneDescrizione
Utente Testo 40 Nome utente
Indirizzo Testo 25 Indirizzo utente
Cap Testo 5 Codice avv. postale
Localita Testo 25 Residenza utente
Prov Testo 2 Provincia utente
Telefono Testo 15 Telefono utente
E-mail Testo 20 E-mail dell’utente
PartitaIvaCF Testo 16 P.I. o Codice Fiscale
UtenteUtente
19
InterfacceInterfacceForm Menù PrincipaleForm Menù Principale
20
Form CassetteForm Cassette
21
Form TessereForm Tessere
22
Form NoleggiForm Noleggi
23
Form GeneriForm Generi
24
Form UtenteForm Utente
25
Codice (Form Utente)Codice (Form Utente) Private Sub Form_Load()
Const grigio = &H8000000F
‘collega il database all’oggetto data control
datUtente.DatabaseName = App.Path & "\dbVideotecaPrec.mdb"
datUtente.RecordSource = "tblUtente"
datUtente.Refresh
'centra il form nello schermo
frmUtenti.Top = (Screen.Height - frmUtenti.Height) / 2
frmUtenti.Left = (Screen.Width - frmUtenti.Width) / 2
For Ind = 1 To 8
txtUtente(Ind).BackColor = grigio
txtUtente(Ind).Enabled = False
Next Ind
VisualizzaRecord
End Sub
Private Sub txtUtente_GotFocus(Index As Integer)
'sfondo giallo per il text in uso
txtUtente(Index).BackColor = vbYellow
End Sub
Private Sub txtUtente_LostFocus(Index As Integer)
'sfondo bianco per i text non in uso
txtUtente(Index).BackColor = vbWhite
End Sub
Private Sub txtUtente_Validate(Index As Integer, Cancel As Boolean)
Select Case Index
Case 3
If Not IsNumeric(txtUtente(Index).Text) Then
MsgBox "Attenzione: Inserire solo numeri"
txtUtente(Index).Text = ""
Cancel = True
End If
End Select
End Sub
26
Codice (Form Cassette)Codice (Form Cassette) Private Sub RegistraRecord()
Dim Ind As Byte
For Ind = 0 To 14
If Len(txtCampo(Ind).Text) = 0 Then
MsgBox "Inserire campo", vbOKOnly + vbExclamation, "Campo mancante"
txtCampo(Ind).SetFocus
Exit Sub
End If
Next Ind
datVideocassette.Recordset.AddNew
AssegnaCampi
datVideocassette.Recordset.Update
PulisciMaschera
datVideocassette.Recordset.MoveLast
txtCampo(0).Text = datVideocassette.Recordset("CodiceCassetta") + 1
txtCampo(1).SetFocus
End Sub
Private Sub PulisciMaschera()
Dim Ind As Byte
For Ind = 0 To 16
txtCampo(Ind).Text = ""
Next Ind
lblcampo(18).Caption = ""
End Sub
Private Sub RicercaRecord()
datVideocassette.Recordset.Index = "PrimaryKey"
datVideocassette.Recordset.Seek "=", CLng(txtCampo(0).Text)
If datVideocassette.Recordset.NoMatch Then
MsgBox " Codice cassetta inesistente", vbOKOnly + vbExclamation
txtCampo(0).SetFocus
Else
VisualizzaRecord
RicercaRecordGenere
End If
End Sub
27
Codice (Form Tessere)Codice (Form Tessere) Private Sub RicercaRecord()
datTessere.Recordset.Index = "PrimaryKey"
datTessere.Recordset.Seek "=", CLng(txtCampo(0).Text)
If datTessere.Recordset.NoMatch Then
MsgBox "Codice Tessera inesistente!", vbOKOnly + vbExclamation, "ATTENZIONE!"
txtCampo(0).Text = ""
txtCampo(0).SetFocus
Else
VisualizzaRecord
End If
End Sub
Private Sub VisualizzaRecord()
txtCampo(0).Text = datTessere.Recordset("CodiceTessera")
txtCampo(1).Text = datTessere.Recordset("Nominativo")
txtCampo(7).Text = datTessere.Recordset("CF")
txtCampo(2).Text = datTessere.Recordset("Indirizzo")
txtCampo(3).Text = datTessere.Recordset("CAP")
txtCampo(4).Text = datTessere.Recordset("Citta")
txtCampo(5).Text = datTessere.Recordset("Prov")
txtCampo(6).Text = datTessere.Recordset("Telefono")
txtCampo(8).Text = datTessere.Recordset("Documento")
txtCampo(9).Text = datTessere.Recordset("ImportoAbbonamento")
txtCampo(10).Text = datTessere.Recordset("NumeroNoleggi")
dtpDataScadenza.Value = datTessere.Recordset("DataScadenza")
dtpDataIscrizione.Value = datTessere.Recordset("DataAbbonamento")
txtCampo(11).Text = datTessere.Recordset("CassetteRitardo")
txtCampo(12).Text = datTessere.Recordset("ImportoNoleggi")
txtCampo(13).Text = datTessere.Recordset("Note")
End Sub
Private Sub RegistraRecord()
Dim Ind As Byte
For Ind = 0 To 12
If Len(txtCampo(Ind).Text) = 0 Then
MsgBox "Inserire campo", vbOKOnly , "Dati mancanti"
txtCampo(Ind).SetFocus
Exit Sub
End If
Next Ind
datTessere.Recordset.AddNew
AssegnaCampi
datTessere.Recordset.Update
PulisciMaschera
datTessere.Recordset.MoveLast
txtCampo(0).Text = datTessere.Recordset("CodiceTessera") + 1
txtCampo(1).SetFocus
End Sub
28
Codice (Form Noleggi)Codice (Form Noleggi) Private Sub ModificaNoleggio()
Const Bianco = vbWhite
Dim Ind As Byte
For Ind = 0 To 2
txtCampo(Ind).Enabled = True
txtCampo(Ind).BackColor = Bianco
Next Ind
For Ind = 0 To 2
cmdLista(Ind).Enabled = True
Next Ind
dtpDataNoleggio.Enabled = True
dtpDataRestituzione.Enabled = True
optNoleggio.Enabled = True
optRestituzione.Enabled = True
chkRestituita.Enabled = True
txtCampo(0).SetFocus
End Sub
Private Sub AssegnaCampi()
datNoleggi.Recordset("CodiceTessera") = CLng(txtCampo(1).Text)
datNoleggi.Recordset("CodiceCassetta") = CLng(txtCampo(2).Text)
datNoleggi.Recordset("DataNoleggio") = dtpDataNoleggio.Value
datNoleggi.Recordset("DataRestituzione") = dtpDataRestituzione.Value
datNoleggi.Recordset("Restituita") = CBool(chkRestituita.Value)
End Sub
Private Sub AggiornaRecord()
datNoleggi.Recordset.Edit
AssegnaCampi
datNoleggi.Recordset.Update
PulisciMaschera
End Sub
Private Sub RicercaRecord()
datNoleggi.Recordset.Index = "Primarykey"
datNoleggi.Recordset.Seek "=", CLng(txtCampo(0).Text)
If datNoleggi.Recordset.NoMatch Then
MsgBox "Codice Noleggio non trovato!", vbOKOnly + vbExclamation
txtCampo(0).Text = ""
txtCampo(0).SetFocus
Else
VisualizzaRecord
RicercaRecordTessere
RicercaRecordCassetta
End If
End Sub
29
Codice (Form Genere)Codice (Form Genere) Private Sub cmdListaGeneri_Click()
CodiceRicerca = 0
frmListaGeneri.Show 1
If (CodiceRicerca > 0) Or (CodiceRicerca <> 0) Then
txtCampo(0).Text = CodiceRicerca
RicercaRecord
Else
txtCampo(0).Text = ""
txtCampo(0).SetFocus
End If
End Sub
Private Sub cmdModifica_Click()
Dim Ind As Byte
ImpostazioniComandi
lblAzione.Caption = "Modifica"
cmdOk.ToolTipText = "Conferma modifica"
cmdListaGeneri.Enabled = True
For Ind = 0 To 1
txtCampo(Ind).BackColor = vbWhite
txtCampo(Ind).Enabled = True
Next Ind
txtCampo(0).SetFocus
End Sub
Private Sub cmdNuovo_Click()
Const grigio = &HC0C0C0
Dim Ind As Byte
ImpostazioniComandi
For Ind = 0 To 1
txtCampo(Ind).BackColor = vbWhite
txtCampo(Ind).Enabled = True
Next Ind
txtCampo(1).SetFocus
lblAzione.Caption = "Nuovo"
cmdOk.ToolTipText = "Nuovo"
cmdListaGeneri.Enabled = False
txtCampo(0).Enabled = False
txtCampo(0).BackColor = grigio
datGeneri.Recordset.OpenRecordset
If (datGeneri.Recordset.BOF) And (datGeneri.Recordset.EOF) Then
txtCampo(0).Text = 1
Else
datGeneri.Recordset.MoveLast
txtCampo(0).Text = datGeneri.Recordset("CodiceGenere")
End If
End Sub
30
Gruppi di lavoroGruppi di lavoro Primo gruppoPrimo gruppo
Secondo gruppoSecondo gruppo
Terzo gruppoTerzo gruppo
Quarto gruppoQuarto gruppo
Quinto gruppoQuinto gruppo
Rossi Francesco
Verdi Giulio
Serri Marinella
Impastato Gino
Medico Giuseppe
Campo Elisa
Conte Paolo
Mancini Alberto
Reale Carla
Vinci Enzo
Palermo Andrea
Di Marco Daniele
Fantini Laura
Marino Stefano
Bellini Francesco
Serra Pierangelo
Quintini Angelo
Gentile Mariella
Marchese Giusy
Premi ESC per uscire