Programmi Visual Basic - prof. Claudio Maccherani - Perugia - 2009
gestione archivi SEQUENZIALI in Visual Basic 2008
applicazione
Alunni0Seq
- archivio sequenziale
Alunni.dat
record
ALU
:
Matr
integer,
Nome
string
*
25,
Citta
string
*
20,
Sesso
string
*
1,
Classe
string
*
4
'+------------------------------------------------------------------------------------------+ '| Alunni0Seq - applicazione VB2008, esempio di gestione Archivi SEQUENZIALI | '| (Prof.Claudio Maccherani) | '+------------------------------------------------------------------------------------------+ Imports VB = Microsoft.VisualBasic ' per usare alcune vecchie funzioni Visual Basic 6.0 Public Class frmAlunni0Seq Dim File As String = "Alunni.dat", FilNum As Integer Dim Matr As Integer, Nome As String, Citta As String, Sesso As String, Classe As String ' creazione iniziale dell'archivio (o suo azzeramento, se esiste) ----------------------- Private Sub cmdCrea_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCrea.Click If MsgBox("CREAZIONE ARCHIVIO: se esiste sarā azzerato. Continuo ?", vbYesNo) = vbYes Then FilNum = FreeFile() FileOpen(FilNum, File, OpenMode.Output) FileClose(FilNum) MsgBox("Archivio creato") End If End Sub ' attiva la modalitā di scrittura dell'archivio ----------------------------------------- Private Sub cmdInse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdInse.Click Azzera() : cmdReg.Visible = True : cmdLeggi.Visible = False panMenu.Visible = False : boxRec.Visible = True End Sub ' azzeramento text box ------------------------------------------------------------------ Private Sub Azzera() txtMat.Text = "" : txtNom.Text = "" : txtCit.Text = "" txtSex.Text = "" : txtCla.Text = "" End Sub ' chiude la finestra di gestione (e torna a quella di scelta) --------------------------- Private Sub cmdChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdChiudi.Click FileClose(FilNum) : panMenu.Visible = True : boxRec.Visible = False End Sub ' registra un nuovo record -------------------------------------------------------------- Private Sub cmdReg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdReg.Click If MsgBox("Confermi la registrazione del record visualizzato ? ", vbYesNo) = vbYes Then Matr = CInt(TxtMat.Text) Nome = txtNom.Text Citta = txtCit.Text Sesso = txtSex.Text Classe = txtCla.Text FilNum = FreeFile() FileOpen(FilNum, File, OpenMode.Append) WriteLine(FilNum, Matr, Nome, Citta, Sesso, Classe) FileClose(FilNum) Call Elenco() End If End Sub ' fine prpgramma ------------------------------------------------------------------------ Private Sub cmdEsci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEsci.Click FileClose(FilNum) : Me.Close() End Sub ' attiva la modalitā di lettura dell'archivio ------------------------------------------- Private Sub cmdLettura_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLettura.Click Azzera() : cmdReg.Visible = False : cmdLeggi.Visible = True panMenu.Visible = False : boxRec.Visible = True : Call Elenco() FilNum = FreeFile() : FileOpen(FilNum, File, OpenMode.Input) End Sub ' legge il record corrente (e posizionamento sul successivo ----------------------------- Private Sub cmdLeggi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLeggi.Click If Not EOF(FilNum) Then Input(FilNum, Matr) : Input(FilNum, Nome) : Input(FilNum, Citta) Input(FilNum, Sesso) : Input(FilNum, Classe) TxtMat.Text = Matr txtNom.Text = Nome txtCit.Text = Citta txtSex.Text = Sesso txtCla.Text = Classe Else MsgBox("Si č ragiunta la FINE del FILE", MsgBoxStyle.Exclamation) End If End Sub ' visualizza sulla list box l'elenco degli studenti ------------------------------------- Private Sub Elenco() Dim riga As String, i As Integer : lstA.Items.Clear() lstA.Items.Add("n.rec Matr Nome" & Space(16) & " Cittā" & Space(11) & "Sesso Classe") lstA.Items.Add("---------------------------------------------------------------------") FilNum = FreeFile() : i = 0 FileOpen(FilNum, File, OpenMode.Input) Do While Not EOF(FilNum) ' legge fino a che l'EOF č "falso" Input(FilNum, Matr) : Input(FilNum, Nome) : Input(FilNum, Citta) Input(FilNum, Sesso) : Input(FilNum, Classe) : i = i + 1 riga = VB.Right(Space(4) & i, 4) & " " & _ VB.Right(Space(4) & Matr, 4) & " " & _ VB.Left(Nome & Space(20), 20) & " " & _ VB.Left(Citta & Space(20), 15) & " " & Sesso & " " & Classe lstA.Items.Add(riga) Loop FileClose(FilNum) End Sub End Class