Kap 2 omhandler metodikk. I dag laget vi analyse og design for oblig 3, del 3 (faktura) og del 4 (valuta). Valuta (del 4) mer spesifikt:
I. Analyse: 1) kursene leses inn, slik at 2) de kan vises frem til bruker. Deretter kan 3) bruker velge en av disse kurs og 4) et beløp, fulgt av 5) output: Omregnet (beløp/valutakurs).
II. UI-Design: UI har et INN-område (beløp, valutakursmeny og OK-knapp), samt et
UT-område med omregnet beløp vist.
III. Algoritmisk design (pseudokode, litt VB, litt "snakk"): To viktige hendelser: OK.click (bruker vil ha omregning) og Form.load (kursene skal leses inn).
- OK.click() beregner omregnetBelop = hentbelop() * hentkursvalgt() og legger dette i UT-området.
-
hentbelop() returnerer et tall (Double) ved: Return Cdbl(innbelop.text).
-
hentkursvalgt() returnerer en double ved: Return Cdbl(valutaer.text.substring(4)).
- Form.load() leser inn valutakursene. Filen åpnes, fulgt av en Do While Not fil.endofstream(): valutaer.items.add(fil.readline()) Loop.
Dette fungerte fint (laget valutafilen med notepad).
IV. Koden ble:
Imports System.io
Public Class Form1
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
Dim B As Double = hentBelop()
Dim K As Double = hentkursvalgt()
Dim O As Double = B / K
lblUtbelop.Text = CStr(O)
End Sub
Function hentBelop() As Double
Dim s As String = txtBelop.Text
Dim t As Double = CDbl(s)
Return t
End Function
Function hentkursvalgt() As Double
Dim s As String = cboValutakursMeny.Text
Dim s2 As String = s.Substring(4) ' satser ALT
Dim t As Double = CDbl(s2)
Return t
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim filnavn As String = "m:\valutaer.txt"
Dim fil As streamreader = file.opentext(filnavn)
Do While Not fil.EndOfStream()
Dim s As String = fil.ReadLine()
cboValutakursMeny.Items.Add(s)
Loop
fil.Close()
End Sub
End Class
Vi foretok lite
V. testing, og antar at endel feil kan skje (brukerfeil i input, filens plassering). Endelig skinner solen!
Men: Vil dette under virke? Hva er eventuelt problematisk?
Public Class Form1
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
lblUtbelop.Text = CStr(
CDbl(txtBelop.Text) /
CDbl(cboValutakursMeny.Text.substring(4)))
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fil As streamreader = System.IO.file.opentext("m:\valutaer.txt")
Do While Not fil.EndOfStream()
cboValutakursMeny.Items.Add(fil.readLine())
Loop
fil.Close()
End Sub
End Class