IN FONDO ALLA PAGINA I
FILE SEQUENZIALI
Ripasso
Visual Basic: Le strutture di controllo
La progettazione e la
realizzazione di un algoritmo costituito di parti che dipendono l’una
dall’altra secondo un preciso modello organizzativo, si basa
sull’affermazione che: qualsiasi algoritmo può essere scritto
utilizzando soltanto tre strutture di base: sequenziale, alternativa
, di ripetizione (Teorema di Jacopini-Bohm). Questi tre
modelli organizzativi si chiamano Strutture di controllo.
Per rappresentare un algoritmo possiamo utilizzare il Diagramma a
blocchi che raffigura così le tre strutture fondamentali:
In Visual basic traduciamo in istruzioni
le strutture utilizzando la sintassi:
SEQUENZA
istruzione
istruzione
istruzione
STRUTTURA ALTERNATIVA
IF condizione THEN
istruzione
istruzione
ELSE
istruzione
istruzione
END IF
RIPETIZIONE POST CONDIZIONALE
DO
Istruzioni
LOOP UNTIL
condizione
Esercitazione Visual basic:
esercizi sulle strutture di controllo
1)Struttura alternativa: Dato in
input un numero, dire se è pari o dispari. Visualizzare il risultato in
una Msgbox().
Inseriamo nel form cinque controlli: una
label, una textbox, tre button.
Per sviluppare il programma
utilizziamo la struttura alternativa a due vie scrivendo il codice
nell'evento click del pulsante Esegui. Inseriamo anche i pulsanti
Cancella ed Esci.
2) Struttura iterativa
post-condizionale per falso: Date in input le età di un certo numero
di ragazzi, contare quanti sono maggiorenni. Visualizzare il risultato
in una Msgbox().
Inseriamo sul form una label e due button
e nel pulsante Elabora inseriamo le istruzioni Visual basic
applicando una struttura iterativa posticipata per falso con,
all'interno, una struttura alternativa ad una via.
In questo esercizio abbiamo usato un
contatore
(variabile maggiorenni)
che è un tipo di variabile numerica
cui si assegna un valore iniziale = 0 (azzeramento della variabile) e si
incrementa di 1 ogni volta che si verificano le condizioni poste. La sua
funzione è quella di contare. L’espressione usata per incrementare il
contatore è:
CONTATORE
= CONTATORE + 1
Nella istruzione Msgbox()
abbiamo anche effettuato un concatenamento di stringhe utilizzando il
carattere &.
In questo caso abbiamo
concatenato una stringa ("I maggiorenni sono ") con il contenuto
della variabile
maggiorenni ottenendo
il messaggio ed il risultato del calcolo.
Lezione Visual basic:
Struttura di ripetizione con contatore
2) Struttura di ripetizione con
contatore:
Esempio 1:Dati in input N numeri si vuole conoscere quanti sono i
numeri pari.
INPUT :
N (quanti sono i numeri da controllare)
numero (ogni numero inserito)
LAVORO:
pari (contatore che conta i numeri pari)
OUTPUT : pari
(totale dei numeri pari)
Per l'INPUT utilizzeremo l'istruzione
inputbox() mentre per l'OUTPUT utilizzeremo una textbox. Sul
form avremo quindi, oltre a due pulsanti, solo una label e una textbox
per l'output.
Per la soluzione del problema abbiamo
usato la struttura di ripetizione con contatore FOR NEXT che
viene utilizzata quando si sa a priori quante volte devono essere
eseguite le istruzioni contenute nel ciclo. L'input della variabile n
(quante volte viene eseguito il ciclo) viene fatto quindi prima di
iniziare il ciclo (prima dell'istruzione FOR). Con il ciclo For-Next non
si deve contare quante volte viene effettuato il ciclo mediante un
contatore (i = i + 1) perchè viene fatto in automatico.
In questo esercizio abbiamo usato un
contatore
(variabile pari)
che è un tipo di variabile numerica
cui si assegna un valore iniziale = 0 (azzeramento della variabile) e si
incrementa di 1 ogni volta che si verificano le condizioni poste. La sua
funzione è quella di contare. L’espressione usata per incrementare il
contatore è:
CONTATORE
= CONTATORE + 1 (in questo caso pari = pari + 1)
Esempio 2:
Inseriti da
tastiera N valori diversi da zero,
calcolate e visualizzate alla fine la media aritmetica dei medesimi e la
percentuale dei positivi sul totale.
INPUT: n, num
OUTPUT: media, perc
LAVORO:
cont, somma
In questo caso abbiamo
utilizzato un contatore e un totalizzatore che a
differenza del contatore ha la funzione di effettuare somme
successive e l'espressione usata per aggiungere una somma al
totalizzatore è:
SOMMA = SOMMA + NUM
(dove SOMMA è la
variabile cui viene aggiunto ogni volta il valore della variabile
NUM)
Abbiamo usato
l'istruzione inputbox() per l'INPUT e le textbox per
l'OUTPUT.
Lezione Visual basic:Programmazione a oggetti
La programmazione a oggetti (OOP:
Object-Oriented Programming) usa come elemento base l'oggetto e il
programma si sviluppa come interazione tra gli oggetti. I form, i
controlli e i componenti dell'interfaccia sono esempi di oggetti.
In particolare un oggetto ha le sue
proprietà (elementi che caratterizzano gli oggetti, utili per
descrivere le sue caratteristiche e il suo stato), può attivare dei
metodi (comportamenti e funzionalità che l'oggetto mette a
disposizione) possiede degli eventi (avvenimenti che provocano
l'esecuzione di una procedura descritta in codice del linguaggio).
Nel linguaggio vb.NET gli oggetti vengono
creati a partire dalle classi (descrizione astratta degli oggetti
attraverso la dichiarazione di proprietà, metodi e d eventi). Per
utilizzare un oggetto occorre crearlo come esemplare della classe, cioè
come istanza di una classe. Il procedimento che crea un oggetto è
un metodo predefinito dalla classe chiamato costruttore.
Per esempio i controlli della Casella
degli strumenti sono classi. Inserendo un controllo all'interno del
form se ne crea un'istanza cioè un oggetto.
Si possono utilizzare quindi istanze di
classi esistenti ma si possono creare anche delle classi personalizzate.
Anche il form è una classe: quando il
programma viene eseguito si crea una istanza della classe del form che è
la finestra che normalmente utilizziamo.
In generale non possiamo utilizzare una
classe astratta ma una sua istanza cioè un oggetto che dobbiamo
dichiarare.
Per utilizzare più form in un progetto
dobbiamo creare le istanze di ogni form aggiunto con la seguente
procedura:
dal menù Progetto clicchiamo su
Aggiungi Windows Form e, dopo aver assegnato un nome (nome esterno),
andiamo a salvare cliccando sul pulsante Aggiungi.
Per utilizzare il nuovo form lo
dichiariamo con l'istruzione:
dim nomeinterno as New
nomesterno
Infine per aprire un form utilizziamo il
metodo Show() e per chiuderlo il metodo Hide() secondo la
seguente sintassi:
nomeinterno.Show()
(è l'istruzione da inserire per aprire il form)
Me.Hide()
(è l'istruzione da inserire all'interno del form da chiudere).
Quando in un progetto utilizziamo più form
bisogna fare attenzione alla dichiarazione delle variabili.
Le variabili possono essere locali,
se dichiarate all'interno di una routine (ad esempio in un pulsante), e
sono visibili solo all'interno della routine stessa. Le variabili
globali vengono dichiarate nell'area pubblica e sono visibili in
tutte le routine del form.
Se però nel nostro progetto sono presenti
più form alcune variabili devono essere visibili in tutti i fom e quindi
possiamo dichiararle come variabili pubbliche in un modulo.
Per creare un modulo dal menù Progetto
clicchiamo su Aggiungi modulo e inseriamo la dichiarazione pubblica
delle variabili.
Lezione Visual basic:
Controllo MenuStrip
Il controllo MenuStrip è un componente
della Casella degli strumenti e possiede sue proprietà ed eventi.
Quando viene inserito nel form, si posiziona
nella parte bassa, contemporaneamente in alto compare una
barra con la scritta Digitare quì dove possiamo
inserire i menù e sottomenù.
Lezione Visual basic:
Array
L'array è una struttura di dati e quindi
non contiene un solo dato ma più dati dello stesso tipo, questi vengono
identificati attraverso un indice. Gli array a una
dimensione sono detti anche vettori. In Visual basic un array
viene definito nel seguente modo:
dim nomeArray () as tipo
tra parentesi si può anche indicare la
dimensione massima dell'indice.
La numerazione dell'indice dell'array
parte da 0 e quindi se, come nell'esempio, l'indice massimo del vettore
è 5, il vettore avrà 6 posizioni.
In questo esempio abbiamo un vettore con 6
elementi di tipo stringa e quindi li dichiariamo:
dim V(5) as string
Se vogliamo riferirci ad una posizione
specifica del vettore basta indicarla nell'indice, ad esempio per
riferirci alla terzo nome possiamo scrivere V(2) che contiene il nome
Gianni.
Esercitazione n.1:
Creare un progetto in vb.NET che consenta
di caricare in due vettori paralleli i nomi e i numeri telefonici dei clienti di una ditta, di
visualizzarli in una listbox e di effettuare la ricerca del numero di
telefono di un cliente dato in input.
Nel form inseriamo due listbox (si può
utilizzare anche una sola listbox ed effettuare il concatenamento del
nome e del numero) e quattro pulsanti.
In visual basic effettuiamo la codifica
per il caricamento del vettore, la visualizzazione nelle listbox e per
la ricerca del numero telefonico.
Lo stesso esercizio lo sviluppiamo con
l'uso di più form. Nella pagina iniziale inseriamo un menù per accedere
alle varie funzioni:
Nel menù carica scriviamo il codice
per caricare i vettori nome() e numero().
Aggiungiamo i form visualizza e
cercare e li dichiariamo.
Per la dichiarazione delle variabili
creiamo un modulo dove dichiarare le variabili pubbliche che
utilizzeremo in più form.
A questo punto nella finestra Esplora
soluzioni possiamo vedere tutti i componenti del nostro progetto.
Nel menù
mnuVisualizza inseriamo l'istruzione per aprire il form
visualizza utilizzando il metodo Show(). Nel mnuCerca
chiediamo in input il nome da cercare e mettiamo "n" nella variabile
controllo (variabile che servirà durante la ricerca) prima di aprire
il form cercare con il metodo Show().
Nel menù mnuEsci inseriamo
l'istruzione end per chiudere il programma.
Passiamo
allo sviluppo del form visualizza.
Inseriamo nell'evento Activated
del form, che si verifica ogni volta che
il form viene caricato, il codice per
passare i dati alle listbox.
Nel
pulsante btnEsci chiudiamo il
form con il metodo Hide().
Nel form
cercare scriviamo il codice
nell'evento Activated del form
per leggere il vettore e visualizzare
nelle textbox il nome ed il numero
cercato o, eventualmente, comunicare che
il nome non esiste utilizzando la
variabile controllo.
Nel
pulsante Esci, dopo aver pulito
le caselle presenti nel form, lo
chiudiamo con il metodo Hide().
Lezione Visual basic
19/02/2013:
Procedure e funzioni
Quando si devono sviluppare problemi
complessi conviene suddividere il problema in sottoproblemi più semplici
secondo la metodologia di sviluppo top-down che si concretizza in
visual basic organizzando il codice in procedure (Sub)
e funzioni (Function).
La differenza tra le due è che le
procedure eseguono operazioni di tipo generale (serie di istruzioni
collegate ad un evento o richiamate nel codice principale), mentre le
funzioni rappresentano un procedimento di calcolo o una elaborazione che
deve restituire un valore come risultato al programma chiamante.
Regole di visibilità: stabiliscono
in quali parti del progetto sono visibili gli identificatori (costanti,
variabili, procedure).
Variabili locali: dichiarate
con Dim all'interno di una Sub sono disponibili solo per
la procedura stessa e non in altre procedure.
Variabili globali: dichiarate nella
zona Dichiarazioni della finestra del codice di un form (prima
delle sub) sono visibili a tutte le sottoprocedura di quel form.
Spesso però si ha la necessità di
utilizzare queste risorse in tutte le procedure di un progetto
(quindi anche in più form). In questo caso possiamo utilizzare del
codice a livello di modulo.
Un Modulo è una procedura generale
che non è memorizzata nel codice del form ma costituisce un file a sè
stante con estensione .vb che si aggiunge come elemento del progetto e
può essere richiamato da un punto qualsiasi del progetto stesso.
Per creare un modulo si clicca sul menù
Progetto - Aggiungi modulo, si assegna un nome e viene così aperta
la finestra di codice del modulo.
Se andiamo a scrivere variabili, funzioni
e procedure nel modulo, queste potranno essere usate in tutto il
progetto, anche in form diversi. La sintassi è:
Variabili:
Public nomevariabile as
tipo
Procedure:
Sub nomesub
.........
.........
End sub
Funzioni:
Function nomefunction
.........
.........
End Function
Abbiamo dichiarato le variabili utilizzando la
parola chiave Public e non Dim ( o Private che è
equivalente) in questo modo, essendo pubbliche, sono visibili in tutto
il progetto.
Esercitazione Visual basic
19/02/2013:
Peso ideale
Nello studio di un dietologo, per ogni
paziente viene calcolato il peso ideale.
Dati in input il nome,
l'altezza e il sesso dei pazienti, calcolare il peso ideale secondo la formula di Lorentz:
maschi: peso
ideale = altezza - 100 -((altezza-150)/4)
femmine: peso ideale = altezza -
100 -((altezza-150)/2)
Inserire una Procedura per l'input ed una
Funzione per il calcolo del peso ideale.
Le variabili da utilizzare sono:
INPUT: nome, altezza, sesso, n
OUTPUT: nome, PI(peso ideale)
LAVORO: cont
Per la soluzione abbiamo utilizzato una
struttura iterativa posticipata per falso e, all'interno una
struttura altenativa.
Vediamo ora lo stesso diagramma a blocchi
con l'uso di una procedura e di una funzione:
Procedura INSERISCI
Funzione CALCOLA
Per il visual basic dobbiamo stabilire
quali sono le variabili locali quelle globali e quelle a livello
di modulo:
Variabili globali (da dichiarare
con Public nel Modulo): nome altezza, sesso,n
Variabili locali (da dichiarare nel
form): n, cont.
Progettiamo il form con un solo Pulsante
che avvia l'elaborazione.
Dichiariamo le variabili locali in
generale e nell'evento click del Pulsante Esegui inseriamo il codice del
programma principale con le chiamate alla Procedura e alla Funzione.
Nel modulo, precedentemente creato,
inseriamo la dichiarazione delle variabili globali (Public) e il codice
della Procedura INSERISCI() e della Funzione CALCOLA().
Nella Funzione CALCOLA dichiariamo la
variabile locale PI.
L'istruzione Return definisce il
valore che deve restituire la funzione CALCOLA().
Visual basic:
File sequenziali
Un archivio di dati è un insieme di
informazioni organizzate come ad esempio:
-
i clienti di un'azienda
-
l'elenco telefonico
-
il registro di classe.
Comunemente per indicare un archivio si
usa il termine file ed indica tutto ciò che può essere registrato
su una memoria di massa. Un file può essere considerato come un insieme
di record legati tra loro da un nesso logico. I file vengono
identificati attraverso un nome di file (di solito nomi significativi
che ricordano il contenuto del file) come ad esempio il nome FORNITORI
per il file che contiene i fornitori di un'azienda.
Le operazioni principali che si effettuano
sui file sono:
-
apertura (Open): prima di
essere utilizzato il file deve essere aperto in modo idoneo a
seconda dell'operazione che dobbiamo eseguire;
-
lettura (Input): per leggere i
dati registrati in un file si deve eseguire l'istruzione Open nel
modo Input;
-
scrittura (Output); per
scrivere i dati in un file vuoto si deve eseguire prima l'istruzione
Open nel modo Output;
-
accodamento (Append): per
scrivere i dati in un file in cui sono già presenti altri dati si
deve eseguire prima l'istruzione Open nel modo Append per accodare i
dati a quelli già presenti nel file;
-
chiusura (Close): alla fine di
ogni operazione eseguita sui file si deve chiudere con l'strizione
Close.
Un file è composto da una serie di byte
registrati su disco (per questo, a differenza degli array i dati vengono
registrati in modo permanente e vengono conservati anche allo
spegnimento del computer).
Le modalità con le quali il programma
utilizza i byte contenuti nei blocchi fisici del disco, rendendoli
disponibili in memoria centrale per l'elaborazione, rappresentano il
tipo di accesso al file.
-
sequenziale: in questo tipo di
accesso i record vengono registrati uno di seguito all'altro e, in
fase di lettura, possono essere ritrovati scorrendo
tutti i record a partire dal primo fino all'ultimo nello stesso
ordine in cui sono stati registrati.
-
diretto o random: in questi
tipo di accesso è possibile determinare l'esatta posizione del
record all'interno del file e leggerlo senza leggere tutti i record
che lo precedono.
La sintassi per l'Apertura di un file
prevede, dopo la funzione FileOpen, l'indicazione di:
-
n. del file, poichè in uno
stesso programma possono essere aperti ed utilizzati più archivi. Il
numero deve essere compreso tra 1 e 511 inclusi ed identifica il
file all'interno del programma;
-
Pathname che specifica il nome
del file e la sua posizione all'interno del disco;
-
Modalità di accesso (input,
output, append, random).
FileOpen(1,
"c:\giacenze.dat", OpenMode.Output)
La scrittura dei dati in un file
sequenziale viene eseguita con l'istruzione PrintLine indicando
il numero del file sul quale andremo a scrivere e la variabile
contenente il dato da registrare.
PrintLine(1, txtNome.Text)
In fase di lettura i dati vengono letti
con l'istruzione LineInput indicando il numero del file ed
assegnando il contenuto ad una variabile.
nome = LineInput(1)
Poichè i dati vengono letti uno di
seguito all'altro nello stesso ordine in cui sono stati scritti, occorre
inserire nel programma un controllo sul raggiungimento della fine del
file. Questo controllo si fa utilizzando la funzione EOF (end of
file) che assume il valore true quando raggiunge la fine del file.
Quindi possiamo utilizzare un ciclo Do While con la funzione EOF:
Do
While Not EOF(1)
nome = LineInput(1)
lstNomi.Items.Add(nome)
Loop
Ogni volta che si esegue un'operazione
su un file si chiude con ll'istruzione FileClose indicando il
numero del file da chiudere:
FileClose(1)
Esercitazione:
File sequenziali
Crea un progetto
per archiviare i dati dei dipendenti su un file sequenziale e
visualizzare i dati in una listbox. Prevedi anche la possibilità di
elaborare gli stipendi netti di ogni dipendente e registrarli su un
altro file sequenziale. Effettuare la ricerca dello stipendio lordo di
un dipendente dato in input il suo cognome.
Struttura
record del file dipendent.dat
Public
Structure dip
Public matricola
As Integer
Public nome
As String
Public cognome
As String
Public lordo
As Double
Public figli
As Integer
End
Structure
Struttura record
del file stip.dat
Public
Structure netti
Public n
As String
Public c
As String
Public sn
As Double
End
Structure
Il progetto viene
sviluppato creando un form iniziale con un menù che ci permette di
accedere ad ogni funzione.
Prima di elaborare i
sottomenù aggiungiamo due nuovi tipi di form: Inserisci, per
l’inserimento dei dati del dipendente da utilizzare sia per
creare che per aggiungere dipendenti; Visualizza per
visualizzare i dati di tutti i diepndenti.
Aggiungiamo anche un
modulo per dichiarare la struttura del record del file dipendenti da
utilizzare in form diversi.
Module
Module1
Public
Structure dip
Public matricola
As Integer
Public nome
As String
Public cognome
As String
Public lordo
As Double
Public figli
As Integer
End
Structure
Public dipendente
As dip
End
Module
Nel menù Dipendenti
abbiamo tre sottomenù:
1) Crea per creare il
file la prima volta. Dichiariamo il form Inserisci del tipo Inserisci
precedentemente creato e dopo aver aperto il file in Output lo
richiamiamo con il metodo show().
Private
Sub CreaToolStripMenuItem_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs) Handles
CreaToolStripMenuItem.Click
Dim inserisci
As New
Inserisci
FileOpen(1,
"c:\users\amalia\desktop\2013\dipendent.dat", OpenMode.Output)
inserisci.Show()
End Sub
2)
Aggiungi
per aggiungere dipendenti al file già esistente. Dichiariamo il form
Aggiungi del tipo Inserisci e, dopo aver aperto il file in Append,
richiamiamo il form con il metodo show().
Private Sub
AggiungiToolStripMenuItem_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs)
Handles AggiungiToolStripMenuItem.Click
Dim Aggiungi
As New
Inserisci
FileOpen(1,
"c:\users\amalia\desktop\2013\dipendent.dat", OpenMode.Append)
Aggiungi.Show()
End Sub
3)
Visualizza
inserisce tutti i dati dei dipendenti in una listbox. Dichiaro un form
di tipo Visualizza, apro il file in Input per la lettura e richiamo il
form Visualizza con il metodo show().
Private
Sub VisualizzaToolStripMenuItem_Click(ByVal
sender As System.Object,
ByVal e
As System.EventArgs) Handles
VisualizzaToolStripMenuItem.Click
Dim visualizza
As New
Visualizza
FileOpen(1,
"c:\users\amalia\desktop\2013\dipendent.dat", OpenMode.Input)
visualizza.Show()
End Sub
FORM INSERISCI
Nel pulsante Registra
del form Inserisci scrivo le istruzioni per passare i dati dalle caselle
di testo alla struttura del record con l’istruzione With e
scriverle nel file dipendenti con l’struzione Writeline().
Con il metodo .Clear()
cancello i dati dalle textbox.
Private
Sub btnRegistra_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs)
Handles btnRegistra.Click
With
dipendente
.matricola = txtMatricola.Text
.nome = txtNome.Text
.cognome = txtCognome.Text
.lordo = txtStipendio.Text
.figli = txtFigli.Text
End With
WriteLine(1, dipendente.matricola, dipendente.nome, dipendente.cognome,
dipendente.lordo,
dipendente.figli)
txtMatricola.Clear()
txtNome.Clear()
txtCognome.Clear()
txtStipendio.Clear()
txtFigli.Clear()
txtMatricola.Focus()
End
Sub
Nel pulsante Esci
chiudo il file ed il form.
Private
Sub btnEsci_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs) Handles
btnEsci.Click
FileClose(1)
Me.Hide()
End
Sub
FORM VISUALIZZA
Nel pulsante Visualizza
inserisco un ciclo che legge il file dipendenti e scrine i dati i una
listbox.
Private
Sub btnVisualizza_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs)
Handles btnVisualizza.Click
Do
While Not
EOF(1)
With dipendente
Input(1,
.matricola)
Input(1, .nome)
Input(1, .cognome)
Input(1, .lordo)
Input(1, .figli)
End
With
lstDipendente.Items.Add(dipendente.matricola, dipendente.nome, dipendente.cognome,
dipendente.lordo, dipendente.figli)
Loop
End
Sub
Nel pulsante Esci
pulisco la listbox, chiudo il file e il form.
Private
Sub btnEsci_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs) Handles
btnEsci.Click
lstDipendente.ClearSelected()
FileClose(1)
Me.Hide()
End
Sub
FORM ELABORA
Per elaborare gli stipendi
netti creo un nuovo tipo di form Elabora con una listbox per
visualizzare i dati da registrare sul secondo file.
Nel menù Elabora del
form1 apro il file dipendenti in Input per la lettura e apro il
form Elabora.
Private
Sub
ElaboraStipendiToolStripMenuItem_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs)
Handles
ElaboraStipendiToolStripMenuItem.Click
FileOpen(1,
"c:\users\amalia\desktop\2013\dipendent.dat", OpenMode.Input)
elabora.Show()
End
Sub
Nel form Elabora creo
un nuovo tipo di struttura record per il file stip dove rigistrare gli
stipendi netti e quindi dichiaro un record di quel tipo.
Public
Structure netti
Public n
As String
Public c
As String
Public sn
As Double
End
Structure
Dim
stipendiNetti As netti
Nel pulsante Elabora
del form Elabora dichiaro le variabili che mi servono per i calcoli e,
dopo aver aperto il secondo file in Output, inserisco un ciclo
che per ogni stipendio lordo letto nel primo file effettua il calcolo
dello stipendio netto, lo scrive nel file stip con nome e cognome e lo
inserisce contemporaneamente in una listbox. Dopo il ciclo chiudo il
secondo file.
Private
Sub btnElabora_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs)
Handles btnElabora.Click
Dim
ritenute, detrazioni, netto As
Double
FileOpen(2, "c:\users\amalia\desktop\2013\stip.dat",
OpenMode.Output)
Do
While Not EOF(1)
With dipendente
Input(1,
.matricola)
Input(1, .nome)
Input(1, .cognome)
Input(1, .lordo)
Input(1, .figli)
End
With
ritenute =
dipendente.lordo * 9.49 / 100
detrazioni = (dipendente.figli * 50)
netto = (dipendente.lordo - ritenute) + detrazioni
lstNetto.Items.Add(dipendente.nome
& " " & dipendente.cognome &
" " & netto)
With stipendiNetti
.n = dipendente.nome
.c = dipendente.cognome
.sn = netto
End With
WriteLine(2, stipendiNetti.n, stipendiNetti.c, stipendiNetti.sn)
Loop
FileClose(2)
End
Sub
Nel pulsante Esci
chiudo il primo file e il form.
Private
Sub btnEsci_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs) Handles
btnEsci.Click
FileClose(1)
Me.Hide()
End
Sub
Nel menù Cerca del
form1 apro il file dipendenti in Input per la lettura e faccio un
ciclo per una lettura sequenziale del file.
Private
Sub
CeracaUnDipendenteToolStripMenuItem_Click(ByVal
sender As System.Object,
ByVal e
As
System.EventArgs) Handles
CeracaUnDipendenteToolStripMenuItem.Click
Dim cerca
As String
Dim trovato
As Integer
FileOpen(1,
"c:\users\amalia\desktop\2013\dipendent.dat", OpenMode.Input)
cerca =
InputBox("inserisci il nome del dipendente")
trovato = 0
Do
While Not EOF(1)
With dipendente
Input(1,
.matricola)
Input(1, .nome)
Input(1, .cognome)
Input(1,
.lordo)
Input(1, .figli)
End
With
If
cerca = dipendente.cognome Then
MsgBox(dipendente.lordo)
trovato = 1
End
If
Loop
If trovato = 0
Then
MsgBox("nome inesistente")
End If
FileClose(1)
End
Sub
|