fredag 14. september 2007

Fredag 14/9: Valuta A til Z

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

Ingen kommentarer: