mandag 17. september 2007

Mandag 17/9: Tabell og datastruktur

Med kap. 2's hierarisk input-processing-output (HIPO) lagde dere i grupper:
  • Reisevelger
    • Oppstart
      • Les inn brukere
    • Innlogging
      • Les inn navn og passord
      • Sjekk navn og passord
      • Gi svar
    • Velg reise
      • Les inn reisemål og priser
      • Ta imot valgt reisemål
      • Vis pris
Etter pausen laget vi et design for "Reisevelger:Oppstart:Less inn brukere". Først måtte datagrunnlaget designes (forslaget om database ble forkastet, det kommer senere!). Vi antar en tekstfil med en bruker per linje - hver linje har brukerens navn (pos 0-19), passord (20-39) og max. antall forsøk (resten). Logikken ble (nå, når datagrunnlaget er bestemt) uttrykt i et flytkart (kap. 2) med a) åpn fil, b) er det mer igjen så les neste bruker og husk denne, evt. c) hvis ingen flere, steng filen. Derpå brukte vi kap. 6's gjentakelser (med adaptive Do, for vi vet jo ikke hvor mange brukere som ligger i filen!) og fikk kap. 2's pseudokode:
f = åpne opp fil
Do While not f.endofstream()
 s = f.readline()
 b = lagbruker(s)
 huskbruker(b)
Loop
og brukte kap. 7's "Structure" til å lage Bruker og "Array" til å lage tabell av brukere.
Structure Bruker
  Dim navn as String
  Dim passord as String
  Dim maxAntallForsok as Integer
End Structure

Dim brukere(99) as Bruker
Dim antBrukere as Integer=0

Function lagBruker (ByVal s as String) As Bruker
Dim ny as Bruker
  ny.navn = s.substring (0,20).trim()
  ny.passord = s.substring (20,20).trim()
  ny.maxAntallForsok = CInt (s.substring(40).trim() )
 Return ny
End Function

Sub huskBruker (ByVal b as Bruker)
  brukere(antBrukere) = b
  antBrukere++
End Sub
Ingen kode ble skrevet inn (i VS). Det er plass til 100 brukere i tabellen, så prosessen vil krasje (runtime-feil) idet den 101. forsøkes innlagt.

Ingen kommentarer: