Gestione di un semplice archivio
Un uso molto frequente dei file è quello di memorizzare i dati relativi a un insieme di oggetti dello stesso tipo. Per esempio potremmo voler realizzare l'archivio di una biblioteca con il titolo, l'autore e la collocazione di ogni libro; oppure creare lo schedario dei dipendenti di un'azienda, con il nome, il cognome, la qualifica e lo stipendio di ogni persona.
Per fissare le idee supponiamo di voler creare l'archivio di tutti gli studenti di una scuola. Per ogni studente si vuole memorizzare il nome, il cognome, la classe di appartenenza e l'età. Le informazioni di tutti gli studenti saranno salvate su un file di testo. Su questo file dovrà essere possibile eseguire due operazioni fondamentali: 1) inserire i dati di un nuovo studente, 2) cercare i dati relativi a uno studente (non ci occupiamo per ora del problema di cancellare uno studente dall'archivio).
L'inserimento dei dati di un nuovo studente può essere realizzato per mezzo di un semplice form con una serie di caselle di testo e un pulsante Inserisci:
Per l'inserimento dei dati il file verrà aperto in modalità Append e le informazioni saranno scritte in sequenza sul file stesso. Tutti i dati, sia quelli testuali (come Nome e Cognome), sia quelli numerici (come l'Età) vengono scritti sul file di testo come sequenze di caratteri.
Private Sub cmdInserisci_Click()
Dim Archivio As Integer
Archivio = FreeFile()
Open "student.txt" For Append As #Archivio
Print #Archivio, txtNome.Text
Print #Archivio, txtCognome.Text
Print #Archivio, txtClasse.Text
Print #Archivio, txtEta.Text
Close #Archivio
End Sub
La ricerca di uno studente in archivio può essere effettuata con un altro form simile al precedente, solo che ora le caselle txtEta e txtClasse saranno Locked, cioè non sarà possibile scrivere dati al loro interno (sono infatti caselle usate per visualizzare i risultati della ricerca):
Per cercare uno studente bisognerà aprire il file in modalità Input e leggere i dati in esso contenuti, finchè non viene trovato lo studente cercato (oppure finchè non si arriva alla fine del file). Poichè la lettura è sequenziale, per trovare un dato studente sarà necessario leggere i dati relativi a tutti gli studenti precedenti, nell'ordine esatto con cui sono stati memorizzati.
Private Sub cmdCerca_Click()
Dim archivio As Integer
Dim nome As String, cognome As String
Dim eta As String, classe As String
Dim trovato As Boolean
archivio = FreeFile()
Open "studenti.txt" For Input As #archivio
Do Until EOF(archivio)
Line Input #archivio, nome
Line Input #archivio, cognome
Line Input #archivio, classe
Line Input #archivio, eta
If nome = txtNome.Text And cognome = txtCognome.Text Then
txtEta.Text = eta
txtClasse.Text = classe
trovato = True
Exit Do
End If
Loop
If trovato = False Then
MsgBox "Studente non presente in archivio"
End If
Close #archivio
End Sub
precedente - successiva
Sito realizzato in base al template offerto da
http://www.graphixmania.it