81,9(56,7(7(7,26/2 'HWPDWHPDWLVNQDWXUYLWHQVNDSHOLJHIDNXOWHW



Like dokumenter
Endret litt som ukeoppgave i INF1010 våren 2004

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Obligatorisk oppgave nr. 3 (av 4) i INF1000, våren 2006

Bruk av oppgaver og grupper i

INF Uke 10. Ukesoppgaver oktober 2012

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

MAT-INF 1100: Obligatorisk oppgave 1

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

MAT-INF 1100: Obligatorisk oppgave 1

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

TOD063 Datastrukturer og algoritmer

UNIVERSITETET I OSLO

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

UNIVERSITETET I OSLO

Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din.

EKSAMEN. Objektorientert programmering

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Logg inn og introduksjon # 1. Endre passord # 2. Medlemsliste # 3. Registrere et nytt medlem/ny medarbeider # 4. Registrering av tidligere medlem # 5

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF109 - Uke 1b

UNIVERSITETET I OSLO

Avstemmme lønn for året JANUAR 2016 / RUNELAVIK /

Gangemesteren Nybegynner Scratch PDF

IN våren 2018 Tirsdag 16. januar

IN våren 2019 Onsdag 16. januar

Sensio Velferds App Brukerveiledning for oppsett og bruk av nettbrettløsningen

Løse reelle problemer

UNIVERSITETET I OSLO

INF1010 Arv. Marit Nybakken 2. februar 2004

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

UNIVERSITETET I OSLO

Kanter, kanter, mange mangekanter

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

UNIVERSITETET I OSLO

Prøveksamen 2004 INF1010 Operasystemet med GUI + Ordkryss (modifiserte løsninger etter innspill fra forelesningen) Arne Maus Inst for informatikk

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

TDT Prosedyre- og objektorientert programmering

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE. Antall sider (Inkl forsiden): 8. Alle trykte og håndskrevne

HØGSKOLEN I SØR-TRØNDELAG

Oblig 4Hybelhus litt mer tips enn i oppgaven

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger

INF våren 2017

Utførelse av programmer, metoder og synlighet av variabler i JSP

1 t:n'v'\ekode LO325E. Alle ~vne og trykte. GOd'"j(jent kalkulator

Soloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere.

Oppgaven består av to deler, del A og del B. Alle skal besvare både del A og del B, men det finnes noen valgmuligheter innenfor hver del.

Ukeoppgaver INF1000: 12. feb 16. feb

infotorg Enkel brukermanual

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

TOD063 Datastrukturer og algoritmer

Fra datax til Visma eaccounting

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

Del 1: Overgang fra gammel hjemmeside til ny hjemmeside

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Kapittel og 5. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 4.

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

E K S A M E N. - Kontroller at alle oppgavearkene er tilstede. - Les hele oppgaveteksten nøye, før du begynner å besvare noe som helst.

Straffespark Introduksjon Scratch Lærerveiledning

INF1000: Forelesning 6. Klasser og objekter del 1

INF1000 Metoder. Marit Nybakken 16. februar 2004

UNIVERSITETET I OSLO

Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl

KONTINUASJONSEKSAMEN

Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000

Brukerveiledning for Digifob Pro

Enarmet banditt Nybegynner Scratch Lærerveiledning

Standard salgsbetingelser for forbrukerkjøp av varer over Internett

Enkle generiske klasser i Java

TDT4102 Prosedyreog objektorientert programmering Vår 2016

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye.

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

Gjennomgang av eksamen H99

Lage en ny spillverden

TASTAVEDEN SKOLE Bruk av PC i skolen

Veiledning feriepenger

Klasser, objekter, pekere og UML. INF gruppe 13

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

2 Om statiske variable/konstanter og statiske metoder.

LC191D/LO191D Videregående programmering mai 2010

EKSAMEN I INF244: OBJEKTORIENTERT PROGRAMVAREUTVIKLING I BACHELORSTUDIET I IT OG INFORMASJONSSYSTEMER BACHELORSTUDIET I IT OG ENTREPRENØRSKAP

eportal for legekontoret

Kontinuasjonseksamen

HØGSKOLEN I SØR-TRØNDELAG

Eksamen IN1010/INF1010 våren 2018

Det står skrevet hos evangelisten Matteus i det 16. kapittel:

1. Programmering: Hva og hvorfor? Scratch fra scratch Enkel programmering for nybegynnere

Transkript:

81,9(56,7(7(7,26/2 'HWPDWHPDWLVNQDWXUYLWHQVNDSHOLJHIDNXOWHW (NVDPHQL,1)²*UXQQNXUVLREMHNWRULHQWHUWSURJUDPPHULQJ (NVDPHQVGDJ )UHGDJGHVHPEHU 7LGIRUHNVDPHQ ² 2SSJDYHVHWWHWHUSnVLGHU%RNPnO 9HGOHJJ VWN 7LOODWWHKMHOSHPLGOHU$OOHWU\NWHRJVNUHYQH Kontroller at oppgavesettet er fullstendig (6 sider). Dette oppgavesettet gjelder også for eksamen i IN105. Du skal ikke løse alle oppgavene i settet. I byen Uqbal i Ruritania er det en frisørsalong som eies av Terje Tupé. Terje har bestandig håndtert både kunder, ansatte og varebestillinger manuelt, men har nå begynt å tenke på å lage et datasystem, som håndterer i hvert fall en del av tingene. Når en kunde ønsker å bestille en time hos frisøren, slår frisøren opp i en bok på ønsket dato, og finner en ledig time som passer, eventuelt hos en bestemt frisør. Navnet til kunden og kanskje et telefonnummer blir skrevet inn i avtaleboka. Hvis det ikke er noen ledig time som passer for kunden denne dagen vil man se i boka for andre passende datoer og finne en time en annen dag. Salongen har åpent fra 8.00 til 18.00, men den siste timen som kan bestilles er 17.30. Det finnes 20 tidspunkter hvor en kunde kan bestille timer i løpet av en dag. For enkelthets skyld antar vi at det til enhver tid er fem ulike frisører på jobb. Tidligere var det ikke mange frisører i Uqbal og de som var der hadde nok å gjøre. De siste årene derimot har flere flyttet til byen og flere frisører har etablert seg. En av grunnene til at Terje Tupé nå ønsker å legge om til data er at han vil prøve å knytte kundene sterkere til seg ved å lage et kundeoppfølgingssystem. Han ønsker bl.a. å registrere kundene og legge opp til et system hvor de får hver tiende behandling gratis. I dag har Terje et manuelt system for å håndtere lønnsberegningen for sine ansatte, men nå som han allikevel skal investere i informasjonsteknologi vil han gjerne automatisere denne delen også. Han har fem frisører som er fast ansatt. I tillegg er det tre vikarer som bare jobber av og til, f.eks. dersom noen er syke eller hvis det er ekstra mye å gjøre en dag. De som er fast ansatt har fast månedslønn, vikarene er timebetalt.

Eksamensoppgaven: Det Terje ønsker er å få laget er et system som holder orden på kundene hans, registrerer timebestillinger og beregner lønn for de ansatte. La oss først se på kunderegisteret og timebestillingene. Det han ønsker å lagre om hver kunde er navn, adresse, telefonnummer og hvor mange behandlinger de har hatt. I Ruritania har de en navneregel som sier at to personer ikke kan ha samme navn, derfor behøver du ikke å registrere fødselsnummer. Når kunden ringer eller kommer for å bestille time skal dette registreres på datamaskinen. Kunden sier hvilken dato hun ønsker time og den som tar imot bestillingen slår inn datoen og får opp denne datoens timeplan på skjermen. Den skal se omtrent slik ut: Tid/Frisør 1) Janne H. 2) Aisha K. 3) Eigil S. 4) Maria H. 5) Hans Petter N. 1) 8.00 Jonas Nilsen 2) 8.30 Randi Jensen 3) 9.00 Amalie Rud 4) 9.30 5) 10.00 Heidi Ås.................. 18) 16.30 19) 17.00 20) 17.30 Når en time er opptatt, står det et kundenavn i tabellen ved siden av tidspunktet og under et frisørnavn. Anta at alle de tomme cellene i tabellen er ledige timer. Hvis en av de ledige timene passer for kunden, registreres kundens navn på denne timen. Hvis ingen av de ledige timene passer, finner man en ny dato for å se om det er noen passende timer der osv. Når bestillingen gjøres skal systemet sjekke om dette er den tiende behandlingen, og i tilfelle skrive en melding på skjermen om at denne behandlingen er gratis. Det må også være mulig å avbestille en time. La oss her se på den delen av systemet som skal sørge for lønn til de ansatte. For alle ansatte skal det registreres fødselsnummer, navn, adresse og telefonnummer. For de fast ansatte registreres årslønn. For vikarene registreres antall timer og timelønn. Anta at innlesingen fra fil ved programstart sørger for at alle lønnsrelaterte variabler har en fornuftig verdi, du trenger altså ikke sette verdier for de ansattes lønn. (Ikke tenk på timeregistrering eller lignende i sammenheng med avtaleboka og timebestilling). Når vi skal beregne lønn for de ansatte hver måned forenkler vi dette noe, siden vi ikke tar

hensyn til feriepenger, skatt eller lignende. For en fast ansatt er månedslønnen årslønn/12 og for vikarene er månedslønnen antall timer * timelønn. De fast ansatte har ikke lov til å jobbe overtid. Noen presiseringer: Du skal ikke lage et fullstendig program her på eksamen. Dersom du finner ut at noe i oppgaveteksten er uklart, gjør de antagelsene du finner nødvendige og fornuftige og skriv dette i besvarelsen. I et reelt system må selvfølgelig data lagres på fil, slik at informasjon ikke går tapt når programmet avsluttes. Her på eksamen trenger du ikke å tenke på dette. Vi antar at data blir lest fra fil og skrevet til fil når det er nødvendig. Du kan ta utgangspunkt i programskjelettet i vedlegg A og bygge videre på dette. Når du skriver en metode må du også angi hvor denne metoden skal ligge (hvilken klasse den hører til). Ofte vil det være fornuftig å dele opp en oppgave slik at flere klasser samarbeider. Angi i tilfelle hvor de enkelte del-metoder ligger. OBS: Du skal ikke løse alle oppgaven i dette oppgavesettet. Alle skal løse oppgavene 1, 2, 3, 4 og 9, men du kan velge ut to (2) av disse oppgavene: 5,6,7 og 8. Hver oppgave i oppgavesettet teller omtrent like mye. Oppgave 1 a) Deklarer klassen Kunde. b) Bestem en passende datasstruktur for å holde orden på alle faste kunder. Beskriv denne med ord, begrunn valget ditt og angi hvor den skal ligge. c) Lag en meny/ordreløkke for systemet. Valgene skal være: 1. Registrere ny timebestilling 2. Beregn månedslønn for alle ansatte 3. Avbestill time 4. Avslutt I denne oppgaven skal du bare navngi de metodene som kalles ved hvert valg, ikke programmere dem (det kommer eventuelt senere i oppgaven). Hvor vil du legge denne menyløkka? Oppgave 2 Bestem hvordan du vil representere frisørsalongens avtalebok i systemet. Det er en samling med slike timeplaner som er vist på side 2, en for hver dag. Programmet skal kunne vise timeplanen for en vilkårlig dato. Vi tar altså ikke hensyn til at salongen kan være stengt på søn- og helligdager. Oppgave 3 Programmer metoden for å registrere en timebestilling; denne metoden skal du kalle regnytimebestilling(). Dersom kunden ikke er registrert frå før må dette gjøres. Programmet skal spørre etter datoen kunden vil ha time. Du kan her anta at metoden vistimeplan(string dato) finnes. Den skriver ut en tilsvarende timeplan som er vist på side 2 til skjerm, for den datoen du sender med i kallet. I denne oppgaven kan du gå ut fra at kunden finner en passende time denne datoen (men se også oppgave 6). En enkel måte

å gjøre registreringen på er at brukeren skriver inn nummeret på timen og nummeret på frisøren som tilsvarer timen som kunden vil ha. Du kan også gå ut fra at all behandling tar en halv time. Oppgave 4 Skisser hvilke klasser og datastrukturer (tabeller, nøkkeltabeller etc.) programmet vil inneholde. Ta med både de klasser som du selv deklarerer og de som er gitt i oppgaven (som du ikke programmerer selv, dersom du velger å bruke programskjelettet i vedlegg A). Du behøver ikke å ta med en klasses metoder, men tegn variablene (attributtene). (Når det gjelder strukturen som kreves i oppgave 5, tegner du denne bare dersom du velger å løse denne oppgaven). VELG TO AV DE FIRE NESTE OPPGAVENE: VALGFRI: Oppgave 5 Programmer en metode som beregner månedslønn for alle de ansatte (menyvalg nr. 2). Først må du gjøre de nødvendige deklarasjonene for å få en passende datastruktur. Den skal skrive ut til skjerm en liste der hver ansatts navn og månedslønn skrives ut (en linje for hver ansatt). Til slutt skal summen av alle de enkeltes lønnsutbetalinger, altså total lønnsutbetaling denne måned skrives ut på en egen linje. Husk: du kan anta at alle lønnsrelaterte variabler har en fornuftig verdi når programmet starter. Du behøver altså ikke sette verdier for de ansattes lønn, bare programmere metoden som bruker og behandler disse verdiene. VALGFRI: Oppgave 6 I bestillingsprosedyren slik den er beskrevet i oppgave 3, velger man en dato og kunden må finne en passende time denne datoen. Modifiser denne metoden slik at kunden kan ombestemme seg med hensyn på dato, hvis det ikke skulle være en time som passet i løpet av den dagen man først valgte. Denne metoden skal også kunne bestille behandlinger som tar lengre tid enn en halv time. Dvs. samme kunde reserverer to eller flere halve timer. (Du må gjerne legge denne varianten inn i besvarelsen til oppgave 3 i stedet for den enkleste løsningen). VALGFRI: Oppgave 7 Skriv en metode for å avbestille en time (menyvalg nr. 3). Anta at kunden husker datoen for timen. Ved å bruke metoden vistimeplan(string dato) kan den som foretar avbestillingen få opp datoens timeplan på skjermen og skrive inn den informasjonen som trenges for å avbestille timen. VALGFRI: Oppgave 8 Programmer metoden vistimeplan(string dato) som ble brukt i oppgave 3 og 7. Denne metoden skriver ut timeplanen for en bestemt dato. Formatet skal ligne det som er vist på side 2, men behøver ikke se akkurat sånn ut, du trenger for eksempel ikke ha med streker som skiller cellene fra hverandre.

Denne oppgaven skal alle svare på: Oppgave 9 Terje ser straks mulighetene her til å rangere sine frisører. Det vil være en enkel sak for ham å finne ut hvor mye av tiden en ansatt er sysselsatt med kunder, dette vil han for eksempel kunne bruke til lønnsjusteringer, si opp uproduktive frisører, sette opp lister over ukens mest populære osv. Har du noen kommentar til om det skulle være noen problemer med eller begrensninger på en slik bruk av informasjonen?

VEDLEGG A class FrisorSystemMain static public void main (String[] args) FrisørSystem system = new FrisørSystem(); class FrisorSystem //ofte kalt Kontroll-klassen Register reg = new Register(); FrisorSystem() // her kommer det eventuelt mer. // her kommer det eventuelt mer class Register // ofte kalt Datamodell-klassen. // Her legges datastrukturene og metoder som opererer på disse // Evt. flere klasser