Prosjektoppgave. i «IMT1082 - Objekt-orientert programmering» våren 2016



Like dokumenter
Prosjektoppgave. i «IMT Objekt-orientert programmering» våren 2017

i «IMT Objekt-orientert programmering» våren 2019

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

Prosjektoppgave. i IMT Objekt-orientert programmering våren 2007

E K S A M E N 96HINDA / 96HINDE (1 AA / AE)

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

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.

Veiledning for innlevering av Årsrapport

Kontinuasjonseksamen

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

Kontinuasjonseksamen

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.

Kontinuasjonseksamen

BRUKERVEILEDNING FOR NETTBUTIKKEN FORHÅNDSMELDING OG OPPLASTING AV POSTNUMMERFILER. Post med like formater og Aviser til abonnenter

Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering

KONTINUASJONSEKSAMEN

BRUKERMANUAL NR AUKSJON. Versjon

E K S A M E N. Grunnleggende datakunnskap og programmering 02HIND*, 02HINE*, 02HDMU*, 02HING*, 02HGEOMAA, 02HSIV5

RUTEPLANLEGGINGSSYSTEM BRUKERVEILEDNING

Surofi Auksjonsløsning

KONTINUASJONSEKSAMEN

Kontinuasjonseksamen

infotorg Enkel brukermanual

Kontinuasjonseksamen

Veiledning for innlevering av Årsrapport

BRUKERVEILEDNING TIL MAGNORMOEN INDUSTRIOMRÅDE OG GAUSTADVEGEN INDUSTRIOMRÅDES HJEMMESIDER:

E K S A M E N. Grunnleggende datakunnskap og programmering 98HINDA / 98HINDB / 98HINEA 98HDMUA / 98HDMUB / 98HINGA

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk. Eksamen. Objekt-orientert programmering

infotorg Enkel brukermanual

CRI Brukermanual for bilforhandlere

Kontinuasjonseksamen

buildingsmart Norge Guiden

INF100 INNLEVERING 3 HØSTEN 2004

WordPress. Brukerveiledning. Kjære kunde. Innlogging:

Brukerveiledning. For student hjemmeeksamen

K O N T I N U A S J O N S E K S A M E N

Compello Invoice Approval

Slik administrerer du Ståstedsanalysen

Brukerveiledning Aibel Agency Portal

Firmaopplysninger Aktivere lisens Legge inn logo Kontoinnstillinger og signatur...

Brukerveiledning for student skoleeksamen HIST Oppdatert 27. oktober 2014

Høgskolen i Gjøvik E K S A M E N. FAGLÆRER: Frode Haug KLASSE: 1 AA / AE

Veiledning Surofi Nettauksjon

Fra datax til Visma eaccounting

Brukermanual for kommuneansvarlig og testleder

Bruksanvisning/Veileder For Mysoft Regional medlemsservice (RMS) i Norsk Folkehjelp

Eksamen. Objekt-orientert programmering KLASSE(R): 02HIND* 02HDMU* 02HINE* 02HING* 01HINGA 02HSIV5 02HGEOMAA

Brukermanual for statistikk på Asset on web: Statistikk salg pr dag, uke eller måned fordelt på alle avdelinger:

BRUKERVEILEDNING FOR NETTBUTIKKEN FORHÅNDSMELDING OG OPPLASTING AV POSTNUMMERFILER. Post med like formater og Aviser til abonnenter

Klikk på: Ny bruker søker

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

Manusnett - brukerveiledning for forfatter

Brukerveiledning. Søknadssystemet esg. Elektronisk søknadsblankett for søknad om sentral godkjenning for ansvarsrett. Side 1 av 24

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

student s104111, s107911, s122357

Brukerveiledning gjovard.com

KONTINUASJONSEKSAMEN

GJØVIK INGENIØRHØGSKOLE

VIKTIG FØR OPPGRADERING TIL NY VERSJON

Eksamen i IBE102 Webutvikling Våren 2017.

UNIVERSITETET I OSLO

Øvingsforelesning TDT4105

Kontinuasjonseksamen

Operatør av Doffin er EU-Supply Holding Ltd. (EU-Supply). Direktoratet for forvaltning og IKT (Difi)

Brukerveiledning for PedIT - Web

GPS-Sporingsklokke LGW1 Brukerveiledning

Brukerveiledning. Madison Møbler Administrasjonsside

INF Obligatorisk innlevering 7

Brukermanual. Quality PayBack Starter Edition

GJØVIK INGENIØRHØGSKOLE

Inspeksjon Brukermanual

Cura 1.0. Et administrativt system for skoler med fagskoleutdanning. Registrering / login Fraværsføring Karakterføring

Eksamen. Grunnleggende programmering. EKSAMENSDATO: 6.desember 2016 TID: 16:00 20:00. (kalkulator er ikke tillatt)

Datamann Informasjonssystemer

F A G B O K F O R L A G E T S E - P O R T A L

Hvordan bli opprettet som kunde og registrere ordrene på nett

Veiledning til Grønt Flagg søknadsportal

Kvikk guide Nettbank bedrift

Læring. Brukerguide + = Hva er KS Læring? Logg deg på Fra forsiden velg Logg inn i øvre høyre hjørne av skjermen. Utstyr for lyd og bilde

Brukerveiledning for klubb

Obligatorisk oppgave 1 INF1020 h2005

LEVERINGSBETINGELSENE... 2 Disse vilkårene aksepteres ved å ta i bruk tjenesten... 2 Postens forpliktelser:... 2 Dine forpliktelser:... 2 Ansvar:...

Utviklingssak/ID Resume Endring (g2) Rettet i versjon (g1) Rettet i versjon

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

F A G B O K F O R L A G E T S E - P O R T A L

GAB INNSYN... 1 INNSTILLINGER... 1 Database... 1 Søk... 4 GENERELT... 5 Søkeutvalg... 5 GAB menyen... 6 VIS MENYEN... 6 Generelt...

BAS AUTOSALES. Bruktbiladministrasjon. Brukerveiledning v1.0

Brukerveiledning for å legge inn Støtteordning, Rammer, Forenklet tilsagn, Endringer på tilsagn, Årsrapportering

Oppsett «Visma Contacts»

Det er viktig at all informasjon om overnattingsstedet er korrekt utfylt. Klikk på?-ikonene for å få hjelp til felter som ikke er selvforklarende.

Brukerdokumentasjon for registrering og rapportering beredskapsutstyr hos Post og Teletilsynet

Registrere ditt lag/forening og aktiviteter på Eidsvoll kommunes Innbyggerportal?

Ved pålogging til KursAdmin Om du har roller i KursAdmin for flere kursarrangører må du velge organisasjonsledd når du logger på. Versjon

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk. Eksamen. Objekt-orientert programmering

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2008

Systemutvikling (Software Engineering) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Minfagplan.no. Brukermanual. Veiledning for lærere. Dokumentnummer: BV-001. Revision 1.4. August 25 th

Transkript:

Prosjektoppgave i «IMT1082 - Objekt-orientert programmering» våren 2016 Frister: Tirsdag 19.april 2016 kl.14.00 NB: Fredag 18.mars kl.09.00 (1.delinnlevering) Arbeidsform: Arbeidsinnsats: Torsdag 7.april kl.09.00 (2.delinnlevering) Gruppe (tre (evt. to) personer flere er ikke relevant) Mye Innledning Dere skal i denne prosjektoppgaven lage et noe større program som holder orden på ulike kunders kjøp og salg på en nettauksjon, samt gjenstandene (og deres bud) som er lagt ut for salg i ulike kategorier. Programmet er en sterk forenkling av slikt som ebay og QXL. I hovedsak skal programmet håndtere: at en kunde kan: o registrere seg / logge inn / logge ut o skrive alle egne kjøp og salg o registrere at en kjøpt gjenstand er betalt o gi en annen kunde (kjøper eller selger) karakter og tilbakemelding o for en underkategori: se hoveddataene om alle gjenstandene legge inn en ny gjenstand for auksjonering o for en gitt gjenstand: se alle detaljer (inkludert alle nåværende bud) gi bud på den at en administrator kan (i tillegg til det ovenfor): o endre rettigheter for en annen kunde (til/fra å være administrator) o legge inn en ny hoved- og/eller underkategori for salg av gjenstander at flere ulike typer datastrukturer leses fra / skrives til (mange) filer tre ulike kategorier av brukere: 1) Ikke innlogget, 2) Innlogget vanlig bruker, 3) Innlogget administrator. Disse tilbys noe ulike menyvalg ift. punktene ovenfor. Globale variable, klasser (og litt datastrukturen) Programmet skal kun inneholde tre globale objekter av klassene: Kunder, Kategorier og Gjenstander. Inni disse objektene ligger til sammen hele datastrukturen. Programmet skal (i hvert fall) inneholde de syv klassene med minst datamedlemmene: 1. Kunder inneholder datastrukturen med Kunde er, samt evt. navnet på nåværende innlogget bruker/kunde. 2. Kunde inneholder et unikt brukernavn (ett sammenhengende ord, sortert på dette), passord, fullt reelt navn, gateadresse, postnr, poststed, mail, antall kjøp, antall salg og om vedkommende har admin-rettighet eller ei. 1

3. Kategorier inneholder datastrukturen med Kategori ene (både hoved- og underkategorier), samt de fortløpende økende og unike numrene på en kategori (hoved eller under) og auksjonsgjenstand. 4. Kategori inneholder et unikt kategorinavn (sortert på dette), dets unike (og delvis skjulte) nummer og evt. datastrukturen med underkategorier. 5. Gjenstander - inneholder datastrukturen med Gjenstand ene (for nåværende underkategeori) og navnet for filen disse er hentet fra. 6. Gjenstand inneholder et unikt gjenstandsnummer (sortert på dette), selgerens brukernavn, gjenstandens tittel, beskrivelse, starttidspunkt, sluttidspunkt, startpris, budøkning, porto og datastrukturen med alle nåværende Bud. (Om det finnes bud på gjenstanden så ligger høyeste bud lagret i det 1.budet.) 7. Bud inneholder budets størrelse (sortert på dette med det største først), budgiverens brukernavn og tidspunkt for budet. Tips: Tegn opp, og bli ordentlig sikker på hvordan datastrukturen må være (ser ut), og hvordan den fungerer ifm. de ulike funksjonene dere skal lage (angitt nedenfor). Menyvalg / funksjoner Programmet skal (i hvert fall) håndtere følgende 15 menyvalg: K R Registrer en ny kunde. Et nytt unikt brukernavn og alle dataene om den nye kunden leses inn. Vedkommende registreres som innlogget, og aktuell meny vises. (Tilbys/virker bare for en som ikke er logget inn.) K L Logg inn en eksisterende kunde. Ved korrekt passord logges en eksisterende kunde inn. Aktuell meny vises. (Tilbys/virker bare for en som ikke er logget inn.) K U Logg ut en innlogget kunde. Registreres som utlogget, og «ny» aktuell meny vises. (Tilbys/virker bare for en som er innlogget.) K S Se alle egne kjøp og salg. Alt innholdet på kundens to filer (S<brukernavn>.DTA og K<brukernavn>.DTA) vises på skjermen (med et passende utseende). (Tilbys/virker bare for en som er innlogget.) K B Betale en vunnet auksjon/gjenstand. En kjøpt gjenstand settes betalt i kundens K-fil og som betalt i selgerens S-fil. Må bl.a. ivareta at det skrives inn et gjenstandsnummer som ikke er kjøpt, nok penger er betalt eller at den allerede er betalt. (Tilbys/virker bare for en som er innlogget.) K F Gi en annen kunde karakter og feedback/tilbakemelding. Gir en annen kunde man har handlet (solgt eller kjøpt en gjenstand) med, karakter (1-6) og feedback/tilbakemelding. Dette skrives direkte inn på vedkommendes K- eller S-fil. Håndtere feilsituasjoner som: feil brukernavn, ikke karakter til seg selv, aktuell fil finnes ikke, ulovlig gjenstandsnummer, gjenstanden ikke handlet mellom de to eller at har gitt karakter allerede. (Tilbys/virker bare for en som er innlogget.) 2

K E Endre en annen kundes rettigheter (til/fra administrator). En annen kunde får invertert sin rettighet. Kan ikke bytte på seg selv. (Tilbys/virker bare for en innlogget administrator.) A H Legge inn en ny unik hovedkategori. Dens gis et «skjult» nummer som fortløpende telles opp. (Tilbys/virker bare for en innlogget administrator.) A U Legge inn en ny underkategori (under en hovedkategori). Dens gis også et «skjult» nummer (fra samme variabel som ovenfor). (Tilbys/virker bare for en innlogget administrator.) A S Auksjoner Se. Kunden «blar» seg frem til en underkategori. Alle gjenstandene som er til auksjonering i kategorien leses fra filen G<nr.>.DTA. Kunden tilbys så evt. de fire neste menyvalgene inntil det velges Q : (Tilbys alle type brukere, innlogget eller ei.) Q A E L B Se alle auksjonsgjenstandene i aktuell underkategori. Alle aktive vises. (Tilbys alle type brukere - innlogget eller ei.) Se alle detaljer om en gjenstand. For en aktiv gjenstand (ut fra nummeret) vises alle data, inkl. alle budene. (Tilbys alle type brukere - innlogget eller ei.) Legg inn en ny auksjonsgjenstand (i aktuell underkategori). Før den nye gjenstanden legges inn, leses alle data om den. Gjenstanden tildeles automatisk et fortløpende nummer. (Tilbys/virker bare for en som er innlogget.) Legg inn bud på en gjenstand. Det legges inn et bud på en aktiv gjenstand. Budet kan være likt med startprisen (om er 1.bud) eller min. lik: forrige bud+økning. (Tilbys/virker bare for en som er innlogget.) Avslutte A S -modusen eller hele programmet (Tilbys alle type brukere - innlogget eller ei.) Alle slags feilsituasjoner (f.eks. ulovlige kommandoer, ikke-eksisterende navn og numre), og dertil egnede meldinger, er så vidt nevnt ovenfor. Dette må også selvsagt gjøres/kodes. I tillegg må selvsagt main lages (som «styrer hele butikken»), samt funksjoner for å lese brukerens valg/kommando og en lengre utskrift med liste over aktuelle valg/kommandoer. En del annet også, f.eks: at tall virkelig er numeriske verdier, at de er i rimelig intervall, bygge ulike filnavn (G-, K- og S-filer) eller å «strippe» alle tekster for blanke foran og bak. Data til/fra filer I programmet er det involvert fem ulike (typer) filer (alle filformat bestemmer dere selv): To av de (tre) globale objektenes data lagres på henholdsvis filene: KUNDER.DTA og KATEGORIER.DTA. Alle gjenstandene i en underkategori er lagret på filen G<ukat.nr>.DTA, der <ukat.nr> er det «skjulte» nummeret lagret i vedkommende Kategori-objekt. Det er data fra en slik fil som til enhver tid evt. er lest/lagt inn i datastrukturen i det globale Gjenstander-objektet. Disse tre typene av filer inneholder tilsammen alle relevante data fra de syv klassene. 3

Alle gjenstandene som en bruker har kjøpt/solgt er lagret på henholdsvis filene: K<brukernavn>.DTA og S<brukernavn>.DTA. Disse filene bør ha identisk samme format, innholdende alle relevante data for handelen av en gjenstand mellom to kunder, inkludert karakter og tekstlig feedback. De skal oppdateres (legges til info bakerst), for både kjøperen (K-fila) og selgeren (S-fila), hver gang en auksjon er avsluttet. I alle tilfeller bør det automatisk skrives til fil hver gang en datastruktur er oppdatert. Prosjekt / multifil-program Dere skal utvikle hele dette programmet som et prosjekt, der programmet er splittet opp i flere ulike filer. Følgende (minst 11).h-filer må lages: en med alle const er (og evt. en med alle enum er) en med deklarasjon av alle globale funksjonsheadinger en pr.klasse med deklarasjon av dets innhold (datamedlemmer og funksjonsheadinger) ListTool2B.h (ligger allerede ferdig på PROSJEKT-katalogen) timer4.h (ligger allerede «ferdig» på PROSJEKT-katalogen) Følgende (minst 11).cpp-filer må lages: en som inneholder main og definisjon av de globale variablene minst en fil som inneholder definisjon (innmaten) av alle de globale funksjonene en pr.klasse med definisjon av klassens funksjoner (deres innmat) ListTool2B.cpp (ligger allerede ferdig på PROSJEKT-katalogen) timer4.cpp (ligger allerede «ferdig» på PROSJEKT-katalogen) Hjelp: Se og lær av filene E19*.* på EKSEMPEL-katalogen. Annet (klargjørende?) I oppgaveteksten brukes ordene «kunde» og «bruker» synonymt. ListTool skal brukes ifm. løsningen av denne prosjektoppgaven. Legg merke til og bruk ListTool2B.H og ListTool2B.CPP (se rett ovenfor). Definer de globale variablene på samme fil som main. Om dere trenger å bruke disse på/i andre filer, så refererer dere til dem vha. extern i disse filene. Noen aktuelle const er kan være: NVNLEN, STRLEN, STARTGJNR, MAXBUD, MAXPRIS, MAXPORTO, MAXOKNING,.. Det skal sikres at alle tall som leses inn virkelig er numeriske, samt at de ligger i fornuftige intervaller. Det kan være lurt å lagre alle tidspunkt på formen: ÅÅMMDDTTMM, da dette gjør det enkelt å sjekke om et tidspunkt er passert. Men, det må lages funksjoner som viser dette på skjermen med et mer fornuftig format, samt å sjekke at et tidspunkt er lovlig. Uansett: Bruk timer4.* for å hente dato og klokkeslett på maskinen. At en gjenstand er «aktiv» betyr ikke bare at den er lagt ut for auksjon i en underkategori, men også at nåværende tidspunkt (dato/kl.) er mellom gjenstandens start- og sluttidspunkt. Når og hvordan vil dere oppdage (og håndtere) at en auksjon er ferdig/avsluttet? 4

Programmet trenger f.eks. ikke håndtere slikt som (noe av det er selvsagt en svakhet): Slette/endre en kunde, kategori, gjenstand eller bud. Spørsmål og svar mellom potensiell kjøper og selger, autobud, flere til salgs av samme gjenstand, forlengelse av sluttidspunkt, bilde av gjenstanden, direkte kjøp (uten budrunde), vise gjenstandsliste sortert på ulike kriterier, se alle gjenstander fra en bestemt selger, søke vha. nøkkelord, mail/melding til kjøper og selger når en auksjon er avsluttet, eller betaling via slikt som PayPal o.l. Det er lurt å tidlig planlegge hvilken rekkefølge dere bør implementere dette i (se neste avsnitt), og hva som kan gå parallelt, eller forutsetter at annet er laget/fungerer allerede. Denne oppgaveteksten er nok ikke helt entydig og utfyllende på alle punkter/måter. Derfor er det mulig at dere må gjøre deres egne klargjøringer/presiseringer/forutsetninger (se aller siste punkt under «Sluttinnlevering»). Forslag til rekkefølge på implementasjonen 1. Main m/leskommando, skrivmeny og omrisset av klassene m/datamedlemmer. 2. Bestem formatet for KUNDER.DTA og KATEGORIER.DTA. Legg inn noen testdata på disse, og les dette inn i datastrukturen. 3. Bestem flest mulig const er, skriv pesudokode og kod (globale) hjelpefunksjoner (jfr. siste avsnittet rett over tittelen «Data til/fra filer» ovenfor). 4. Implementer kommandoene: K R, K L, K U, K E, K S, A H og A U 5. Implementer (de mest avanserte) kommandoene: K B, K F og «alt» under A S Når formatet for Gxxxxx.DTA, Kxxxxx.DTA og Sxxxxx.DTA må bestemmes, og når det skal leses fra/skrives til disse, må dere selv finne ut. Gjøremål 1.arbeidsuka (14.-18.mars) 1. Gjøre pkt 1.1 og punktene 2.1-2.5 på websiden om prosjektet. 2. Sette seg inn i/lese nøye oppgaveteksten (jfr. pkt.5 på websiden om prosjektet). Analyse av problemstillingen og datastrukturen. 3. Delta på de tre forelesningene i uke 11 (mandag, tirsdag og fredag). 4. Lage grupperegler (jfr. pkt.1.2 på websiden om prosjektet). NB: Dokumentet som ligger ute er innspill, ingen ferdig kontrakt. 5. Gjøre pkt.3 og 4 på websiden om prosjektet. 6. Bestemme datoene for når de ulike punktene under «Forslag til rekkefølge på implementasjonen» (rett ovenfor) skal være ferdig. 7. Utføre og avkrysse alt på sjekklisten (jfr. pkt.6 på websiden om prosjektet). 8. Overholde fristen for og innholdet i «Delinnlevering nr.1» (se rett under). 5

Delinnlevering nr.1 Innen fredag 18.mars 2016 kl.09.00 skal dere ha gjort følgende: Levert (på papir) til emnelærer: 1. navnet på gruppedeltagerne, inkl. kontaktinfo (mail og mobil) for alle i gruppen. 2. ett A4- eller A3-ark med detaljert tegning av datastrukturen. 3. gruppereglene, signert av alle gruppens medlemmer. 4. individuelt signert bekreftelse fra hver av gruppedeltagerne (jfr. pkt.1.3 på websiden om prosjektet). 5. utført, avkrysset og signert sjekkliste (jfr. pkt.6 på websiden om prosjektet). Dataene i pkt.1 legges også inn i README-filen for prosjektet på Bitbucket (fjern all den andre teksten Bitbucket foreslår skal være med der). Dokumentene i pkt.2-3 ovenfor skal også (innscannet) legges inn i GruppeXX-mappen deres på Google Docs. Delinnlevering nr.2 Innen torsdag 7.april 2016 kl.09.00 skal dere ha lastet opp (committed) deres siste versjon av koden i prosjektet. Dere skal minst ha gjort ferdig (kodet og fungerer korrekt) t.o.m. pkt.4 under «Forslag til rekkefølge på implementasjon» (ellers vil dere ligge dårlig an ). I tillegg skal alle aktuelle testfiler i GruppeXX-mappen på Google Docs være oppdatert (jfr. pkt.2.6 på websiden om prosjektet). Disse lages/fylles ut etter hvert som dere skriver pseudokode for hver kommando (altså før dere begynner å skrive selve koden). Sluttinnlevering Innen tirsdag 19.april 2016 kl.14.00) skal dere ha: lastet opp (committed) deres fungerende, endelige og siste versjon av koden i prosjektet. i GruppeXX-mappen (på Google Docs): oppdatert og ferdigstilt (fylt ut komplett) alle testfilene. lagt en fil med beskrivelse av alle filformatene og eksempler på filenes utseende. evt. ha lagt en egen fil («readme.doc/pdf») med egne presiseringer/forutsetninger. Gruppe(sam)arbeid Sørg for at alle ytre rammer er lagt til rette for et godt og konstruktivt samarbeide. Dette gjøres best ved å sette opp klare og konkrete grupperegler (se pkt.1.2 på websiden om prosjektet, som er innspill til dette). Jobb mye, effektivt og målrettet allerede fra første stund (dvs. start «langspurten» tidlig, se «Gjøremål 1.arbeidsuka»). Og: sørg for å være «i rute» ved delinnlevering nr.2 ellers får dere en knallhard avslutning. Generelle krav til obligatoriske arbeider Se: http://www.hig.no/~grprog/obliger#gen_reg (spesielt det åttende punktet) Lykke til! FrodeH 6