SKISENTER
Dere har fått i oppdrag å lage et datasystem for et skisenter. (Dere kan selv velge hvilket skisenter det skal være og hva det skal hete.)
Skisenteret har flere skiheiser, flere typer billetter og heiskort, og diverse rabattordninger.
Oppdragsgiveren ønsker at systemet skal kunne
- Gi informasjon til publikum (aplinister og skiturister)
- Selge ulike typer billetter og heiskort
- Registrere persondata og heiskort i systemet
- Kontrollere kort og registrere heisturer
- Gi skisenteret forskjellig typer informasjon og statistikk som kan hjelpe dem i å utvikle tilbudet og planlegge neste års sesong
Nærmere krav og detaljer er spesifisert nedenfor. Oppdragsgiveren har planer om å utvide tilbudet,
så dere må regne med at det vil dukke opp
nye ønsker og behov etter hvert som systemet er i drift. Det er
derfor viktig at datasystemet er bygget opp slik at det lett lar seg
vedlikeholde og bygges ut med ny funksjonalitet.
Oppgavens størrelse vil være avhengig av hvor mye av oppdragsgiverens krav og
ønsker dere implementerer. For mange vil den bli for omfattende hvis alt skal
implementeres fullt ut. En av utfordringene blir derfor å gjøre fornuftige valg
mht. hva som implementeres og hva som kan utelates. Det er imidlertid viktig at
programmet kan kompletteres på et senere tidspunkt (for eksempel av en annen
programmerer) uten at det må gjøres vesentlige forandringer i den eksisterende
koden.
Kravene fra oppdragsgiver er veiledende. Dere kan legge til og trekke fra
alt etter som dere finner det hensiktsmessig. Oppdragsgiver ønsker imidlertid at
dere skal komme med forslag til utvidelser av programmet. Dere står også fritt
til å implementere mer funksjonalitet enn det som er beskrevet i det følgende.
Dersom dere implementerer mindre enn det som er beskrevet, må det gå klart fram
av dokumentasjonen hva som er utelatt og hvordan dere har prioritert.
For å få noen ideer om hva som kan være med i datasystemet, kan det være lurt å ta
en titt på tilbudet i eksisterende skisentre, for eksemplel
Tryvann vinterpark i Oslo eller
Gautefall skisenter i Telemark.
Det er ikke meningen at dere skal lage et et datasystem for så store anlegg som disse,
men ved å studere deres tilbud, kan dere kanskje få ideer
om hvilke tilbud dere ønsker at deres skisenter skal ha.
Programmet skal ha fire forskjellige moduler/vinduer som skal brukes forskjellige steder:
Informasjonsvinduet
Dette vinduet er tenkt å ligge på nettet (NB! skal programmeres i Java) og skal gi informasjon om skianlegget til publikum:
- Adresse - hvordan kommer man seg dit?
- Åpningstider
- Forskjellige tilbud og fasiliteter, som heiser, bakker, kafeteria, varmestue, skiutleie o.l.
- Prisliste
- Rabattyper som grupperabatt, skolerabatt o.l.
- Kontaktinformasjon
- Bilder?
Salgsvinduet
Dette vinduet er beregnet på personell som selger heiskort eller billetter til publikum.
I forbindelse med salg av heiskort, skal det opprettes tilsvarende objekter som settes inn i datastrukturen.
Det er et krav at systemet skal tilby minst tre forskjellige typer kort, både saldo-baserte (klippekort) og tidsbaserte (dagskort/sesongkort).
For å kunne generere informasjon om bruken av heis(ene) samt salg og inntjening, må summene det selges for registreres. (Se avsnittet om registrering.)
Kontrollvinduet
Vinduet skal simulere heiskontrollen og er tenkt å stå ved heisen. For hver tur, skal det skjekkes om kortet/billetten er gyldig,
og kun de med gyldig kort/billett skal slippe igjennom.
Av hensyn til statistikken som skal genereres, vil det være nødvendig å
registrere alle passeringer, og eventuelt tidspunktene for dem. (Se avsnittet om registrering.)
Administrasjonsvinduet
Dette vinduet er beregnet på de ledelsen/administrativt ansatte på skisenteret.
Her skal det være mulig å hente ut forskjellig type informasjon og statistikk.
(Se avsnittet om informasjon og statistikk.)
Med unntak av informasjonsvinduet, som er beregnet på publikum, skal alle
vinduene bruke samme datastruktur. I denne skal alle personopplysninger og heiskort lagres, uavhengig av type.
De forskjellige korttypene må derfor være i samme klassesierarki.
I det følgende står en nærmere spesifikasjon av oppdragsgivers ønsker.
REGISTRERING
Alle kort som skal registreres må ha
- et unikt kortnummer
- en pris
Hva slags informasjon de andre kortene trenger vil være avhengig av typen.
For klippekort må det lagres et antall klipp eller en saldo, mens det for
tidsbegrensede kort, som dagskort eller sensorgkort,
må lagres informasjon om start- og utløpstidspunkt.
Enkelte korttyper er personlige og kan ikke overdras til andre, og
for disse må det i tillegg lagres personopplysninger om eieren av kortet.
Informasjonsdata
For å kunne generere forskjellig type informasjon og statistikk (se avsnitt i under) trengs det
forskjellige variabler/datastrukturer som må oppdateres under kjøringen av programmet.
Tips: Mange steder vil det være nyttig å bruke datafelt av typen static!
SLETTING AV DATA
Det skal være mulig å fjerne registrert informasjon fra systemet:
- ugyldige heiskort som ikke lenger er i bruk
- persondata til personer som ikke lenger har gyldig heiskort
- persondata til personer som ikke lenger ønsker å være registrert i systemet
INFORMASJON OG STATISTIKK
Informasjon som det kan være nyttig å hente ut av systemet er:
- Oversikt over alle kort i systemet
- Finne eier av gitt kort
- Finne kortnummer til gitt eier
- Finne alle personer/kort med gitt rabattype
- Andre forslag?
Aktuell statistikk som kan hjelpe ledelsen å planlegge årets og neste års sesong kan være:
- Hvor mange enkeltbilletter er det solgt?
- Hvor mye det er solgt for av de forskjellige typer billetter/kort?
- Hvor stor har den totale inntekten av billett- og kortsalget vært hittil i denne sesongen?
- Hvor stor er økningen/reduksjonen i forhold til året før?
- Hvor mange turer er det tatt med de forskjellige korttypene?
- Hvilke tidspunkter har det vært størst aktivitet; i løpet av en dag, uke eller måned?
- Aldersfordeling av brukerne med personlige kort
- Grafiske fremstillinger av statistikk
- Andre forslag?
LAGRING
Skrive data til fil
For at dataene som ligger lagret i programmets interne datastruktur ikke skal
gå tapt når programmet avsluttes, må alle data lagres på fil. Lagring på fil må
foretas i forbindelse med hver programavslutning. Det kan dessuten være ønskelig
å kunne foreta lagring på fil også under programmets kjøring.
Lese data fra fil
Hver gang programmet startes, må alle dataene som ligger lagret på fil leses
inn i programmets interne datastruktur.
EVENTUELLE UTVIDELSER
Som nevnt innledningsvis, er oppdragsgiver interessert i forslag til
utvidelser av programmet. Det er også tillatt å legge til utvidelser,
men det er ikke noe krav.