Eksempel: Administrasjon av biler
Eksempel •Program for å administrere informasjon om biler •Vi ser på tre deler: –Registrere biler: legge inn i tabell –Avslutte: Skriver tabell til fil før programmet avsluttes –Starter opp: Leser biler tidligere registrert inn fra fil til tabell. (Når den er lest inn kan den eventuelt sorteres)
Registrer bil •Opplysninger om bil: –merke –modell –årsmodell •Feltene MÅ fylles ut •Etter hvert som biler registreres legges de inn i en tabell "biler()"
I Form’en Public Class Form1 Structure Bil Dim merke As String Dim modell As String Dim arsmodell As Integer End Structure Dim biler() As Bil Dim bilteller As Integer
Registrering av bil i tabell Private Sub btnRegistrer_Click(…) Handles btnRegistrer.Click Dim nyBil As Bil If bilteller = 0 And biler.Length = 0 Then ReDim biler(bilteller) Else bilteller = biler.GetUpperBound(0) + 1 ReDim Preserve biler(bilteller) End If If (txtMerke.Text = "" Or txtModell.Text = "" Or txtArsmodell.Text = "") Then MsgBox("Du MÅ gi alle opplysninger") Else nyBil.merke = txtMerke.Text nyBil.modell = txtModell.Text nyBil.arsmodell = CInt(txtArsmodell.Text) biler(bilteller) = nyBil bilteller += 1 lstRegistrerte.Items.Add(nyBil.merke & ", " & nyBil.modell & ", " & nyBil.arsmodell) End If End Sub
Skrive til fil Private Sub btnAvslutt_Click(…) Handles btnAvslutt.Click lagreTilFil(biler) End End Sub Sub lagreTilFil(ByVal biler() As Bil) 'skriver innholdet i en tabell til fil Dim i As Integer Dim sw As IO.StreamWriter = IO.File.CreateText("c:\biler.txt") For i = 0 To biler.GetUpperBound(0) sw.WriteLine(biler(i).merke) sw.WriteLine(biler(i).modell) sw.WriteLine(biler(i).arsmodell) Next sw.Close() MsgBox("Bilene er lagret i biler.txt. Takk for nå! ") End Sub
Lese inn tabell Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'henter data fra fil og sorterer alfabetisk etter merke leseFilTilTabell("c:\biler.txt") 'sortertabell(biler) End Sub Sub leseFilTilTabell(ByVal filnavn As String) 'MsgBox("Lesing er ikke ferdig ennå!") Dim sr As IO.StreamReader = IO.File.OpenText(filnavn) Dim antallBiler As Integer Do While sr.Peek <> -1 sr.ReadLine() antallBiler += 1 Loop sr.Close() ReDim biler(antallBiler - 1) sr = IO.File.OpenText(filnavn) Dim enBil As Bil For i As Integer = 0 To biler.GetUpperBound(0) enBil.merke = sr.ReadLine() enBil.modell = sr.ReadLine() enBil.arsmodell = CInt(sr.ReadLine()) biler(i) = enBil lstRegistrerte.Items.Add(enBil.merke & ", " & enBil.modell & ", " & enBil.arsmodell) Next sr.Close() MsgBox("Bilene er lest inn fra filen.... Du kan nå registrere nye biler") End Sub
Sortere tabell Private Sub sortertabell(ByRef tabell() As Bil) 'sorterer en tabell med biler Dim i, j, maks As Integer maks = tabell.GetUpperBound(0) For i = 0 To maks - 1 For j = i + 1 To maks If (tabell(i).merke.ToUpper > tabell(j).merke.ToUpper) Then bytt(tabell(i), tabell(j)) End If Next End Sub 'Skriv prosedyren bytt selv (se forelesning nr. 16)
Tid og Dato •Eksempel –Finn hvor mange dager det er til Jul –Lag et program som teller ned •Ser på dette neste gang!